[Python-Dev] == on object tests identity in 3.x
MRAB
python at mrabarnett.plus.com
Tue Jul 8 19:33:31 CEST 2014
More information about the Python-Dev mailing list
Tue Jul 8 19:33:31 CEST 2014
- Previous message: [Python-Dev] == on object tests identity in 3.x
- Next message: [Python-Dev] == on object tests identity in 3.x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2014-07-08 17:57, Steven D'Aprano wrote: [snip] > > In particular, reflexivity for NANs was dropped for a number of reasons, > some stronger than others: > > - One of the weaker reasons for NAN non-reflexivity is that it preserved > the identity x == y <=> x - y == 0. Although that is the cornerstone > of real arithmetic, it's violated by IEEE-754 INFs, so violating it > for NANs is not a big deal either. > > - Dropping reflexivity preserves the useful property that NANs compare > unequal to everything. > > - Practicality beats purity: dropping reflexivity allowed programmers > to identify NANs without waiting years or decades for programming > languages to implement isnan() functions. E.g. before Python had > math.isnan(), I made my own: > > def isnan(x): > return isinstance(x, float) and x != x > > - Keeping reflexivity for NANs would have implied some pretty nasty > things, e.g. if log(-3) == log(-5), then -3 == -5. > The log of a negative number is a complex number. > > Basically, and I realise that many people disagree with their decision > (notably Bertrand Meyer of Eiffel fame, and our own Mark Dickenson), the > IEEE-754 committee led by William Kahan decided that the problems caused > by having NANs compare unequal to themselves were much less than the > problems that would have been caused without it. >
- Previous message: [Python-Dev] == on object tests identity in 3.x
- Next message: [Python-Dev] == on object tests identity in 3.x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list