Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2429069.2429133acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Automatic detection of floating-point exceptions

Published: 23 January 2013 Publication History

Abstract

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.

Supplementary Material

JPG File (r2d3_talk6.jpg)
MP4 File (r2d3_talk6.mp4)

References

[1]
F. Benz, A. Hildebrandt, and S. Hack. A dynamic program analysis to find floating-point accuracy problems. In PLDI, 2012.
[2]
A. Brillout, D. Kroening, and T. Wahl. Mixed abstractions for floatingpoint arithmetic. In FMCAD, 2009.
[3]
CNN. Toyota: Software to blame for Prius brake problems. http://www.cnn.com/2010/WORLD/asiapcf/02/ 04/japan.prius.complaints/index.html.
[4]
P. Collingbourne, C. Cadar, and P. H. Kelly. Symbolic crosschecking of floating-point and SIMD code. In EuroSys, 2011.
[5]
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, 1977.
[6]
P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. The ASTRÉE analyzer. In ESOP, 2005.
[7]
D. E. Daniel Dunbar, Cristian Cadar. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, 2008.
[8]
E. Darulova and V. Kuncak. Trustworthy numerical computation in Scala. In OOPSLA, 2011.
[9]
L. De Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, 2008.
[10]
D. Delmas, E. Goubault, S. Putot, J. Souyris, K. Tekkal, and F. Védrine. Towards an industrial use of FLUCTUAT on safety-critical avionics software. In FMICS, 2009.
[11]
C. F. Fang, T. Chen, and R. A. Rutenbar. Floating-point error analysis based on affine arithmetic. In ICASSP, 2003.
[12]
C. F. Fang, R. A. Rutenbar, M. Püschel, and T. Chen. Toward efficient static analysis of finite-precision effects in DSP applications via affine arithmetic modeling. In DAC, 2003.
[13]
M. Fränzle, C. Herde, T. Teige, S. Ratschan, and T. Schubert. Efficient solving of large non-linear arithmetic constraint systems with complex Boolean structure. JSAT, 1(3-4):209--236, 2007.
[14]
FSF. GMP: The GNU multiple precision arithmetic library. /http://gmplib.org/.
[15]
FSF. GSL: GNU scientific library. http://www.gnu.org/s/gsl/.
[16]
V. Ganesh and D. L. Dill. A decision procedure for bit vectors and arrays. In CAV, 2007.
[17]
P. Godefroid and J. Kinder. Proving memory safety of floating-point computations by combining static and dynamic program analysis. In ISSTA, 2010.
[18]
P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In PLDI, 2005.
[19]
D. Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1), 1991.
[20]
E. Goubault. Static analyses of the precision of floating point operations. In SAS, 2001.
[21]
E. Goubault and S. Putot. Static analysis of numerical algorithms. In SAS, 2006.
[22]
J. Hauser. Handling floating-point exceptions in numeric programs. TOPLAS, 18(2), 1996.
[23]
N. J. Higham. Accuracy and stability of numerical algorithms. Society for Industrial and Applied Mathematics, 2nd edition, 2002.
[24]
IEEE Computer Society. IEEE standard for floating point arithmetic, 2008.
[25]
D. Jovanovi´c and L. de Moura. Solving non-linear arithmetic. In IJCAR, 2012.
[26]
W. Kahan. A demonstration of presubstitution for ¥/¥ (Grail), 2005.
[27]
J. C. King. Symbolic execution and program testing. Communications of the ACM, 19, 1976.
[28]
K. Lakhotia, N. Tillmann, M. Harman, and J. De Halleux. FloPSy: search-based floating point constraint solving for symbolic execution. In ICTSS, 2010.
[29]
C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In CGO, 2004.
[30]
R. Majumdar, I. Saha, and Z. Wang. Systematic testing for control applications. In MEMOCODE, 2010.
[31]
M. Martel. Propagation of roundoff errors in finite precision computations: a semantics approach. In ESOP, 2002.
[32]
M. Martel. Static analysis of the numerical stability of loops. In SAS, 2002.
[33]
Z. Merali. Computational science: ...error ...why scientific programming does not compute. Nature, 467:775--777, 2010.
[34]
A. Miné. Relational abstract domains for the detection of floating-point run-time errors. In ESOP, 2004.
[35]
D. Monniaux. The pitfalls of verifying floating-point computations. TOPLAS, 30(3):12:1--12:41, 2008.
[36]
K. L. Palmerius. Fast and high precision volume haptics. In Proceedings of the IEEE World Haptics Conference. IEEE, 2007.
[37]
P. Rümmer and T. Wahl. An SMT-LIB theory of binary floating-point arithmetic. In SMT at FLoC, 2010.
[38]
K. Sen. CUTE: a concolic unit testing engine for C. In FSE, 2005.
[39]
P. H. Sterbenz. Floating-Point Computation. Prentice Hall, 1974.
[40]
Wikipedia. Ariane 5 flight 501. http://en.wikipedia.org/ wiki/Ariane_5_Flight_501.

Cited By

View all
  • (2024)Hierarchical search algorithm for error detection in floating-point arithmetic expressionsThe Journal of Supercomputing10.1007/s11227-023-05523-680:1(1183-1205)Online publication date: 1-Jan-2024
  • (2023)Eiffel: Inferring Input Ranges of Significant Floating-Point Errors via Polynomial ExtrapolationProceedings of the 38th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE56229.2023.00139(1441-1453)Online publication date: 11-Nov-2023
  • (2023)Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeYInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00691-x25:2(185-204)Online publication date: 8-Mar-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '13: Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2013
586 pages
ISBN:9781450318327
DOI:10.1145/2429069
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 48, Issue 1
    POPL '13
    January 2013
    561 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2480359
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 January 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. floating-point exceptions
  2. symbolic execution

Qualifiers

  • Research-article

Conference

POPL '13
Sponsor:

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)36
  • Downloads (Last 6 weeks)3
Reflects downloads up to 01 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Hierarchical search algorithm for error detection in floating-point arithmetic expressionsThe Journal of Supercomputing10.1007/s11227-023-05523-680:1(1183-1205)Online publication date: 1-Jan-2024
  • (2023)Eiffel: Inferring Input Ranges of Significant Floating-Point Errors via Polynomial ExtrapolationProceedings of the 38th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE56229.2023.00139(1441-1453)Online publication date: 11-Nov-2023
  • (2023)Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeYInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00691-x25:2(185-204)Online publication date: 8-Mar-2023
  • (2023)Scaling up Roundoff Analysis of Functional Data Structure ProgramsStatic Analysis10.1007/978-3-031-44245-2_17(371-402)Online publication date: 24-Oct-2023
  • (2022)Fast shadow execution for debugging numerical errors using error free transformationsProceedings of the ACM on Programming Languages10.1145/35633536:OOPSLA2(1845-1872)Online publication date: 31-Oct-2022
  • (2022)FPChecker: Floating-Point Exception Detection Tool and Benchmark for Parallel and Distributed HPC2022 IEEE International Symposium on Workload Characterization (IISWC)10.1109/IISWC55918.2022.00014(39-50)Online publication date: Nov-2022
  • (2022)Symbolic Execution of Floating-point Programs: How far are we?2022 29th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC57359.2022.00030(179-188)Online publication date: Dec-2022
  • (2022)Correct approximation of IEEE 754 floating-point arithmetic for program verificationConstraints10.1007/s10601-021-09322-927:1-2(29-69)Online publication date: 22-Feb-2022
  • (2022)High Assurance Software for Financial Regulation and Business PlatformsVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-94583-1_6(108-126)Online publication date: 14-Jan-2022
  • (2021)Predoo: precision testing of deep learning operatorsProceedings of the 30th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3460319.3464843(400-412)Online publication date: 11-Jul-2021
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media