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

Features:
<ul>
    <li>Operators: +, -, *, /, !</li>
    <li>Groups: (), [], ⌈ceil⌉, ⌊floor⌋</li>
    <li>Vectors: (x, y, z, ...)</li>
    <li>Matrices: [x, y, z; a, b, c; ...]</li>
    <li>Pre-defined functions and constants</li>
    <li>User-defined functions and variables. f(x, y) = xy, x = 5</li>
    <li>Root finding using Newton's method (eg. x^2 = 64). Note: estimation and limited to one root</li>
    <li>Derivative of functions (derivatives of noisy functions or of higher order can be a bit inaccurate). f'(2), sin'(-pi)</li>
    <li>Integration. ∫(0, pi, sin(x) dx) or ∫(0, π, sin(x) dx), maybe sometimes be slightly off</li>
    <li>Understands fairly ambiguous syntax. Eg. 2sin50 + 2xy</li>
    <li>Syntax highlighting</li>
    <li>Special-symbol completion on tab. Eg. write sqrt and press tab. It will be turned into √</li>
    <li>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</li>
    <li>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</li>
    <li>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 doing load filename inside kalker. More about files here</li>
    <li>Different number bases: Either with a format like 0b1101, 0o5.3, 0xff or a format like 1101_2. The latter does not support letters, as they would be interpreted as variables</li>
    <li>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</li>
</ul>
