5 releases
0.2.3 | Aug 10, 2020 |
---|---|
0.2.2 | Jul 24, 2020 |
0.2.1 | May 2, 2020 |
0.2.0 | May 2, 2020 |
0.1.0 | May 1, 2020 |
#69 in #arithmetic
15KB
295 lines
calculatrs
A python-like calculator for simple math on the terminal. It only supports a handful of basic operators; if you need more, just use actual python. If you only need to do simple arithmetic, though, this should be fine.
Currently:
-
All integers are 128-bit signed
-
All floating-point values are 64-bit IEEE754.
-
Integers are coerced to floats in mixed expressions.
-
Values can be explicitly cast to a type:
int(2.0)
orfloat(2)
. For integers, this truncates the value. -
Integers support the following basic operations:
+
,-
,*
,/
: basic arithmetic. Note that we use integer division for integer-typed operands.<<
,>>
: left and right shiftb ** e
:b
raised to the powere
. Ife
is a float,b
is cast to a float also. Ife
is an integer,e
is cast to a 32-bit unsigned integer.
-
Floats support the following basic operations:
+
,-
,*
,/
: basic arithmetic. Note that we use floating-point division for float-typed operands.b ** e
:b
raised to the powere
.e
may be a float or an integer, but if it is an integer, it will be truncated to 32-bits.
-
Precedence aims to be sane, though I haven't tested thoroughly:
+
,-
Lower Precedence All others Higher Precence -
All operators are right-associative.
-
Expressions can be grouped with
( <expr> )
, as one would expect. -
The special
_
value represents the previous (typed) result, which is stored in/tmp/calculatrs
. It can be used any place a value is expected. If an error occurs, no change is made to the saved value. -
In order to make it easier to use directly in the terminal, the following alternate syntaxes exist:
*
==x
**
==^^
Building
You will need stable Rust.
cargo build
Installing
You can install from cargo:
cargo install calculatrs
The installed binary is called c
.
Usage
Suppose you install the binary on your path
> c 10 / 5
2
> c '10 / 5'
2
Beware of your shell expanding *
into "list all files".
Dependencies
~2.2–4MB
~71K SLoC