**N ; M**- Add all numbers in the current column from row N to row M.
**N : M**- Add all numbers in the current row from column N to column M.
**N , M**- Get the value from the cell in row N, column M.
**N || M**- Logical OR of N and M.
**N && M**- Logical AND of N and M.
**N | M**- Bitwise OR of N and M.
**N ^ M**- Bitwise XOR of N and M.
**N & M**- Bitwise AND of N and M.
**N == M**- 1 if N equals M, 0 otherwise.
**N != M**- 1 if N is not equal to M, 0 otherwise.
**N < M**- 1 if N is less than M, 0 otherwise.
**N <= M**- 1 if N is less than or equal to M, 0 otherwise.
**N > M**- 1 if N is greater than M, 0 otherwise.
**N >= M**- 1 if N is greater than or equal to M, 0 otherwise.
**N >> M**- N shifted right M steps.
**N << M**- N shifted left M steps.
**N + M**- Addition.
**N - M**- Subtraction.
**N * M**- Multiplication.
**N / M**- Division.
**N \ M**- Integer division, i.e. the remainder is thrown away.
**N % M**- Modulus.
**N ** M**- Exponentiation.
**!N**- Logical NOT of N.
**~N**- Bitwise NOT of N.
**-N****+N**

Constants can be hexadecimal numbers starting with 0x, octal numbers starting with 0 or floating-point numbers with or without decimal point and exponent.

Numbers starting with a single 0 immediately followed by a decimal point are interpreted as floating point numbers.

Operators are evaluated in the following order:

- Unary + - ! ~
- ** \
- * / %
- + -
- == !=
- &
- ^
- |
- &&
- ||
- ; : ,

The characters R and C can be used to denote the current row and column, respectively.

The expressions can contain white space and /* C-style comments */.

References are automatically updated when lines and columns are inserted or removed.

Ranges update when lines and columns are inserted or deleted, just like the references described above.

define(name, value)where name is the name of the variable and value is a numeric constant, another variable, a cell reference or an expression.

Variables assigned in the interpreter can also be used from SIOD, and any variable known by the SIOD interpreter is also available here.

function(argument, argument...)The arguments can be constants, cell references or numeric variables known by the SIOD interpreter. The arguments can also themselves be expressions.

Reference list of available functions

More information on the Scheme interpreter

**123.4**- The constant 123.4
**1+2-3**- This evaluates to 0
**2^3**- Exclusive or of 2 and 3, i.e. 1.
**2**3**- 2 raised to the power of 3, i.e. 8.
**18/5**- Evaluates to 3.6.
**18\5**- Evaluates to 3.
**3,4**- The contents of the cell in row 3, column 4
**R3C4**- The same in r1c1 notation
**D3**- The same in a1 notation
**r, c-1**- The contents of the cell immediately to the left of the current cell
**2;r-1**- The sum of the cells in the current column from row 2 to the row immediately above the current cell
**(r-1,c)+(r,c-1)**- The sum of the cells to the left and above the current cell. The parentheses are necessary because '+' would otherwise be evaluated before ','
**r2c3+r2c4**- The sum of the value in row 2, column 3 and the value in row 2, column 4
**c2+d2**- Same as above in A1 reference style
**acos(r3c1)**- Arc cosine of the value in row 3, column 1
**tan(r2c2)**- Tangent of r2c2.
**sin(r2c2)/cos(r2c2)**- Also tangent of r2c2. Function calls can be part of expressions
**pow(temp, 0.25)**- The variable temp raised to the power of 1/4
**pow(temp, 1/4)**- Ditto
**asin(sin(1.59))**- In this example, sin(1.59) is an expression
**define(pi, 3.14)**- Define a useful variable
**r_sum(r2c2..r5c6, r1c1, 12)**- The sum of all numbers between row 2, column 2 and row 5, column 6; the number in row 1, column 1; and the number 12.

Ulric Eriksson - July 2000 - ulric@siag.nu