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 the following instances:
Eq
Floating
Fractional
Num
Ord
Real
RealFloat
RealFrac
Show
Storable
But note that the following functions (while present) are undefined:
properFraction
truncate
round
decodeFloat
encodeFloat
exponent
significand
Non-crashing implementations of these are planned in a future update to this package, as well as instances of Enum and Read.
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 ] -- ...
Properties
| Versions | 0.1, 0.2, 0.4, 0.4.1, 1.0, 1.0.2.1 |
|---|---|
| Dependencies | base (4.*) |
| License | BSD3 |
| Author | Claude Heiland-Allen |
| Maintainer | claudiusmaximus@goto10.org |
| Category | Math |
| Upload date | Wed Oct 20 19:54:25 UTC 2010 |
| Uploaded by | ClaudeHeilandAllen |
| Built on | ghc-6.12 |
| Build failure | ghc-7.0 (log) |
Modules
Downloads
- qd-0.2.tar.gz (Cabal source package)
- package description (included in the package)