【24h】

Automatic Detection of Floating-Point Exceptions

机译:自动检测浮点异常

获取原文

摘要

It is well-known that floating-point exceptions can be disastrous and writing exception-free numerical programs is very difficult. Thus, it is important to automatically detect such errors. In this paper, we present Ariadne, a practical symbolic execution system specifically designed and implemented for detecting floating-point exceptions. Ariadne systematically transforms a numerical program to explicitly check each exception triggering condition. Ariadne symbolically executes the transformed program using real arithmetic to find candidate real-valued inputs that can reach and trigger an exception. Ariadne converts each candidate input into a floating-point number, then tests it against the original program. In general, approximating floating-point arithmetic with real arithmetic can change paths from feasible to infeasible and vice versa. The key insight of this work is that, for the problem of detecting floating-point exceptions, this approximation works well in practice because, if one input reaches an exception, many are likely to, and at least one of them will do so over both floating-point and real arithmetic. To realize Ariadne, we also devised a novel, practical linearization technique to solve nonlinear constraints. We extensively evaluated Ariadne over 467 scalar functions in the widely used GNU Scientific Library (GSL). Our results show that Ariadne is practical and identifies a large number of real runtime exceptions in GSL. The GSL developers confirmed our preliminary findings and look forward to Ariadne's public release, which we plan to do in the near future.
机译:众所周知,浮点异常可能是灾难性的,编写无异常的数值程序非常困难。因此,重要的是自动检测此类错误。在本文中,我们介绍了Ariadne,这是一种实用的符号执行系统,专门为检测浮点异常而设计和实现。 Ariadne系统地转换数值程序以显式检查每个异常触发条件。 Ariadne使用实数算法象征性地执行转换后的程序,以找到可以达到并触发异常的候选实值输入。 Ariadne将每个候选输入转换为浮点数,然后针对原始程序进行测试。通常,用实数算法近似浮点数算法可以将路径从可行变为不可行,反之亦然。这项工作的关键见解是,对于检测浮点异常的问题,这种近似在实践中效果很好,因为如果一个输入遇到异常,则很可能会有很多输入,并且其中至少有一个会在两个输入上都这样做浮点和实数运算。为了实现Ariadne,我们还设计了一种新颖,实用的线性化技术来解决非线性约束。我们在广泛使用的GNU科学库(GSL)中对467个标量函数进行了Ariadne的广泛评估。我们的结果表明,Ariadne是实用的,可以在GSL中识别大量实际的运行时异常。 GSL开发人员确认了我们的初步发现,并期待Ariadne的公开发布,我们计划在不久的将来进行公开发布。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号