3个版本

0.1.2 2022年2月25日
0.1.1 2022年2月22日
0.1.0 2022年2月21日

874数学 中排名

Download history • Rust 包仓库 725/week @ 2024-03-13 • Rust 包仓库 855/week @ 2024-03-20 • Rust 包仓库 565/week @ 2024-03-27 • Rust 包仓库 550/week @ 2024-04-03 • Rust 包仓库 657/week @ 2024-04-10 • Rust 包仓库 299/week @ 2024-04-17 • Rust 包仓库 157/week @ 2024-04-24 • Rust 包仓库 211/week @ 2024-05-01 • Rust 包仓库 192/week @ 2024-05-08 • Rust 包仓库 181/week @ 2024-05-15 • Rust 包仓库 415/week @ 2024-05-22 • Rust 包仓库 344/week @ 2024-05-29 • Rust 包仓库 222/week @ 2024-06-05 • Rust 包仓库 184/week @ 2024-06-12 • Rust 包仓库 164/week @ 2024-06-19 • Rust 包仓库 188/week @ 2024-06-26 • Rust 包仓库

888 每月下载量
用于 9 个包(3 直接)

MIT/Apache

11KB
132

fsum 是Piotr Beling编写的Rust库,用于计算浮点数的精确总和。

示例

use fsum::FSum;

assert_eq!(FSum::new().add(1e100).add(1.0).add(-1e100).value(), 1.0);
assert_eq!(FSum::with_all((0..10).map(|_| 0.1)).value(), 1.0);
assert_eq!(FSum::with_all(&[1e100, 1.0, -1e100]).value(), 1.0);

let mut s = FSum::new();
assert_eq!(s.value(), 0.0);
s += 3.0;
assert_eq!(s.value(), 3.0);
s -= 1.0;
assert_eq!(s.value(), 2.0);

复杂度

求和 n 个数的复杂度从 O(n)(乐观)到 O(n²)(悲观)

  • 时间:从 O(1)(乐观)到 O(n)(悲观)
  • 内存:从 O(1)(乐观)到 O(n)(悲观)

通常复杂度接近乐观。

参考

计算代码基于(主要复制自)sum 方法实现的 test::stats::Statsf64 (这可能会重新实现Python库中的 math.fsum)和CPython的源代码。另见

该方法牺牲了性能以换取精度,依赖于IEEE-754算术保证。有关正确性的证明,请参阅自适应精度浮点算术和快速鲁棒几何谓词

无运行时依赖