Need help with kalk?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

PaddiM8
890 Stars 31 Forks MIT License 435 Commits 16 Opened issues

Description

Kalker/kalk is a calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals

Services available

!
?

Need anything else?

Contributors list

# 204,291
css3-an...
Rust
Svelte
Sass
376 commits
# 213,681
C
Zsh
Bash
neofetc...
7 commits
# 270,434
command...
Git
Shell
nix
5 commits
# 141,527
github-...
cleaner
unity3d
Haskell
4 commits
# 476,561
Svelte
HTML
Shell
rust-cr...
1 commit
# 105,951
Haskell
Rust
Shell
regex
1 commit
# 444,420
Shell
Svelte
rust-cr...
calcula...
1 commit
# 268,326
Rust
Shell
reddit-...
HTML
1 commit
# 5,367
C
sed
Ada
webm
1 commit

Kalker (or "kalk") is a calculator program/website that supports user-defined variables, functions, derivation, and integration. It runs on Windows, macOS, Linux, Android, and in web browsers (with WebAssembly).

Crates.io npm GitHub Docs.rs Build status

Kanban | Website - Try it out here! | Donate

Features

  • Operators:
    +
    ,
    -
    ,
    *
    ,
    /
    ,
    !
  • Groups:
    ()
    ,
    ⌈ceil⌉
    ,
    ⌊floor⌋
    ,
    [iverson]
  • Pre-defined functions and constants
  • User-defined functions and variables.
    f(x, y) = xy
    ,
    x = 5
  • 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 as
    2*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.
    -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.

Installation

Package managers

macOS

brew install kalker

Arch Linux

kalker
in the AUR, eg.
yay -S kalker

Nix/NixOS

Kalker is available through

nixpkgs
. The most up to date version is also available as a
flake
.

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 kalker

Manually

  1. Go into the
    cli
    directory.
  2. Run
    cargo build --release
  3. Grab the binary from
    targets/release

Donation

Kalker is completely free and open source. If you wish to support further development of Kalker, you can do so here: PayPal

Libraries

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.

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

Contributing

kalk and cli (Rust)

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

web (Svelte, TypeScript, Sass)

Run: 1.

npm install

2.
npm run dev
- this will automatically re-compile the project when changes are made

mobile (Android)

Run:
1.

npm install
2.
npx cap sync
3. Build the project using Android Studio, or Gradle directly.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.