flopscope.numpy.polyval
fnp.polyval(p, x)[flopscope source][numpy source]
Evaluate a polynomial at specific values.
Adapted from NumPy docs np.polyval
Evaluate polynomial at given points. Cost: $m \cdot \text{deg}$ (Horner's method, FMA=1).
This forms part of the old polynomial API. Since version 1.4, the new polynomial API defined in flops.polynomial is preferred. A summary of the differences can be found in the transition guide.
If p is of length N, this function returns the value:
p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]If x is a sequence, then p(x) is returned for each element of x.
If x is another polynomial then the composite polynomial p(x(t))
is returned.
Parameters
- p:array_like or poly1d object
1D array of polynomial coefficients (including coefficients equal to zero) from highest degree to the constant term, or an instance of poly1d.
- x:array_like or poly1d object
A number, an array of numbers, or an instance of poly1d, at which to evaluate
p.
Returns
- values:ndarray or poly1d
If
xis a poly1d instance, the result is the composition of the two polynomials, i.e.,xis "substituted" inpand the simplified result is returned. In addition, the type ofx- array_like or poly1d - governs the type of the output:xarray_like =>valuesarray_like,xa poly1d object =>valuesis also.
See also
- poly1d A polynomial class.
Notes
Horner's scheme [1]_ is used to evaluate the polynomial. Even so, for polynomials of high degree the values may be inaccurate due to rounding errors. Use carefully.
If x is a subtype of ndarray the return value will be of the same type.
References
1
I. N. Bronshtein, K. A. Semendyayev, and K. A. Hirsch (Eng.
trans. Ed.), Handbook of Mathematics, New York, Van Nostrand
Reinhold Co., 1985, pg. 720.Examples
>>> import flopscope.numpy as fnp
>>> flops.polyval([3,0,1], 5) # 3 * 5**2 + 0 * 5**1 + 1
76
>>> flops.polyval([3,0,1], flops.poly1d(5))
poly1d([76])
>>> flops.polyval(flops.poly1d([3,0,1]), 5)
76
>>> flops.polyval(flops.poly1d([3,0,1]), flops.poly1d(5))
poly1d([76])