簡體   English   中英

Java相當於Matlab的`eps`或Numpy / Python的`spacing`函數(浮點相對精度)

[英]Java equivalent to Matlab's `eps` or Numpy/Python's `spacing` function (floating-point relative accuracy)

背景

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語言)?

參考

你想要java.lang.math.ulp

返回參數的ulp大小。 double值的ulp是該浮點值與接下來幅度較大的double值之間的正距離。 注意,對於非NaN x, ulp(-x) == ulp(x)

此外,可用於花車 有關ULP的一些背景知識

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM