9 个版本
0.2.8 | 2020 年 8 月 12 日 |
---|---|
0.2.7 | 2020 年 8 月 12 日 |
0.1.0 | 2020 年 8 月 7 日 |
#2059 在 算法
每月 27 次下载
39KB
914 行
浮点数转换函数。
软件和硬件实现
该 soft
模块提供了所有转换函数的软件实现,用于那些不提供原生支持的硬件。这些实现不使用任何浮点运算,因此对于需要避免使用浮点硬件的软件也很有用。
该 fast
模块通过尽可能使用原生浮点指令来提供所有转换函数的快速实现。
整数到浮点数的转换
- 以
_round
命名的函数将整数四舍五入到最接近的浮点数,并在出现平局时舍入到偶数。 - 以
_truncate
命名的函数截断结果,这意味着它们朝零舍入。 - 名称中没有舍入模式的函数不进行舍入。这些转换始终是无损的。
- 唯一可能溢出的转换是
u128_to_f32_round
,在这种情况下,它返回f32::INFINITY
。
浮点数到整数的转换
- 这些转换截断,这意味着它们朝零舍入。
- 高于整数可以表示的值(包括 +∞)将导致最大整数值。
- 低于整数可以表示的值(包括 −∞)将导致最小整数值。
NaN
转换为零。
速度
对于不可原生的转换,此crate中的软件实现似乎在大多数情况下都比当前由 x as <type>
(来自编译器内置运行时支持库)使用的实现更快且更小。
工作进行中
此crate可用,但尚不完整
- 原生转换仅在 ARM(32 位和 64 位)和 x86(32 位和 64 位)上可用。
- 截断函数(目前)不使用任何原生浮点指令。