不离开 FPU 就拿到 31 位精度的双精度拼接技巧
来源:marekfiser.com — 2026-08-16
📋 概述
作者介绍 double-double 技术:把两个 double 粘在一起当作一个数,即可在浮点单元内获得约 31 位十进制精度,成本大约是普通 double 的 9 倍(每个孤立操作 4-12 倍),介于 double 与任意精度库之间,且无需堆分配、无依赖。文章解释支撑它的误差消除变换(error-free transformations),用 Mandelbrot 集深缩放作为直观示例,并与 MPFR 实测对比,同时指出这一技巧的局限。
🔑 核心要点
- 用两个 double 组合获得约 31 位十进制精度,无需离开 FPU。
- 开销约为普通 double 的 9 倍(孤立操作 4-12 倍),无堆分配、无依赖。
- 文章讲清其背后的误差消除变换,并与 MPFR 实测对比。
- 以 Mandelbrot 深缩放为例展示 double 精度耗尽时的效果差异。
💡 金句
当 15 位不够、任意精度又太贵时,两粒 double 正好填上那道缝隙。
👍 0
👎 0
← 返回 Lobsters 首页