-- 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