2个版本
0.1.2 | 2023年6月9日 |
---|---|
0.1.1 | 2022年9月1日 |
0.1.0 |
|
#1047 in 数学
68KB
1K SLoC
🦊 inari wasm 🕸
inari_wasm 是原始 inari 库的精简版本,这是一个 区间算术 的Rust实现。
原始库使用 gmp-mpfr-sys
,这使得它可以为计算区间的上下界指定不同的浮点数舍入策略。不幸的是,Web Assembly不支持更改舍入策略的必要指令(《WebAssembly/design#1384》)。为了在Web Assembly中使用此库,我不得不从 gmp
中删除所有函数,并用它们的正常对应函数替换。
原始库使用SIMD指令。这些指令在Web Assembly中得到支持,但我不知道如何使用它们,因此它们也被替换了。
我通过逐个复制函数到一个新项目并修改它们来修改了库。我包括了 Interval
结构和它的所有实现。目前,我没有包括 DecInterval
。
如果你不需要为wasm编译,这个版本比原始库更不准确、更慢。
示例
let x = const_interval!(0.0, 2.0);
let y = x.sin() + const_interval!(1.0);
println!("{}", y); // [1, 2]
参考资料
- Inari - 一个符合IEEE 1788的区间算术的Rust实现。 https://github.com/unageek/inari
- IEEE Std 1788-2015 - IEEE区间算术标准。 https://doi.org/10.1109/IEEESTD.2015.7140721
- IEEE Std 1788.1-2017 - IEEE区间算术标准(简化版)。 https://doi.org/10.1109/IEEESTD.2018.8277144
依赖项
~415KB