Most nowadays floating-point computations are done in double precision, i.e., with a significand (or mantissa, see the "Glossary" sidebar) of 53 bits. However, some applications require more precision: double-extended (64 bits or more), quadruple precision (113 bits) or even more. In an article published in The Astronomical Journal in 2001, Toshio Fukushima says: "In the days of powerful computers, the errors of numerical integration are the main limitation in the research of complex dynamical systems, such as the long-term stability of our solar system and of some exoplanets [. . . ]" and gives an example where using double precision leads to an accumulated round-off error of more than 1 radian for the solar system! Another example where arbitrary precision is useful is static analysis of floating-point programs running in electronic control units of aircrafts or in nuclear reactors. Assume we want to determine 10 decimal digits of the constant 173746a + 94228b − 78487c, where a = sin(10 22 ), b = log(17.1), and c = exp(0.42). We will consider this as our running example throughout the paper. In this simple example, there are no input errors, since all values are known exactly, i.e., with infinite precision. Our first program -in the C language -is: This value is completely wrong, since the expected result is −1.341818958 · 10 −12 . We can change double into long double in the above program, to use double-extended precision (64-bit significand) on this platform 1 -and change sin(1e22) to sinl(1e22L), log to logl, exp to expl, %.16e into %.16Le; we then get: This new value is "almost as wrong" as the first one. Clearly the working precision is not enough.
However, because of the limited mantissa bits, double-precision variables cannot represent all numbers in the above range REF .