0.1.0 |
|
---|
#26 in #rational-numbers
25KB
543 行
Ben的朴素有理数库 | 最后更新于2021/2/3
此库作为一个分数的基本实现。它旨在按照您的预期行为,尽可能地将结构决策留给您。
+, +=, -, -=, *, *=, /, /= 都进行了重载,并提供了 .abs() 和 .pow(u32) 方法。此数据结构溢出的可能性与您基于的数据类型相同,所以使用 pow() 时要小心。还有一个 rat![] 宏。
有理数定义为任何可以表示为整数除以另一个(非零)整数的数。此库比这要宽松得多。创建“有理数”(实际上只是一个分数)所需的所有东西是您的类型 T 实现以下特性:Add
尽管如此,请不要尝试将有理数从浮点数中创建出来,这会破坏一切,因为涉及分数操作的大多数算法都需要精确值(例如 gcd)。
此库旨在与原始数据类型一起用于精确数学运算。未来我希望使其更加健壮,以便它能支持您的自定义数据类型。
示例
use bens_fractions::{Rational,rat};
assert_eq!(rat![8i64, 32i64], Rational::from(8i64, 32i64).unwrap());