#audio #trigonometry

slEEP-trig

将 slEEP.org 的几个三角函数移植过来

1 个不稳定版本

0.1.0 2022年10月1日

#801 in 数学

BSL-1.0 许可证

200KB
6K SLoC

slEEP-trig

CI

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 绑定。

SIMD FFI 是不稳定的,并依赖于未定义的行为。

无运行时依赖