Floating point 相对误差和摆动

Floating point 相对误差和摆动,floating-point,Floating Point,以下内容的完整上下文见的第8页。在下文中,说明“一般来说,当基准为b时,以ulps表示的固定相对误差可能会摆动高达b的系数。” 有人能详细证明这一点吗?“以ulps表示的固定相对误差可以摆动高达b的因数”到底意味着什么;如果相对误差是固定的,那么它如何摆动或改变 相对误差总是以e为界,称为机器ε 来说明两者之间的区别 ULPS和相对误差,考虑真实 数字x=12.35。它是近似的 乘=1.24 x 10^1。误差为0.5 ulps;这个 相对误差为0.8e。下一步考虑 计算 8x。精确值为8 x

以下内容的完整上下文见的第8页。在下文中,说明“一般来说,当基准为b时,以ulps表示的固定相对误差可能会摆动高达b的系数。”

有人能详细证明这一点吗?“以ulps表示的固定相对误差可以摆动高达b的因数”到底意味着什么;如果相对误差是固定的,那么它如何摆动或改变

相对误差总是以e为界,称为机器ε

来说明两者之间的区别 ULPS和相对误差,考虑真实 数字x=12.35。它是近似的 乘=1.24 x 10^1。误差为0.5 ulps;这个 相对误差为0.8e。下一步考虑 计算 8x。精确值为8 x= 98.8,而计算值为8 =9.92 x 10^1。错误现在为4.0 ulps, 但是相对的 误差仍然是0.8 e。这个 在ulps中测量的误差为8倍 更大,即使相对误差为 相同的。一般来说,当基数为b时, 固定亲属 以ulps表示的错误 可以摆动高达b的系数。相反,如式(2)所示,固定误差为 1/2 ulps会导致相对误差 可以摆动b


它与您在“一般情况下,当基准为b时,以ulps表示的固定相对误差可能会摆动高达b的因数”之前的段落中给出的引用在同一页上进行了演示

该段解释了从1.0000…0•be到d.dddd…d•be的数字,其中d是数字b-1,具有相同的ULP,因为ULP是最后一个数字的值,最后一个数字的值由b的指数决定(以及有效位中的位数,对于格式是固定的)

这些数字跨越了(几乎)b的比率,因为d.dddd…d几乎是b,所以d.dddd…d/1几乎是b。但是他们有相同的ULP。因此,一个ULP相对与该数字的比值为b

2013年10月30日,编辑: “以ulps表示的固定相对误差可以摆动高达b的因数”到底意味着什么;如果相对误差是固定的,那么它如何摆动或改变

该错误被称为固定数量的ULP。但是ULP的值不是固定的或恒定的,而是相对于浮点值而言真正固定的或恒定的

这里只是一个语言问题。将ULP称为“固定相对误差”是不准确的。然而,人们有时在ULP中表示错误界限或错误量,因为浮点的本质是量化值,而这些量子是ULP

ULP大约是一个相对误差。在浮点格式的整个范围内,它保持在相同的范围内。考虑三位十进制格式:

  • 在1.00到9.99之间的时间间隔内,ULP的绝对值为.005。其值相对于区间中的数字的范围为.005到(几乎为.0005)
  • 在1000000到9990000之间,ULP的绝对值为5000。其值相对于区间中的数字的范围为.005到(几乎为.0005)
  • 在1.00•10-100到9.99•10-100的时间间隔内,ULP的绝对值为0.005•10-100。其值相对于区间中的数字的范围为.005到(几乎为.0005)
如您所见,ULP相对于浮点数的值始终保持在一个小的间隔内。因此,它是相对误差的近似值

我们表示的浮点算术抖动中的相对误差为b因子的事实来自两个数学事实:

  • 当您使用浮点运算并计算或推导可能发生的错误的证明时,您会发现自己以ULP为单位表示错误,因为浮点格式的量化会导致边界以ULP或半ULP为单位
  • 对于浮点值x,ULP x除以x的值随x在浮点格式的单个指数间隔内的变化而变化。当指数改变时,值ULP(x)/x重置

这个网站更多的是关于编程,而不是计算机科学的精髓。你更可能得到一个关于你的可信或官方来源请求的好答案:唯一能给你更正式答案的人是大卫·戈德伯格。这个问题的数学是绝对和清晰的,所以唯一的问题是措辞和作者的想法。如果这有助于您接受我的答案,请购买IEEE 754-2008浮点标准的副本。在第六页,你会发现我的名字,连同其他委员会成员。我不明白如何解释报价,但请考虑这个想法。x和fp数y的相对误差为(x-y)/x,乘以m,其中m为2,3,…,或b-1给出mx和my的相对误差,仍然为(x-y)/x,但绝对误差变化m。即使m大于或等于b,这也是正确的。但是y和m*y肯定会在ULP不同的区域。那么,该引用是否意味着“一个固定的相对误差会导致一个以ulps表示的绝对误差,该绝对误差可能会摆动到b”?在上面,我是否允许m=b获得“摆动到b”,而不是“摆动到b-1”。那么,是否也应该允许m是实数?当你说ULP的绝对值时,你是指用FP数近似实数时的最大绝对误差,对吗?因此,当你用1.00近似1.005时,你得到(1.005-1.00)=0.005。@PrashantPandey:“ULP的绝对值”在这个答案中用于区分它与将其视为间隔中的数字的比率。@PrashantPandey:当我们将实数转换为浮点数时,转换有一些错误,因为原始实数不能用浮点形式表示