Program correctness and machine arithmetic

  • T. J. Dekker
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 142)


The purpose of this paper is to give some insight in the construction of correct programs, especially numerical software, and in proving their correctness. After a brief survey of general program correctness axioms, the paper deals with various sets of axioms for machine arithmetic and some of its desirable features including a proposed standard for binary floating-point arithmetic. Moreover, a brief discussion is devoted to interval arithmetic. Finally, as an example of proving correctness, some algorithms for finding a zero of a real function in a real interval are considered.


program correctness machine arithmetic floating-point system interval arithmetic zero finding bisection numerical software 

AMS — MOS Classification

65G05 65G10 65H05 68S24 

CR Classification

5.11 5.15 5.24 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

7. References

Program correctness

  1. S. Alagić & M.A. Arbib, The design of well-structed and correct programs; Springer-Verlag (1978).Google Scholar
  2. R.J.R. Back, Exception handling with multi-exit statements; report IWI 125/79, Math. Centre, Amsterdam (1979).Google Scholar
  3. J. de Bakker, Mathematical theory of program correctness; Prentice-Hall (1980).Google Scholar
  4. E.W. Dijkstra, Notes on structured programming in O.J. Dahl, ... E.W. Dijkstra, C.A.R. Hoare, Structured programming; Acad. Press (1972) p.1–82.Google Scholar
  5. E.W. Dijkstra, A discipline of programming; Prentice-Hall (1976).Google Scholar
  6. D. Gries, Educating the programmer: notation, proofs and the development of programs; TR 80-414, Cornell University (1980).Google Scholar
  7. C.A.R. Hoare, An axiomatic basis for computer programming; Comm. ACM 12(1969), p.576–581.Google Scholar

Machine arithmetic

  1. W.S. Brown, A simple but realistic model of floating-point computation; CS Techn. report no.83, Bell Laboratories (1980).Google Scholar
  2. W.S. Brown & S.I. Feldman, Environment parameters and basic functions for floating-point computation; ACM Transactions on Math, Software 6(1980) p.510–523.Google Scholar
  3. T.J. Dekker, A floating-point technique for extending the available precision; Num. Math, 18(1971) p.224–242.Google Scholar
  4. T.J. Dekker, Correctness proofs and machine arithmetic in L.D. Fosdick (ed.), Performance evaluation of numerical software; North-Holland Publ. Co. (1979).Google Scholar
  5. B. Ford, Parametrization of the environment for transportable numerical software; ACM TOMS 4(1978) p.100–103.Google Scholar
  6. J.E. Holm, Floating-point arithmetic and program correctness proofs; Ph.D. thesis, Cornell University (1980).Google Scholar
  7. D.E. Knuth, The art of computer programming, vol.2; Addison-Wesley (1969).Google Scholar
  8. J.H. Wilkinson, Rounding errors in algebraic processes; Her Majesty's Stationery Office (1963).Google Scholar

Desirable features of floating-point arithmetic

  1. W.J. Cody, Analysis of proposals for the floating-point standard; Computer 14(1981) p.63–68.Google Scholar
  2. J.T. Coonen, An implementation guide to a proposed standard for floating arithmetic; Computer 13(1980) p.68–79.Google Scholar
  3. J.T. Coonen, Underflow and the denormalized numbers; Computer 14(1981) p.75–87.Google Scholar
  4. T.J. Dekker, Machine requirements for reliable, portable software in W. Cowell (ed.), Portability of numerical software; Lecture notes in Computer Science 57, Springer-Verlag (1977) p.22–36.Google Scholar
  5. D. Hough, Applications of the proposed IEEE 754 standard for floating-point arithmetic; Computer 14(1981), p.70–74.Google Scholar
  6. T.E. Hull, Desirable floating-point arithmetic and elementary functions for numerical computation; SIGNUM Newsletter 14(1979) p.96–99.Google Scholar
  7. C.H. Reinsch, Principles and preferences for computer arithmetic; SIGNUM Newsletter 14(1979) p.12–27.Google Scholar
  8. D. Stevenson a.o., A proposed standard for binary floating-point arithmetic; Computer 14(1981) p.51–62.Google Scholar

Interval arithmetic

  1. W. Kahan, A more complete interval arithmetic; Lecture notes for a summer course at University of Michigan (1968).Google Scholar
  2. S.E. Laveuve, Definition einer Kahan-Arithmetik in Nickel (1975) p.236–245.Google Scholar
  3. R.E. Moore, Interval analysis; Prentice-Hall (1966).Google Scholar
  4. R.E. Moore, Methods and applications of interval analysis; SIAM Philadelphia (1979).Google Scholar
  5. K. Nickel (ed), Interval Mathematics; Lecture notes in Computer Science 29, Springer-Verlag (1975).Google Scholar
  6. N. Apostolatos, U. Kulisch, R. Krawczyk, B. Lortz, K. Nickel & H.-W. Wippermann, The algorithmic language TRIPLEX-Algol 60; Num. Math. 11(1968) p.175–180.Google Scholar
  7. F.N. Ris, Tools for the analysis of interval arithmetic in Nickel (1975) p.75–98.Google Scholar
  8. J.M. Yohe, Software for interval arithmetic: a reasonably portable package; ACM TOMS 5(1979) p.50–63.Google Scholar

Finding a real zero

  1. R.P. Brent, An algorithm with guaranteed convergence for finding a zero of a function; Comp. J. 14(1971) p.422–425.Google Scholar
  2. J.C.P. Bus & T.J. Dekker, Two efficient algorithms with guaranteed convergence for finding a zero of a function; ACM TOMS 1(1975) p.330–345.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1982

Authors and Affiliations

  • T. J. Dekker
    • 1
  1. 1.Dept. of MathematicsUniversity of AmsterdamAmsterdamThe Netherlands

Personalised recommendations