From: Raymond Hettinger Date: Thu, 19 Feb 2009 05:53:22 +0000 (+0000) Subject: Add an example for math.fsum() and elaborate on the accurary note. X-Git-Tag: v2.6.2c1~154 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7f48c1055ebaa36b109cba928c84c7d579bed6fd;p=thirdparty%2FPython%2Fcpython.git Add an example for math.fsum() and elaborate on the accurary note. --- diff --git a/Doc/library/math.rst b/Doc/library/math.rst index b33c597d7bde..4ecd14efd2f1 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -87,14 +87,18 @@ Number-theoretic and representation functions .. function:: fsum(iterable) Return an accurate floating point sum of values in the iterable. Avoids - loss of precision by tracking multiple intermediate partial sums. The - algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the - typical case where the rounding mode is half-even. - - .. note:: - - The accuracy of fsum() may be impaired on builds that use - extended precision addition and then double-round the results. + loss of precision by tracking multiple intermediate partial sums:: + + >>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) + 0.99999999999999989 + >>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1]) + 1.0 + + The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the + typical case where the rounding mode is half-even. On some non-Windows + builds, the underlying C library uses extended precision addition and may + occasionally double-round an intermediate sum causing it to be off in its + least significant bit. .. versionadded:: 2.6