[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   
     Type:  task    |      Status:  new        
 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
 recent thread:
 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


More information about the NumPy-Tickets mailing list