Floating point Goldberg纸的ULPs计算
我一直在读这篇论文,每个计算机科学家都应该知道浮点运算 我看过各种各样的ULP计算,我觉得我非常理解它,直到减法的讨论出现Floating point Goldberg纸的ULPs计算,floating-point,Floating Point,我一直在读这篇论文,每个计算机科学家都应该知道浮点运算 我看过各种各样的ULP计算,我觉得我非常理解它,直到减法的讨论出现 Take another example: 10.1 - 9.93. This becomes x = 1.01 × 10^1 y = 0.99 × 10^1 x - y = .02 × 10^1 The correct answer is .17, so the computed difference is off by 30 ulps and is wro
Take another example: 10.1 - 9.93. This
becomes
x = 1.01 × 10^1
y = 0.99 × 10^1
x - y = .02 × 10^1
The correct answer is .17, so the computed difference is off by 30 ulps
and is wrong in every digit!
为什么这是30ulps而不是0.3?因为ulp肯定是0.01x10^1,或者换句话说是0.1。错误为0.03,即0.3 ulps。正确的答案写在评论中,但我会将其作为答案写下来,这样它就不会隐藏在评论噪音中 基本上,
x-y=.02×10^1
被标准化为2.00×10^-1
,这意味着ULP现在是这个标准化表示中的最小值:0.01×10^-1
因此,错误是
0.03 / [(0.01 × 10^-1)/ULP] = 30 ULP
误差为0.03,即30*0.001(其中0.001是p=3时的ULP,值为0.2)。因此,可以确定的是,ULP的值是否始终取决于可用于表示浮点数的最低可能指数,即使计算到该点的数字具有更高的指数?基本上,是的。请记住,大多数浮点系统坚持每个值的规范化/规范化表示。@OliCharlesworth ULP不是“when”。它是一个参数的函数。这里的ULP是0.001,好吗?@Gangnus:ULP的绝对值是有效位数的函数,当然是表示的数字的绝对值?