使用 Numba 的机器 epsilon

Machine epsilon with Numba

我正在尝试使用 Numba.In 我的代码来加速我的代码,我必须使用 numpy.finfo(float).eps 中声明的机器 epsilon,根据文档,它等于 2**-52。我的问题如下:

Numba 中有什么东西可以代替机器 eps 吗?

如果不是,将其声明为常量有什么缺点吗?

您可以在 Numba njit 函数中使用 np.finfo(np.float64).eps。这适用于 Numba 0.54.1。见以下代码:

@nb.njit('float64()')
def test():
    return np.finfo(np.float64).eps
test() # Returns 2.220446049250313e-16

声明一个常量也可以。在这两种情况下,Numba 都会生成一个很好的汇编代码,直接 return(预先计算的)常量。