# kalk [![Crates.io](https://img.shields.io/crates/v/kalk_cli)](https://crates.io/crates/kalk_cli) [![GitHub](https://img.shields.io/github/license/PaddiM8/kalk)](https://github.com/PaddiM8/kalk/blob/master/LICENSE) [![Docs.rs](https://docs.rs/kalk/badge.svg)](https://docs.rs/kalk/latest/kalk/) ![Build status](https://img.shields.io/travis/PaddiM8/kalk/master?label=build%20%26%20test) Kalk is a calculator (both program and library) that supports user-defined variables and functions. ![](example.png) ## Features * Operators: +, -, \*, /, ! * Groups: (), ⌈⌉, ⌋⌊ * [Pre-defined functions and constants](https://github.com/PaddiM8/kalk/blob/master/kalk/src/prelude.rs) * User-defined functions and variables. `f(x, y) = xy`, `x = 5` * 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 as `2*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` ## Installing Make sure you have `diffutils` `gcc` `make` and `m4` installed. **If you use windows:** [follow the instructions here](https://docs.rs/gmp-mpfr-sys/1.2.3/gmp_mpfr_sys/index.html#building-on-windows) If anyone knows how to get `gmp_mpfr_sys` on Windows on Travis, let me know. ### Cargo install Run `cargo install kalk_cli` ### Compiling yourself 1. Go into the `kalk_cli` directory. 2. Run `cargo build --release` 3. Grab the binary from `targets/release`