On Thu, Oct 4, 2012 at 9:53 AM, Steven D'Aprano firstname.lastname@example.org wrote:
(Please do not start an argument about NANs and reflexivity. That's been argued to death, and there are very good reasons for the IEEE 754 standard to define NANs the way they do.)
Why not? This is python-ideas, isn't it? I've been hearing that IEEE 754 committee had some "very good reasons" to violate reflexivity of equality comparison with NaNs since I first learned about NaNs some 20 years ago. From time to time, I've also heard claims that there are some important numeric algorithms that depend on this behavior. However, I've never been able to dig out the actual rationale that convinced the committee that voted for IEEE 754 or any very good reasons to preserve this behavior in Python.
I am not suggesting any language changes, but I think it will be useful to explain why float('nan') != float('nan') somewhere in the docs. A reference to IEEE 754 does not help much. Java implements IEEE 754 to some extent, but preserves reflexivity of object equality.