kjensen said:
Again thanks a lot for your deep insights. I agree to what you saying, but actually it is possible in for example C/C++ to extent to arbitrary precision as you can see here:
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic
Sure, you can extend to some greater degree of precision than nominal, but you cannot extend to infinite precision. That would require infinite memory and an infinitely fast processor. For any representation of the reals on a digital computer there will always exist a number δ>0 such that 1+ε=1 for all |ε|<δ.
My experience is that if you use the newest processors and compile for example Linux to your newest processor (or processor cluster), then you can still achieve good performance in very high precision.
My experience is otherwise. Extended precision arithmetic is very expensive computationally, typically 10 times slower (very optimistic) to 1000 times slower (or worse!) than using native floating point. This is an expense that the typical application of orbit propagation programs cannot endure. Besides, there is little need for extended precision arithmetic here. Sophisticated integration techniques can achieve a relative precision of 10
-14 for a long span of time using native doubles; simpler but still good techniques can achieve a relative precision of about 10
-12 (but only for a shorter span of time). At 60 AU, these levels of precision correspond to 9 centimeters and 9 meters respectively.
Very few applications in physics need extended precision arithmetic for the simple reason that most physical measurements aren't good to anywhere close to 16 decimal digits of accuracy.
Also if you write the calculation engine in assembler using parallel processing techniques then it is possible on new processors to get very good performance.
Assembly? Not usually, especially not for sophisticated numerical integration techniques. A good compiler will typically do a better job. Parallel computing? Numerical solution of the N-body gravitational problem as applied to the solar system is a bit tough to parallelize. Parallel algorithms work quite nicely for modeling a bunch of stars where behaviors rather than accuracy is what is important. Those galactic simulations typically use simple techniques such as leapfrog and involve a huge number of interacting bodies. A solar system simulation involves a small number of interacting bodies and accuracy takes on greater importance. Variable step-size, variable-order Adams methods are a bit tough to parallelize. These factors make it much easier to write a highly parallel solver for a galactic simulation than for the solar system.
The people who do go the parallel computing route inevitable do so using native floating point arithmetic. Using extended precision arithmetic would defeat the purpose. A somewhat recent development is to perform those parallel computations on a computer's graphics processor -- using native floating point arithmetic of course.