1 个不稳定版本
0.1.0 | 2022年10月1日 |
---|
#801 in 数学
200KB
6K SLoC
slEEP-trig
Rust 对 SLEEF 几个三角函数的移植
Sleef_sind1_u35purec
(大约比原版慢 15-30%)Sleef_sind2_u35sse2
(大约比原版慢 15-20%)Sleef_sind4_u35avx
(大约比原版慢 5-10%)
性能差异在绝对值较高的输入上最大,尤其是等于或大于 1e14 的。
此外,还提供了一些仅在 -125.0 和 125.0 之间有效的函数
Sleef_sinf1_u35purec_range125
Sleef_cosf1_u35purec_range125
这两个函数都比等价的(无限制范围)sleef 函数快约 30 倍。
使用方法
要使用此 crate,请将 sleef-trig
添加到您的 Cargo.toml
文件中的依赖项。
为了获得最佳性能,使用以下内容在 Cargo.toml
中编译 sleef-trig(针对每个性能敏感配置文件一次)codegen-units = 1
[profile.release.package.sleef-trig]
codegen-units = 1
运行测试和基准测试
运行
cargo test
cargo bench
运行测试和基准测试需要 nightly Rust,并依赖于 sleef-trig-sys
进行 SLEEF 绑定。
为什么不直接链接到 SLEEF 呢?
SIMD FFI 是不稳定的,并依赖于未定义的行为。