[Python-Dev] Mixing float and Decimal -- thread reboot
Raymond Hettinger
raymond.hettinger at gmail.com
Wed Mar 24 18:39:54 CET 2010
On Mar 24, 2010, at 9:22 AM, Mark Dickinson wrote:
>
> The obvious way to do this nan interning for floats would be to put
> the interning code into PyFloat_FromDouble. I'm not sure whether this
> would be worth the cost in terms of added code (and possibly reduced
> performance, since the nan check would be done every time a float was
> returned), but I'd be willing to review a patch.
-1
Propagating support for NaNs has already consumed an
enormous amount of your time. The code for the math
module doubled in complexity as a result of adding Nan/Inf
support. At each stage, some new weirdness emerges
(such as complex(Nan, Nan), etc). And each change introduces
the risk of new bugs in code that had been stable for a long time.
IIRC, the original purpose of a NaN was to serve as a placeholder
value in a long series of floating point ops so that the programmer
would not have to introduce edge case tests at each stage
of a calculation. Yet, I look at the code for the decimal module
and the C code for the math module and see that the opposite
result occurred, the code is littered with is_special(x) tests
and handlers.
In terms of practicality, NaNs work great as a way to mark
missing values and to propagate through subsequent calculations.
IMO, their least useful feature is the property of being not equal
to themselves -- that causes more problems than it solves
because it impairs a programmer's ability to reason about
their programs.
Raymond
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20100324/4c458fef/attachment-0001.html>
More information about the Python-Dev
mailing list