deka-0.4.0.0: lib/Data/Deka/Decnumber.hsc
{-# LANGUAGE ForeignFunctionInterface #-}
#include <decContext.h>
#include <decQuad.h>
#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
-- | Low-level bindings to the decNumber library.
module Data.Deka.Decnumber where
import Foreign.Safe
import Foreign.C
import Control.Applicative
c'NULL :: Num a => a
c'NULL = #const NULL
type C'rounding = #type enum rounding
c'DEC_ROUND_CEILING :: Num a => a
c'DEC_ROUND_CEILING = #const DEC_ROUND_CEILING
c'DEC_ROUND_UP :: Num a => a
c'DEC_ROUND_UP = #const DEC_ROUND_UP
c'DEC_ROUND_HALF_UP :: Num a => a
c'DEC_ROUND_HALF_UP = #const DEC_ROUND_HALF_UP
c'DEC_ROUND_HALF_EVEN :: Num a => a
c'DEC_ROUND_HALF_EVEN = #const DEC_ROUND_HALF_EVEN
c'DEC_ROUND_HALF_DOWN :: Num a => a
c'DEC_ROUND_HALF_DOWN = #const DEC_ROUND_HALF_DOWN
c'DEC_ROUND_DOWN :: Num a => a
c'DEC_ROUND_DOWN = #const DEC_ROUND_DOWN
c'DEC_ROUND_FLOOR :: Num a => a
c'DEC_ROUND_FLOOR = #const DEC_ROUND_FLOOR
c'DEC_ROUND_05UP :: Num a => a
c'DEC_ROUND_05UP = #const DEC_ROUND_05UP
c'DEC_ROUND_MAX :: Num a => a
c'DEC_ROUND_MAX = #const DEC_ROUND_MAX
type C'int32_t = #type int32_t
type C'uint8_t = #type uint8_t
type C'uint16_t = #type uint16_t
type C'uint32_t = #type uint32_t
type C'uint64_t = #type uint64_t
data C'decContext = C'decContext
{ c'decContext'digits :: C'int32_t
, c'decContext'emax :: C'int32_t
, c'decContext'emin :: C'int32_t
, c'decContext'round :: C'rounding
, c'decContext'traps :: C'uint32_t
, c'decContext'status :: C'uint32_t
, c'decContext'clamp :: C'uint8_t
} deriving (Eq, Show)
instance Storable C'decContext where
sizeOf _ = #size decContext
alignment _ = #alignment decContext
peek p =
C'decContext
<$> #{peek decContext, digits} p
<*> #{peek decContext, emax} p
<*> #{peek decContext, emin} p
<*> #{peek decContext, round} p
<*> #{peek decContext, traps} p
<*> #{peek decContext, status} p
<*> #{peek decContext, clamp} p
poke p (C'decContext d ex en r t s c) =
#{poke decContext, digits} p d
>> #{poke decContext, emax} p ex
>> #{poke decContext, emin} p en
>> #{poke decContext, round} p r
>> #{poke decContext, traps} p t
>> #{poke decContext, status} p s
>> #{poke decContext, clamp} p c
p'decContext'status :: Ptr C'decContext -> Ptr C'uint32_t
p'decContext'status = #ptr decContext, status
p'decContext'round :: Ptr C'decContext -> Ptr C'rounding
p'decContext'round = #ptr decContext, round
-- decContext
c'DEC_INIT_DECQUAD :: Num a => a
c'DEC_INIT_DECQUAD = #const DEC_INIT_DECQUAD
foreign import ccall unsafe "decContextDefault" unsafe'c'decContextDefault
:: Ptr C'decContext
-> C'int32_t
-> IO (Ptr C'decContext)
type C'decClass = #type enum decClass
c'DEC_CLASS_SNAN :: Num a => a
c'DEC_CLASS_SNAN = #const DEC_CLASS_SNAN
c'DEC_CLASS_QNAN :: Num a => a
c'DEC_CLASS_QNAN = #const DEC_CLASS_QNAN
c'DEC_CLASS_NEG_INF :: Num a => a
c'DEC_CLASS_NEG_INF = #const DEC_CLASS_NEG_INF
c'DEC_CLASS_NEG_NORMAL :: Num a => a
c'DEC_CLASS_NEG_NORMAL = #const DEC_CLASS_NEG_NORMAL
c'DEC_CLASS_NEG_SUBNORMAL :: Num a => a
c'DEC_CLASS_NEG_SUBNORMAL = #const DEC_CLASS_NEG_SUBNORMAL
c'DEC_CLASS_NEG_ZERO :: Num a => a
c'DEC_CLASS_NEG_ZERO = #const DEC_CLASS_NEG_ZERO
c'DEC_CLASS_POS_ZERO :: Num a => a
c'DEC_CLASS_POS_ZERO = #const DEC_CLASS_POS_ZERO
c'DEC_CLASS_POS_SUBNORMAL :: Num a => a
c'DEC_CLASS_POS_SUBNORMAL = #const DEC_CLASS_POS_SUBNORMAL
c'DEC_CLASS_POS_NORMAL :: Num a => a
c'DEC_CLASS_POS_NORMAL = #const DEC_CLASS_POS_NORMAL
c'DEC_CLASS_POS_INF :: Num a => a
c'DEC_CLASS_POS_INF = #const DEC_CLASS_POS_INF
c'DEC_Conversion_syntax :: Num a => a
c'DEC_Conversion_syntax = #const DEC_Conversion_syntax
c'DEC_Division_by_zero :: Num a => a
c'DEC_Division_by_zero = #const DEC_Division_by_zero
c'DEC_Division_impossible :: Num a => a
c'DEC_Division_impossible = #const DEC_Division_impossible
c'DEC_Division_undefined :: Num a => a
c'DEC_Division_undefined = #const DEC_Division_undefined
c'DEC_Insufficient_storage :: Num a => a
c'DEC_Insufficient_storage = #const DEC_Insufficient_storage
c'DEC_Inexact :: Num a => a
c'DEC_Inexact = #const DEC_Inexact
c'DEC_Invalid_context :: Num a => a
c'DEC_Invalid_context = #const DEC_Invalid_context
c'DEC_Invalid_operation :: Num a => a
c'DEC_Invalid_operation = #const DEC_Invalid_operation
c'DEC_Overflow :: Num a => a
c'DEC_Overflow = #const DEC_Overflow
c'DEC_Clamped :: Num a => a
c'DEC_Clamped = #const DEC_Clamped
c'DEC_Rounded :: Num a => a
c'DEC_Rounded = #const DEC_Rounded
c'DEC_Subnormal :: Num a => a
c'DEC_Subnormal = #const DEC_Subnormal
c'DEC_Underflow :: Num a => a
c'DEC_Underflow = #const DEC_Underflow
c'DEC_IEEE_754_Division_by_zero :: Num a => a
c'DEC_IEEE_754_Division_by_zero = #const DEC_IEEE_754_Division_by_zero
c'DEC_IEEE_754_Inexact :: Num a => a
c'DEC_IEEE_754_Inexact = #const DEC_IEEE_754_Inexact
c'DEC_IEEE_754_Invalid_operation :: Num a => a
c'DEC_IEEE_754_Invalid_operation = #const DEC_IEEE_754_Invalid_operation
c'DEC_IEEE_754_Overflow :: Num a => a
c'DEC_IEEE_754_Overflow = #const DEC_IEEE_754_Overflow
c'DEC_IEEE_754_Underflow :: Num a => a
c'DEC_IEEE_754_Underflow = #const DEC_IEEE_754_Underflow
c'DEC_Errors :: Num a => a
c'DEC_Errors = #const DEC_Errors
c'DEC_NaNs :: Num a => a
c'DEC_NaNs = #const DEC_NaNs
c'DEC_Condition_Length :: Num a => a
c'DEC_Condition_Length = #const DEC_Condition_Length
c'DEC_INIT_BASE :: Num a => a
c'DEC_INIT_BASE = #const DEC_INIT_BASE
c'DEC_INIT_DECIMAL32 :: Num a => a
c'DEC_INIT_DECIMAL32 = #const DEC_INIT_DECIMAL32
c'DEC_INIT_DECIMAL64 :: Num a => a
c'DEC_INIT_DECIMAL64 = #const DEC_INIT_DECIMAL64
c'DEC_INIT_DECIMAL128 :: Num a => a
c'DEC_INIT_DECIMAL128 = #const DEC_INIT_DECIMAL128
c'DECQUAD_Bytes :: Num a => a
c'DECQUAD_Bytes = #const DECQUAD_Bytes
c'DECQUAD_Pmax :: Num a => a
c'DECQUAD_Pmax = #const DECQUAD_Pmax
c'DECQUAD_Emin :: Num a => a
c'DECQUAD_Emin = #const DECQUAD_Emin
c'DECQUAD_Emax :: Num a => a
c'DECQUAD_Emax = #const DECQUAD_Emax
c'DECQUAD_EmaxD :: Num a => a
c'DECQUAD_EmaxD = #const DECQUAD_EmaxD
c'DECQUAD_Bias :: Num a => a
c'DECQUAD_Bias = #const DECQUAD_Bias
c'DECQUAD_String :: Num a => a
c'DECQUAD_String = #const DECQUAD_String
c'DECQUAD_EconL :: Num a => a
c'DECQUAD_EconL = #const DECQUAD_EconL
c'DECQUAD_Declets :: Num a => a
c'DECQUAD_Declets = #const DECQUAD_Declets
c'DECQUAD_Ehigh :: Num a => a
c'DECQUAD_Ehigh = #const DECQUAD_Ehigh
newtype C'decQuad = C'decQuad
{ c'decQuad'bytes :: [C'uint8_t]
} deriving (Eq, Show)
p'decQuad'bytes :: Ptr C'decQuad -> Ptr c'decQuad'bytes
p'decQuad'bytes = #ptr decQuad, bytes
instance Storable C'decQuad where
sizeOf _ = #size decQuad
alignment _ = #alignment decQuad
peek p =
let pArr = p'decQuad'bytes p
in fmap C'decQuad $ peekArray c'DECQUAD_Bytes pArr
poke p (C'decQuad bs) = pokeArray (p'decQuad'bytes p) bs
c'DECFLOAT_Sign :: Num a => a
c'DECFLOAT_Sign = #const DECFLOAT_Sign
c'DECFLOAT_NaN :: Num a => a
c'DECFLOAT_NaN = #const DECFLOAT_NaN
c'DECFLOAT_qNaN :: Num a => a
c'DECFLOAT_qNaN = #const DECFLOAT_qNaN
c'DECFLOAT_sNaN :: Num a => a
c'DECFLOAT_sNaN = #const DECFLOAT_sNaN
c'DECFLOAT_Inf :: Num a => a
c'DECFLOAT_Inf = #const DECFLOAT_Inf
c'DECFLOAT_MinSp :: Num a => a
c'DECFLOAT_MinSp = #const DECFLOAT_MinSp
c'DECPPLUSALT :: Num a => a
c'DECPPLUSALT = #const DECPPLUSALT
c'DECPMINUSALT :: Num a => a
c'DECPMINUSALT = #const DECPMINUSALT
c'DECPPLUS :: Num a => a
c'DECPPLUS = #const DECPPLUS
c'DECPMINUS :: Num a => a
c'DECPMINUS = #const DECPMINUS
c'DECPPLUSALT2 :: Num a => a
c'DECPPLUSALT2 = #const DECPPLUSALT2
c'DECPUNSIGNED :: Num a => a
c'DECPUNSIGNED = #const DECPUNSIGNED
-- Utilities
foreign import ccall unsafe "decQuadToInt32" unsafe'c'decQuadToInt32
:: Ptr C'decQuad
-> Ptr C'decContext
-> C'rounding
-> IO C'int32_t
foreign import ccall unsafe "decQuadToInt32Exact" unsafe'c'decQuadToInt32Exact
:: Ptr C'decQuad
-> Ptr C'decContext
-> C'rounding
-> IO C'int32_t
foreign import ccall unsafe "decQuadFromInt32" unsafe'c'decQuadFromInt32
:: Ptr C'decQuad
-> C'int32_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFromPacked" unsafe'c'decQuadFromPacked
:: Ptr C'decQuad
-> C'int32_t
-> Ptr C'uint8_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFromPackedChecked" unsafe'c'decQuadFromPackedChecked
:: Ptr C'decQuad
-> C'int32_t
-> Ptr C'uint8_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFromUInt32" unsafe'c'decQuadFromUInt32
:: Ptr C'decQuad
-> C'uint32_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFromString" unsafe'c'decQuadFromString
:: Ptr C'decQuad
-> CString
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadGetCoefficient" unsafe'c'decQuadGetCoefficient
:: Ptr C'decQuad
-> Ptr C'uint8_t
-> IO C'int32_t
foreign import ccall unsafe "decQuadGetExponent" unsafe'c'decQuadGetExponent
:: Ptr C'decQuad
-> IO C'int32_t
foreign import ccall unsafe "decQuadSetCoefficient" unsafe'c'decQuadSetCoefficient
:: Ptr C'decQuad
-> Ptr C'uint8_t
-> C'int32_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadSetExponent" unsafe'c'decQuadSetExponent
:: Ptr C'decQuad
-> Ptr C'decContext
-> C'int32_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadShow" unsafe'c'decQuadShow
:: Ptr C'decQuad
-> CString
-> IO ()
foreign import ccall unsafe "decQuadToEngString" unsafe'c'decQuadToEngString
:: Ptr C'decQuad
-> CString
-> IO CString
foreign import ccall unsafe "decQuadToString" unsafe'c'decQuadToString
:: Ptr C'decQuad
-> CString
-> IO CString
foreign import ccall unsafe "decQuadToUInt32" unsafe'c'decQuadToUInt32
:: Ptr C'decQuad
-> Ptr C'decContext
-> C'rounding
-> IO C'uint32_t
foreign import ccall unsafe "decQuadToUInt32Exact" unsafe'c'decQuadToUInt32Exact
:: Ptr C'decQuad
-> Ptr C'decContext
-> C'rounding
-> IO C'uint32_t
foreign import ccall unsafe "decQuadZero" unsafe'c'decQuadZero
:: Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadAbs" unsafe'c'decQuadAbs
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext -> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadAdd" unsafe'c'decQuadAdd
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadAnd" unsafe'c'decQuadAnd
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadDivide" unsafe'c'decQuadDivide
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadDivideInteger" unsafe'c'decQuadDivideInteger
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFMA" unsafe'c'decQuadFMA
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadFromBCD" unsafe'c'decQuadFromBCD
:: Ptr C'decQuad
-> C'int32_t
-> Ptr C'uint8_t
-> C'int32_t
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadInvert" unsafe'c'decQuadInvert
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadLogB" unsafe'c'decQuadLogB
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMax" unsafe'c'decQuadMax
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMaxMag" unsafe'c'decQuadMaxMag
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMin" unsafe'c'decQuadMin
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMinMag" unsafe'c'decQuadMinMag
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMinus" unsafe'c'decQuadMinus
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadMultiply" unsafe'c'decQuadMultiply
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadNextMinus" unsafe'c'decQuadNextMinus
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadNextPlus" unsafe'c'decQuadNextPlus
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadNextToward" unsafe'c'decQuadNextToward
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadOr" unsafe'c'decQuadOr
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadPlus" unsafe'c'decQuadPlus
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadQuantize" unsafe'c'decQuadQuantize
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadReduce" unsafe'c'decQuadReduce
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadRemainder" unsafe'c'decQuadRemainder
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadRemainderNear" unsafe'c'decQuadRemainderNear
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadRotate" unsafe'c'decQuadRotate
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadScaleB" unsafe'c'decQuadScaleB
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadShift" unsafe'c'decQuadShift
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadSubtract" unsafe'c'decQuadSubtract
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadToBCD" unsafe'c'decQuadToBCD
:: Ptr C'decQuad
-> Ptr C'int32_t
-> Ptr C'uint8_t
-> IO C'int32_t
foreign import ccall unsafe "decQuadToIntegralValue" unsafe'c'decQuadToIntegralValue
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> C'rounding
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadToIntegralExact" unsafe'c'decQuadToIntegralExact
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadXor" unsafe'c'decQuadXor
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
-- Comparisons
foreign import ccall unsafe "decQuadCompare" unsafe'c'decQuadCompare
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCompareSignal" unsafe'c'decQuadCompareSignal
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decContext
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCompareTotal" unsafe'c'decQuadCompareTotal
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCompareTotalMag" unsafe'c'decQuadCompareTotalMag
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
-- Copies
foreign import ccall unsafe "decQuadCanonical" unsafe'c'decQuadCanonical
:: Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCopyAbs" unsafe'c'decQuadCopyAbs
:: Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCopyNegate" unsafe'c'decQuadCopyNegate
:: Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCopySign" unsafe'c'decQuadCopySign
:: Ptr C'decQuad
-> Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
foreign import ccall unsafe "decQuadCopy" unsafe'c'decQuadCopy
:: Ptr C'decQuad
-> Ptr C'decQuad
-> IO (Ptr C'decQuad)
-- Non-computational
foreign import ccall unsafe "decQuadClass" unsafe'c'decQuadClass
:: Ptr C'decQuad
-> IO C'decClass
foreign import ccall unsafe "decQuadClassString" unsafe'c'decQuadClassString
:: Ptr C'decQuad
-> IO CString
foreign import ccall unsafe "decQuadDigits" unsafe'c'decQuadDigits
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsCanonical" unsafe'c'decQuadIsCanonical
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsFinite" unsafe'c'decQuadIsFinite
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsInteger" unsafe'c'decQuadIsInteger
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsLogical" unsafe'c'decQuadIsLogical
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsInfinite" unsafe'c'decQuadIsInfinite
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsNaN" unsafe'c'decQuadIsNaN
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsNegative" unsafe'c'decQuadIsNegative
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsNormal" unsafe'c'decQuadIsNormal
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsPositive" unsafe'c'decQuadIsPositive
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsSignaling" unsafe'c'decQuadIsSignaling
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsSigned" unsafe'c'decQuadIsSigned
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsSubnormal" unsafe'c'decQuadIsSubnormal
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadIsZero" unsafe'c'decQuadIsZero
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadRadix" unsafe'c'decQuadRadix
:: Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadSameQuantum" unsafe'c'decQuadSameQuantum
:: Ptr C'decQuad
-> Ptr C'decQuad
-> IO C'uint32_t
foreign import ccall unsafe "decQuadVersion" unsafe'c'decQuadVersion
:: IO CString