4个版本
使用旧的Rust 2015
0.0.5 | 2017年12月13日 |
---|---|
0.0.4 | 2017年12月2日 |
0.0.3 | 2017年11月30日 |
0.0.2 | 2017年11月23日 |
#46 in #number
20KB
354 行
safeeft
浮点数的安全和无分支错误转换算法。
现在支持实现 num_traits::Float
的类型,并且其有效数字的位数是奇数(因为 Float
没有提供其大小)。
基准测试
使用夜间编译器,执行
$cargo +nightly bench
如果您的CPU有 fma
目标功能,
$RUSTFLAGS='-C target-cpu=native'cargo +nightly bench --功能use-fma
如果您的CPU没有 fma
并使用此命令编译和运行,***_fma
将由于 fma
的软件模拟而运行得非常慢。
示例结果
- 编译器:rustc 1.23.0-nightly
- CPU:Intel Core i5-4570(Haswell)@3.20GHz
twosum
算法 | 时间 (ns) / 操作 |
---|---|
twosum (不安全) |
1.7530 |
safetwosum_branch |
4.4827 |
safetwosum_straight |
4.6438 |
safetwosum_fma |
2.4749 |
split
算法 | 时间 (ns) / 操作 |
---|---|
split (不安全) |
0.8915 |
safesplit_branch (不安全) |
1.1918 |
safesplit_straight |
3.3454 |
twoproduct
算法 | 时间 (ns) / 操作 |
---|---|
twoproduct (不安全) |
2.9322 |
safetwoproduct_branch |
3.7826 |
safetwoproduct_straight |
12.9883 |
safetwoproduct_fma |
0.7125 |
依赖项
~300KB