相对误差和受污染的数字



在《每个计算机科学家都应该知道的浮点运算》的第9页上,它说

当只关注舍入误差的数量级时,ulps和e可以互换使用,因为它们最多相差一个因子b。例如,当浮点数的误差为n ulps时,这意味着被污染的位数为log_b n。如果计算中的相对误差为n*e,则

受污染的数字=log_bn.

当错误为n ulps时,我可以填写详细信息以获得log_b n个受污染的数字。但是最后一句关于相对误差的细节是什么?

这只是一个近似值。ε被定义为半个ULP所能达到的最大相对误差。从第8页的定义可以看出,它的范围从1/2 ULP到β/2 ULP。尽管它变化很大,但它与ULP具有相同的数量级。

由于误差为nULP的"受污染位数"为logβn,因此当误差为nε时,其大致相同。正如文本所述,这只是一个数量级的近似值。

(Goldberg的论文在某些方面很松散,比如进行数量级近似,并将误差标记为"受污染数字的数量"。即使是一个微小的误差也可以改变任何数字的数量,就像加一会导致九(十进制)序列翻转为零一样。"受污染数字的数量"是对错误大小的描述,而不是更改数字的实际数量。)

最新更新