-- | 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]