This package supports both a double-double datatype (approx. 32 decimal digits)
and a quad-double datatype (approx. 64 decimal digits), using libqd (which is
implemented in C++ with C and Fortran wrappers). To compile this package you
need libqd to be installed.
Numeric.QD.DoubleDouble.DoubleDouble and Numeric.QD.QuadDouble.QuadDouble
are strict tuples of CDoubles, with instances of:
BinDecode, DecimalFormat, Eq, Floating, Fractional, Num,
Ord, Read, Real, RealFrac, Show, Storable, Typeable.
Additional note: libqd depends on 64bit doubles, while some FPU architectures
use 80bit. When using the Unsafe modules this might cause erroneous results;
the Safe modules (used by the instances above) set and restore the FPU flags
in foreign code to avoid race conditions from pre-emptive Haskell threading.