csound-expression-0.0: src/CsoundExpr/Opcodes/Math/Matfunc.hs
-- | Mathematical Functions
module CsoundExpr.Opcodes.Math.Matfunc
(abs',
ceil,
exp',
floor',
frac,
int,
log',
log10,
logbtwo,
powA,
powI,
powK,
powoftwo,
round',
sqrt')
where
import CsoundExpr.Base.Types
import CsoundExpr.Base.MultiOut
import CsoundExpr.Base.SideEffect
import CsoundExpr.Base.UserDefined
-- | * opcode : abs
--
--
-- * syntax :
--
-- > abs(x) (no rate restriction)
--
--
-- * description :
--
-- Returns the absolute value of x.
--
--
-- * url : <http://www.csounds.com/manual/html/abs.html>
abs' :: (X x0) => x0 -> x0
abs' x0sig = prefixOperation "abs" args
where args = [to x0sig]
-- | * opcode : ceil
--
--
-- * syntax :
--
-- > ceil(x) (init-, control-, or audio-rate arg allowed)
--
--
-- * description :
--
-- Returns the smallest integer not less than x
--
--
-- * url : <http://www.csounds.com/manual/html/ceil.html>
ceil :: (X x0) => x0 -> x0
ceil x0sig = prefixOperation "ceil" args
where args = [to x0sig]
-- | * opcode : exp
--
--
-- * syntax :
--
-- > exp(x) (no rate restriction)
--
--
-- * description :
--
-- Returns e raised to the xth power.
--
--
-- * url : <http://www.csounds.com/manual/html/exp.html>
exp' :: (X x0) => x0 -> x0
exp' x0sig = prefixOperation "exp" args
where args = [to x0sig]
-- | * opcode : floor
--
--
-- * syntax :
--
-- > floor(x) (init-, control-, or audio-rate arg allowed)
--
--
-- * description :
--
-- Returns the largest integer not greater than x
--
--
-- * url : <http://www.csounds.com/manual/html/floor.html>
floor' :: (X x0) => x0 -> x0
floor' x0sig = prefixOperation "floor" args
where args = [to x0sig]
-- | * opcode : frac
--
--
-- * syntax :
--
-- > frac(x) (init-rate or control-rate args; also works at audio rate in Csound5)
--
--
-- * description :
--
-- Returns the fractional part of x.
--
--
-- * url : <http://www.csounds.com/manual/html/frac.html>
frac :: (K k0) => k0 -> k0
frac k0sig = prefixOperation "frac" args
where args = [to k0sig]
-- | * opcode : int
--
--
-- * syntax :
--
-- > int(x) (init-rate or control-rate; also works at audio rate in Csound5)
--
--
-- * description :
--
-- Returns the integer part of x.
--
--
-- * url : <http://www.csounds.com/manual/html/int.html>
int :: (K k0) => k0 -> k0
int k0sig = prefixOperation "int" args
where args = [to k0sig]
-- | * opcode : log
--
--
-- * syntax :
--
-- > log(x) (no rate restriction)
--
--
-- * description :
--
-- Returns the natural log of x (x positive only).
--
--
-- * url : <http://www.csounds.com/manual/html/log.html>
log' :: (X x0) => x0 -> x0
log' x0sig = prefixOperation "log" args
where args = [to x0sig]
-- | * opcode : log10
--
--
-- * syntax :
--
-- > log10(x) (no rate restriction)
--
--
-- * description :
--
-- Returns the base 10 log of x (x positive only).
--
--
-- * url : <http://www.csounds.com/manual/html/log10.html>
log10 :: (X x0) => x0 -> x0
log10 x0sig = prefixOperation "log10" args
where args = [to x0sig]
-- | * opcode : logbtwo
--
--
-- * syntax :
--
-- > logbtwo(x) (init-rate or control-rate args only)
--
--
-- * description :
--
-- Performs a logarithmic base two calculation.
--
--
-- * url : <http://www.csounds.com/manual/html/logbtwo.html>
logbtwo :: (K k0) => k0 -> k0
logbtwo k0sig = prefixOperation "logbtwo" args
where args = [to k0sig]
-- | * opcode : pow
--
--
-- * syntax :
--
-- > ares pow aarg, kpow [, inorm]
-- > ires pow iarg, ipow [, inorm]
-- > kres pow karg, kpow [, inorm]
--
--
-- * description :
--
-- Computes xarg to the power of kpow (or ipow) and scales the
-- result by inorm.
--
--
-- * url : <http://www.csounds.com/manual/html/pow.html>
powA :: (K k0) => [Irate] -> Arate -> k0 -> Arate
powA i0init a1arg k2pow = opcode "pow" args
where args = [to a1arg, to k2pow] ++ map to i0init
-- | * opcode : pow
--
--
-- * syntax :
--
-- > ares pow aarg, kpow [, inorm]
-- > ires pow iarg, ipow [, inorm]
-- > kres pow karg, kpow [, inorm]
--
--
-- * description :
--
-- Computes xarg to the power of kpow (or ipow) and scales the
-- result by inorm.
--
--
-- * url : <http://www.csounds.com/manual/html/pow.html>
powI :: [Irate] -> Irate -> Irate -> Irate
powI i0init i1arg i2pow = opcode "pow" args
where args = [to i1arg, to i2pow] ++ map to i0init
-- | * opcode : pow
--
--
-- * syntax :
--
-- > ares pow aarg, kpow [, inorm]
-- > ires pow iarg, ipow [, inorm]
-- > kres pow karg, kpow [, inorm]
--
--
-- * description :
--
-- Computes xarg to the power of kpow (or ipow) and scales the
-- result by inorm.
--
--
-- * url : <http://www.csounds.com/manual/html/pow.html>
powK :: (K k0, K k1) => [Irate] -> k0 -> k1 -> Krate
powK i0init k1arg k2pow = opcode "pow" args
where args = [to k1arg, to k2pow] ++ map to i0init
-- | * opcode : powoftwo
--
--
-- * syntax :
--
-- > powoftwo(x) (init-rate or control-rate args only)
--
--
-- * description :
--
-- Performs a power-of-two calculation.
--
--
-- * url : <http://www.csounds.com/manual/html/powoftwo.html>
powoftwo :: (K k0) => k0 -> k0
powoftwo k0sig = prefixOperation "powoftwo" args
where args = [to k0sig]
-- | * opcode : round
--
--
-- * syntax :
--
-- > round(x) (init-, control-, or audio-rate arg allowed)
--
--
-- * description :
--
-- The integer value nearest to x ; if the fractional part of x is
-- exactly 0.5, the direction of rounding is undefined.
--
--
-- * url : <http://www.csounds.com/manual/html/round.html>
round' :: (X x0) => x0 -> x0
round' x0sig = prefixOperation "round" args
where args = [to x0sig]
-- | * opcode : sqrt
--
--
-- * syntax :
--
-- > sqrt(x) (no rate restriction)
--
--
-- * description :
--
-- Returns the square root of x (x non-negative).
--
--
-- * url : <http://www.csounds.com/manual/html/sqrt.html>
sqrt' :: (X x0) => x0 -> x0
sqrt' x0sig = prefixOperation "sqrt" args
where args = [to x0sig]