#infinity

无 std infinitable

为没有无限值的类型提供无限

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

Download history 9/week @ 2024-04-19 6/week @ 2024-04-26 138/week @ 2024-05-10 13/week @ 2024-05-17 4/week @ 2024-05-24 3/week @ 2024-05-31 4/week @ 2024-06-07 3/week @ 2024-06-14

每月下载量 517

BSD-2-Clause 协议

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 提供的无限值与浮点数值类型中现有的无限值不同。因此,仅使用 FiniteInfinitable::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_f32from_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