-
Notifications
You must be signed in to change notification settings - Fork 0
Arithmetic
1 + 1; // 2
Standard operators are
| op | name |
|---|---|
+ |
addition |
- |
subtraction and unary negation |
* |
multiplication |
/ |
division |
% |
modulus |
** |
exponentiation |
F♮ supports the following numeric types:
- arbitrary sized integers - ints are promoted individually to bigints if an arithmetic operation overflows.
- rationals - precision-preserving rational numbers - division of integers where the result is not an integer produces a rational, and arithmetic on rationals produces a rational or an integer:
2 + 1/2is5/2,1/2 + 1/2is1etc. - irrationals - floating point numbers.
- complex numbers -
-1 ** (1/2)results in1i, complex numbers can be input as i.e.(1 + 2i).
The standard formats for literal floating point and integer decimals are recognised, hexadecimal integers are
prefixed by 0x or 0X, additionally imaginary numbers (decimal, hex or float) have the suffix i (no space) and you can use
underscores _ within any sequence of digits to improve readability. It's probably worth pointing out that you have to write
1i to get i, i by itself is not treated specially (I may change this).
Coercion is as follows, somewhat complicated by complex numbers which can have integer, float or rational components.
-
int$\sqsubset$ rational$\sqsubset$ float$\sqsubset$ complex
But to be clear as far as type-checking is concerned, there is only the single type number.
Plans are afoot to support trig and log functions over the above, and there are already some built-in functions to help with complex number manipulation, see Builtins.
Next: Booleans

CEKF(s) a.k.a. F Natural a.k.a F♮