3.9 Article Proceedings Paper

Automatic Detection of Floating-Point Exceptions

Journal

ACM SIGPLAN NOTICES
Volume 48, Issue 1, Pages 549-560

Publisher

ASSOC COMPUTING MACHINERY
DOI: 10.1145/2480359.2429133

Keywords

Algorithms; Languages; Reliability; Verification; Floating-point exceptions; symbolic execution

Funding

  1. NSF [0702622, 0917392, 1117603]
  2. US Air Force [FA9550-07-1-0532]
  3. Direct For Computer & Info Scie & Enginr [0702622] Funding Source: National Science Foundation
  4. Division Of Computer and Network Systems
  5. Direct For Computer & Info Scie & Enginr [0917392] Funding Source: National Science Foundation
  6. Division of Computing and Communication Foundations [0702622] Funding Source: National Science Foundation
  7. Division of Computing and Communication Foundations
  8. Direct For Computer & Info Scie & Enginr [1117603] Funding Source: National Science Foundation

Ask authors/readers for more resources

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.

Authors

I am an author on this paper
Click your name to claim this paper and add it to your profile.

Reviews

Primary Rating

3.9
Not enough ratings

Secondary Ratings

Novelty
-
Significance
-
Scientific rigor
-
Rate this paper

Recommended

No Data Available
No Data Available