我正在编写一个C程序,用于测试单精度浮点数的运算。特别是,我想知道绝对舍入误差是否与x(二进制32正常范围内的数字)相关联:
|回合(x)-x | <机器ε* 2 ^ E
对于次正规数也适用。我的结论是,是的,但是我找不到任何辅助消息来源来确认我是对的。
我的结论正确吗?
答案 0 :(得分:0)
对于次正规结果,将实数四舍五入到最接近的可表示IEEE-754二进制浮点数的最大潜在绝对误差与在最小标准binade中产生的最大潜在绝对误差相同。
也就是说,最小法向binade和次正规数在浮点表示中均具有相同的指数,因此其有效位的最低有效位具有相同的位置值。 (此处指的“相同指数”是数学指数,基本32位格式为-126,基本64位格式为-1022。它不是指数的编码,对于最小法线为1 binade和0(表示次法线)。最低有效位的位置值确定最大可能的误差。由于次标准值与最小二合一中的值相同,因此它们具有相同的潜在误差。
如果 E 是格式或下限(log 2 (| x |))的最小指数中的较大者,则 x 为实数round( x )是将 x 转换为浮点格式的结果,并且是机器epsilon(精度最低的单位为1),然后:
| round( x )− x | <2 E
用于任何舍入模式,并且:
| round( x )− x | ≤½2 E
用于任何从最近到最近的模式(例如从最近到最近的关系到偶数)。
对于有向舍入模式,例如round-toward-negative-infinity,误差满足以下任一条件:
0≤round( x )− x <2 E
或:
− 2 E
x )− x ≤0,
当然取决于方向。 (对所有实数,从零到零都不能满足上述两个关系,但是根据 x 的符号,当然可以满足其中至少一个。)