[Numpy-discussion] atol in allclose
Robert Kern
robert.kern at gmail.com
Tue Nov 28 20:44:49 EST 2006
Matthew Brett wrote:
> Hi,
>
> Sorry to keep cluttering the list, but I was a bit surprised by this
> behavior of allclose:
>
> In [25]:allclose([1.0], [1.0], rtol=0)
> Out[25]:True
>
> In [26]:allclose([1.0], [1.0], rtol=0, atol=0)
> Out[26]:False
>
> The docstring seems to imply that atol will not be used in this
> comparison - or did I misunderstand?
The docstring is a somewhat loose interpretation of the actual implementation.
You've exposed a corner case. The long and the short of it is this:
d = less(absolute(x-y), atol + rtol * absolute(y))
rtol was never intended to be less than the epsilon of your chosen floating
point type much less 0. That's what == is for.
That said, less() should probably be less_equal(), and the docstring can be
clearly describe what is going on.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the NumPy-Discussion
mailing list