crunch_eval

High-performance algebraic expression evaluator.

Basic usage:

use crunch_eval::expr::Expr; let expr = Expr::compile("1 + 1").unwrap(); let val: f64 = expr.evaluate_blank().unwrap(); assert_eq!(val, 2.0);

Benchmarks:

Expression: 6.5*7.8^2.3 + (3.5^3+7/2)^3 -(5*4/(2-3))*4 + 6.5*7.8^2.3 + (3.5^3+7/2)^3 -(5*4/(2-3))*4 + 6.5*7.8^2.3 + (3.5^3+7/2)^3 -(5*4/(2-3))*4 + 6.5*7.8^2.3 + (3.5^3+7/2)^3 -(5*4/(2-3))*4

Time to compile long expression:

| compile | time/op (µs) | |-------------|--------------| | crunch_eval | 13.56 | | evalexpr | 32.36 |

Time to evaluate long expression:

| eval | time/op (ns) | |-------------|--------------| | crunch_eval | 2.97 | | evalexpr | 5.96 |

Expression: double(x + 1)

Time to evaluate expression with variable and function:

| eval | time/op (ns) | |-------------|--------------| | crunch_eval | 48.46 | | evalexpr | 341.83 |