Selection and comparison functions
Selection functions pick or constrain a value; comparison functions return a
BOOL. They operate on ANY_ELEMENTARY values. The variadic comparison
functions return TRUE only when the comparison holds across the whole chain.
| Function | Parameters | Returns |
|---|---|---|
SEL | G : BOOL, IN0 : ANY, IN1 : ANY | ANY |
MAX | IN : ANY_ELEMENTARY (2+ args) | ANY_ELEMENTARY |
MIN | IN : ANY_ELEMENTARY (2+ args) | ANY_ELEMENTARY |
LIMIT | MN : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, MX : ANY_ELEMENTARY | ANY_ELEMENTARY |
MUX | K : ANY_ELEMENTARY, IN : ANY_ELEMENTARY (2+ args) | ANY_ELEMENTARY |
GT | IN : ANY_ELEMENTARY (2+ args) | BOOL |
GE | IN : ANY_ELEMENTARY (2+ args) | BOOL |
EQ | IN : ANY_ELEMENTARY (2+ args) | BOOL |
LE | IN : ANY_ELEMENTARY (2+ args) | BOOL |
LT | IN : ANY_ELEMENTARY (2+ args) | BOOL |
NE | IN1 : ANY_ELEMENTARY, IN2 : ANY_ELEMENTARY | BOOL |
SEL — binary selection
Section titled “SEL — binary selection”SEL(G : BOOL, IN0 : ANY, IN1 : ANY) : ANYReturns IN0 when G is FALSE, IN1 when G is TRUE.
chosen := SEL(useBackup, primary, backup);MAX, MIN — largest / smallest
Section titled “MAX, MIN — largest / smallest”Both are variadic (two or more inputs).
MAX(IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ argsMIN(IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ argsbiggest := MAX(a, b, c);smallest := MIN(a, b);LIMIT — clamp to a range
Section titled “LIMIT — clamp to a range”LIMIT(MN : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, MX : ANY_ELEMENTARY) : ANY_ELEMENTARYConstrains IN to the closed range MN..MX.
clamped := LIMIT(0, value, 100); // value constrained to 0..100MUX — indexed selection
Section titled “MUX — indexed selection”MUX(K : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ inputsSelects the K-th input (0-based) from the input list.
selected := MUX(channel, ch0, ch1, ch2); // channel = 1 -> ch1GT, GE, EQ, LE, LT — chained comparisons
Section titled “GT, GE, EQ, LE, LT — chained comparisons”These are variadic and return TRUE only when the comparison holds across
the whole chain — e.g. GT(a, b, c) is a > b AND b > c.
GT(IN : ANY_ELEMENTARY, ...) : BOOL // strictly decreasingGE(IN : ANY_ELEMENTARY, ...) : BOOL // non-increasingEQ(IN : ANY_ELEMENTARY, ...) : BOOL // all equalLE(IN : ANY_ELEMENTARY, ...) : BOOL // non-decreasingLT(IN : ANY_ELEMENTARY, ...) : BOOL // strictly increasingsorted := LT(a, b, c); // TRUE if a < b < cinOrder := GE(top, mid, bot);allSame := EQ(x, y, z);NE — inequality
Section titled “NE — inequality”Unlike the chained comparisons, NE takes exactly two operands.
NE(IN1 : ANY_ELEMENTARY, IN2 : ANY_ELEMENTARY) : BOOLdiffers := NE(setpoint, actual);