132

マシンイプシロンとは何かを理解しようとしています。ウィキペディアによると、次のように計算できます。

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.float32numpy、特にクラスを使用できることを読みました。関数の変更を手伝ってくれる人はいますか?

4

3 に答える 3

237

特定の float 型のマシン イプシロンを取得する簡単な方法は、次を使用することnp.finfo()です。

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

print(np.finfo(np.float32).eps)
# 1.19209e-07
于 2013-10-02T16:16:28.253 に答える
107

イプシロンを取得する別の簡単な方法は次のとおりです。

In [1]: 7./3 - 4./3 -1
Out[1]: 2.220446049250313e-16
于 2014-08-06T08:24:54.407 に答える