[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