13 个不稳定版本 (6 个破坏性更新)

0.7.0 2023年4月6日
0.6.1 2022年11月17日
0.6.0 2022年9月30日
0.5.0 2022年4月21日
0.1.2 2020年3月18日

#543 in 算法

Download history 565/week @ 2024-03-13 631/week @ 2024-03-20 582/week @ 2024-03-27 493/week @ 2024-04-03 459/week @ 2024-04-10 290/week @ 2024-04-17 361/week @ 2024-04-24 308/week @ 2024-05-01 484/week @ 2024-05-08 431/week @ 2024-05-15 342/week @ 2024-05-22 416/week @ 2024-05-29 420/week @ 2024-06-05 592/week @ 2024-06-12 449/week @ 2024-06-19 485/week @ 2024-06-26

每月 2,062 次下载
4 crate 中使用 (3 直接)

BSD-3-Clause

130KB
3.5K SLoC

twofloat

Build Status Crate

为 Rust 提供的双精度算术库。

该库为 Rust 语言提供了双精度算术的实现。请注意,这不同于 IEEE 四倍精度浮点数格式。相反,通过将值表示为两个非重叠 f64 值的和来获得更高的精度。

在适当的地方为引用类型和值类型实现了运算符特质。代码指出了所用算法的来源。

数学常数可在 twofloat::consts 模块中找到,它提供与 std::f64::consts 相同的常数集。

请注意,数学函数(exppowf 等)的实现非常初步。特别是,它们使用与结果相同精度的运算来计算,因此不会返回与 TwoFloat 类型完全精确的值。这可能在未来的版本中得到解决。

可选功能

  • math_funcs - 包含数学函数(默认启用)
  • serde - 使用 Serde 启用序列化和反序列化。
  • std - 使用 std 数学函数而不是 libm。

已知问题

  • MinGW 的 fma 实现似乎在某些情况下给出错误的结果,因此在此平台上始终使用 libm 实现。

参考资料

  • Mioara Joldeș, Jean-Michel Muller, Valentina Popescu. 双字算术基本构建块的紧和严格误差界限。ACM 计算机科学协会数学软件交易,2017,44 (2),第 1-27 页。10.1145/3121432. hal-01351529v3

  • Alan H. Karp, Peter Markstein. 高精度除法和平方根。ACM 计算机科学协会数学软件交易,1997,23 (4),第 561-589 页。10.1145/279232.279237。

  • 蔡维良,Joldeș M.,劳特C.。Sollya:用于开发数值代码的环境。数学软件 - ICMS 2010,第28-31页。

依赖项

约2MB
约49K SLoC