[comment]: # ({04420c8f-04420c8f})
# 5 Mathematical functions

All functions listed here are supported in:

-   [Trigger expressions](/manual/config/triggers/expression)
-   [Calculated items](/manual/config/items/itemtypes/calculated)

Mathematical functions are supported with float and integer value types,
unless stated otherwise.

Some general notes on function parameters:

-   Function parameters are separated by a comma
-   Expressions are accepted as parameters
-   Optional function parameters (or parameter parts) are indicated by
    `<` `>`

|FUNCTION|<|<|<|
|--------|-|-|-|
|<|**Description**|**Function-specific parameters**|**Comments**|
|**abs** (value)|<|<|<|
|<|The absolute value of a value.|**value** - value to check|Supported value types: float, int, str, text, log<br><br>For strings returns:<br>0 - values are equal<br>1 - values differ<br><br>Example:<br>=> **abs**(last(/host/key))>10<br><br>Absolute numeric difference will be calculated, as seen with these incoming example values ('previous' and 'latest' value = absolute difference):<br>'1' and '5' = `4`<br>'3' and '1' = `2`<br>'0' and '-2.5' = `2.5`|
|**acos** (value)|<|<|<|
|<|The arccosine of a value as an angle, expressed in radians.|**value** - value to check|The value must be between -1 and 1.<br><br>For example, the arccosine of a value '0.5' will be '2.0943951'.<br><br>Example:<br>=> **acos**(last(/host/key))|
|**asin** (value)|<|<|<|
|<|The arcsine of a value as an angle, expressed in radians.|**value** - value to check|The value must be between -1 and 1.<br><br>For example, the arcsine of a value '0.5' will be '-0.523598776'.<br><br>Example:<br>=> **asin**(last(/host/key))|
|**atan** (value)|<|<|<|
|<|The arctangent of a value as an angle, expressed in radians.|**value** - value to check|For example, the arctangent of a value '1' will be '0.785398163'.<br><br>Example:<br>=> **atan**(last(/host/key))|
|**atan2** (value,abscissa)|<|<|<|
|<|The arctangent of the ordinate (exprue) and abscissa coordinates specified as an angle, expressed in radians.|**value** - value to check<br>**abscissa** - abscissa value|For example, the arctangent of the ordinate and abscissa coordinates of a value '1' will be '2.21429744'.<br><br>Example:<br>=> **atan2**(last(/host/key),2)|
|**avg** (<value1>,<value2>,...)|<|<|<|
|<|Average value of the referenced item values.|**valueX** - value returned by one of history functions|Example:<br>=> **avg**(avg(/host/key),avg(/host2/key2))|
|**cbrt** (value)|<|<|<|
|<|Cube root of a value.|**value** - value to check|For example, the cube root of '64' will be '4', of '63' will be '3.97905721'.<br><br>Example:<br>=> **cbrt**(last(/host/key))|
|**ceil (value)**|<|<|<|
|<|Round the value up to the nearest greater integer.|**value** - value to check|For example, '2.4' will be rounded up to '3'.<br><br>Example:<br>=> **ceil**(last(/host/key))<br><br>See also floor().|
|**cos (value)**|<|<|<|
|<|The cosine of a value, where the value is an angle expressed in radians.|**value** - value to check|For example, the cosine of a value '1' will be '0.54030230586'.<br><br>Example:<br>=> **cos**(last(/host/key))|
|**cosh (value)**|<|<|<|
|<|The hyperbolic cosine of a value.|**value** - value to check|For example, the hyperbolic cosine of a value '1' will be '1.54308063482'.<br><br>Returns value as a real number, not as scientific notation.<br><br>Example:<br>=> **cosh**(last(/host/key))|
|**cot (value)**|<|<|<|
|<|The cotangent of a value, where the value is an angle, expressed in radians.|**value** - value to check|For example, the cotangent of a value '1' will be '0.54030230586'.<br><br>Example:<br>=> **cot**(last(/host/key))|
|**degrees (value)**|<|<|<|
|<|Converts a value from radians to degrees.|**value** - value to check|For example, a value '1' converted to degrees will be '57.2957795'.<br><br>Example:<br>=> **degrees**(last(/host/key))|
|**e**|<|<|<|
|<|Euler's number (2.718281828459045).|<|Example:<br>=> **e**()|
|**exp** (value)|<|<|<|
|<|Euler's number at a power of a value.|**value** - value to check|For example, Euler's number at a power of a value '2' will be '7.38905609893065'.<br><br>Example:<br>=> **exp**(last(/host/key))|
|**expm1 (value)**|<|<|<|
|<|Euler's number at a power of a value minus 1.|**value** - value to check|For example, Euler's number at a power of a value '2' minus 1 will be '6.38905609893065'.<br><br>Example:<br>=> **expm1**(last(/host/key))|
|**floor** (value)|<|<|<|
|<|Round the value down to the nearest smaller integer.|**value** - value to check|For example, '2.6' will be rounded down to '2'.<br><br>Example:<br>=> **floor**(last(/host/key))<br><br>See also ceil().|
|**log** (value)|<|<|<|
|<|Natural logarithm.|**value** - value to check|For example, the natural logarithm of a value '2' will be '0.69314718055994529'.<br><br>Example:<br>=> **log**(last(/host/key))|
|**log10** (value)|<|<|<|
|<|Decimal logarithm.|**value** - value to check|For example, the decimal logarithm of a value '5' will be '0.69897000433'.<br><br>Example:<br>=> **log10**(last(/host/key))|
|**max** (<value1>,<value2>,...)|<|<|<|
|<|Highest value of the referenced item values.|**valueX** - value returned by one of history functions|Example:<br>=> **max**(avg(/host/key),avg(/host2/key2))|
|**min** (<value1>,<value2>,...)|<|<|<|
|<|Lowest value of the referenced item values.|**valueX** - value returned by one of history functions|Example:<br>=> **min**(avg(/host/key),avg(/host2/key2))|
|**mod** (value,denominator)|<|<|<|
|<|Division remainder.|**value** - value to check<br>**denominator** - division denominator|For example, division remainder of a value '5' with division denominator '2' will be '1'.<br><br>Example:<br>=> **mod**(last(/host/key),2)|
|**pi**|<|<|<|
|<|Pi constant (3.14159265358979).|<|Example:<br>=> **pi**()|
|**power** (value,power value)|<|<|<|
|<|The power of a value.|**value** - value to check<br>**power value** - the Nth power to use|For example, the 3rd power of a value '2' will be '8'.<br><br>Example:<br>=> **power**(last(/host/key),3)|
|**radians** (value)|<|<|<|
|<|Convert a value from degrees to radians.|**value** - value to check|For example, a value '1' converted to radians will be '0.0174532925'.<br><br>Example:<br>=> **radians**(last(/host/key))|
|**rand**|<|<|<|
|<|Return a random integer value.|<|A pseudo-random generated number using time as seed (enough for mathematical purposes, but not cryptography).<br><br>Example:<br>=> **rand**()|
|**round** (value,decimal places)|<|<|<|
|<|Round the value to decimal places.|**value** - value to check<br>**decimal places** - specify decimal places for rounding (0 is also possible)|For example, a value '2.5482' rounded to 2 decimal places will be '2.55'.<br><br>Example:<br>=> **round**(last(/host/key),2)|
|**signum** (value)|<|<|<|
|<|Returns '-1' if a value is negative, '0' if a value is zero, '1' if a value is positive.|**value** - value to check|Example:<br>=> **signum**(last(/host/key))|
|**sin** (value)|<|<|<|
|<|The sine of a value, where the value is an angle expressed in radians.|**value** - value to check|For example, the sine of a value '1' will be '0.8414709848'.<br><br>Example:<br>=> **sin**(last(/host/key))|
|**sinh** (value)|<|<|<|
|<|The hyperbolical sine of a value.|**value** - value to check|For example, the hyperbolical sine of a value '1' will be '1.17520119364'.<br><br>Example:<br>=> **sinh**(last(/host/key))|
|**sqrt** (value)|<|<|<|
|<|Square root of a value.|**value** - value to check|This function will fail with a negative value.<br><br>For example, the square root of a value '3.5' will be '1.87082869339'.<br><br>Example:<br>=> **sqrt**(last(/host/key))|
|**sum** (<value1>,<value2>,...)|<|<|<|
|<|Sum of the referenced item values.|**valueX** - value returned by one of history functions|Example:<br>=> **sum**(avg(/host/key),avg(/host2/key2))|
|**tan** (value)|<|<|<|
|<|The tangent of a value.|**value** - value to check|For example, the tangent of a value '1' will be '1.55740772465'.<br><br>Example:<br>=> **tan**(last(/host/key))|
|**truncate** (value,decimal places)|<|<|<|
|<|Truncate the value to decimal places.|**value** - value to check<br>**decimal places** - specify decimal places for truncating (0 is also possible)|Example:<br>=> **truncate**(last(/host/key),2)|

[comment]: # ({/04420c8f-04420c8f})
