On Thu, Mar 25, 2010 at 11:22 AM, Nick Coghlan <ncogh...@gmail.com> wrote:
> So, I'm specifically putting that proposal on the table for both float
> and Decimal NaNs in Python:
>
>  "Not a Number" is not a single floating point value. Instead each
>  instance is a distinct value representing the precise conditions that
>  created it. Thus, two "NaN" values x and y will compare equal iff they
>  are the exact same NaN object (i.e. "if isnan(x) then x == y iff
>  x is y".

I'd also suggest that the language make no guarantees about whether
two distinct calls to float('nan') or Decimal('nan') (or any other
function call returning a nan) return identical values or not, but
leave implementations free to do what's convenient or efficient.

For example, with the current decimal module:   Decimal('nan') returns
a new nan each time, but Decimal(-1).sqrt() always returns the same
nan object (assuming that InvalidOperation isn't trapped).  I think
it's fine to regard this as an implementation detail.

Python 2.6.2 (r262:71600, Aug 26 2009, 09:40:44)
[GCC 4.2.1 (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from decimal import *
>>> getcontext().traps[InvalidOperation] = 0
>>> x, y = Decimal('nan'), Decimal('nan')
>>> id(x), id(y)
(47309953516000, 47309930620880)
>>> x, y = Decimal(-1).sqrt(), Decimal(-1).sqrt()
>>> id(x), id(y)
(9922272, 9922272)

Mark
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to