[ library(COLIBRI_DOC) | ]

Arithmetic operators

Operators allowed in numerical expressions.

Description


Arithmetic expressions


The following arithmetic operations are available to build Integer and Real expressions.
Integer types are int for bounded integers, int(N) for signed integers of N bits, uint(N) for unsigned integers of N bits.
Real types are real, float for 32 bits floating point numbers, double for 64 bits floating point numbers.
Real operations are rounded outward (toward -1.0Inf for lower bound and toward 1.0Inf for upper bound).
Float and double operations are rounded to the nearest even float or double.
E, E1 and E2 stand for arbitrary arithmetic expressions, number stands for any numeriacal type above.


Operation
Description
Arguments
Result
- E
unary minus
number
number
E1 + E2
addition
number x number
number
E1 - E2
subtraction
number x number
number
E1 * E2
multiplication
number x number
number
E1 // E2
integer division
Integer x Integer
Integer
E1 rem E2
integer reminder
Integer x Integer
Integer
E1 / E2
real division
Real x Real
Real
E1 rem E2
real remainder: E1 - E2*round(E1/E2)
Real x Real
Real
E1^E2 power number x positive Integer number
min(E1,E2) minimum number x number number
max(E1,E2) maximum number x number number
sqrt(E) square root Real Real
fma(E1,E2,E3) fuse multiply and add: (E1*E2)+E3 Real x Real x Real Real
exp(E) exponentiation Real Real
ln(E) natural logarithm Real Real
floor
round down to integral
Real
Real
ceiling
round up to integral
Real
Real
round
round to nearest integral
Real
Real
truncate
truncate to integral
Real
Real
int_from_real
Conversion from real to Integer
real
Integer
int_from_float
Conversion from float to Integer float
Integer
int_from_double
Conversion from double to Integer double
Integer
intN_from_int
Conversion from signed to int positive int x int
int(N)
uintN_from_int
Conversion from unsigned to int positive int x int
uint(N)
real_from_int
Conversion from int to real
int
real
float_from_int
Conversion from int to float
int
float
double_from_int
Conversion from int to double
int
double
real_from_float
Conversion from float to real
float
real
real_from_double
Conversion from double to real double
real
double_from_float
Conversion from float to double
float
double
float_from_double
Conversion from double to float double
float
floatFirst
First finite float number

float
floatLast
Last finite float number

float
doubleFirst
First finite double number
double
doubleLast
Last finite double number
double
minNormFloat
Minimal positive normalized float

float
minNormDouble
Minimal positive normalized double

float


Argument types other than specified yield a type error.
The integer division // rounds the result towards zero (truncates). The relationship between // and rem is as follows:

    X #= (X rem Y) + (X // Y) * Y

See Also

#= / 2, #\= / 2, #< / 2, #=< / 2, $= / 2, $\= / 2, $< / 2, $=< / 2