From: Raymond Hettinger Date: Tue, 21 Mar 2023 01:40:04 +0000 (-0500) Subject: Remove itermediate list. Expand docstring. (GH-102862) X-Git-Tag: v3.12.0a7~120 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4075fe1d8d609edbfff11526f2b1a9a7ce817d07;p=thirdparty%2FPython%2Fcpython.git Remove itermediate list. Expand docstring. (GH-102862) --- 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.