James Stroud wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">Rasmus Fogh wrote:
Current behaviour is both inconsistent and counterintuitive, as these
examples show.

x = float('NaN')
x == x
False

Perhaps this should raise an exception? I think the problem is not with comparisons in general but with the fact that nan is type float:

py> type(float('NaN'))
<type 'float'>

No float can be equal to nan, but nan is a float. How can something be not a number and a float at the same time? The illogicality of nan's type creates the possibility for the illogical results of comparisons to nan including comparing nan to itself.



I initially thought that looked like a bug to me. But, this is apparently standard behavior required for "NaN". I'm only using Wikipedia as a reference here, but about 80% of the way down, under "standard operations":
http://en.wikipedia.org/wiki/IEEE_754-1985

"Comparison operations. NaN is treated specially in that NaN=NaN always returns false."

Presumably since floating point calculations return "NaN" for some operations, and one "Nan" is usually not equal to another, this is the required behavior. So not a Python issue (though understandably a bit confusing).

The array issue seems to be with one 3rd party library, and one can choose to use or not use their library, to ask them to change it, or even to decide to override their == operator, if one doesn't like the way it is designed.

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

Reply via email to