{-# OPTIONS_GHC -fno-warn-unused-imports #-} #include #include module Bindings.Mpdecimal where import Foreign.Ptr #strict_import -- Version #ccall mpd_version , IO CString #num MPD_MAJOR_VERSION #num MPD_MINOR_VERSION #num MPD_MICRO_VERSION #num NULL #num MPD_VERSION -- Sizes and integral types #integral_t mpd_uint_t #integral_t mpd_size_t #integral_t mpd_ssize_t #integral_t uint32_t #integral_t size_t #integral_t uint8_t #integral_t uint16_t #integral_t int32_t #integral_t uint64_t #integral_t int64_t -- Configuration -- Modular and base arithmetic #num MPD_UINT_MAX #num MPD_BITS_PER_UINT #num MPD_SIZE_MAX -- Type for exp, digits, len, prec #num MPD_SSIZE_MAX #num MPD_SSIZE_MIN -- Decimal arithmetic #num MPD_RADIX #num MPD_RDIGITS #num MPD_MAX_POW10 #num MPD_EXPDIGITS #num MPD_MAXTRANSFORM_2N #num MPD_MAX_PREC #num MPD_MAX_PREC_LOG2 #num MPD_ELIMIT #num MPD_MAX_EMAX #num MPD_MIN_EMIN #num MPD_MIN_ETINY #num MPD_EXP_INF #num MPD_EXP_CLAMP #num MPD_MAXIMPORT -- Conversion specifiers #num PRI_mpd_uint_t #num PRI_mpd_ssize_t -- Context {- enum { MPD_ROUND_UP, MPD_ROUND_DOWN, MPD_ROUND_CEILING, MPD_ROUND_FLOOR, MPD_ROUND_HALF_UP, MPD_ROUND_HALF_DOWN, MPD_ROUND_HALF_EVEN, MPD_ROUND_05UP, MPD_ROUND_TRUNC, MPD_ROUND_GUARD }; -} #num MPD_ROUND_UP #num MPD_ROUND_DOWN #num MPD_ROUND_CEILING #num MPD_ROUND_FLOOR #num MPD_ROUND_HALF_UP #num MPD_ROUND_HALF_DOWN #num MPD_ROUND_HALF_EVEN #num MPD_ROUND_05UP #num MPD_ROUND_TRUNC #num MPD_ROUND_GUARD {- enum { MPD_CLAMP_DEFAULT, MPD_CLAMP_IEEE_754, MPD_CLAMP_GUARD }; -} #num MPD_CLAMP_DEFAULT #num MPD_CLAMP_IEEE_754 #num MPD_CLAMP_GUARD #globalvar mpd_round_string , CChar #globalvar mpd_clamp_string , CChar {- typedef struct mpd_context_t { mpd_ssize_t prec; mpd_ssize_t emax; mpd_ssize_t emin; uint32_t traps; uint32_t status; uint32_t newtrap; int round; int clamp; int allcr; } mpd_context_t; -} #starttype mpd_context_t #field prec , #field emax , #field emin , #field traps , #field status , #field newtrap , #field round , CInt #field clamp , CInt #field allcr , CInt #stoptype -- Status flags #num MPD_Clamped #num MPD_Conversion_syntax #num MPD_Division_by_zero #num MPD_Division_impossible #num MPD_Division_undefined #num MPD_Fpu_error #num MPD_Inexact #num MPD_Invalid_context #num MPD_Invalid_operation #num MPD_Malloc_error #num MPD_Not_implemented #num MPD_Overflow #num MPD_Rounded #num MPD_Subnormal #num MPD_Underflow -- Conditions that result in an IEEE 754 exception #num MPD_IEEE_Invalid_operation -- Errors that require the result of an operation to be set to NaN #num MPD_Errors -- Default traps #num MPD_Traps -- Official name #num MPD_Insufficient_storage -- IEEE 754 interchange format contexts #num MPD_IEEE_CONTEXT_MAX_BITS #num MPD_DECIMAL32 #num MPD_DECIMAL64 #num MPD_DECIMAL128 -- minalloc #num MPD_MINALLOC_MIN #num MPD_MINALLOC_MAX #globalvar MPD_MINALLOC , CInt -- Traphandler #callback_t funptr_mpd_traphandler , Ptr -> IO () #ccall mpd_dflt_traphandler , Ptr -> IO () #globalvar mpd_traphandler , -- Context functions #ccall mpd_setminalloc , -> IO () #ccall mpd_init , Ptr -> -> IO () #ccall mpd_maxcontext , Ptr -> IO () #ccall mpd_defaultcontext , Ptr -> IO () #ccall mpd_basiccontext , Ptr -> IO () #ccall mpd_ieee_context , Ptr -> CInt -> IO CInt #ccall mpd_getprec , Ptr -> IO #ccall mpd_getemax , Ptr -> IO #ccall mpd_getemin , Ptr -> IO #ccall mpd_getround , Ptr -> IO CInt #ccall mpd_gettraps , Ptr -> IO #ccall mpd_getstatus , Ptr -> IO #ccall mpd_getclamp , Ptr -> IO CInt #ccall mpd_getcr , Ptr -> IO CInt #ccall mpd_qsetprec , Ptr -> -> IO CInt #ccall mpd_qsetemax , Ptr -> -> IO CInt #ccall mpd_qsetemin , Ptr -> -> IO CInt #ccall mpd_qsetround , Ptr -> CInt -> IO CInt #ccall mpd_qsettraps , Ptr -> -> IO CInt #ccall mpd_qsetstatus , Ptr -> -> IO CInt #ccall mpd_qsetclamp , Ptr -> CInt -> IO CInt #ccall mpd_qsetcr , Ptr -> CInt -> IO CInt #ccall mpd_addstatus_raise , Ptr -> -> IO () -- Decimal arithmetic -- mpd_t flags #num MPD_POS #num MPD_NEG #num MPD_INF #num MPD_NAN #num MPD_SNAN #num MPD_SPECIAL #num MPD_STATIC #num MPD_STATIC_DATA #num MPD_SHARED_DATA #num MPD_CONST_DATA #num MPD_DATAFLAGS -- mpd_t {- typedef struct mpd_t { uint8_t flags; mpd_ssize_t exp; mpd_ssize_t digits; mpd_ssize_t len; mpd_ssize_t alloc; mpd_uint_t * data; } mpd_t; -} #starttype mpd_t #field flags , #field exp , #field digits , #field len , #field alloc , #field data , Ptr #stoptype {- typedef unsigned char uchar; -} #integral_t uchar -- Quiet, thread-safe functions -- Format specification {- typedef struct mpd_spec_t { mpd_ssize_t min_width; mpd_ssize_t prec; char type; char align; char sign; char fill[5]; const char * dot; const char * sep; const char * grouping; } mpd_spec_t; -} #starttype mpd_spec_t #field min_width , #field prec , #field type , CChar #field align , CChar #field sign , CChar #array_field fill , CChar #field dot , CString #field sep , CString #field grouping , CString #stoptype -- Output to a string #ccall mpd_to_sci , Ptr -> CInt -> IO CString #ccall mpd_to_eng , Ptr -> CInt -> IO CString #ccall mpd_to_sci_size , Ptr CString -> Ptr -> CInt -> IO #ccall mpd_to_eng_size , Ptr CString -> Ptr -> CInt -> IO #ccall mpd_qformat , Ptr -> CString -> Ptr -> Ptr -> IO CString #num MPD_NUM_FLAGS #num MPD_MAX_FLAG_STRING #num MPD_MAX_FLAG_LIST #num MPD_MAX_SIGNAL_LIST #ccall mpd_snprint_flags , CString -> CInt -> -> IO CInt #ccall mpd_lsnprint_flags , CString -> CInt -> -> Ptr CString -> IO CInt #ccall mpd_lsnprint_signals , CString -> CInt -> -> Ptr CString -> IO CInt -- Output to a file #ccall mpd_fprint , Ptr CFile -> Ptr -> IO () #ccall mpd_print , Ptr -> IO () -- Assignment from a string #ccall mpd_qset_string , Ptr -> CString -> Ptr -> Ptr -> IO () -- Set to NaN with error flags #ccall mpd_seterror , Ptr -> -> Ptr -> IO () -- Set a special with sign and type #ccall mpd_setspecial , Ptr -> -> -> IO () -- Set a coefficient to zero or all nines #ccall mpd_zerocoeff , Ptr -> IO () #ccall mpd_qmaxcoeff , Ptr -> Ptr -> Ptr -> IO () -- Quietly assign a C integer type to an mpd_t #ccall mpd_qset_ssize , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qset_i32 , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qset_uint , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qset_u32 , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qset_i64 , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qset_u64 , Ptr -> -> Ptr -> Ptr -> IO () -- Quietly assign a C integer type to an mpd_t with a static coefficient #ccall mpd_qsset_ssize , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsset_i32 , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsset_uint , Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsset_u32 , Ptr -> -> Ptr -> Ptr -> IO () -- Quietly get a C integer type from an mpd_t #ccall mpd_qget_ssize , Ptr -> Ptr -> IO #ccall mpd_qget_uint , Ptr -> Ptr -> IO #ccall mpd_qabs_uint , Ptr -> Ptr -> IO #ccall mpd_qget_i32 , Ptr -> Ptr -> IO #ccall mpd_qget_u32 , Ptr -> Ptr -> IO #ccall mpd_qget_i64 , Ptr -> Ptr -> IO #ccall mpd_qget_u64 , Ptr -> Ptr -> IO -- Quiet functions #ccall mpd_qcheck_nan , Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qcheck_nans , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qfinalize , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_class , Ptr -> Ptr -> IO CString #ccall mpd_qcopy , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qncopy , Ptr -> IO (Ptr ) #ccall mpd_qcopy_abs , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qcopy_negate , Ptr -> Ptr -> Ptr -> IO #ccall mpd_qcopy_sign , Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qand , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qinvert , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qlogb , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qor , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qscaleb , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qxor , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_same_quantum , Ptr -> Ptr -> IO CInt #ccall mpd_qrotate , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qshiftl , Ptr -> Ptr -> -> Ptr -> IO CInt #ccall mpd_qshiftr , Ptr -> Ptr -> -> Ptr -> IO #ccall mpd_qshiftr_inplace , Ptr -> -> IO #ccall mpd_qshift , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qshiftn , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qcmp , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qcompare , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qcompare_signal , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_cmp_total , Ptr -> Ptr -> IO CInt #ccall mpd_cmp_total_mag , Ptr -> Ptr -> IO CInt #ccall mpd_compare_total , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_compare_total_mag , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_qround_to_intx , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qround_to_int , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qtrunc , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qfloor , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qceil , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qabs , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qmax , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qmax_mag , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qmin , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qmin_mag , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qminus , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qplus , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qnext_minus , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qnext_plus , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qnext_toward , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qquantize , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qrescale , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qrescale_fmt , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qreduce , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qadd , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qadd_ssize , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qadd_i32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qadd_uint , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qadd_u32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qsub_ssize , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub_i32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub_uint , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub_u32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qmul_ssize , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul_i32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul_uint , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul_u32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qfma , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qdiv , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_ssize , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_i32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_uint , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_u32 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdivint , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qrem , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qrem_near , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qdivmod , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qpow , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qpowmod , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qexp , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qln10 , Ptr -> -> Ptr -> IO () #ccall mpd_qln , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qlog10 , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qsqrt , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qinvroot , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_qadd_i64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qadd_u64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub_i64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qsub_u64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul_i64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qmul_u64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_i64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_qdiv_u64 , Ptr -> Ptr -> -> Ptr -> Ptr -> IO () #ccall mpd_sizeinbase , Ptr -> -> IO #ccall mpd_qimport_u16 , Ptr -> Ptr -> -> -> -> Ptr -> Ptr -> IO () #ccall mpd_qimport_u32 , Ptr -> Ptr -> -> -> -> Ptr -> Ptr -> IO () #ccall mpd_qexport_u16 , Ptr (Ptr CUShort) -> -> -> Ptr -> Ptr -> IO #ccall mpd_qexport_u32 , Ptr (Ptr ) -> -> -> Ptr -> Ptr -> IO -- Signalling functions #ccall mpd_format , Ptr -> CString -> Ptr -> IO CString #ccall mpd_import_u16 , Ptr -> Ptr CUShort -> -> CUChar -> -> Ptr -> IO () #ccall mpd_import_u32 , Ptr -> Ptr -> -> CUChar -> -> Ptr -> IO () #ccall mpd_export_u16 , Ptr (Ptr CUShort) -> -> -> Ptr -> Ptr -> IO #ccall mpd_export_u32 , Ptr (Ptr ) -> -> -> Ptr -> Ptr -> IO #ccall mpd_finalize , Ptr -> Ptr -> IO () #ccall mpd_check_nan , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_check_nans , Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_set_string , Ptr -> CString -> Ptr -> IO () #ccall mpd_maxcoeff , Ptr -> Ptr -> IO () #ccall mpd_sset_ssize , Ptr -> -> Ptr -> IO () #ccall mpd_sset_i32 , Ptr -> -> Ptr -> IO () #ccall mpd_sset_uint , Ptr -> -> Ptr -> IO () #ccall mpd_sset_u32 , Ptr -> -> Ptr -> IO () #ccall mpd_set_ssize , Ptr -> -> Ptr -> IO () #ccall mpd_set_i32 , Ptr -> -> Ptr -> IO () #ccall mpd_set_uint , Ptr -> -> Ptr -> IO () #ccall mpd_set_u32 , Ptr -> -> Ptr -> IO () #ccall mpd_set_i64 , Ptr -> -> Ptr -> IO () #ccall mpd_set_u64 , Ptr -> -> Ptr -> IO () #ccall mpd_get_ssize , Ptr -> Ptr -> IO #ccall mpd_get_uint , Ptr -> Ptr -> IO #ccall mpd_abs_uint , Ptr -> Ptr -> IO #ccall mpd_get_i32 , Ptr -> Ptr -> IO #ccall mpd_get_u32 , Ptr -> Ptr -> IO #ccall mpd_get_i64 , Ptr -> Ptr -> IO #ccall mpd_get_u64 , Ptr -> Ptr -> IO #ccall mpd_and , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_copy , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_canonical , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_copy_abs , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_copy_negate , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_copy_sign , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_invert , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_logb , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_or , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_rotate , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_scaleb , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_shiftl , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_shiftr , Ptr -> Ptr -> -> Ptr -> IO #ccall mpd_shiftn , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_shift , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_xor , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_abs , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_cmp , Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_compare , Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_compare_signal , Ptr -> Ptr -> Ptr -> Ptr -> IO CInt #ccall mpd_add , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_add_ssize , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_add_i32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_add_uint , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_add_u32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_sub_ssize , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub_i32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub_uint , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub_u32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_div_ssize , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div_i32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div_uint , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div_u32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_divmod , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_divint , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_exp , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_fma , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_ln , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_log10 , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_max , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_max_mag , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_min , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_min_mag , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_minus , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_mul , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_mul_ssize , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_mul_i32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_mul_uint , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_mul_u32 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_next_minus , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_next_plus , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_next_toward , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_plus , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_pow , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_powmod , Ptr -> Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_quantize , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_rescale , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_reduce , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_rem , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_rem_near , Ptr -> Ptr -> Ptr -> Ptr -> IO () #ccall mpd_round_to_intx , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_round_to_int , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_trunc , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_floor , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_ceil , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_sqrt , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_invroot , Ptr -> Ptr -> Ptr -> IO () #ccall mpd_add_i64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_add_u64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub_i64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_sub_u64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div_i64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_div_u64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_mul_i64 , Ptr -> Ptr -> -> Ptr -> IO () #ccall mpd_mul_u64 , Ptr -> Ptr -> -> Ptr -> IO () -- Get attributes of a decimal #ccall mpd_adjexp , Ptr -> IO CInt #ccall mpd_etiny , Ptr -> IO #ccall mpd_etop , Ptr -> IO #ccall mpd_msword , Ptr -> IO #ccall mpd_word_digits , -> IO CInt #ccall mpd_msd , -> IO #ccall mpd_lsd , -> IO #ccall mpd_digits_to_size , CInt -> IO CInt #ccall mpd_exp_digits , -> IO CInt #ccall mpd_iscanonical , Ptr -> IO CInt #ccall mpd_isfinite , Ptr -> IO CInt #ccall mpd_isinfinite , Ptr -> IO CInt #ccall mpd_isinteger , Ptr -> IO CInt #ccall mpd_isnan , Ptr -> IO CInt #ccall mpd_isnegative , Ptr -> IO CInt #ccall mpd_ispositive , Ptr -> IO CInt #ccall mpd_isqnan , Ptr -> IO CInt #ccall mpd_issigned , Ptr -> IO CInt #ccall mpd_issnan , Ptr -> IO CInt #ccall mpd_isspecial , Ptr -> IO CInt #ccall mpd_iszero , Ptr -> IO CInt #ccall mpd_iszerocoeff , Ptr -> IO CInt #ccall mpd_isnormal , Ptr -> Ptr -> IO CInt #ccall mpd_issubnormal , Ptr -> Ptr -> IO CInt #ccall mpd_isoddword , -> IO CInt #ccall mpd_isoddcoeff , Ptr -> IO CInt #ccall mpd_isodd , Ptr -> IO CInt #ccall mpd_iseven , Ptr -> IO CInt #ccall mpd_sign , Ptr -> IO CUChar #ccall mpd_arith_sign , Ptr -> IO CInt #ccall mpd_radix , IO CLong #ccall mpd_isdynamic , Ptr -> IO CInt #ccall mpd_isstatic , Ptr -> IO CInt #ccall mpd_isdynamic_data , Ptr -> IO CInt #ccall mpd_isstatic_data , Ptr -> IO CInt #ccall mpd_isshared_data , Ptr -> IO CInt #ccall mpd_isconst_data , Ptr -> IO CInt #ccall mpd_trail_zeros , Ptr -> IO CInt -- Set attributes of a decimal #ccall mpd_setdigits , Ptr -> IO () #ccall mpd_set_sign , Ptr -> -> IO () #ccall mpd_signcpy , Ptr -> Ptr -> IO () #ccall mpd_set_infinity , Ptr -> IO () #ccall mpd_set_qnan , Ptr -> IO () #ccall mpd_set_snan , Ptr -> IO () #ccall mpd_set_negative , Ptr -> IO () #ccall mpd_set_positive , Ptr -> IO () #ccall mpd_set_dynamic , Ptr -> IO () #ccall mpd_set_static , Ptr -> IO () #ccall mpd_set_dynamic_data , Ptr -> IO () #ccall mpd_set_static_data , Ptr -> IO () #ccall mpd_set_shared_data , Ptr -> IO () #ccall mpd_set_const_data , Ptr -> IO () #ccall mpd_clear_flags , Ptr -> IO () #ccall mpd_set_flags , Ptr -> -> IO () #ccall mpd_copy_flags , Ptr -> Ptr -> IO () -- Memory handling -- I skipped many functions. #ccall mpd_qnew , IO (Ptr ) #ccall mpd_new , Ptr -> IO (Ptr ) #ccall mpd_del , Ptr -> IO ()