#interval #arithmetic #numeric #floating-point

inari_wasm

适用于Web Assembly的Inari库(区间算术的Rust实现)的精简版本

2个版本

0.1.2 2023年6月9日
0.1.1 2022年9月1日
0.1.0 2022年9月1日

#1047 in 数学

MIT许可证

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]

参考资料

依赖项

~415KB