9 个版本

0.2.8 2020 年 8 月 12 日
0.2.7 2020 年 8 月 12 日
0.1.0 2020 年 8 月 7 日

#2059算法

每月 27 次下载

BSD-2-Clause

39KB
914

浮点数转换函数。

软件和硬件实现

soft 模块提供了所有转换函数的软件实现,用于那些不提供原生支持的硬件。这些实现不使用任何浮点运算,因此对于需要避免使用浮点硬件的软件也很有用。

fast 模块通过尽可能使用原生浮点指令来提供所有转换函数的快速实现。

整数到浮点数的转换

  • _round 命名的函数将整数四舍五入到最接近的浮点数,并在出现平局时舍入到偶数。
  • _truncate 命名的函数截断结果,这意味着它们朝零舍入。
  • 名称中没有舍入模式的函数不进行舍入。这些转换始终是无损的。
  • 唯一可能溢出的转换是 u128_to_f32_round,在这种情况下,它返回 f32::INFINITY

浮点数到整数的转换

  • 这些转换截断,这意味着它们朝零舍入。
  • 高于整数可以表示的值(包括 +∞)将导致最大整数值。
  • 低于整数可以表示的值(包括 −∞)将导致最小整数值。
  • NaN 转换为零。

速度

对于不可原生的转换,此crate中的软件实现似乎在大多数情况下都比当前由 x as <type>(来自编译器内置运行时支持库)使用的实现更快且更小。

工作进行中

此crate可用,但尚不完整

  • 原生转换仅在 ARM(32 位和 64 位)和 x86(32 位和 64 位)上可用。
  • 截断函数(目前)不使用任何原生浮点指令。

没有运行时依赖项