packages feed

KiCS-0.8.8: src/lib/Curry/Module/Float.curry

------------------------------------------------------------------------------
--- A collection of operations on floating point numbers.
------------------------------------------------------------------------------

module Float (
  (*.),(/.),(+.),(-.),(<.),(>.),(<=.),(>=.),
  
  i2f, truncate, round,

  sqrt, log, exp, sin, cos, tan, atan
  ) where

-- The operator declarations are similar to the standard arithmetic operators.

infixl 7 *., /.
infixl 6 +., -.
infix  4 <., >., <=., >=.


--- Addition on floats.

-- Types of primitive arithmetic functions and predicates

--- Adds two Floats.
(+.)   :: Float -> Float -> Float
x +. y = (prim_Float_plus $# x) $# y

prim_Float_plus :: Float -> Float -> Float
prim_Float_plus external

--- Subtraction on floats.

(-.)   :: Float -> Float -> Float
x -. y = (prim_Float_minus $# x) $# y

prim_Float_minus :: Float -> Float -> Float
prim_Float_minus external

--- Multiplication on floats.

(*.)   :: Float -> Float -> Float
x *. y = (prim_Float_times $# x) $# y

prim_Float_times :: Float -> Float -> Float
prim_Float_times external

--- Division on floats.

(/.)   :: Float -> Float -> Float
x /. y = (prim_Float_divide $# x) $# y

prim_Float_divide :: Float -> Float -> Float
prim_Float_divide external

--- Predicate "less than" on floats.

(<.)   :: Float -> Float -> Bool
x <. y = (prim_Float_lt $# x) $# y

prim_Float_lt :: Float -> Float -> Bool
prim_Float_lt external

--- Predicate "greater than" on floats.

(>.)   :: Float -> Float -> Bool
x >. y = (prim_Float_gt $# x) $# y

prim_Float_gt :: Float -> Float -> Bool
prim_Float_gt external

--- Predicate "less than or equal" on floats.

(<=.)  :: Float -> Float -> Bool
x <=. y = (prim_Float_leq $# x) $# y

prim_Float_leq :: Float -> Float -> Bool
prim_Float_leq external

--- Predicate "greater than or equal" on floats.

(>=.)  :: Float -> Float -> Bool
x >=. y = (prim_Float_geq $# x) $# y

prim_Float_geq :: Float -> Float -> Bool
prim_Float_geq external


--- Conversion function from integers to floats.

i2f    :: Int -> Float
i2f x = prim_i2f $# x

prim_i2f :: Int -> Float
prim_i2f external

--- Conversion function from floats to integers.
--- The result is the closest integer between the argument and 0.

truncate :: Float -> Int
truncate x = prim_truncate $# x

prim_truncate :: Float -> Int
prim_truncate external

--- Conversion function from floats to integers.
--- The result is the nearest integer to the argument.
--- If the argument is equidistant between two integers,
--- it is rounded to the closest even integer value.

round :: Float -> Int
round x = prim_round $# x

prim_round :: Float -> Int
prim_round external

--- Square root.

sqrt :: Float -> Float
sqrt x = prim_sqrt $# x

prim_sqrt :: Float -> Float
prim_sqrt external

--- Natural logarithm.

log :: Float -> Float
log x = prim_log $# x

prim_log :: Float -> Float
prim_log external

--- Natural exponent.

exp :: Float -> Float
exp x = prim_exp $# x

prim_exp :: Float -> Float
prim_exp external

--- Sine.

sin :: Float -> Float
sin x = prim_sin $# x

prim_sin :: Float -> Float
prim_sin external

--- Cosine.

cos :: Float -> Float
cos x = prim_cos $# x

prim_cos :: Float -> Float
prim_cos external

--- Tangent.

tan :: Float -> Float
tan x = prim_tan $# x

prim_tan :: Float -> Float
prim_tan external

atan :: Float -> Float
atan x = prim_atan $# x

prim_atan :: Float -> Float
prim_atan external