Asserting the Precision of Floating-Point Computations: A Simple Abstract Interpreter

  • Eric Goubault
  • Matthieu Martel
  • Sylvie Putot
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2305)


The manipulation of real numbers by computers is approximated by floatingpoint arithmetic, which uses a finite representation of numbers. This implies that a (small in general) rounding error may be committed at each operation. Although this approximation is accurate enough for most applications, there are some cases where results become irrelevant because of the precision lost at some stages of the computation, even when the underlying numerical scheme is stable. In this paper, we present a tool for studying the propagation of rounding errors in floating-point computations, that carries out some ideas proposed in [3], [7]. Its aim is to detect automatically a possible catastrophic loss of precision, and its source. The tool is intended to cope with real industrial problems, and we believe it is specially appropriate for critical instrumentation software. On these numerically quite simple programs, we believe our tool will bring some very helpful information, and allow us to find possible programming errors such as potentially dangerous double/float conversions, or blatant unstabilities or losses of accuracy. The techniques used being those of static analysis, the tool will not compete on numerically intensive codes with a numerician’s study of stability. Neither is it designed for helping to find better numerical schemes. But, it is automatic and in comparison with a study of sensitivity to data, brings about the contribution of rounding errors occuring at every intermediary step of the computation. Moreover, static analyzes are sure (but may be pessimistic) and consider a set of possible executions and not just one, which is the essential requirement a verification tool for critical software must meet.


Test Case Generation Simple Program Program Point Critical Software Catastrophic Loss 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximations of fixed points. Principles of Programming Languages 4, pages 238–252, 1977.Google Scholar
  2. 2.
    D. Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1), 1991.Google Scholar
  3. 3.
    E. Goubault. Static analyses of the precision of floating-point operations. In SAS’01, LNCS. Springer-Verlag, 2001.Google Scholar
  4. 4.
    E. Goubault, D. Guilbaud, A. Pacalet, B. Starynkévitch, and F. Védrine. A simple abstract interpreter for threat detection and test case generation. In Proceedings of WAPATV’01 (ICSE’01), May 2001.Google Scholar
  5. 5.
    G. Hanrot, V. Lefevre, F. Rouillier, and P. Zimmermann. The MPFR library. Institut de Recherche en Informatique et Automatique, 2001.Google Scholar
  6. 6.
    N. D. Jones and S. S. Muchnick. A flexible approach to interprocedural flow analysis and programs with recursive data structures. In Proceedings of the 9th ACM Symposium on Principles of Programming Languages, 1982.Google Scholar
  7. 7.
    M. Martel. Propagation of rounding errors in finite precision computations: a semantics approach. ESOP, 2002.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Eric Goubault
    • 1
  • Matthieu Martel
    • 1
  • Sylvie Putot
    • 1
  1. 1.LIST-DTSI-SLACEA - Recherche TechnologiqueGif-Sur-Yvette CedexFrance

Personalised recommendations