Time for action – comparing with assert_array_almost_equal_nulp
Let's see the assert_array_almost_equal_nulp() function in action:
- Determine the machine epsilon with the
finfo()function:eps = np.finfo(float).eps print("EPS", eps)The epsilon would be as follows:
EPS 2.22044604925e-16 - Compare
1.0with1 + epsilonusing theassert_almost_equal_nulp()function. Do the same for1 + 2 * epsilon:print("1", np.testing.assert_array_almost_equal_nulp(1.0, 1.0 + eps)) print("2", np.testing.assert_array_almost_equal_nulp(1.0, 1.0 + 2 * eps))The result is as follows:
1 None 2 Traceback (most recent call last): … assert_array_almost_equal_nulp raise AssertionError(msg) AssertionError: X and Y are not equal to 1 ULP (max is 2)
What just happened?
We determined the machine epsilon with the finfo() function. We then compared 1.0 with 1 + epsilon with the assert_almost_equal_nulp() function. This test passed however, adding another epsilon resulted in...