The qd package
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: 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 ] -- ...
|Versions||0.1, 0.2, 0.4, 0.4.1, 1.0, 126.96.36.199|
|Dependencies||base (==4.*) [details]|
|Uploaded||Sun Jan 30 14:07:32 UTC 2011 by ClaudeHeilandAllen|
|Downloads||1246 total (21 in the last 30 days)|
|Status||Docs uploaded by user
Build status unknown [no reports yet]
For package maintainers and hackage trustees