Feature suggestion: sum() ought to use a compensated summation algorithm
Duncan Booth
duncan.booth at invalid.invalid
Mon May 5 04:37:07 EDT 2008
"Gabriel Genellina" <gagsl-py2 at yahoo.com.ar> wrote:
> En Sun, 04 May 2008 12:58:25 -0300, Duncan Booth
> <duncan.booth at invalid.invalid> escribió:
>
>> Szabolcs Horvát <szhorvat at gmail.com> wrote:
>>
>>> I thought that it would be very nice if the built-in sum() function
>>> used this algorithm by default. Has this been brought up before?
>>> Would this have any disadvantages (apart from a slight performance
>>> impact, but Python is a high-level language anyway ...)?
>>
>> There's a thread you might find interesting:
>>
>> http://groups.google.com/group/comp.lang.python/browse_thread/thread/9
>> eda29faf92f532e/027cef7d4429aa3a
>>
>> In that thread I suggested that Python ought to implement sum by
>> adding together each pair of values, then each pair of results and so
>> on. This means that for input values of a similar magnitude the
>> intermediate results stay balanced. The implementation doesn't
>> actually do all the first level
>
> Python doesn't require __add__ to be associative, so this should not
> be used as a general sum replacement. But if you know that you're
> adding floating point numbers you can use whatever algorithm best fits
> you. Or use numpy arrays; I think they implement Kahan summation or a
> similar algorithm.
>
Yes, my argument is more along the line that it should have been
implemented that way in the first place, but changing things now would
require time machine intervention. :)
More information about the Python-list
mailing list