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

Chris Barker chris.barker at noaa.gov
Fri Feb 6 01:24:21 CET 2015


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




-- 

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150205/f624b54e/attachment.html>


More information about the Python-ideas mailing list