[Python-checkins] Remove itermediate list. Expand docstring. (GH-102862)

rhettinger webhook-mailer at python.org
Mon Mar 20 21:40:11 EDT 2023


https://github.com/python/cpython/commit/4075fe1d8d609edbfff11526f2b1a9a7ce817d07
commit: 4075fe1d8d609edbfff11526f2b1a9a7ce817d07
branch: main
author: Raymond Hettinger <rhettinger at users.noreply.github.com>
committer: rhettinger <rhettinger at users.noreply.github.com>
date: 2023-03-20T20:40:04-05:00
summary:

Remove itermediate list. Expand docstring. (GH-102862)

files:
M Doc/library/itertools.rst

diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 9364f72ca456..2427a8d85f84 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -867,13 +867,17 @@ which incur interpreter overhead.
            yield math.sumprod(kernel, window)
 
    def polynomial_eval(coefficients, x):
-       "Evaluate a polynomial at a specific value."
-       # polynomial_eval([1, -4, -17, 60], x=2.5) --> 8.125  x³ -4x² -17x + 60
+       """Evaluate a polynomial at a specific value.
+
+       Computes with better numeric stability than Horner's method.
+       """
+       # Evaluate x³ -4x² -17x + 60 at x = 2.5
+       # polynomial_eval([1, -4, -17, 60], x=2.5) --> 8.125
        n = len(coefficients)
        if n == 0:
            return x * 0  # coerce zero to the type of x
-       powers = list(accumulate(repeat(x, n - 1), operator.mul, initial=1))
-       return math.sumprod(coefficients, reversed(powers))
+       powers = accumulate(repeat(x, n - 1), operator.mul, initial=1)
+       return math.sumprod(reversed(coefficients), powers)
 
    def polynomial_from_roots(roots):
        """Compute a polynomial's coefficients from its roots.



More information about the Python-checkins mailing list