#calculator #arithmetic

app calculatrs

A simple command-line calculator with python-like syntax for simple on-the-fly calculations

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

MIT/Apache

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) or float(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 shift
    • b ** e: b raised to the power e. If e is a float, b is cast to a float also. If e 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 power e. 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