[Python-Dev] math.areclose ...?

Scott David Daniels Scott.Daniels at Acm.Org
Sun Feb 5 19:53:30 CET 2006


Georg Brandl wrote:
> Alex Martelli wrote:
>>So I was wondering if module math (and perhaps by symmetry module cmath, 
>> too) shouldn't grow a function 'areclose' ...maybe ... 'almost_equal')
>> def areclose(x, y, rtol=1.e-5, atol=1.e-8):
>>      return abs(x-y)<atol+rtol*abs(y)
> 
> atol sounds suspicious to me, but otherwise fine.

"almost_equal", "closeto", or some variant of "near" (no nasty verb to
worry about) would do for me.  atol / rtol would be better as either
abs_tol / rel_tol or even absolute_tolerance / relative_tolerance.

As to the equation itself, wouldn't a symmetric version be somewhat
better?

     def nearby(x, y, rel_tol=1.e-5, abs_tol=1.e-8):
         return abs(x - y) < abs_tol + rel_tol * (abs(x) + abs(y))

This avoids areclose(0, 1e-8) != areclose(1e-8, 0), for example.

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-Dev mailing list