8 个稳定版本
1.6.0 | 2024年5月10日 |
---|---|
1.5.0 | 2023年4月13日 |
1.4.0 | 2023年2月4日 |
1.3.0 | 2020年4月18日 |
1.1.0 | 2017年10月10日 |
在 数学 中排名 162
每月下载量 517
31KB
244 行
Infinitable (Rust)
Infinitable 是一个简单的库,用于将“无限”和“负无限”的概念引入没有无限值的数值类型,如整数。
无限的概念表示对于如 Dijkstra 算法这样的图算法以及用邻接矩阵表示图都是有用的。
用法
只需安装 Crates.io 上可用的 infinitable
包。
use infinitable::Infinitable;
fn main() {
let finite = Infinitable::Finite(5);
let infinity = Infinitable::Infinity;
let negative_infinity = Infinitable::NegativeInfinity;
assert!(finite < infinity);
assert!(finite > negative_infinity);
}
测试
测试位于 tests
目录中。只需运行 cargo test
。
关于浮点数的说明
Infinitable 提供的无限值与浮点数值类型中现有的无限值不同。因此,仅使用 Finite
或 Infinitable::from
从浮点值转换为 Infinitable
可能会导致不直观的结果。
use infinitable::Infinitable;
fn main() {
let infinitable_infinity = Infinitable::Infinity;
let fp_infinity = Infinitable::Finite(f64::INFINITY);
assert!(infinitable_infinity > fp_infinity);
}
该库提供了 from_f32
和 from_f64
函数,用于在考虑无限值和 NaN 的同时将浮点值转换为 Infinitable
。
use infinitable::Infinitable;
fn main() {
let infinitable_infinity = Infinitable::Infinity;
let fp_infinity = infinitable::from_f64(f64::INFINITY).unwrap();
assert!(infinitable_infinity == fp_infinity);
}
许可证
Infinitable 在 2 条款 BSD 许可证下可用。有关详细信息,请参阅 LICENSE.txt
。
依赖项
~155KB