Expressions used in Data Arithmetic module, grain quantity formulas and in graph function fitting have syntax similar to common programming languages.

All numbers are real (floating point), number literals use standard
notation. Examples of valid numbers:
`1`

,
`.707`

,
`2.661`

,
`8.2e-34`

.

Function, constant, and variable names start with a letter and
continue with zero or more letters, numbers, or underscores.
Examples of valid identifiers:
`pow10`

(a function),
`Pi`

(a constant),
`d2_2`

(a variable).

The precedence of operations is summarized in following table.

Operation | Associativity | Examples |
---|---|---|

parentheses | N.A. | `(x)` |

function call and unary operators | right to left | `-sqrt 3` |

power operator | right to left | `2^16` |

multiplication, division, and modulo operators | left to right | `9/2 * 8` |

addition and subtraction operators | left to right | `3 - 4 + 5` |

Note `-3^2`

is 9, that is `(-3)^2`

,
like in **bc**, but unlike in Perl or Python.

Available operators and functions are listed in following table.

Operator | Meaning |
---|---|

`+` (unary) | no op |

`-` (unary) | negative value |

`~` | negative value (equivalent to `-` ) |

`+` (binary) | addition |

`-` (binary) | subtraction |

`*` | multiplication |

`/` | division |

`%` | floating point modulo |

`^` | power |

`abs` | absolute value |

`floor` | rounding down to nearest integer |

`ceil` | rounding up to nearest integer |

`sqrt` | square root |

`cbrt` | cubic root |

`sin` | sine function |

`cos` | cosine function |

`tan` | tangent function |

`asin` | arc sine function |

`acos` | arc cosine function |

`atan` | arc tangent function |

`exp` | base-e exponential function |

`ln` | base-e logarithm function |

`log` | base-e logarithm function |

`pow10` | base-10 exponential function |

`log10` | base-10 logarithm function |

`sinh` | hyperbolic sine function |

`cosh` | hyperbolic cosine function |

`tanh` | hyperbolic tangent function |

`asinh` | inverse hyperbolic sine function |

`acosh` | inverse hyperbolic cosine function |

`atanh` | inverse hyperbolic tangent function |

`pow` | power function, `pow(x,y)` equals to `x^y` |

`min` | minimum of two values |

`max` | maximum of two values |

`mod` | floating point modulo, `mod(x,y)` equals to `x % y` |

`hypot` | Euclidean distance function, `hypot(x,y)` equals to `sqrt(x^2+y^2)` |

`atan2` | arc tangent function of two variables |

Beside that, there are a few peculiarities that may make typing simple expression easier:

Multiplication signs are optional, you can use spaces instead (or nothing, in some cases). E.g.,

`3/4 Pi`

and`5(4+3)(2+1)`

are valid expressions. However,`3a`

is not a valid expression,`3e-4`

always means`0.0003`

, not`3*e - 4`

.There is no difference between function calls and unary operators, so parentheses can be often omitted. E.g,

`sqrt 5`

and`hypot hypot 3,4,5`

are valid expression. The latter can be parenthesized as follows:`hypot(hypot(3,4),5)`

.Note however, function calls have higher priority than any other operator, thus

`sin Pi/2`

is the same as`(sin Pi)/2`

, not as`sin(Pi/2)`

.

If in doubt, write out expressions in full form.