math '1+3*2' evaluate
|
Numbers
|
The number format in the input stream is integer, float, or
scientific format 3e10. Leading zeroes are allowed (e.g. 001), and float must
have an integer part (e.g. 0.3 not .3).
|
|
Operations |
The operations are + - * / and ^ for power, all binary, and
unary plus and minus. Also // (division without remainder) and \\
(modulo).
|
|
Precedence
|
Precedence is as normal: parentheses, ^ / * - +.
math '5+4*3^2' evaluate outputs 41, i.e. 5 + (4 * (3 ^ 2)) math '3^2*4+5' evaluate outputs 41, i.e. ((3 ^ 2) * 4) + 5). Precedence of unary minus and plus is higher than exponentiation: -2^-2 = (-2)^(-2), not -(2^-2) |
|
Associativity
|
Binary operators are left associative, except ^ which is right
associative:
100/10/5 outputs 2, i.e. (100 / 10) / 5 3-4-5 outputs -6, i.e. (3 - 4) - 5 4^3^2 outputs 262144, i.e. 4 ^ (3 ^ 2) |
|
Output formats
|
Integers (3,
unbounded range)
Fractions (3/4, unbounded range and precision. If you want to turn this into a float, 0.75, use a float as part of the calculation, e.g. 3/4.0) Floats (3.0 or, if the absolute value is larger than 1,000,000 or smaller than 0.001, in scientific format 1.0e-4. Precision is 8 or 9 digits. Range is plus and minus 1.0e38 (an error will be raised if the range is exceeded). |