python numpy machine epsilon

后端 未结 3 1119
鱼传尺愫
鱼传尺愫 2020-11-28 03:27

I am trying to understand what is machine epsilon. According to the Wikipedia, it can be calculated as follows:

def machineEpsilon(func=float):
    machine_e         


        
相关标签:
3条回答
  • 2020-11-28 04:08

    It will already work, as David pointed out!

    >>> 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
    ... 
    >>> machineEpsilon(float)
    2.220446049250313e-16
    >>> import numpy
    >>> machineEpsilon(numpy.float64)
    2.2204460492503131e-16
    >>> machineEpsilon(numpy.float32)
    1.1920929e-07
    
    0 讨论(0)
  • 2020-11-28 04:11

    An easier way to get the machine epsilon for a given float type is to use np.finfo():

    print(np.finfo(float).eps)
    # 2.22044604925e-16
    
    print(np.finfo(np.float32).eps)
    # 1.19209e-07
    
    0 讨论(0)
  • 2020-11-28 04:28

    Another easy way to get epsilon is:

    In [1]: 7./3 - 4./3 -1
    Out[1]: 2.220446049250313e-16
    
    0 讨论(0)
提交回复
热议问题