Hacker News new | past | comments | ask | show | jobs | submit login

Not mentioned in the article but numpy.isclose() works for 0.0 case unlike math.isclose().



An explanation for the atol difference between numpy and math, by the author of math.isclose():

https://github.com/numpy/numpy/issues/10161#issuecomment-350...

plus a ton of flogging/benchmarking common libraries (numpy, scipy, scikit-learn) and discussion about np.isclose()

... and also this gem:

  import numpy as np
  
  a = 1
  b = 10
  rtol = 1
  atol = 0
  np.isclose(a, b, rtol=rtol, atol=atol)  # True
  np.isclose(b, a, rtol=rtol, atol=atol)  # False
(For the record:)

  import math
  
  math.isclose(a, b, rel_tol=rtol, abs_tol=atol)  # True
  math.isclose(b, a, rel_tol=rtol, abs_tol=atol)  # True


Could you explain what you mean the 0.0 case? math.isclose() has an abs_tol parameter for, among other things, handling comparisons to 0.


The Julia equivalent does a good job explaining the 0.0 case: https://docs.julialang.org/en/v1/base/math/#Base.isapprox


I assume “out of the box” is the distinction.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: