1. ホーム
  2. python

[解決済み] python numpy マシーンイプシロン

2022-02-09 22:28:21

質問内容

マシンイプシロンとは何なのか、理解しようとしています。Wikipediaによると、以下のように計算できるようです。

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 クラスがあります。どなたか、この関数を修正する手助けをしていただけませんか?

解決方法は?

与えられた浮動小数点型に対するマシンイプシロンを得るより簡単な方法は、以下の通りです。 np.finfo() :

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

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