[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