These blocks can be found in the **Block Library** in the **Math** group.

**add**

Addition: '∑ vals'.

Calculates a total or sum of all inputs. Any val which doesn't evaluate to a number is ignored. If no vals evaluate to a number then return null.

In this example, we are adding currents A, B, and C to get Total Current.

**avg**

Fold vals their standard average or arithmetic mean.

Calculates an average value of all inputs. Any val which doesn't evaluate to a number is ignored. If no vals evaluate to a number then return null.

**div**

Multiply: 'vals₀ × vals₁ × vals₂ '.

Divides input b from input a. (a divided by b). Any val which doesn't evaluate to a number is ignored. If no vals evaluate to a number then return null.

**isEven**

Checks to see if a number is an even number (a multiple of 2) and the input must be a whole number (integer).

**isOdd**

Checks to see if a number is an odd number (not a multiple of 2) and the input must be a whole number (integer).

**Max**

Maximum of vals.

Extracts the largest of various number input values. Any val which doesn't evaluate to a number is ignored. If no vals evaluate to a number then return null.

**min**

Minimum of vals.

Extracts the smallest of various number input values. Any val which doesn't evaluate to a number is ignored. If no vals evaluate to null

**Modulo**

Modulo/remainder: 'a % b'.

Modulo is the remainder (remaining whole number) after input a is divided by input b. Return null if a or b doesn't evaluate to number.

**Mult**

Multiply: 'vals₀ × vals₁ × vals₂'.

Multiply two or more input values. There is no pre-defined limit to the number of input variables (though there may be a practical limit). Any val which doesn't evaluate to a number is ignored. If no vals evaluate to a number then return null.

**Neg**

Negate: '-val'.

Negate reverses the math sign + or - of the input value to result in the opposite sign. Return null if val doesn't evaluate to number.

**sineWave**

Generates a number output (**result**) based on a sine wave algorithm. **min** is the lowest number of the sinewave and **max** is the highest number of the sinewave.

**Period** is in minutes and determines the amount of time it takes to complete one full cycle of the sinewave.

**sub**

Subtract: 'a - b'.

Return null if a or b doesn't evaluate to number.

**threshold**

Threshold returns true when input is above or below a setpoint with configurable deadband.

The deadband is only applied when the output is going from true to false.

**aboveBy**

Check if the base number is above the input number by a threshold.

**abs**

Return the absolute value of the number\

**belowBy**

Check if the base number is below the input number by a threshold

**limit**

Limit val between an inclusive min and max

**Pow**

Power a^b.

Returns null if a or b does not evaluate to a number.

**random**

Generate a random number between min and max inclusive on every cycle.

**reset**

Reset block computes output based on two linear equations. The input is clipped to inLo and inHi, the percentage of input along the linear segment between inLo and inHi is computed, and then that percentage is output as a Number between outLo and outHi.

**sqrt**

Sqrt: '√`val`

'.

Return null if `val`

does not evaluate to a number.

**within**

Verifies if the provided numbers are within an offset from the base.