kalker/kalk
2020-06-18 17:41:57 +02:00
..
src Added units to prelude functions. 2020-06-18 17:41:57 +02:00
Cargo.toml Fixed the broken unit tests in the parser and completed the test_angle_units test in the interpreter. 2020-06-15 21:30:52 +02:00
README.md Updated example code in README. 2020-06-12 21:00:03 +02:00

kalk

Kalk is a math parser library that supports user-defined variables and functions. An example of what it can parse:

f(x, y) = sum(1, 3, (2sin4/x!)^y) + cos(n deg)
a = 3
f(a, 2)

>> 1.1899401098014355

Features

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

Usage

use kalk::parser;
let mut parser_context = parser::Context::new();
let precision = 53;
assert_eq!(parser::eval(&mut parser_context, "5*3", precision).unwrap().unwrap(), 15);

Compiling

Make sure you have diffutils gcc make and m4 installed.