3.0 KiB
kalk
Kalk is a calculator (both program and library) that supports user-defined variables, functions, and units (experimental).
Project kanban board (Kolan)
Website: kalk.strct.net
Features
- Operators: +, -, *, /, !
- Groups: (), ⌈⌉, ⌋⌊
- Pre-defined functions and constants
- User-defined functions and variables.
f(x, y) = xy
,x = 5
- User-defined units (experimental).
unit m = cm/100
,2m/50cm
,50cm to m
- Understands fairly ambiguous syntax. Eg.
2sin50 + 2xy
- Syntax highlighting
- Special-symbol completion on tab. Eg. write
sqrt
and press tab. It will be turned into√
. - Sum function:
sum(start, to, expression)
Eg.sum(1, 3, 2n+1)
is the same as2*1+1 + 2*2+1 + 2*3+1
=15
- Load a file including predefined functions and constants. For example, if you're going to use Kalk for physics, you load up your file with physics functions/constants when starting Kalk.
-i file
- Misc: separate expressions by a semicolon to write them on the same line, use the
ans
variable to get the value of the previously calculated expression.
Installing
Binaries
Pre-compiled binaries for Linux, Windows, and macOS (64-bit) are available in the releases page.
Compiling
Minimum rust version: v1.36.0. Make sure you have diffutils
gcc
make
and m4
installed. If you use windows: follow the instructions here (don't forget to install mingw-w64-x86_64-rust
in MSYS2).
Cargo
Run cargo install kalk_cli
Manually
- Go into the
kalk_cli
directory. - Run
cargo build --release
- Grab the binary from
targets/release
Syntax
A more complete reference can be found on the website
Functions
Defining: name(parameter1, parameter2, ...) = expression
Example: f(x) = 2x+3
Using: name(argument1, argument2)
Example: f(2)
Variables
Defining: name = expression
Example: x = 3
Using: name
Example: x
Units (experimental, are likely to not work properly)
Note: You only need to define the relationship between two units once. You will be able to convert between both of them.
Defining: unit
name = expression
Example: unit deg = (rad*180)/π
Using: Use them freely in expressions.
Example: 2m/50cm
Converting: expression to
unit
Example: 2 m to cm