Skip to content

浮点算术标准误差模型

Standard floating-point arithmetic model

以每次基本运算的小相对扰动和 gamma 记号组织多步浮点误差分析。

条目类型
原则

形式陈述

本页把浮点语义绑定到 IEEE 754-2019 的指定二进制格式与最近舍入模式。对基本二元运算 {+,,×,},当精确结果舍入到正规有限数且没有溢出时,可使用标准相对误差模型

fl(xy)=(xy)(1+δ),|δ|u,

其中 u 是该格式和舍入模式对应的unit roundoff。这是一项分析假设:它把每步舍入包装为对精确结果的小相对扰动,不声称 δ 随机、独立或具有某个概率分布。

若要覆盖渐进下溢,可令 α 为最小正次正规数,并使用混合模型

fl(z)=z(1+δ)+η,|δ|u,|η|α2,

其中对正规结果可取 η=0。这条式子仍排除溢出、NaN 与无穷,也假定硬件没有 flush-to-zero。FMA 把 ab+c 作为一次融合运算只舍入一次,必须单独计数,不能冒充先乘后加的两次基本运算。

连续 k 个局部因子的乘积常用 θk 压缩表示。若 ku<1,则存在 θk 使

i=1k(1+δi)ρi=1+θk,|δi|u,ρi{1,1},

并有

|θk|γk,γk=ku1ku.

γkku1 时约为 ku,但条件 ku<1 不能省略。对按固定顺序计算的点积,可由模型推出典型的分量界

|fl(xTy)xTy|γn|x|T|y|,

这里右侧保留了乘积项的绝对值,因而能显示抵消使相对误差变大的情形。

直觉

标准模型像一套记账法:每次正规运算都在精确结果旁贴上一个不超过 u 的局部相对扰动标签,随后用 θkγk 把一串标签合并。它让算法页能集中分析数据流和误差传播,而不必反复展开每个位的舍入过程;遇到下溢边界时,再把绝对项 η 纳入账本。

这套黑箱只有在边界条件清楚时才可靠。溢出会直接离开有限相对误差结论,表达式重排与编译器 contraction 则改变“发生了几次、在哪里舍入”;分析必须跟随实际运算路径,而不能把不同 IEEE 754 行为塞进同一个 δ

例子与边界

朴素点积先计算每个 xiyi,再顺序累加,约经历 2n1 次基本运算。局部误差即使都很小,若正负项几乎抵消,精确点积 xTy 可能远小于 |x|T|y|,于是绝对误差受控却没有小的相对误差。界中的 |x|T|y| 已经明确暴露了这项问题尺度,模型仍在其适用域内正常工作。

融合乘加 FMA 对 ab+c 只在最终结果舍入一次,可写成

flfma(ab+c)=(ab+c)(1+δ).

若分开执行乘法和加法,则乘积先舍入,随后求和再舍入,两条误差路径不同。取 binary64 中可精确表示的

a=1+227,b=1227,c=1.

精确值 ab+c=254。分开计算时,精确乘积 1254 位于相邻浮点数的中点,ties-to-even 把它舍入为 1,随后加 10;FMA 只在最终舍入,返回可表示的 254。编译器是否允许 contraction 因而会改变位级结果和证明所对应的运算图。

ku1 时,γk 的分母不再为正,不能继续引用这条简洁界。实际算法未必立刻失效,但需要更合适的分析、提高精度或重组计算。把 θk 当作独立同分布噪声再用方差相消,同样超出了确定性模型能保证的范围。

推论与应用

浮点求和用该模型比较顺序、成对和补偿算法;后续 LU、QR 与迭代精化则用它解释局部运算怎样转化为后向误差。共同模型使不同算法的稳定性陈述可以比较,但每页仍需写明运算路径、范数和不排除的异常情形。

模型也为数值稳定性提供执行层接口:若全部局部舍入能等价为原始输入上的小扰动,算法可获得后向稳定结论;若误差在中间量上被巨大放大,仅知道每步 |δ|u 仍不足以保证最终答案可信。对次正规数、异常值或改变舍入次数的实现,必须先换模型,再谈稳定性标签。

参考资料
  • Nicholas J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd ed., SIAM, 2002, Chs. 2–3.
  • David Goldberg, “What Every Computer Scientist Should Know About Floating-Point Arithmetic,” ACM Computing Surveys 23(1), 1991.
  • IEEE, IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2019.
关系图谱17 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系