Floating-Point Printing and Parsing Can Be Simple and Fast
4 months ago
- #algorithm
- #floating-point
- #performance
- 使用未舍入缩放技术,浮点数的打印和解析可以变得简单快速。
- 未舍入缩放通过单次64位乘法运算,计算m * 2^e * 10^p的近似值。
- 所提算法运行速度超过Dragon4、Grisu3、Ryū等现有方法。
- 本文介绍了未舍入数的概念,它包含以各种方式舍入所需的全部信息。
- 固定宽度打印将浮点数格式化为最多18位指定小数位数的十进制数字。
- 十进制解析将最多19位的十进制数字转换为浮点数。
- 最短宽度打印使用能解析回原数的最短表示形式格式化浮点数。
- 快速未舍入缩放通过一个简短但精妙的算法实现。
- 快速缩放正确性的证明概要已给出,完整细节见配套文章。
- 优化后的快速未舍入缩放在多数情况下仅需单次64位乘法运算。
- 性能对比显示该实现优于早期算法。
- 相关工作与历史沿革追溯了本文算法所用思想的起源。