Rich Comparisons Gotcha
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Mon Dec 8 00:37:32 CET 2008
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.
--
Steven
More information about the Python-list
mailing list