The easiest way to calculate something.
npm install @susisu/est shell
npm install -g @susisu/est
`Usage
$3
`
est [options] ['prog' | -p progfile] [files ...]
`$3
` shell
$ cat foo.txt
comments
1 2 3
4 5 6
7 8 9
$ est '$1' foo.txt
1
4
7
$ est 'sum $1' foo.txt
12
$ est '2 * $1' foo.txt
2
8
14
$ est '[$1, $2, $1 + $2]' foo.txt
1 2 3
4 5 9
7 8 15
$ cat bar.txt
1.0e-1
1.0
1.0e+1
$ est '$$1!2 * $$2!1' foo.txt bar.txt
0.2
5
80
`$3
The syntax is very simple:* Numbers:
123, 6.02e+23, ...
* Vectors: [123, 456], ...
* Variables: x, sum, PI, $1, op+ ...
* Functions: sqrt 3.14, log_ 3 9, x + y, ...
Local bindings: let x = sum [1, 2, 3] in 2 x, ...NOTE:
f x + y is recognized as (f x) + y, not f (x + y).$3
* Constants: PI, E, LN2, LN10, LOG2E, LOG10E, SQRT1_2, SQRT2
* Unary functions: +, -, abs, round, floor, ceil, sqrt, exp, log, log2, log10, sin, cos, tan, asin, acos, atan
Binary functions: +, -, , /, %, **, log_, atan_
* Vector operation functions: index access !, len, fst, sum, prod, avg, var, stddev, stderrThe input data are bound to
$$1...$$N and the columns of the first data are bound to $1...$N.
The transposed input (the rows are the original columns, and vice versa) are also bound to $$T1...$$TN.The unary and binary functions are automatically mapped if applied to vector.
$3
* -e, --encoding : set encoding of input files (default = utf8)
* -f, --format : set fromat type (default = table)
* -p, --program : read program from file
* -t, --transpose: transpose output
* -x, --exponential: output numbers in exponential notation
* -E, --extension `: load JavaScript extension; multiple extensions are allowedLicense
The MIT LicenseAuthor
Susisu (GitHub, Twitter)