3 个不稳定版本
使用旧 Rust 2015
0.2.1 | 2016年12月5日 |
---|---|
0.2.0 | 2016年12月5日 |
0.1.1 | 2016年12月3日 |
0.1.0 |
|
在 数学 中排名第 810
135KB
1.5K SLoC
xxcalc-rs

使用 Rust 编写的可嵌入或独立使用的健壮浮点多项式计算器。
该项目是一个 Rust crate(库),它提供了一个易于使用的 API 来提供浮点数计算器。此外,基本的计算单位是多项式,因此可以使用 x
符号执行多个算术运算。
您可以将此库用于自己的项目,作为数学评估器或使用 xxcalc
二进制文件作为独立的、命令行计算器。内部使用手动编写的标记化和迪杰斯特拉算法的逆波兰表示法(后缀表示法)转换中缀形式,然后进行评估。请参阅完整文档以获取实现细节。
二进制文件
xxcalc
可以用来替代常见的 bc
Unix 工具。它内置了对加法、减法、乘法、除法和指数运算的支持。
以下是一个使用计算器的示例会话
>>> (3+(4-1))*5
30
>>> 2 * x + 0.5 = 1
0.25
>>> 2x + 1 = 2(1-x)
0.25
>>> (x^3+2x-1)^3
x^9+6x^7-3x^6+12x^5-12x^4+11x^3-12x^2+6x-1
>>> bind((x^3+2x-1)^3, 1)
8
>>> log(128, 2)
7
功能
- 浮点多项式上的
+
、-
、*
、/
、^
运算符 - 科学记数法和负数
- 使用
x
符号表示多项式 - 使用
=
运算符解决线性方程求解器 - 内置函数
log(number, base)
、log10(number)
、bind(polynomial, x value)
- 常量
pi
和e
- 从stdin读取输入(可用于管道传输)
- 具有历史记录的交互式readline-like模式
安装
您需要Rust编程语言环境(适用于稳定版、beta版和nightly版)。如果您还没有安装,请使用rustup.rs轻松安装完整环境。然后您可以使用cargo install xxcalc --features interactive
从crates.io安装打包版本。
编译
从源代码的基本编译过程只是运行命令行中的cargo
$ cargo build --release
$ ./target/release/xxcalc
2+2
4
然后您可以将xxcalc
二进制文件复制到您喜欢的任何位置(例如/usr/local/bin
),但是这样构建的二进制文件是非交互式的,没有历史记录自动补全支持。
为了构建支持历史记录的计算器(存储在~/.xxcalcrs_history
中),您需要启用interactive
特性(它将自动解析依赖项到rustyline
)
$ cargo build --release --features interactive
$ ./target/release/xxcalc
>>> 2+2
4
基准测试
即将推出。它的速度至少比bc
快2.5倍,比GNU Octave快得多。
库
xxcalc
计算器提供了一种干净且文档良好的API。请参阅其文档。
该库基于稳定版、beta版和nightly版构建,不需要其他依赖项,除非启用了交互式特性。因此,您可以轻松地将数学表达式评估器添加到您的项目中。
计算器旨在可扩展——您可以注册您自己的函数或常量。您甚至可以更改自己的标记器、解析器或评估器。此外,Polynomial
是一种独立的类型,可以在不使用计算器的其他功能的情况下在您的项目中使用。
用法
将xxcalc
添加到您的Cargo.toml
中的依赖项,然后只需使用xxcalc
crate和您需要的部分。
# Cargo.toml
[dependencies]
xxcalc = "0.2.1"
extern crate xxcalc;
use xxcalc::linear_solver::LinearSolver;
use xxcalc::calculator::Calculator;
fn main() {
println!("The result is {}", LinearSolver.process("2+2").unwrap());
}
有关用法提示和场景的详细信息,请参阅文档。
测试
该项目经过彻底的单元测试,一些示例直接提供在文档中。使用cargo test
运行单元测试。
如果您有Rust nightly编译器,可以使用cargo bench
运行一些内置基准测试。一些更广泛的基准测试(使用大型表达式)可以使用carbo bench -- --ignored
运行。
许可证
该项目采用MIT许可证,作者为Amadeusz Juskowiak [email protected],请随时提问或雇佣我。
依赖关系
~100–560KB
~12K SLoC