Steven D'Aprano wrote:
On Sun, 07 Dec 2008 23:20:12 +0000, Steven D'Aprano wrote:

On Sun, 07 Dec 2008 15:32:53 -0600, Robert Kern wrote:

Rasmus Fogh wrote:

Current behaviour is both inconsistent and counterintuitive, as these
examples show.

x = float('NaN')
x == x
False
Blame IEEE for that one. Rich comparisons have nothing to do with that
one.
There is nothing to blame them for. This is the correct behaviour. NaNs
should *not* compare equal to themselves, that's mathematically
incoherent.

Sorry, I should explain why.

Given:

x = log(-5)  # a NaN
y = log(-2)  # the same NaN
x == y  # Some people want this to be true for NaNs.

Then:

# Compare x and y directly.
log(-5) == log(-2)
# If x == y then exp(x) == exp(y) for all x, y.
exp(log(-5)) == exp(log(-2))
-5 == -2


and now the entire foundations of mathematics collapses into a steaming pile of rubble.

I didn't mean to suggest that it was incorrect, just that that particular surprising behavior is not related to rich comparisons. Even if the OP gets an __equals__() or some such, NaN will still not compare equal to NaN.

--
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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to