IEEE binary32(单精度)次正规数的绝对舍入误差

Absolute Rounding Error for IEEE binary32 (single precision) subnormal numbers

我正在编写一个 C 程序来测试对单精度浮点数的操作。特别是,我想知道与 x(binary32 正常范围内的数字)相关的绝对舍入误差是否:

|圆(x) - x| < 机器 epsilon * 2^E

对于次正规数也是如此。我得出的结论是,是的,但我找不到任何二手资料来证实我是对的。

我的结论正确吗?

对于次正规结果,将实数四舍五入为最接近的可表示 IEEE-754 二进制浮点数的最大潜在绝对误差与最小正规二进制结果的最大潜在绝对误差相同。

也就是说,最小正规二进制数和次正规数在浮点表示中具有相同的指数,因此它们的尾数的最低有效位具有相同的位置值。 (这里所说的“同指数”是数学指数,基本32位格式为-126,基本64位格式为-1022,不是指数的编码,最小法线为1 binade 和 0 表示次正规。)最低有效位的位置值决定了最大可能的错误。由于次正规值与最小二进制值中的值相同,因此它们具有相同的潜在误差。

如果 E 是格式或 floor(log2(|x|)) 的最小指数中的较大者,x为实数,round(x)为x转浮点数的结果格式,并且是机器 epsilon(1 的最小精度单位)然后:

|round(x)−x| < 2E

对于任何舍入模式,并且:

|round(x)−x| ≤ ½ 2E

对于任何舍入到最近的模式(例如舍入到最近的关系到偶数)。

对于定向舍入模式,例如向负无穷大舍入,误差满足:

0 ≤ round(x)−x < 2E

或:

− 2E < round(x)−x ≤ 0,

当然要看方向。 (向零舍入对所有实数都不满足上述两种关系,但根据x的符号,当然至少满足其中一种。)