module Data.Floating.CMath (
c_acos, c_acosf, c_asin, c_asinf, c_atan, c_atanf, c_atan2, c_atan2f,
c_cos, c_cosf, c_sin, c_sinf, c_tan, c_tanf,
c_acosh, c_acoshf, c_asinh, c_asinhf, c_atanh, c_atanhf, c_cosh, c_coshf,
c_sinh, c_sinhf, c_tanh, c_tanhf,
c_exp, c_expf, c_exp2, c_exp2f, c_expm1, c_expm1f, c_frexp, c_frexpf,
c_ilogb, c_ilogbf, c_ldexp, c_ldexpf, c_log, c_logf, c_log10, c_log10f,
c_log1p, c_log1pf, c_log2, c_log2f, c_logb, c_logbf, c_modf, c_modff,
c_scalbn, c_scalbnf, c_scalbln, c_scalblnf,
c_cbrt, c_cbrtf, c_fabs, c_fabsf, c_hypot, c_hypotf, c_pow, c_powf, c_sqrt,
c_sqrtf,
c_fmod, c_fmodf, c_remainder, c_remainderf, c_remquo, c_remquof,
c_copysign, c_copysignf, c_nan, c_nanf, c_nextafter, c_nextafterf,
c_erf, c_erff, c_erfc, c_erfcf, c_lgamma, c_lgammaf, c_tgamma, c_tgammaf,
c_ceil, c_ceilf, c_floor, c_floorf, c_nearbyint, c_nearbyintf, c_rint,
c_rintf, c_lrint, c_lrintf, c_llrint, c_llrintf, c_round, c_roundf,
c_lround, c_lroundf, c_llround, c_llroundf, c_trunc, c_truncf,
c_fdim, c_fdimf, c_fmax, c_fmaxf, c_fmin, c_fminf,
c_fma, c_fmaf,
libmDouble, libmFloat, libmDouble2, libmFloat2, libmDouble3, libmFloat3
) where
import Prelude hiding (Double, Float)
import Data.Floating.Types
import Foreign
import Foreign.C
libmDouble :: (CDouble -> CDouble) -> Double -> Double
libmDouble f a = toFloating $ f (toFloating a)
libmFloat :: (CFloat -> CFloat) -> Float -> Float
libmFloat f a = toFloating $ f (toFloating a)
libmDouble2 :: (CDouble -> CDouble -> CDouble) -> Double -> Double -> Double
libmDouble2 f a b = toFloating $ f (toFloating a) (toFloating b)
libmFloat2 :: (CFloat -> CFloat -> CFloat) -> Float -> Float -> Float
libmFloat2 f a b = toFloating $ f (toFloating a) (toFloating b)
libmDouble3 :: (CDouble -> CDouble -> CDouble -> CDouble)
-> Double -> Double -> Double -> Double
libmDouble3 f a b c = toFloating
$ f (toFloating a) (toFloating b) (toFloating c)
libmFloat3 :: (CFloat -> CFloat -> CFloat -> CFloat)
-> Float -> Float -> Float -> Float
libmFloat3 f a b c = toFloating
$ f (toFloating a) (toFloating b) (toFloating c)
foreign import ccall unsafe "acos"
c_acos :: CDouble -> CDouble
foreign import ccall unsafe "acosf"
c_acosf :: CFloat -> CFloat
foreign import ccall unsafe "asin"
c_asin :: CDouble -> CDouble
foreign import ccall unsafe "asinf"
c_asinf :: CFloat -> CFloat
foreign import ccall unsafe "atan"
c_atan :: CDouble -> CDouble
foreign import ccall unsafe "atanf"
c_atanf :: CFloat -> CFloat
foreign import ccall unsafe "atan2"
c_atan2 :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "atan2f"
c_atan2f :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "cos"
c_cos :: CDouble -> CDouble
foreign import ccall unsafe "cosf"
c_cosf :: CFloat -> CFloat
foreign import ccall unsafe "sin"
c_sin :: CDouble -> CDouble
foreign import ccall unsafe "sinf"
c_sinf :: CFloat -> CFloat
foreign import ccall unsafe "tan"
c_tan :: CDouble -> CDouble
foreign import ccall unsafe "tanf"
c_tanf :: CFloat -> CFloat
foreign import ccall unsafe "acosh"
c_acosh :: CDouble -> CDouble
foreign import ccall unsafe "acoshf"
c_acoshf :: CFloat -> CFloat
foreign import ccall unsafe "asinh"
c_asinh :: CDouble -> CDouble
foreign import ccall unsafe "asinhf"
c_asinhf :: CFloat -> CFloat
foreign import ccall unsafe "atanh"
c_atanh :: CDouble -> CDouble
foreign import ccall unsafe "atanhf"
c_atanhf :: CFloat -> CFloat
foreign import ccall unsafe "cosh"
c_cosh :: CDouble -> CDouble
foreign import ccall unsafe "coshf"
c_coshf :: CFloat -> CFloat
foreign import ccall unsafe "sinh"
c_sinh :: CDouble -> CDouble
foreign import ccall unsafe "sinhf"
c_sinhf :: CFloat -> CFloat
foreign import ccall unsafe "tanh"
c_tanh :: CDouble -> CDouble
foreign import ccall unsafe "tanhf"
c_tanhf :: CFloat -> CFloat
foreign import ccall unsafe "exp"
c_exp :: CDouble -> CDouble
foreign import ccall unsafe "expf"
c_expf :: CFloat -> CFloat
foreign import ccall unsafe "exp2"
c_exp2 :: CDouble -> CDouble
foreign import ccall unsafe "exp2f"
c_exp2f :: CFloat -> CFloat
foreign import ccall unsafe "expm1"
c_expm1 :: CDouble -> CDouble
foreign import ccall unsafe "expm1f"
c_expm1f :: CFloat -> CFloat
foreign import ccall unsafe "frexp"
c_frexp :: CDouble -> Ptr CInt -> IO CDouble
foreign import ccall unsafe "frexpf"
c_frexpf :: CFloat -> Ptr CInt -> IO CFloat
foreign import ccall unsafe "ilogb"
c_ilogb :: CDouble -> CInt
foreign import ccall unsafe "ilogbf"
c_ilogbf :: CFloat -> CInt
foreign import ccall unsafe "ldexp"
c_ldexp :: CDouble -> CInt -> CDouble
foreign import ccall unsafe "ldexpf"
c_ldexpf :: CFloat -> CInt -> CFloat
foreign import ccall unsafe "log"
c_log :: CDouble -> CDouble
foreign import ccall unsafe "logf"
c_logf :: CFloat -> CFloat
foreign import ccall unsafe "log10"
c_log10 :: CDouble -> CDouble
foreign import ccall unsafe "log10f"
c_log10f :: CFloat -> CFloat
foreign import ccall unsafe "log1p"
c_log1p :: CDouble -> CDouble
foreign import ccall unsafe "log1pf"
c_log1pf :: CFloat -> CFloat
foreign import ccall unsafe "log2"
c_log2 :: CDouble -> CDouble
foreign import ccall unsafe "log2f"
c_log2f :: CFloat -> CFloat
foreign import ccall unsafe "logb"
c_logb :: CDouble -> CDouble
foreign import ccall unsafe "logbf"
c_logbf :: CFloat -> CFloat
foreign import ccall unsafe "modf"
c_modf :: CDouble -> Ptr CDouble -> IO CDouble
foreign import ccall unsafe "modff"
c_modff :: CFloat -> Ptr CFloat -> IO CFloat
foreign import ccall unsafe "scalbn"
c_scalbn :: CDouble -> CInt -> CDouble
foreign import ccall unsafe "scalbnf"
c_scalbnf :: CFloat -> CInt -> CFloat
foreign import ccall unsafe "scalbln"
c_scalbln :: CDouble -> CLong -> CDouble
foreign import ccall unsafe "scalblnf"
c_scalblnf :: CFloat -> CLong -> CFloat
foreign import ccall unsafe "cbrt"
c_cbrt :: CDouble -> CDouble
foreign import ccall unsafe "cbrtf"
c_cbrtf :: CFloat -> CFloat
foreign import ccall unsafe "fabs"
c_fabs :: CDouble -> CDouble
foreign import ccall unsafe "fabsf"
c_fabsf :: CFloat -> CFloat
foreign import ccall unsafe "hypot"
c_hypot :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "hypotf"
c_hypotf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "pow"
c_pow :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "powf"
c_powf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "sqrt"
c_sqrt :: CDouble -> CDouble
foreign import ccall unsafe "sqrtf"
c_sqrtf :: CFloat -> CFloat
foreign import ccall unsafe "erf"
c_erf :: CDouble -> CDouble
foreign import ccall unsafe "erff"
c_erff :: CFloat -> CFloat
foreign import ccall unsafe "erfc"
c_erfc :: CDouble -> CDouble
foreign import ccall unsafe "erfcf"
c_erfcf :: CFloat -> CFloat
foreign import ccall unsafe "lgamma"
c_lgamma :: CDouble -> CDouble
foreign import ccall unsafe "lgammaf"
c_lgammaf :: CFloat -> CFloat
foreign import ccall unsafe "tgamma"
c_tgamma :: CDouble -> CDouble
foreign import ccall unsafe "tgammaf"
c_tgammaf :: CFloat -> CFloat
foreign import ccall unsafe "ceil"
c_ceil :: CDouble -> CDouble
foreign import ccall unsafe "ceilf"
c_ceilf :: CFloat -> CFloat
foreign import ccall unsafe "floor"
c_floor :: CDouble -> CDouble
foreign import ccall unsafe "floorf"
c_floorf :: CFloat -> CFloat
foreign import ccall unsafe "nearbyint"
c_nearbyint :: CDouble -> CDouble
foreign import ccall unsafe "nearbyintf"
c_nearbyintf :: CFloat -> CFloat
foreign import ccall unsafe "rint"
c_rint :: CDouble -> CDouble
foreign import ccall unsafe "rintf"
c_rintf :: CFloat -> CFloat
foreign import ccall unsafe "lrint"
c_lrint :: CDouble -> CLong
foreign import ccall unsafe "lrintf"
c_lrintf :: CFloat -> CLong
foreign import ccall unsafe "llrint"
c_llrint :: CDouble -> CLLong
foreign import ccall unsafe "llrintf"
c_llrintf :: CFloat -> CLLong
foreign import ccall unsafe "round"
c_round :: CDouble -> CDouble
foreign import ccall unsafe "roundf"
c_roundf :: CFloat -> CFloat
foreign import ccall unsafe "lround"
c_lround :: CDouble -> CLong
foreign import ccall unsafe "lroundf"
c_lroundf :: CFloat -> CLong
foreign import ccall unsafe "llround"
c_llround :: CDouble -> CLLong
foreign import ccall unsafe "llroundf"
c_llroundf :: CFloat -> CLLong
foreign import ccall unsafe "trunc"
c_trunc :: CDouble -> CDouble
foreign import ccall unsafe "truncf"
c_truncf :: CFloat -> CFloat
foreign import ccall unsafe "fmod"
c_fmod :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "fmodf"
c_fmodf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "remainder"
c_remainder :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "remainderf"
c_remainderf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "remquo"
c_remquo :: CDouble -> CDouble -> Ptr CInt -> IO CDouble
foreign import ccall unsafe "remquof"
c_remquof :: CFloat -> CFloat -> Ptr CInt -> IO CFloat
foreign import ccall unsafe "copysign"
c_copysign :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "copysignf"
c_copysignf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "nan"
c_nan :: CString -> IO CDouble
foreign import ccall unsafe "nanf"
c_nanf :: CString -> IO CFloat
foreign import ccall unsafe "nextafter"
c_nextafter :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "nextafterf"
c_nextafterf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "fdim"
c_fdim :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "fdimf"
c_fdimf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "fmax"
c_fmax :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "fmaxf"
c_fmaxf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "fmin"
c_fmin :: CDouble -> CDouble -> CDouble
foreign import ccall unsafe "fminf"
c_fminf :: CFloat -> CFloat -> CFloat
foreign import ccall unsafe "fma"
c_fma :: CDouble -> CDouble -> CDouble -> CDouble
foreign import ccall unsafe "fmaf"
c_fmaf :: CFloat -> CFloat -> CFloat -> CFloat