Skip to content

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.

FunctionParametersReturns
SELG : BOOL, IN0 : ANY, IN1 : ANYANY
MAXIN : ANY_ELEMENTARY (2+ args)ANY_ELEMENTARY
MININ : ANY_ELEMENTARY (2+ args)ANY_ELEMENTARY
LIMITMN : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, MX : ANY_ELEMENTARYANY_ELEMENTARY
MUXK : ANY_ELEMENTARY, IN : ANY_ELEMENTARY (2+ args)ANY_ELEMENTARY
GTIN : ANY_ELEMENTARY (2+ args)BOOL
GEIN : ANY_ELEMENTARY (2+ args)BOOL
EQIN : ANY_ELEMENTARY (2+ args)BOOL
LEIN : ANY_ELEMENTARY (2+ args)BOOL
LTIN : ANY_ELEMENTARY (2+ args)BOOL
NEIN1 : ANY_ELEMENTARY, IN2 : ANY_ELEMENTARYBOOL
SEL(G : BOOL, IN0 : ANY, IN1 : ANY) : ANY

Returns IN0 when G is FALSE, IN1 when G is TRUE.

chosen := SEL(useBackup, primary, backup);

Both are variadic (two or more inputs).

MAX(IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ args
MIN(IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ args
biggest := MAX(a, b, c);
smallest := MIN(a, b);
LIMIT(MN : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, MX : ANY_ELEMENTARY) : ANY_ELEMENTARY

Constrains IN to the closed range MN..MX.

clamped := LIMIT(0, value, 100); // value constrained to 0..100
MUX(K : ANY_ELEMENTARY, IN : ANY_ELEMENTARY, ...) : ANY_ELEMENTARY // 2+ inputs

Selects the K-th input (0-based) from the input list.

selected := MUX(channel, ch0, ch1, ch2); // channel = 1 -> ch1

GT, 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 decreasing
GE(IN : ANY_ELEMENTARY, ...) : BOOL // non-increasing
EQ(IN : ANY_ELEMENTARY, ...) : BOOL // all equal
LE(IN : ANY_ELEMENTARY, ...) : BOOL // non-decreasing
LT(IN : ANY_ELEMENTARY, ...) : BOOL // strictly increasing
sorted := LT(a, b, c); // TRUE if a < b < c
inOrder := GE(top, mid, bot);
allSame := EQ(x, y, z);

Unlike the chained comparisons, NE takes exactly two operands.

NE(IN1 : ANY_ELEMENTARY, IN2 : ANY_ELEMENTARY) : BOOL
differs := NE(setpoint, actual);