マシンイプシロンとは何かを理解しようとしています。ウィキペディアによると、次のように計算できます。
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
関数に引数としてa を渡すだけです!