@hackage qd0.4
double-double and quad-double number type via libqd
Categories
License
BSD-3-Clause
Maintainer
claudiusmaximus@goto10.org
Links
- Documentation
- No source repository
- Security
Versions
Installation
Dependencies (1)
Dependents (5)
@hackage/gruff-examples, @hackage/gmndl, @hackage/acme-everything, @hackage/gruff, @hackage/qd-vec
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.
and Numeric.QD.DoubleDouble.DoubleDouble
are strict tuples of Numeric.QD.QuadDouble.QuadDoubleCDoubles, with instances of:
, Eq, Floating, Fractional, Num, Ord, Read,
Real, RealFloat, RealFrac, Show, Storable.Typeable
Additional note: libqd depends on 64bit doubles, while some FPU architectures use 80bit. It is highly recommended to compile with -fno-excess-precision and set the FPU control words to avoid erroneous behaviour, perhaps by doing something like this at the start of your program:
import Foreign (nullPtr) import GHC.Conc (forkOnIO, numCapabilities) import Numeric.QD.FPU.Raw (fpu_fix_start) main :: IO () main = do mapM_ (flip forkOnIO $ fpu_fix_start nullPtr) [ 0 .. numCapabilities - 1 ] -- ...