Double-double:不离开FPU实现31位精度

Double-double: 31 digits of precision without leaving the FPU

Double-double:不离开FPU实现31位精度

当 double 类型的 15 位精度在深度渲染 Mandelbrot 集合时捉襟见肘,而 MPFR 等任意精度库又因堆内存分配和循环开销导致性能暴跌 81 倍时,我找到了一个完美的中间方案:Double-double。通过将两个 double 值组合并视为一个整体,利用 Knuth 的 twoSum 和 FMA 指令实现无误差变换,我们能在不引入堆分配和外部依赖的情况下,获得约 31 位十进制精度。这种技巧将性能损耗控制在普通 double 的 9 倍左右,既填补了标准浮点与高精度库之间的巨大性能鸿沟,又让深究分形细节成为可能。

Double-double 值存储的是两个 double 的未求和结果。

同日更多故事

2026-08-20