# [NumPy-Tickets] [NumPy] #1855: Numerical-stable sum (similar to math.fsum)

NumPy Trac numpy-tickets@scipy....
Thu Jun 2 14:00:21 CDT 2011

```#1855: Numerical-stable sum (similar to math.fsum)
--------------------+-------------------------------------------------------
Reporter:  ling    |       Owner:  somebody
Priority:  normal  |   Milestone:  Unscheduled
Component:  Other   |     Version:  1.6.0
Keywords:          |
--------------------+-------------------------------------------------------
For some applications, having a numerical-stable sum is critical.  What I
mean can be well illustrated in the examples below:

>>> math.fsum([1, 1e-10] * 1000), numpy.sum([1, 1e-10] * 1000)
(1000.0000001, 1000.0000001000171)
>>> math.fsum([1, 1e100, 1, -1e100] * 10000), numpy.sum([1, 1e100, 1,
-1e100] * 10000)
(20000.0, 0.0)

Here math.fsum is a numerical stable sum introduced in Python 2.6, which
uses the Shewchuk algorithm (seems to be described in
http://code.activestate.com/recipes/393090/).

Other complaints about the plain vanilla numpy.sum could be found in a
http://article.gmane.org/gmane.comp.python.numeric.general/42756.

I hope numpy.sum can also implement something similar (e.g., Shewchuk
algorithm or Kahan summation algorithm or partial sum).  We could add an
optional argument "stable=True/False" to numpy.sum and let the user
decides whether they want a more accuracy (but potentially slower)
version.

--
Ticket URL: <http://projects.scipy.org/numpy/ticket/1855>
NumPy <http://projects.scipy.org/numpy>
My example project
```