[Python-ideas] PEP 485: A Function for testing approximate equality

Chris Barker - NOAA Federal chris.barker at noaa.gov
Fri Feb 6 16:51:41 CET 2015


> On Feb 6, 2015, at 4:29 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>
>
> Ok, more simply then: does is_close_to(0.0, 0.0) return True?

Yes.

But isclose(0.0, something_greater_than_zero)

Will not.

Chris


>
>
>
> On Thu, 5 Feb 2015 16:24:21 -0800
> Chris Barker <chris.barker at noaa.gov> wrote:
>> On Thu, Feb 5, 2015 at 3:04 PM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>>
>>
>>> I think it is a nuisance that this PEP doesn't work at zero by default.
>>
>> I think this is the biggest point of contention -- it' s a hard problem.
>>
>> If this is meant to ease the life of non-specialist users then it
>>> should do the right thing out of the box, IMO.
>>
>> That's the trick -- there simply IS NO "right thing" to be done out of the
>> box. A relative comparison to zero is mathematically and computationally
>> impossible -- you need an absolute comparison. And to set a default for
>> that you need to know the general magnitude of the values your user is
>> going to have -- and we can't know that.
>>
>> If we really believe that almost all people will be working with numbers of
>> around a magnitude of 1, then we could set a default -- by why in the world
>> are you using floating point numbers with a range of about 1e-300 to 1e300
>> in that case?
>>
>> NOTE: numpy.allclose() uses an absolute tolerance default of 1e-08 -- so
>> someone thought that was a good idea. But as I've been thinking about all
>> this, I decided it was very dangerous. In fact, I just did a quick grep of
>> the unit tests in my current code base: 159 uses of allclose, and almost
>> none with an absolute tolerance specified -- now I need to go and check
>> those, most of them probably need a more carefully thought out value.
>>
>> I'm (and my team) are just one careless programmer, I guess, but I don't
>> think I'm the only one that tends to use defaults, and only go back and
>> think about if a test fails. And as you say, the "non-specialist users" are
>> the most likely to be careless.
>>
>> -Chris
>
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/


More information about the Python-ideas mailing list