Appendix D: A Detailed Look at _ 223
If a calculation has a result whose magnitude is smaller than
1.000000000 × 10
−99
, the result is set equal to zero. This effect is referred
to as “underflow”. If the subroutine that calculates your function
encounters underflow for a range of x and if this affects the value of the
function, then a root in this range may be expected to have some
inaccuracy. For example, the equation
x
4
= 0
has a root at x = 0. Because of underflow, _
produces a root of
1.5060 -25 (for initial estimates of 1 and 2). As another example,
consider the equation
1 / x
2
= 0
whose root is infinite in value. Because of underflow, _ gives a root
of 3.1707 49 (for initial estimates of 10 and 20). In each of these
examples, the algorithm has found a value of x for which the calculated
function value equals zero. By understanding the effect of underflow, you
can readily interpret results such as these.
The accuracy of a computed value sometimes can be adversely affected
by “round-off” error, by which an infinitely precise number is rounded to
10 significant digits. If your subroutine requires extra precision to
properly calculate the function for a range of x, the result obtained by
_ may be inaccurate. For example, the equation
|x
2
− 5| = 0
has a root at x =
5. Because no 10-digit number exactly equals
5, the
result of using _ is
Error 8
(for any initial estimates) because the
function never equals zero nor changes sign. On the other hand, the
equation
[(|x| + 1) + 10
15
]
2
= 10
30
has no roots because the left side of the equation is always greater than
the right side. However, because of round-off in the calculation of
f (x) = [(|x| + 1) + 10
15
]
2
− 10
30
,