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 在 数学
23KB
279 行
Equation
一个用于数学表达式评估和简化的 Rust 库。
待办事项
- 将 pest 解析重写为 PrattParser;
- 支持取模运算符
%
和指数运算**
; - 支持一元减号运算符;
- 支持分数作为
f32
f64
使用; - 支持基本三角函数正弦、余弦和正切作为
sin
、cos
和tan
使用; - 支持具有额外参数的函数,例如
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