一尘不染

python numpy机器epsilon

python

我试图了解什么是机器epsilon。根据维基百科,可以如下计算:

def machineEpsilon(func=float):
    machine_epsilon = func(1)
    while func(1)+func(machine_epsilon) != func(1):
        machine_epsilon_last = machine_epsilon
        machine_epsilon = func(machine_epsilon) / func(2)
    return machine_epsilon_last

但是,它仅适用于双精度数字。我有兴趣修改它以支持单精度数字。我读到可以使用numpy,尤其是numpy.float32类。有人可以帮忙修改功能吗?


阅读 204

收藏
2020-12-20

共1个答案

一尘不染

对于给定的float类型,获取机器epsilon的更简单方法是使用np.finfo()

print(np.finfo(float).eps)
# 2.22044604925e-16

print(np.finfo(np.float32).eps)
# 1.19209e-07
2020-12-20