Rich Comparisons Gotcha

George Sakkis george.sakkis at gmail.com
Sun Dec 7 19:24:58 EST 2008


On Dec 7, 6:37 pm, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> 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.

And why doesn't this happen with the current behavior if x = y = log
(-5) ? According to the same proof,  -5 != -5.

George



More information about the Python-list mailing list