On Sat, May 1, 2010 at 11:57 AM, Tim E. Real <termtech(a)rogers.com> wrote:
Can I get some comments on an issue nagging me for years:
Maybe I never learned some golden rule about floating point,
please correct me if I'm ignorant of some crucial technique or fact
which would help: ...
Arbitrary precision arithmetic will take care of all these problems. At a
great cost to performance:
http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic .
It's part of the Java Language:
http://java.sun.com/j2se/1.4.2/docs/api/java/math/package-summary.html
Provides classes for performing arbitrary-precision integer arithmetic
(BigInteger) and arbitrary-precision decimal
arithmetic (BigDecimal).
BigInteger is analogous to Java's primitive integer types except that it
provides arbitrary precision, hence operations on BigIntegers do not
overflow or lose precision. In addition to standard arithmetic operations,
BigInteger provides modular arithmetic, GCD calculation, primality testing,
prime generation, bit manipulation, and a few other miscellaneous
operations. BigDecimal provides arbitrary-precision signed decimal numbers
suitable for currency calculations and the like. BigDecimal gives the user
complete control over rounding behavior, allowing the user to choose from a
comprehensive set of eight rounding modes.
Arbitrary precision math has been part of the Lisp/Scheme world for a long
time; it's also in the mainstream via mathematica:
http://groups.google.com/group/comp.soft-sys.math.mathematica/topics?pli=1
-- Niels
http://nielsmayer.com