Math and arithmetic functions
Arithmetic and math functions operate on numeric types. The generic
parameter types (ANY_NUM, ANY_REAL, ANY_INT) describe the family of
concrete types each accepts — see the
generic-type table
on the parent page. A return type shown as a generic type is resolved from the
actual argument types at compile time.
| Function | Parameters | Returns |
|---|---|---|
ABS | X : ANY_NUM | ANY_NUM |
SQRT | X : ANY_REAL | ANY_REAL |
LN | X : ANY_REAL | ANY_REAL |
LOG | X : ANY_REAL | ANY_REAL |
EXP | X : ANY_REAL | ANY_REAL |
SIN | X : ANY_REAL | ANY_REAL |
COS | X : ANY_REAL | ANY_REAL |
TAN | X : ANY_REAL | ANY_REAL |
ASIN | X : ANY_REAL | ANY_REAL |
ACOS | X : ANY_REAL | ANY_REAL |
ATAN | X : ANY_REAL | ANY_REAL |
ATAN2 | Y : ANY_REAL, X : ANY_REAL | ANY_REAL |
ADD | IN : ANY_NUM (2+ args) | ANY_NUM |
SUB | IN1 : ANY_NUM, IN2 : ANY_NUM | ANY_NUM |
MUL | IN : ANY_NUM (2+ args) | ANY_NUM |
DIV | IN1 : ANY_NUM, IN2 : ANY_NUM | ANY_NUM |
MOD | IN1 : ANY_NUM, IN2 : ANY_NUM | ANY_INT |
EXPT | IN1 : ANY_NUM, IN2 : ANY_NUM | ANY_REAL |
MOVE | IN : ANY | ANY |
ABS — absolute value
Section titled “ABS — absolute value”ABS(X : ANY_NUM) : ANY_NUMmagnitude := ABS(-12); // 12SQRT — square root
Section titled “SQRT — square root”SQRT(X : ANY_REAL) : ANY_REALside := SQRT(area);LN, LOG, EXP — logarithms and exponential
Section titled “LN, LOG, EXP — logarithms and exponential”LN(X : ANY_REAL) : ANY_REAL // natural logarithmLOG(X : ANY_REAL) : ANY_REAL // base-10 logarithmEXP(X : ANY_REAL) : ANY_REAL // e raised to Xdecay := EXP(-t / tau);dB := 20.0 * LOG(ratio);SIN, COS, TAN, ASIN, ACOS, ATAN — trigonometry
Section titled “SIN, COS, TAN, ASIN, ACOS, ATAN — trigonometry”All take and return an ANY_REAL. Angles are in radians.
SIN(X : ANY_REAL) : ANY_REALCOS(X : ANY_REAL) : ANY_REALTAN(X : ANY_REAL) : ANY_REALASIN(X : ANY_REAL) : ANY_REALACOS(X : ANY_REAL) : ANY_REALATAN(X : ANY_REAL) : ANY_REALy := SIN(phase);angle := ASIN(y); // inverse, result in radiansATAN2 — two-argument arctangent
Section titled “ATAN2 — two-argument arctangent”ATAN2(Y : ANY_REAL, X : ANY_REAL) : ANY_REALReturns the angle of the vector (X, Y), using the signs of both arguments to
place the result in the correct quadrant.
heading := ATAN2(dy, dx);ADD, SUB, MUL, DIV — basic arithmetic
Section titled “ADD, SUB, MUL, DIV — basic arithmetic”ADD and MUL are variadic (two or more inputs); SUB and DIV take
exactly two. For everyday expressions the
arithmetic operators (+, -,
*, /) are usually clearer.
ADD(IN : ANY_NUM, ...) : ANY_NUM // 2+ argsSUB(IN1 : ANY_NUM, IN2 : ANY_NUM) : ANY_NUMMUL(IN : ANY_NUM, ...) : ANY_NUM // 2+ argsDIV(IN1 : ANY_NUM, IN2 : ANY_NUM) : ANY_NUMtotal := ADD(a, b, c); // variadic sumarea := MUL(width, height);MOD — modulo
Section titled “MOD — modulo”MOD(IN1 : ANY_NUM, IN2 : ANY_NUM) : ANY_INTReturns the integer remainder of IN1 / IN2.
remainder := MOD(value, 10); // last decimal digitEXPT — exponentiation
Section titled “EXPT — exponentiation”EXPT(IN1 : ANY_NUM, IN2 : ANY_NUM) : ANY_REALRaises IN1 to the power of IN2.
volume := EXPT(side, 3); // side ** 3MOVE — copy a value
Section titled “MOVE — copy a value”MOVE(IN : ANY) : ANYReturns its input unchanged; used to make an explicit assignment/copy.
backup := MOVE(current);