Scientific calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals
Go to file
2021-05-29 13:23:08 +02:00
.github/workflows Fixed publish_kalk_web path 2021-05-27 17:09:27 +02:00
kalk Only parse one factor after '√' 2021-05-27 23:31:17 +02:00
kalk_cli Updated version numbers 2021-05-27 19:44:12 +02:00
kalk_mobile Added kalk_web to ci 2021-05-27 16:57:53 +02:00
kalk_web kalk_web: Added placeholder 2021-05-29 13:23:08 +02: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 Updated version numbers 2021-05-27 19:44:12 +02:00
Cargo.toml Created a workspace Cargo.toml to unify the library and binary. 2020-06-12 14:11:42 +02:00
LICENSE Create LICENSE 2020-06-11 23:38:03 +02:00
logo.png Updated README preview and logo 2021-05-28 16:20:13 +02:00
preview.png Updated README preview and logo 2021-05-28 16:20:13 +02:00
README.md Updated README preview and logo 2021-05-28 16:20:13 +02:00

Kalk is a calculator (both program and library) that supports user-defined variables, functions, derivation, and integration. It runs on Windows, macOS, Linux, Android, and in web browsers (with WebAssembly).

Crates.ionpm GitHub Docs.rs Build status

Kanban | Website

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
  • Derivative of functions. f'(2), sin'(-pi)
  • Integration. ∫(0, pi, sin(x) dx) or ∫(0, π, sin(x) dx)
  • 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.

Libraries

There are currently three different libraries related to kalk.

  • kalk: The Rust crate that powers it all.
  • @paddim8/kalk: JavaScript bindings for kalk. This lets you use it in the browser thanks to WebAssembly.
  • @paddim8/kalk-component: A web component that runs @paddim8/kalk, which let's you use kalk in the browser with a command line-like interface.

Installation

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