Kalker is a calculator program/website that supports user-defined variables, functions, differentiation, and integration. It runs on Windows, macOS, Linux, Android, and in web browsers (with WebAssembly).
- Operators:
+
,-
,*
,/
,!
- Groups:
()
,[]
,⌈ceil⌉
,⌊floor⌋
- Vectors: (x, y, z, ...)
- Matrices: [x, y, z; a, b, c; ...]
- Pre-defined functions and constants
- User-defined functions and variables.
f(x, y) = xy
,x = 5
- Root finding using Newton's method (eg. x^2 = 64). Note: estimation and limited to one root
- Derivative of functions (derivatives of noisy functions or of higher order can be a bit inaccurate).
f'(2)
,sin'(-pi)
- Integration.
∫(0, pi, sin(x) dx)
or∫(0, π, sin(x) dx)
, maybe sometimes be slightly off - 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
- Piecewise functions:
f(x) = { f(x + 1) if x <= 1; x otherwise }
, pressing enter before typing the final}
will make a new line without submitting - Load a file including predefined functions and constants. For example, if you're going to use kalker for physics, you load up your file with physics functions/constants when starting kalker. This is done either using the
-i file
flag or by putting files in a certain directory and then doingload filename
inside kalker. More about files here - Different number bases: Either with a format like
0b1101
,0o5.3
,0xff
or a format like1101_2
. The latter does not support letters, as they would be interpreted as variables - 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
brew install kalker
kalker
in the AUR, eg. yay -S kalker
kalker
in the nixpkgs
repository.
The most up to date version is also available as a flake
.
pkgin install kalker
(from the official repositories
)
Pre-compiled binaries for Linux, Windows, and macOS (64-bit) are available in the releases page.
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).
Run cargo install kalker
- Go into the
cli
directory. - Run
cargo build --release
- Grab the binary from
targets/release
There are currently three different libraries related to kalker.
- 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.
A complete reference can be found on the website.
After making changes to the kalk library (in kalk/
), you can easily try them out by going to the root of the project directory, and doing cargo run
. This will start kalker (cli), with the new changes. If you're using Windows, you will need to follow the instructions here, but also make sure to install mingw-w64-x86_64-rust
in MSYS2.
All Rust code is expected to be formatted with `rustfmt
Run:
npm install
npm run dev
- this will automatically re-compile the project when changes are made
Run:
npm install
npm run build
npx cap sync
- Build the project using Android Studio, or Gradle directly.