 Efficient Force Function Evaluation Methods
June 9, 1996
44
4.1 Floating Point Rounding Errors and the Force Function
In Section 1.3 on page 17, there were two types of errors that were mentioned.
First, there is the discretization error and the minimization of that error was the chief
concern of Sections 2.0 and 3.0. The other type of error that was mentioned was floating
point rounding errors, but it was noted that as long as the step size was sufficiently large,
this was not a primary concern. In the evaluation of the force function, this is not the case
and the effects of rounding errors can be quite pronounced. For this reason, a brief discus-
sion of the cause and effects of rounding errors is in order.
Internally, computers keep floating point (non-integral) numbers in a format that
has a fixed number of significant digits, while the decimal point can float to the left or
right. While most modern computers can have at least 15 significant digits, for easy of
illustration, let us assume that the computer can only store 4 significant digits. So, we can
have numbers such as 3.141, 100, 0.0000456, and 1E+99, but we can't have numbers such
as 3.1415, 100.01, or 0.000045678. When the computer adds two numbers together, often
the result has more than 4 significant digits. In order to store result, it is necessary to round
the result to 4 significant digits.
As an example, say the computer has to add 3.141 to 100. The exact result would
be 103.141, but that has 6 significant digits. The computer would then round the result to
be just 103.1, losing the 0.041 from the result. It may not be obvious, but this means that
addition is no longer commutative. Say the computer was to calculate 0.005 + 3.141 +
100. If the computer adds the first two numbers together, it will get 3.191 and then when
100 is added to this result, the computer will end up with 103.2. On the other hand, if the
computer adds 3.141 and 100 together first and gets the result of 103.1, when it tries to add
the 0.005 to this number, the result will still be 109.1. The addition of 0.005 had no effect
at all.
For the evaluation of
f()
, the lack of commutativity of addition and the inverse
square nature of each term of
f()
interact very poorly. Say there is a binary star system on
the edge of a galaxy (a common occurrence). The force between the two stars in the
system will be very large, but all the stars in the center of the galaxy or on the other side of
the galaxy will each have a very small effect. When the computer is adding together the
terms in the force function, if it adds together the force from the other binary star first, all
the other stars in the galaxy may, individually, not be significant enough to change the
final force. The result would be that the binary star system would act as if it was not in the
galaxy at all and just drift off. On the other hand, if the other binary star is added in last,
the result will be much more accurate.
(10:5-6)
A second type of problem with rounding can occur when two numbers of opposite
signs are added together. If there are two numbers which are exactly represented by
8.1414926 and -8.1413867, the computer will have to represent them as 8.141 and -8.141.
If you add these two numbers together, the exact result should be 0.001059 which can be
exactly represented with 4 digits, but the computer will calculate the result as being zero.