[Python-ideas] Way to check for floating point "closeness"?

Chris Barker - NOAA Federal chris.barker at noaa.gov
Tue Jan 13 16:53:37 CET 2015


> On Jan 13, 2015, at 1:29 AM, Mark Dickinson <dickinsm at gmail.com> wrote:
>
>
> Comparing by ulps was what I needed for testing library-quality functions for the math and cmath modules; I doubt that it's what's needed for most comparison tasks.

That's the conclusion I was coming to. Ulps are likely to be the right
way to do it if your trying to understand/test the accuracy of an
algorithm, but not for general "did I get a close enough result". And
it would be a lot harder to understand for most of us.

As for comparing to zero -- in reading about this, it seems there
simply is no general solution -- only the user knows what they want.
So the only thing to do is a big warning in the docs about it, and
providing an absolute tolerance option.

Should that a separate function or a flag?

This is actually a harder problem for numpy, as it's an array
function, so you need to have the same function/parameters for every
value in the array, some of which may be near zero.

I haven't thought it out yet, but maybe we could specify an absolute
tolerance near zero, and a relative tolerance elsewhere, both at once.
Tricky to document, even if possible.

>   I'd expect the suggested combination of relative error and absolute error to be more appropriate most of the time.

And most of the time is what we are going for.

-Chris


More information about the Python-ideas mailing list