Scientific calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals
Go to file
2021-01-04 00:38:59 +01:00
.github/workflows Changed to a more recent version of wasm-pack (ci), and added optimization to wasm 2021-01-02 01:00:54 +01:00
kalk Fixed semantic errors 2021-01-03 00:19:22 +01:00
kalk_cli kalk 1.4.1 2021-01-03 00:10:58 +01:00
kalk_web Set up kalk_web development environment 2021-01-04 00:38:59 +01:00
res Created installer for windows, and app bundle for mac, both with icons. Also added the publishing back to the release workflow. 2020-12-12 21:49:08 +01:00
.gitignore Removed Cargo.lock 2020-06-18 18:11:23 +02:00
Cargo.lock Webpack relative paths and npm package tweaking 2021-01-03 02:04:32 +01:00
Cargo.toml Created a workspace Cargo.toml to unify the library and binary. 2020-06-12 14:11:42 +02:00
example.png Added example image and expanded feature list. 2020-06-12 00:34:50 +02:00
LICENSE Create LICENSE 2020-06-11 23:38:03 +02:00
README.md Added minimum rust version to README 2020-12-14 10:23:20 +01:00

kalk

Crates.io GitHub Docs.rs Build status

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 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
  • 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

  1. Go into the kalk_cli directory.
  2. Run cargo build --release
  3. 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