# kalker

### A scientific calculator that supports math-like syntax with user-defined variables, functions, derivation, integration, and complex numbers.

GitHub Repo

Download

GitHub Repo

Download

- Operators: +, -, *, /, !, %
- Groups: (), ⌈ceil⌉, ⌊floor⌋, [iverson]
- Pre-defined functions and constants
- User-defined functions and variables
- Derivation (prime notation) and integration (eg. integral(a, b, x dx)

The value of an integral is estimated using Simpson's 3/8 rule,

while derivatives are estimated using the symmetric difference quotinent (and derivatives of higher order can be a bit inaccurate as of now). - Complex numbers
- Understands fairly ambiguous syntax. Eg. 2sinx + 2xy
- Syntax highlighting
- 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. Semicolons are only needed when writing everything on the same line. - 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 - Completion for special symbols on tab
- Sum function
- Load files that can contain predefined variable and function declarations.

You can also have automatically loaded files

`+`

,`-`

,`*`

,`/`

`!`

Factorial, eg.`5!`

gives`120`

`%`

Percent, eg.`5%`

gives`0.05`

,`10 + 50%`

gives`15`

`%`

Modulus (remainder), eg.`23 % 3`

gives`2`

You can type special symbols (such as √) by typing the normal function or constant name and pressing tab.

`*`

becomes`×`

`/`

becomes`÷`

`_123`

becomes`₁₂₃`

`asin, acos, etc.`

become`sin⁻¹(), cos⁻¹(), etc`

`sqrt`

becomes`√`

`deg`

becomes`°`

`pi`

becomes`π`

`sum`

becomes`Σ()`

`integrate`

becomes`∫()`

`tau`

becomes`τ`

`phi`

becomes`ϕ`

`floor`

becomes`⌊⌋`

`ceil`

becomes`⌈⌉`

`gamma`

becomes`Γ`

`(`

becomes`()`

Variables are defined with the following syntax: `name = value`

`x = 3/4`

Functions are defined with the following syntax: `name(param1, param2, etc.) = value`

`f(x) = 2x+3`

`A(x, y) = (xy)/2`

They are used like this: `name(arg1, arg2, etc.)`

`f(3) + 3`

`A(2, 3)`

Derivation can be done like this: `name'(arg1)`

`f'(3) + 3`

`sin'(pi)`

`sin`

,`cos`

,`tan`

,`cot`

,`cosec`

,`sec`

`sinh`

,`cosh`

,`tanh`

,`coth`

,`cosech`

,`sech`

`asin`

,`acos`

,`atan`

,`acot`

,`acosec`

,`asec`

`ashin`

,`acosh`

,`atanh`

,`acoth`

,`acosech`

,`asech`

`abs`

,`ceil`

or`⌈⌉`

,`floor`

or`⌊⌋`

,`frac`

,`round`

,`trunc`

`sqrt`

or`√`

,`cbrt`

,`exp`

,`log`

,`ln`

,`arg`

,`Re`

,`Im`

`gamma`

or`Γ`

`asinh`

,`acosh`

,`atanh`

,`acoth`

,`acosech`

,`asech`

`bitcmp`

,`bitand`

,`bitor`

,`bitxor`

,`bitshift`

`comb`

or`nCr`

,`perm`

or`nPr`

`gcd`

,`lcm`

`min`

,`max`

,`hypot`

`log`

Eg.`log(1000, 10)`

is the same as log_{10}(1000)`root`

Eg.`root(16, 3)`

is the same as^{3}√16`integrate`

Eg.`integrate(0, pi, sin(x) dx)`

is the same as`sum`

Eg.`sum(1, 4, 2n)`

is the same as

`pi`

or `π`

= `3.14159265`

`e`

= `2.71828182`

`tau`

or `τ`

= `6.2831853`

`phi`

or `ϕ`

= `1.61803398`

Kalker looks for kalker files in the system config directory.

- Linux:
`~/.config/kalker/`

- macOS:
`~/Library/Application Support/kalker/`

or`~/Library/Preferences/kalker`

- Windows:
`%appdata%/kalker/`

`default.kalker`

is found, it will
be loaded automatically every time kalker starts. Any other files in
this directory with the `.kalker`

extension can be loaded
at any time by doing `load filename`

in kalker. Note that
the extension should not be included here.