-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | 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 -- 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. -- -- The RealFloat instances have been removed in this -- release as they were mostly broken: RealFloat -- semantics are for fixed-precision numbers. @package qd @version 1.0 -- | Unsafe bindings to libqd for quad-double numbers. -- -- It is strongly recommended to use instead the -- Numeric.QD.QuadDouble.Raw.Safe wrappers. module Numeric.QD.QuadDouble.Raw.Unsafe c_qd_add :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfadd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfadd_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfadd_d :: CDouble -> Ptr CDouble -> IO () c_qd_sub :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfsub :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfsub_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfsub_d :: CDouble -> Ptr CDouble -> IO () c_qd_mul :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfmul :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfmul_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfmul_d :: CDouble -> Ptr CDouble -> IO () c_qd_div :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfdiv :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfdiv_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfdiv_d :: CDouble -> Ptr CDouble -> IO () c_qd_copy :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_copy_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_copy_d :: CDouble -> Ptr CDouble -> IO () c_qd_sqrt :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sqr :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_abs :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_npwr :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_qd_nroot :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_qd_nint :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_aint :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_floor :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_ceil :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_exp :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_log :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_log10 :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sin :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_cos :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_tan :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_asin :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_acos :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atan :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atan2 :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sinh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_cosh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_tanh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_asinh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_acosh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atanh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sincos :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sincosh :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_read :: Ptr CChar -> Ptr CDouble -> IO () c_qd_swrite :: Ptr CDouble -> CInt -> Ptr CChar -> CInt -> IO () c_qd_neg :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_comp :: Ptr CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_qd_comp_qd_d :: Ptr CDouble -> CDouble -> Ptr CInt -> IO () c_qd_comp_d_qd :: CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_qd_pi :: Ptr CDouble -> IO () c_qd_write :: Ptr CDouble -> IO () c_qd_rand :: Ptr CDouble -> IO () -- | Unsafe FPU manipulation bindings. module Numeric.QD.FPU.Raw.Unsafe fpu_fix_start :: Ptr CInt -> IO () fpu_fix_end :: Ptr CInt -> IO () -- | Unsafe FPU manipulation functions. module Numeric.QD.FPU.Unsafe -- | unsafePreservingFPU f executes the computation -- f, ensuring that the FPU control words are set to avoid -- problems from excess precision. See the libqd documentation for -- further details. -- -- This function is unsafe in a threaded runtime as Haskell threads can -- migrate between OS threads, moreover there is no checking for nested -- calls - this results in race conditions. -- -- Some steps can be taken to mitigate some of this badness; perhaps -- using (for example) GHC.Conc.forkOnIO might help. unsafePreservingFPU :: IO a -> IO a -- | Unsafe bindings to libqd for double-double numbers. -- -- It is strongly recommended to use instead the -- Numeric.QD.DoubleDouble.Raw.Safe wrappers. module Numeric.QD.DoubleDouble.Raw.Unsafe c_dd_add :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_add_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_add_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_sub :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sub_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sub_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_mul :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_mul_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_mul_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_div :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_div_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_div_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_copy :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_copy_d :: CDouble -> Ptr CDouble -> IO () c_dd_sqrt :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sqr :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_abs :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_npwr :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_dd_nroot :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_dd_nint :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_aint :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_floor :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_ceil :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_exp :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_log :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_log10 :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sin :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_cos :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_tan :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_asin :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_acos :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atan :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atan2 :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sinh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_cosh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_tanh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_asinh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_acosh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atanh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sincos :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sincosh :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_read :: Ptr CChar -> Ptr CDouble -> IO () c_dd_swrite :: Ptr CDouble -> CInt -> Ptr CChar -> CInt -> IO () c_dd_neg :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_comp :: Ptr CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_dd_comp_dd_d :: Ptr CDouble -> CDouble -> Ptr CInt -> IO () c_dd_comp_d_dd :: CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_dd_pi :: Ptr CDouble -> IO () c_dd_write :: Ptr CDouble -> IO () c_dd_rand :: Ptr CDouble -> IO () -- | Unsafe bindings to libqd. -- -- It is strongly recommended to use instead the -- Numeric.QD.Raw.Safe wrappers. module Numeric.QD.Raw.Unsafe -- | Safe bindings to libqd for quad-double numbers. -- -- These bindings are to foreign wrappers around libqd, which set and -- restore the FPU flags correctly. module Numeric.QD.QuadDouble.Raw.Safe c_qd_add :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_add_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfadd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfadd_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfadd_d :: CDouble -> Ptr CDouble -> IO () c_qd_sub :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sub_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfsub :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfsub_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfsub_d :: CDouble -> Ptr CDouble -> IO () c_qd_mul :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_mul_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfmul :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfmul_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfmul_d :: CDouble -> Ptr CDouble -> IO () c_qd_div :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_dd_qd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_qd_dd :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_d_qd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_div_qd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_qd_selfdiv :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfdiv_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_selfdiv_d :: CDouble -> Ptr CDouble -> IO () c_qd_copy :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_copy_dd :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_copy_d :: CDouble -> Ptr CDouble -> IO () c_qd_sqrt :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sqr :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_abs :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_npwr :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_qd_nroot :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_qd_nint :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_aint :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_floor :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_ceil :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_exp :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_log :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_log10 :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sin :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_cos :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_tan :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_asin :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_acos :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atan :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atan2 :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sinh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_cosh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_tanh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_asinh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_acosh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_atanh :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_sincos :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_sincosh :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_qd_read :: Ptr CChar -> Ptr CDouble -> IO () c_qd_swrite :: Ptr CDouble -> CInt -> Ptr CChar -> CInt -> IO () c_qd_neg :: Ptr CDouble -> Ptr CDouble -> IO () c_qd_comp :: Ptr CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_qd_comp_qd_d :: Ptr CDouble -> CDouble -> Ptr CInt -> IO () c_qd_comp_d_qd :: CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_qd_pi :: Ptr CDouble -> IO () c_qd_write :: Ptr CDouble -> IO () c_qd_rand :: Ptr CDouble -> IO () -- | Raw bindings to libqd for quad-double. module Numeric.QD.QuadDouble.Raw -- | Safe bindings to libqd for double-double numbers. -- -- These bindings are to foreign wrappers around libqd, which set and -- restore the FPU flags correctly. module Numeric.QD.DoubleDouble.Raw.Safe c_dd_add :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_add_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_add_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_sub :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sub_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sub_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_mul :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_mul_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_mul_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_div :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_div_d_dd :: CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_div_dd_d :: Ptr CDouble -> CDouble -> Ptr CDouble -> IO () c_dd_copy :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_copy_d :: CDouble -> Ptr CDouble -> IO () c_dd_sqrt :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sqr :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_abs :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_npwr :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_dd_nroot :: Ptr CDouble -> CInt -> Ptr CDouble -> IO () c_dd_nint :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_aint :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_floor :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_ceil :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_exp :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_log :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_log10 :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sin :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_cos :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_tan :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_asin :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_acos :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atan :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atan2 :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sinh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_cosh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_tanh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_asinh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_acosh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_atanh :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_sincos :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_sincosh :: Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_dd_read :: Ptr CChar -> Ptr CDouble -> IO () c_dd_swrite :: Ptr CDouble -> CInt -> Ptr CChar -> CInt -> IO () c_dd_neg :: Ptr CDouble -> Ptr CDouble -> IO () c_dd_comp :: Ptr CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_dd_comp_dd_d :: Ptr CDouble -> CDouble -> Ptr CInt -> IO () c_dd_comp_d_dd :: CDouble -> Ptr CDouble -> Ptr CInt -> IO () c_dd_pi :: Ptr CDouble -> IO () c_dd_write :: Ptr CDouble -> IO () c_dd_rand :: Ptr CDouble -> IO () -- | Safe bindings to libqd. -- -- These bindings are to foreign wrappers around libqd, which set and -- restore the FPU flags correctly. module Numeric.QD.Raw.Safe -- | Raw bindings to libqd. module Numeric.QD.Raw -- | Bindings to libqd for double-double numbers. module Numeric.QD.DoubleDouble.Raw -- | High-level interface to libqd for double-double numbers. module Numeric.QD.DoubleDouble -- | DoubleDouble a b represents the unevaluated sum a -- + b. data DoubleDouble DoubleDouble :: {-# UNPACK #-} !CDouble -> {-# UNPACK #-} !CDouble -> DoubleDouble -- | Extract the first component and convert to Double. toDouble :: DoubleDouble -> Double -- | Convert from Double by pairing with 0. fromDouble :: Double -> DoubleDouble -- | Square a DoubleDouble number. sqr :: DoubleDouble -> DoubleDouble instance Typeable DoubleDouble instance Storable DoubleDouble instance Floating DoubleDouble instance RealFrac DoubleDouble instance Real DoubleDouble instance Fractional DoubleDouble instance Num DoubleDouble instance Read DoubleDouble instance Show DoubleDouble instance Ord DoubleDouble instance Eq DoubleDouble instance DecimalFormat DoubleDouble instance BinDecode DoubleDouble -- | High-level interface to libqd for quad-double numbers. module Numeric.QD.QuadDouble -- | QuadDouble a b c d represents the unevaluated sum -- a + b + c + d. data QuadDouble QuadDouble :: {-# UNPACK #-} !CDouble -> {-# UNPACK #-} !CDouble -> {-# UNPACK #-} !CDouble -> {-# UNPACK #-} !CDouble -> QuadDouble -- | Convert to Double. toDouble :: QuadDouble -> Double -- | Convert from Double. fromDouble :: Double -> QuadDouble -- | Convert to DoubleDouble. toDoubleDouble :: QuadDouble -> DoubleDouble -- | Convert from DoubleDouble. fromDoubleDouble :: DoubleDouble -> QuadDouble -- | Square a QuadDouble number. sqr :: QuadDouble -> QuadDouble instance Typeable QuadDouble instance Storable QuadDouble instance Read QuadDouble instance Show QuadDouble instance Floating QuadDouble instance RealFrac QuadDouble instance Real QuadDouble instance Fractional QuadDouble instance Num QuadDouble instance Ord QuadDouble instance Eq QuadDouble instance DecimalFormat QuadDouble instance BinDecode QuadDouble -- | Higher-level wrapper over bindings to libqd. module Numeric.QD