python nan != nan

math, nan, python

Solution

For the "where" part of your questions, look starting at line 391 in Objects/floatobject.c in the Python 2.7.3 source tree. A brief discussion is given about the behavior of NaN == NaN with the implementation following.

With respect to other cases that exhibit similar behavior, it is certainly possible. I have not done an exhaustive search of the libraries however, so I can't give a definitive answer.

Problem

``` Python 2.7.3 (default, Aug 1 2012, 05:14:39) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> x = float('nan') >>> id(x) == id(x) True >>> x == x False ``` I'm interested in how `nan != nan` in python. And just to clarify, I know `nan` is supposed to behave like that by definition, I'm asking about how not about why. Where is that implemented? Is there any other object which behaves like that?

Original source