#expression #evaluation #algebra #simplify

equation

A Rust 库,用于数学表达式的评估和简化

6 个版本 (1 个稳定版本)

1.0.0 2023年9月19日
0.3.0 2023年9月19日
0.2.0 2023年9月16日
0.1.1 2023年9月15日
0.0.0 2023年9月12日

#325数学

MIT/Apache

23KB
279

Equation

CI

一个用于数学表达式评估和简化的 Rust 库。

待办事项

  • 将 pest 解析重写为 PrattParser;
  • 支持取模运算符 % 和指数运算 **;
  • 支持一元减号运算符;
  • 支持分数作为 f32 f64 使用;
  • 支持基本三角函数正弦、余弦和正切作为 sincostan 使用;
  • 支持具有额外参数的函数,例如 atan2(y, x)
  • 支持评估参数 steps 以将评估步骤分解为 Vec<&str>
  • 支持代数表达式的简化和评估;
  • 支持向量以及基本的向量算术和操作;

入门指南

将以下行添加到您的 Cargo.toml 依赖项中

[dependencies]
equation = "1.0.0"

示例

评估基本的算术方程并返回一个 f64

use equation::evaluate;

fn main() {
    let result = evaluate("(1 + 2) * (1 + 2)"); // Returns Ok(9.0)
    match result {
        Ok(val) => println!("{}", val),
        Err(e) => println!("Error: {:?}", e),
    }
}

支持

基本的算术

evaluate("(1 + 2) * 1 + 2"); // Returns Ok(5.0)
evaluate("4 * 3");           // Returns Ok(12.0)
evaluate("8 / 2");           // Returns Ok(4.0)
evaluate("16 - 4");          // Returns Ok(12.0)

负数计算

一元运算符。返回其操作数的负值。

evaluate("-4 * 3"); // Returns Ok(-12.0)
evaluate("-8 / 2"); // Returns Ok(-4.0)
evaluate("-(4 + 4)"); // Returns Ok(-8.0)

指数运算

计算底数乘以指数的幂,base ^ exponent

evaluate("2 ^ 8");   // Returns Ok(256.0)
evaluate("2 exp 9"); // Returns Ok(512.0)

取模运算

返回两个操作数相除的整数余数。

evaluate("10 % 2");   // Returns Ok(0.0)
evaluate("10 % 4");   // Returns Ok(2.0)
evaluate("10 mod 3"); // Returns Ok(1.0)

三角函数

函数 描述 示例 结果
sin 输入的正弦值 evaluate("sin(10.0)); Ok(-0.5440211108893698)
cos 输入的余弦值 evaluate("cos(10.0)); Ok(-0.8390715290764524)
tan 输入的正切值 evaluate("tan(10.0)); Ok(0.6483608274590867)
asin 输入的反正弦值 evaluate("asin(0.5)); Ok(0.5235987755982988);)
acos 输入的反正切值 evaluate("acos(0.5)); Ok(1.0471975511965976);)
atan 输入的反正切值 evaluate("atan(10.0)); Ok(1.4711276743037345);)
sinh 输入的双曲正弦值 evaluate("sinh(10.0)); Ok(11013.232874703393);)
cosh 输入的双曲余弦值 evaluate("cosh(10.0)); Ok(11013.232920103323);)
tanh 输入的双曲正切值 evaluate("双曲正切(10.0)); Ok(0.9999999958776927);)
asinh 输入的反正双曲正弦 evaluate("asinh(10.0)); Ok(2.99822295029797);)
acosh 输入的反正双曲余弦 evaluate("acosh(10.0)); Ok(2.993222846126381);)
atanh 输入的反正双曲正切 evaluate("atanh(10.0)); Ok(0.5493061443340549);)

许可证

根据MIT许可证授权(LICENSE-MIT | https://opensource.org/licenses/MIT)或Apache 2.0许可证(LICENSE-APACHE | https://opensource.org/license/apache-2-0/)。

依赖

~2–2.8MB
~56K SLoC