module Data.Number.ER.Real.Approx.Elementary
(
ERApproxElementary(..)
)
where
import Prelude hiding (exp, log, sin, cos)
import qualified Data.Number.ER.Real.Approx as RA
import Data.Number.ER.BasicTypes
import Data.Number.ER.Real.Arithmetic.Elementary
class (RA.ERIntApprox ra, Ord ra) => (ERApproxElementary ra)
where
abs :: EffortIndex -> ra -> ra
abs ix = Prelude.abs
min :: EffortIndex -> ra -> ra -> ra
min ix = Prelude.min
max :: EffortIndex -> ra -> ra -> ra
max ix = Prelude.max
exp :: EffortIndex -> ra -> ra
exp = erExp_IR
log :: EffortIndex -> ra -> ra
log = erLog_IR
(**) :: EffortIndex -> ra -> ra -> ra
(**) ix b e = exp ix $ e * (log ix b)
pi :: EffortIndex -> ra
pi = erPi_R
sin :: EffortIndex -> ra -> ra
sin = erSine_IR
cos :: EffortIndex -> ra -> ra
cos = erCosine_IR
tan :: EffortIndex -> ra -> ra
tan ix r = (sin ix r) / (cos ix r)
atan :: EffortIndex -> ra -> ra
atan = erATan_IR