diff options
author | Raymond Hettinger <python@rcn.com> | 2009-02-19 05:48:05 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2009-02-19 05:48:05 (GMT) |
commit | f3936f875a94596d2e105838897c933fe9daeb8e (patch) | |
tree | dfd02db7b22d7e10b9c18cf8139c87d040c17616 | |
parent | cdf8ba369ba8a83bbf107f14185626797a6f4a95 (diff) | |
download | cpython-f3936f875a94596d2e105838897c933fe9daeb8e.zip cpython-f3936f875a94596d2e105838897c933fe9daeb8e.tar.gz cpython-f3936f875a94596d2e105838897c933fe9daeb8e.tar.bz2 |
Add an example for math.fsum() and elaborate on the accurary note.
-rw-r--r-- | Doc/library/math.rst | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Doc/library/math.rst b/Doc/library/math.rst index ab39424..55e03bf 100644 --- a/Doc/library/math.rst +++ b/Doc/library/math.rst @@ -80,14 +80,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. .. function:: isinf(x) |