关于ulp(x)的定义(最后一位的单位)

LRD*_*RDX 1 floating-point precision numerical-methods

我遇到过以下 Ulp 定义(来自本文1 ,定义5):

在此输入图像描述

尽管有一些不清楚的地方(定义中的线性这个词是否意味着两个 FP(浮点)数字之间这个函数是线性的——不是一个常数),据我了解,两个实数之间的ulp 距离与之间的 FP 数量成正比这些数字。然而,从该定义的下一个用法(在那篇文章中)来看,它毫无意义:

在此输入图像描述

这里x是实数,X是FP数,RN( x )表示x四舍五入到最接近的FP数。上述不等式两边的量具有不同的性质:LHS 是实数(可以任意小),RHS 是离散的(xX之间的 FP 数的数量)。

更新

假设精度为0.1。FP 为 0, 0.1, 0.2, ... 取x =0.06 且X =0.3。那么I(x) =0.6, I(X) =3 我们有 | xx | = 0.24,ulp 距离为 2.4,因此满足不等式,但x舍入到最接近的 FP 的结论并不成立。

我错过了什么吗?


  1. 关于 ulp(x) 的定义,Jean-Michel Muller

Eri*_*hil 5

初始问题

\n

该定义意味着,给定两个连续的浮点数XY,其中 I( X ) 为q,I(Y) 为q +1,则对于XY之间的任何实数z,I( z ) = q + ( z - X )/( Y - X )。也就是说,当zXY时,I( z ) 从qq +1,并且呈线性变化:I( z )-I( X ) 与z - X成正比。例如,如果z位于从XY的三分之一或二分之一处,则 I( z ) 为 q+\xe2\x85\x93 或 q+\xc2\xbd。

\n

这意味着 I 是分段线性的:在浮点数指数不变的任何区间内,I 是线性的。但它改变了浮点数移动到新指数的位置。

\n
\n

\xe2\x80\xa6 据我了解,两个实数之间的 ulp 距离与这些数字之间的 FP 数量成正比。

\n
\n

当跨越指数变化的区间时,情况并非如此,因为 I 的斜率会变化。

\n

此外,即使在指数区间内,它也只能近似两点之间的浮点数的数量。例如,如果只能表示整数,则可能有 I(4.25) = 4.25、I(3.75) = 3.75,因此 I(4.25)\xe2\x88\x92I(3.75) = .5,但有一个浮点 -它们之间的点编号为 (4)。同时,I(3.25) = 3.25,所以 I(3.75)\xe2\x88\x92I(3.25) = .5,但它们之间没有浮点数。

\n
\n

上述不等式两边的量具有不同的性质:LHS 是实数(可以任意小),RHS 是离散的(xX之间的 FP 数的数量)。

\n
\n

右侧是连续实函数,如上所示。

\n

更新

\n

声明| x \xe2\x88\x92 X | < \xc2\xbd\xce\xb4 ulp ( x , X ) \xe2\x87\x92 X = RN( x ) 似乎是一个错误,因为 | x \xe2\x88\x92 X | 是无单位实数距离,而 \xce\xb4 ulp ( x , X ) 以 ULP 为单位。也许这应该是 \xce\xb4 ulp ( x , X ) < \xc2\xbd \xe2\x87\x92 X = RN( x )?它似乎是根据论文审稿人的建议添加的,并且在其他部分可能没有受到那么多的审查。如需进一步阅读,我推荐Muller等人编写的《浮点运算手册》

\n