kalker
A scientific calculator that supports math-like syntax with user-defined variables, functions, differentiation, integration, and complex numbers.
GitHub Repo
Download
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 line0b1101, 0o5.3, 0xff1101_2. The latter does not support letters, as they wouldbase command is used to set the display base. For example, writing base 16 results in output being displayed in the hexadecimal number base, as well as decimal.+, -, *, /! Factorial, eg. 5! gives 120% Percent, eg. 5% gives 0.05, 10 + 50% gives 15%, mod Modulus (remainder), eg. 23 % 3 gives 2true, false Boolean literalsand, or, notYou can type special symbols (such as √) by typing the normal function or constant name and pressing tab.
* becomes ×/ becomes ÷and becomes ∧not becomes ¬or becomes ∨[[ becomes ⟦⟧_123 becomes ₁₂₃asin, acos, etc. become sin⁻¹(), cos⁻¹(), etcsqrt becomes √deg becomes °pi becomes πsum becomes Σ()prod 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, secsinh, cosh, tanh, coth, cosech, sechasin, acos, atan, acot, acosec, asecashin, acosh, atanh, acoth, acosech, asechabs, ceil or ⌈⌉, floor or ⌊⌋, frac, round, truncsqrt or √, cbrt, exp, log, ln, arg, Re, Imgamma or Γasinh, acosh, atanh, acoth, acosech, asechbitcmp, bitand, bitor, bitxor, bitshiftcomb or nCr, perm or nPrgcd, lcmmin, max, hypotlog - eg. log(1000, 10) is the same as log10(1000)root - eg. root(16, 3) is the same as 3√16average, perms, sorttransposematrix - takes a vector of vectors and returns a matrixintegrate - eg. integrate(0, pi, sin(x) dx) is the same as sum - eg. sum(n=1, 4, 2n) is the same as pi or π = 3.14159265e = 2.71828182tau or τ = 6.2831853phi or ϕ = 1.61803398(x, y, z) which may contain an arbitrary amount of items. Generally, when an operation is performed on a vector, it is done on each individual item. This means that (2, 4, 8) / 2 gives the result (1, 2, 4). An exception to this is multiplication with two vectors, for which the result is the dot product of the vectors. When a vector is given to a regular function, the function is applied to all of the items in the vector.vector[[index]]. Indexes start at 1.[n^2 : 0 < n < 10 and n != 5]. A comprehension consists of two parts. The first part defines what should be done to each number, while the second part defines the numbers which should be handled in the first part. At the moment, it is mandatory to begin the second part with a range of the format a < n < b where n defines the variable which should be used in the comprehension. Several of these variables can be created by separating the conditions by a comma, for example [ab : 0 < a < 5, 0 < b < 5].[x, y, z; a, b, c] where semicolons are used to separate rows and commas are used to separate items. It is also possible to press the enter key to create a new row, instead of writing a semicolon. Pressing enter will not submit if there is no closing square bracket. Operations on matrices work the same way as with vectors, except that two matrices multiplied result in matrix multiplication. It is also possible to obtain the tranpose of a matrix with the syntax A^T, where A is a matrix and T is a literal T.matrix[[rowIndex, columnIndex]]. Indexes start at 1.~/.config/kalker/~/Library/Application Support/kalker/ or ~/Library/Preferences/kalker%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.