[Python-Dev] PyObject_RichCompareBool identity shortcut

Steven D'Aprano steve at pearwood.info
Thu Apr 28 02:00:55 CEST 2011


Terry Reedy wrote:
> On 4/27/2011 2:41 PM, Glenn Linderman wrote:
> 
>> One issue that I don't fully understand: I know there is only one
>> instance of None in Python, but I'm not sure where to discover whether
>> there is only a single, or whether there can be multiple, instances of
>> NaN or Inf.
> 
> I am sure there are multiple instances with just one bit pattern, the 
> same as other floats. Otherwise, float('nan') would have to either 
> randomly or systematically choose from among the possibilities. Ugh.

I think Glenn is asking whether NANs are singletons. They're not:

 >>> x = float('nan')
 >>> y = float('nan')
 >>> x is y
False
 >>> [x] == [y]
False


> There are functions in the math module that pull apart (and put 
> together) floats.
> 
>> The IEEE 754 spec is clear that there are multiple bit
>> sequences that can be used to represent these,
> 
> Anyone actually interested in those should use C or possibly the math 
> module float assembly function.

I'd like to point out that way back in the 1980s, Apple's Hypercard 
allowed users to construct, and compare, distinct NANs without needing 
to use C or check bit patterns. I think it is painful and ironic that a 
development system aimed at non-programmers released by a company 
notorious for "dumbing down" interfaces over 20 years ago had better and 
simpler support for NANs than we have now.



-- 
Steven


More information about the Python-Dev mailing list