On May 30, 7:53 am, Chris Angelico <ros...@gmail.com> wrote:
> On Mon, May 30, 2011 at 12:17 PM, Carl Banks <pavlovevide...@gmail.com> wrote:
> > If I were designing a new floating-point standard for hardware, I would 
> > consider getting rid of NaN.  However, with the floating point standard 
> > that exists, that almost all floating point hardware mostly conforms to, 
> > there are certain bit pattern that mean NaN.
>
> > Python could refuse to construct float() objects out of NaN (I doubt it 
> > would even be a major performance penalty), but there's reasons why you 
> > wouldn't, the main one being to interface with other code that does use 
> > NaN.  It's better, then, to recognize the NaN bit patterns and do something 
> > reasonable when trying to operate on it.
>
> Okay, here's a question. The Python 'float' value - is it meant to be
> "a Python representation of an IEEE double-precision floating point
> value", or "a Python representation of a real number"? For the most
> part, Python's data types are defined by their abstract concepts - a
> list isn't defined as a linked list of pointers, it's defined as an
> ordered collection of objects. Python 3 removes the distinction
> between 'int' and 'long', where 'int' is <2**32 and 'long' isn't, so
> now a Py3 integer is... any integer.
>
> The sys.float_info struct exposes details of floating point
> representation. In theory, a Python implementation that uses bignum
> floats could quite happily set all those values to extremes and work
> with enormous precision (or could use a REXX-style "numeric digits
> 100" command to change the internal rounding, and automatically update
> sys.float_info). And in that case, there would be no NaN value.
>
> If Python is interfacing with some other code that uses NaN, that code
> won't be using Python 'float' objects - it'll be using IEEE binary
> format, probably. So all it would need to entail is a special return
> value from an IEEE Binary to Python Float converter function (maybe
> have it return None), and NaN is no longer a part of Python.
>
> The real question is: Would NaN's removal be beneficial? And if so,
> would it be worth the effort?
>
> Chris Angelico

nan in floating point is like null in databases
It may be worthwhile to have a look at what choices SQL has made
http://en.wikipedia.org/wiki/Null_%28SQL%29

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to