packages feed

hydra-0.13.0: src/main/haskell/Hydra/Dsl/Meta/Lib/Math.hs

-- | Phantom-typed term DSL for the hydra.lib.math library

module Hydra.Dsl.Meta.Lib.Math where

import Hydra.Phantoms
import Hydra.Dsl.Meta.Phantoms
import qualified Hydra.Dsl.Terms as Terms
import Hydra.Sources.Libraries


abs :: Num a => TTerm a -> TTerm a
abs = primitive1 _math_abs

acos :: TTerm Double -> TTerm Double
acos = primitive1 _math_acos

acosh :: TTerm Double -> TTerm Double
acosh = primitive1 _math_acosh

add :: Num a => TTerm a -> TTerm a -> TTerm a
add = primitive2 _math_add

asin :: TTerm Double -> TTerm Double
asin = primitive1 _math_asin

asinh :: TTerm Double -> TTerm Double
asinh = primitive1 _math_asinh

atan :: TTerm Double -> TTerm Double
atan = primitive1 _math_atan

atan2 :: TTerm Double -> TTerm Double -> TTerm Double
atan2 = primitive2 _math_atan2

atanh :: TTerm Double -> TTerm Double
atanh = primitive1 _math_atanh

ceiling :: TTerm Double -> TTerm Integer
ceiling = primitive1 _math_ceiling

cos :: TTerm Double -> TTerm Double
cos = primitive1 _math_cos

cosh :: TTerm Double -> TTerm Double
cosh = primitive1 _math_cosh

div :: Integral a => TTerm a -> TTerm a -> TTerm a
div = primitive2 _math_div

e :: TTerm Double
e = primitive _math_e

even :: Integral a => TTerm a -> TTerm Bool
even = primitive1 _math_even

exp :: TTerm Double -> TTerm Double
exp = primitive1 _math_exp

floor :: TTerm Double -> TTerm Integer
floor = primitive1 _math_floor

log :: TTerm Double -> TTerm Double
log = primitive1 _math_log

logBase :: TTerm Double -> TTerm Double -> TTerm Double
logBase = primitive2 _math_logBase

max :: Ord a => TTerm a -> TTerm a -> TTerm a
max = primitive2 _math_max

min :: Ord a => TTerm a -> TTerm a -> TTerm a
min = primitive2 _math_min

mod :: Integral a => TTerm a -> TTerm a -> TTerm a
mod = primitive2 _math_mod

mul :: Num a => TTerm a -> TTerm a -> TTerm a
mul = primitive2 _math_mul

negate :: Num a => TTerm a -> TTerm a
negate = primitive1 _math_negate

odd :: Integral a => TTerm a -> TTerm Bool
odd = primitive1 _math_odd

pi :: TTerm Double
pi = primitive _math_pi

pow :: TTerm Double -> TTerm Double -> TTerm Double
pow = primitive2 _math_pow

pred :: Enum a => TTerm a -> TTerm a
pred = primitive1 _math_pred

range :: Enum a => TTerm a -> TTerm a -> TTerm [a]
range start end = primitive2 _math_range start end

rem :: Integral a => TTerm a -> TTerm a -> TTerm a
rem = primitive2 _math_rem

round :: TTerm Double -> TTerm Integer
round = primitive1 _math_round

signum :: Num a => TTerm a -> TTerm a
signum = primitive1 _math_signum

sin :: TTerm Double -> TTerm Double
sin = primitive1 _math_sin

sinh :: TTerm Double -> TTerm Double
sinh = primitive1 _math_sinh

sqrt :: TTerm Double -> TTerm Double
sqrt = primitive1 _math_sqrt

sub :: Num a => TTerm a -> TTerm a -> TTerm a
sub = primitive2 _math_sub

succ :: Enum a => TTerm a -> TTerm a
succ = primitive1 _math_succ

tan :: TTerm Double -> TTerm Double
tan = primitive1 _math_tan

tanh :: TTerm Double -> TTerm Double
tanh = primitive1 _math_tanh

truncate :: TTerm Double -> TTerm Integer
truncate = primitive1 _math_truncate