Floating Point
Bril has an extension for computing on floating-point numbers.
You can read more about the extension, which is originally by Dietrich Geisler and originally included two FP precision levels.
Types
The floating point extension adds one new base type:
"float"
Floating point numbers are 64-bit, double-precision IEEE 754 values. (There is no single-precision type.)
Operations
There are the standard arithmetic operations, which take two float
values and produce a new float
value:
fadd
fmul
fsub
fdiv
It is not an error to fdiv
by zero; as in IEEE 754, the result is infinity.
There are also comparison operators, which take two float
values and produce a bool
:
feq
flt
fle
fgt
fge
Printing
The core print
operation prints float
values with 17 decimal digits of precision, including trailing zeros.
(This is like using the %.17lf
format specifier in C’s printf
.)
Positive and negative zero, while they are equal according to feq
, look different when printed.
Not-a-number values are printed as NaN
; infinite values are printed as the strings Infinity
or -Infinity
.