On 2011-05-29, Nobody <nob...@nowhere.com> wrote: > On Sun, 29 May 2011 10:29:28 +0000, Steven D'Aprano wrote: > >>> The correct answer to "nan == nan" is to raise an exception, because >>> you have asked a question for which the answer is nether True nor >>> False. >> >> Wrong. > > That's overstating it. There's a good argument to be made for raising > an exception. Bear in mind that an exception is not necessarily an > error, just an "exceptional" condition. > >> The correct answer to "nan == nan" is False, they are not equal. > > There is no correct answer to "nan == nan".
For those of us who have to deal with the real world (that means complying with IEEE-754), there _is_ a correct answer. IIRC, the IEEE standard requires nan == nan is false, and nan != nan is true. That said, I don't remember what the other comparisons are supposed to do... > Defining it to be false is just the "least wrong" answer. > > Arguably, "nan != nan" should also be false, but that would violate > the invariant "(x != y) == !(x == y)". And it would violate the IEEE standard. IEEE-754 has it's warts, but we're far better off than we were with dozens of incompatible, undocumented, vendor-specific schemes (most of which had more warts than IEEE-754). -- Grant Edwards grant.b.edwards Yow! I'm dressing up in at an ill-fitting IVY-LEAGUE gmail.com SUIT!! Too late... -- http://mail.python.org/mailman/listinfo/python-list