packages feed

prim-0.1.0.0: src/F64.hs

module F64 (F64, module F64) where

add,sub,mul,div :: F64 -> F64 -> F64
add y x = x +## y
sub y x = x -## y
-- | Low word of signed integer multiply
mul y x = x *## y
div y x = x /## y
negate,abs,exp,log,sqrt,sin,cos,tan,asin,acos,atan,sinh,cosh,tanh :: F64 -> F64
negate = negateDouble#
abs = fabsDouble#
exp = expDouble#; log = logDouble#
sqrt = sqrtDouble#
sin = sinDouble#; cos = cosDouble#; tan = tanDouble#
asin = asinDouble#; acos = acosDouble#; atan = atanDouble#
sinh = sinhDouble#; cosh = coshDouble#; tanh = tanhDouble#

pow :: F64 -> F64 -> F64
pow y x = x **## y

decode2Int :: F64 -> (# Int, U64, U64, Int #)
decode2Int = decodeDouble_2Int#  
decodeI64 :: F64 -> (# Int, Int #)
decodeI64 = decodeDouble_Int64#


gt y x = x >## y
ge y x = x >=## y
lt y x = x <## y
le y x = x <=## y
eq x y = x ==## y
ne x y = x /=## y

fromInt :: Int -> F64
fromInt = int2Double#
toInt :: F64 -> Int
toInt = double2Int#
fromU64 :: U64 -> F64
fromU64 = word2Double#
toF32 :: F64 -> F32
toF32 = double2Float#
fromF32 :: F32 -> F64
fromF32 = float2Double#