On Mon, Nov 9, 2009 at 06:01, Mark Dickinson <dicki...@gmail.com> wrote: > Well, when running in some form of 'non-stop' mode, where (quiet) NaN > results are supposed to be propagated to the end of a computation, you > certainly want equality comparisons with nan just to silently return false. > E.g., in code like: > > if x == 0: > <deal with zero special case> > else: > <usual algorithm> > > nans should just end up in the second branch, without the programmer > having had to think about it too hard.
if x != 0: <usual algorithm> else: <deal with zero special case> nans should just end up in the first branch, without the programmer having had to think about it too hard. There is a more consistent alternative: have all comparisons involving NaN also return NaN, signifying they're unordered. Let bool coercion raise the exception. Thus, both examples would raise an exception, but a programmer who wants to handle NaN could do so explicitly: temp = x == 0 if temp.isnan() or temp: <usual algorithm> else: <deal with zero special case> IEEE 754 is intended for a very different context. I don't think it makes sense to attempt literal conformance to it. -- Adam Olsen, aka Rhamphoryncus _______________________________________________ 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