math eval is a command that takes a math expression from the pipeline and evaluates that into a number. It also optionally takes the math expression as an argument.

This command supports the following operations -

operations:

• Binary operators: +, -, *, /, % (remainder), ^ (power)
• Unary operators: +, -, ! (factorial)

functions:

• sqrt, abs
• exp, ln, log10
• sin, cos, tan, asin, acos, atan, atan2
• sinh, cosh, tanh, asinh, acosh, atanh
• floor, ceil, round
• signum
• max(x, ...), min(x, ...): maximum and minimum of 1 or more numbers

constants:

• pi
• e

# Examples

``````> echo "1+2+3" | math eval
6.0u
``````
``````> echo "1-2+3" | math eval
2.0
``````
``````> echo "-(-23)" | math eval
23.0
``````
``````> echo "5^2" | math eval
25.0
``````
``````> echo "5^3" | math eval
125.0
``````
``````> echo "min(5,4,3,2,1,0,-100,45)" | math eval
-100.0
``````
``````> echo "max(5,4,3,2,1,0,-100,45)" | math eval
45.0
``````
``````> echo sqrt(2) | math eval
1.414213562373095
``````
``````> echo pi | math eval
3.141592653589793
``````
``````> echo e | math eval
2.718281828459045
``````
``````> echo "sin(pi / 2)" | math eval
1.0
``````
``````> echo "floor(5999/1000)" | math eval
5.0
``````
``````> open abc.json
───┬──────
# │ size
───┼──────
0 │  816
1 │ 1627
2 │ 1436
3 │ 1573
4 │  935
5 │   52
6 │  999
7 │ 1639
───┴──────
``````
``````> open abc.json | format "({size} + 500) * 4"
───┬──────────────────
# │
───┼──────────────────
0 │ (816 + 500) * 4
1 │ (1627 + 500) * 4
2 │ (1436 + 500) * 4
3 │ (1573 + 500) * 4
4 │ (935 + 500) * 4
5 │ (52 + 500) * 4
6 │ (999 + 500) * 4
7 │ (1639 + 500) * 4
───┴──────────────────
``````
``````> open abc.json | format "({size} + 500) * 4" | math eval
───┬───────────
# │
───┼───────────
0 │ 5264.0000
1 │ 8508.0000
2 │ 7744.0000
3 │ 8292.0000
4 │ 5740.0000
5 │ 2208.0000
6 │ 5996.0000
7 │ 8556.0000
───┴───────────
``````
``````> open abc.json | format "({size} - 1000) * 4" | math eval
───┬────────────
# │
───┼────────────
0 │  -736.0000
1 │  2508.0000
2 │  1744.0000
3 │  2292.0000
4 │  -260.0000
5 │ -3792.0000
6 │    -4.0000
7 │  2556.0000
───┴────────────
``````

Note that since `math eval` uses floating-point numbers, the result may not always be precise.

``````> echo "floor(5999999999999999999/1000000000000000000)" | math eval
6.0
``````