Skip to content

舍入、机器精度与 ulp

Rounding and unit roundoff · Unit in the last place · ulp

用舍入映射、ulp 与 unit roundoff 描述实数映到邻近浮点数时的局部精度。

条目类型
定义

形式陈述

F 是给定浮点系统的有限可表示数集合。舍入映射 fl:RF 按选定方向把精确实数送到可表示数。IEEE 754 的默认方向是 round to nearest, ties to even:选择最近的浮点数;若精确值恰在两数中点,则选择最低有效位为偶数的那个。标准还定义 ties-to-away,以及向 +、向 和向零三种定向舍入;后面统一的半 ulp 上界专指最近舍入。

对可表示数 xulp(x) 描述其末位单位,即所在 binade 中相邻浮点数的间距;在二进制正规区间 [2e,2e+1) 中它等于 2ep+1。幂次边界的上下间距不同,因此跨边界谈“一个 ulp”必须声明采用哪一侧或哪套标准定义。设精度为 p、基数为 β,在 round-to-nearest 下通常定义 unit roundoff

u=12β1p.

在 binary64 中 u=253machine epsilon 在不同文献和语言库中可能指 β1p,即 1 与下一个浮点数的间距,也可能被当作 u;使用时必须声明约定。

x0、舍入结果处于正规范围且没有溢出时,最近舍入满足

fl(x)=x(1+δ),|δ|u.

这是带条件的相对误差陈述。若 α 是最小正次正规数,则对落入次正规舍入区的精确数,最近舍入满足

|fl(x)x|α2

这里应使用绝对界,不能除以趋近于零的 x 后继续声称相对误差受 u 控制。定向舍入最多偏向相邻格点而不是半格,常数也随之改变。溢出结果由舍入方向决定,可能是无穷也可能是同号最大有限数。

直觉

ulp 是浮点尺在 x 附近的一格,unit roundoff 是正规范围内“最多偏半格”换算成相对尺度后的统一上界。数值越大,绝对格距越大,因此一个固定增量可能在 1 附近可见,在更大的累计值旁边却落不到新的格点;次正规区则反过来保持固定绝对格距,逐步失去相对有效位。

ties-to-even 让连续出现的精确中点不总朝同一方向舍入,可减少某些系统性偏差;它不保证一组实际数据的舍入误差均值为零,也不允许把误差当独立随机噪声。

例子与边界

在 binary64 中,1 的下一可表示数是 1+252。若 0<t<253,最近舍入下 fl(1+t)=1;当 t=253 恰处中点时,ties-to-even 仍选择 1。实数加法已经形成精确和,只是它落在 1 的舍入区间,写回 binary64 后增量不再可见。前缀累加中部分和逐渐变大时,同一个增量也可能从可见变成不可见。

对正数 x 接近最小正规数时,次正规结果仍可能非常接近精确值,但 |fl(x)x|/|x| 不再受统一的 u 控制。将正常范围的相对模型无条件延伸到零附近,会把格式边界藏进错误的定理里。

正确舍入也不等于“真实结果没有误差”。它只保证返回目标格式中按指定方向最合适的数;若精确结果不可表示,误差仍然存在,只是这一步没有更好的同格式答案。把一个值先舍入到扩展精度、再舍入到目标精度还可能出现 double rounding;证明若假定每步直接正确舍入到 binary64,就必须核对实际中间格式。

推论与应用

unit roundoff 是标准浮点算术模型的基本参数,多步误差界中的 γk 由它构造。浮点求和进一步说明相同局部舍入规则怎样随顺序和算法积累成不同总体误差。

使用舍入误差公式时应同时记录格式、舍入方向、正规/次正规范围和是否允许溢出。若实现采用融合乘加或扩展精度,中间舍入次数改变,分析路径也应相应调整,而不是事后把所有差异塞进一个模糊的“机器误差”。

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

拖动节点调整位置。

显示关系

显示:依赖

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