#expression #operations #variables #engine #parser #context

bin+lib math-engine

描述数学运算和函数的数学表示

2 个不稳定版本

0.2.0 2023年7月3日
0.1.0 2023年7月3日

#255 in #expression

MIT 许可证

23KB
342

Rust数学引擎

这个crate旨在提供使用Rust语法和习惯用法定义可修改、可解析、可评估数学表达式的工具。


lib.rs:

解析和操作数学表达式的工具

Math-engine是一套用于操作数学表达式的工具。这些表达式可能包含各种操作和变量。该crate定义了构建、评估和操作此类表达式的工具。

示例

Math-engine允许您构建变量表达式,并在上下文中评估它们,即一组每个变量的值。

let expr = Expression::parse("1.0 + 3.0 * (4.0 - x)").unwrap();
let ctx = Context:new().with_variable("x", 3.0);

let eval = expr.eval_with_context(&ctx).unwrap();

assert!(eval, 4.0);

实现了基本运算符,以实现易于使用的构建

let e1 = Expression::constant(3.0);
let e2 = Expression::variable("x");
let e = e1 + e2;

println!("{}", e);

此外,还提供了一些有用的操作来操作表达式,例如通过常数传播进行微分和简化

let e1 = Expression("1.0 * y + 2.0 * x").unwrap();
let deriv = e1.derivate("x");
println!("{}", deriv);

let simp = deriv.constant_propagation().unwrap();
println!("{}", simp);

依赖关系

~2MB
~41K SLoC