6

バックグラウンド

Matlab の組み込みeps関数 [1] は、数値を取り、「同じ精度の浮動小数点数が次に大きい数値Xまでの正の距離」を返すことができます。abs(X)

>> eps(1)
ans =
   2.2204e-16
>> eps(single(1))
ans =
   1.1921e-07
>> eps(1e6)
ans =
   1.1642e-10
>> eps(single(1e6))
ans =
       0.0625

同様に、Numpy はspacing関数 [2]を提供します。

In [18]: import numpy as np

In [19]: np.spacing(1)
Out[19]: 2.2204460492503131e-16

In [20]: np.spacing(np.single(1))
Out[20]: 1.1920929e-07

In [21]: np.spacing(1e6)
Out[21]: 1.1641532182693481e-10

In [22]: np.spacing(np.single(1e6))
Out[22]: 0.0625

質問

Java (および Clojure のような JVM 言語) に同等の関数はありますか?

参考文献

4

1 に答える 1

3

java.lang.math.ulpが必要です:

引数の ulp のサイズを返します。値の ulp は、doubleこの浮動小数点値と double次に大きさが大きい値との間の正の距離です。非 NaN x の場合、 ulp(-x) == ulp(x)

また、フロートにも使用できます。ULPの背景

于 2013-06-12T15:55:51.017 に答える