double-double and quad-double number type via libqd.
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 CDouble
s, 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.