我试图了解什么是机器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类。有人可以帮忙修改功能吗?
numpy.float32
对于给定的float类型,获取机器epsilon的更简单方法是使用np.finfo():
np.finfo()
print(np.finfo(float).eps) # 2.22044604925e-16 print(np.finfo(np.float32).eps) # 1.19209e-07