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

Math 浮点相对误差范围,需要澄清,math,floating-point,precision,floating-accuracy,Math,Floating Point,Precision,Floating Accuracy,我正在读David Goldberg的《每个计算机科学家都应该知道的关于浮点算术的论文》,我被其中一个不等式(2)弄糊涂了: +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)

我正在读David Goldberg的《每个计算机科学家都应该知道的关于浮点算术的论文》,我被其中一个不等式(2)弄糊涂了:

+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)

(1/2)B^-p不等式试图说明的是,正确四舍五入运算(精确到1/2 ULP)的相对误差介于(1/2)B^-p和(B/2)B^-p之间。这种表示法非常不正式。不要在这个中间的任何“ULP”中替换任何东西:1)ULP是一个函数,看到比你想看到的更多的考虑2)ULP符号通常表示绝对的错误,而不是相对的。@ PascalCuoq为什么这个符号不能工作?我可以理解为什么误差由左侧和右侧限定,我可以分别理解将ULP定义为
B^(-p+1)*B^e
,我可以分别理解为什么误差通常由(1/2)ULP限定。所以,即使正式地写下这个不等式也是有意义的,至少如果这个例子中的所有项都乘以
B^e
,但是这些项被取消了,你回到了原来的不等式,当我计算出中间和右边相等时,它的性质仍然让我觉得我遗漏了什么。
1ulp = 1.00 * B^(-p+1)
(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)