浮点相对误差范围,需要澄清

我正在阅读David Goldberg的“每个计算机科学家应该知道的关于浮点算术的论文”,并且我对其中一个不平等(2)感到困惑:

(1/2)B^-p <= (1/2)ulp <= (B/2)B^-p

我遵循左侧和右侧背后的推理,但不是中间。 据我所知,ULP基本上是你所得到的,如果你读了两个相同符号的浮点数作为两个整数并减去它们。 所以第一层混淆是这些不等式不具有相同的单位,ULP vs只是有意义的数字。 但我猜他的意思是说,如果我们把ULP翻译成一个有意义的数字,我们在最后的地方只有一个1并将其除以2。然后我想了解如何用B来表示数字。

对于有效d.dd...dd我期望1 ulp的有效位数是0.00...01 (我在这里使用Goldberg的令人困惑的数字符号...即使这些不是下标,它们是不同的)。 由于p是有效数字中的位数,我们希望将最后一位数字设置为1(或一般的B/2 ),所以我期望:

1ulp = 1.00 * B^(-p+1)

+1是因为十进制左侧的数字作为p的一部分。 如果我把它代入原来的不平等,我会得到:

(1/2)B^-p <= (1/2)B^(-p+1) <= (B/2)B^-p
(1/2)B^-p <= (1/2)B^(-p+1) <= ((B*B^(-p))/2)
(1/2)B^-p <= (1/2)B^(-p+1) <= ((B^(-p+1))/2)
(1/2)B^-p <= (1/2)B^(-p+1) = (1/2)B^(-p+1)

然后中间和右侧永远是平等的,这让我觉得我做错了什么。 有任何想法吗?

链接地址: http://www.djcxy.com/p/85625.html

上一篇: Floating point relative error bounds, clarification needed

下一篇: Why does 9.0 + 4.53 + 4.53 yield 9.05 when β = 10 and p = 3?