1

我遇到了 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
4

1 回答 1

5

最初的问题

该定义意味着,给定两个连续的浮点数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+1/3 或 q+1/2。

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

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

当跨越指数变化的区间时,这将不是真的,因为 I 的斜率会发生变化。

此外,即使在指数区间内,它也仅近似于两点之间的浮点数。例如,如果只有整数可以表示,我们可能有 I(4.25) = 4.25,I(3.75) = 3.75,所以 I(4.25)-I(3.75) = .5,但有一个浮点数 (4 ) 它们之间。同时,I(3.25) = 3.25,所以 I(3.75)−I(3.25) = .5,但它们之间没有浮点数。

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

右手边是一个连续实函数,如上图所示。

更新

声明 | x - X | < ½δ ulp ( x , X ) ⇒ X = RN( x ) 似乎是一个错误,因为 | x - X | 是无单位实数距离,而 δ ulp ( x , X ) 以 ULP 为单位。也许这应该是 δ ulp ( x , X ) < ½ ⇒ X = RN( x )?它似乎是根据论文审稿人的建议添加的,可能在其他部分没有受到太多审查。为了进一步阅读,我建议Muller等人的浮点算术手册

于 2020-06-29T11:07:14.033 回答