"""
A sub-package for efficiently dealing with polynomials.
Within the documentation for this sub-package, a "finite power series,"
i.e., a polynomial (also referred to simply as a "series") is represented
by a 1-D numpy array of the polynomial's coefficients, ordered from lowest
order term to highest. For example, array([1,2,3]) represents
``P_0 + 2*P_1 + 3*P_2``, where P_n is the n-th order basis polynomial
applicable to the specific module in question, e.g., `polynomial` (which
"wraps" the "standard" basis) or `chebyshev`. For optimal performance,
all operations on polynomials, including evaluation at an argument, are
implemented as operations on the coefficients. Additional (module-specific)
information can be found in the docstring for the module of interest.
"""
import warnings
from polynomial import Polynomial
from chebyshev import Chebyshev
from legendre import Legendre
from hermite import Hermite
from hermite_e import HermiteE
from laguerre import Laguerre
# Deprecate direct import of functions from this package
# version 1.6.0
from numpy.lib import deprecate
# polynomial functions
@deprecate(message='Please import polyline from numpy.polynomial.polynomial')
def polyline(off, scl) :
from numpy.polynomial.polynomial import polyline
return polyline(off, scl)
@deprecate(message='Please import polyfromroots from numpy.polynomial.polynomial')
def polyfromroots(roots) :
from numpy.polynomial.polynomial import polyfromroots
return polyfromroots(roots)
@deprecate(message='Please import polyadd from numpy.polynomial.polynomial')
def polyadd(c1, c2):
from numpy.polynomial.polynomial import polyadd
return polyadd(c1, c2)
@deprecate(message='Please import polysub from numpy.polynomial.polynomial')
def polysub(c1, c2):
from numpy.polynomial.polynomial import polysub
return polysub(c1, c2)
@deprecate(message='Please import polymulx from numpy.polynomial.polynomial')
def polymulx(cs):
from numpy.polynomial.polynomial import polymulx
return polymulx(cs)
@deprecate(message='Please import polymul from numpy.polynomial.polynomial')
def polymul(c1, c2):
from numpy.polynomial.polynomial import polymul
return polymul(c1, c2)
@deprecate(message='Please import polydiv from numpy.polynomial.polynomial')
def polydiv(c1, c2):
from numpy.polynomial.polynomial import polydiv
return polydiv(c1, c2)
@deprecate(message='Please import polypow from numpy.polynomial.polynomial')
def polypow(cs, pow, maxpower=None) :
from numpy.polynomial.polynomial import polypow
return polypow(cs, pow, maxpower)
@deprecate(message='Please import polyder from numpy.polynomial.polynomial')
def polyder(cs, m=1, scl=1):
from numpy.polynomial.polynomial import polyder
return polyder(cs, m, scl)
@deprecate(message='Please import polyint from numpy.polynomial.polynomial')
def polyint(cs, m=1, k=[], lbnd=0, scl=1):
from numpy.polynomial.polynomial import polyint
return polyint(cs, m, k, lbnd, scl)
@deprecate(message='Please import polyval from numpy.polynomial.polynomial')
def polyval(x, cs):
from numpy.polynomial.polynomial import polyval
return polyval(x, cs)
@deprecate(message='Please import polyvander from numpy.polynomial.polynomial')
def polyvander(x, deg) :
from numpy.polynomial.polynomial import polyvander
return polyvander(x, deg)
@deprecate(message='Please import polyfit from numpy.polynomial.polynomial')
def polyfit(x, y, deg, rcond=None, full=False, w=None):
from numpy.polynomial.polynomial import polyfit
return polyfit(x, y, deg, rcond, full, w)
@deprecate(message='Please import polyroots from numpy.polynomial.polynomial')
def polyroots(cs):
from numpy.polynomial.polynomial import polyroots
return polyroots(cs)
# chebyshev functions
@deprecate(message='Please import poly2cheb from numpy.polynomial.chebyshev')
def poly2cheb(pol) :
from numpy.polynomial.chebyshev import poly2cheb
return poly2cheb(pol)
@deprecate(message='Please import cheb2poly from numpy.polynomial.chebyshev')
def cheb2poly(cs) :
from numpy.polynomial.chebyshev import cheb2poly
return cheb2poly(cs)
@deprecate(message='Please import chebline from numpy.polynomial.chebyshev')
def chebline(off, scl) :
from numpy.polynomial.chebyshev import chebline
return chebline(off, scl)
@deprecate(message='Please import chebfromroots from numpy.polynomial.chebyshev')
def chebfromroots(roots) :
from numpy.polynomial.chebyshev import chebfromroots
return chebfromroots(roots)
@deprecate(message='Please import chebadd from numpy.polynomial.chebyshev')
def chebadd(c1, c2):
from numpy.polynomial.chebyshev import chebadd
return chebadd(c1, c2)
@deprecate(message='Please import chebsub from numpy.polynomial.chebyshev')
def chebsub(c1, c2):
from numpy.polynomial.chebyshev import chebsub
return chebsub(c1, c2)
@deprecate(message='Please import chebmulx from numpy.polynomial.chebyshev')
def chebmulx(cs):
from numpy.polynomial.chebyshev import chebmulx
return chebmulx(cs)
@deprecate(message='Please import chebmul from numpy.polynomial.chebyshev')
def chebmul(c1, c2):
from numpy.polynomial.chebyshev import chebmul
return chebmul(c1, c2)
@deprecate(message='Please import chebdiv from numpy.polynomial.chebyshev')
def chebdiv(c1, c2):
from numpy.polynomial.chebyshev import chebdiv
return chebdiv(c1, c2)
@deprecate(message='Please import chebpow from numpy.polynomial.chebyshev')
def chebpow(cs, pow, maxpower=16) :
from numpy.polynomial.chebyshev import chebpow
return chebpow(cs, pow, maxpower)
@deprecate(message='Please import chebder from numpy.polynomial.chebyshev')
def chebder(cs, m=1, scl=1) :
from numpy.polynomial.chebyshev import chebder
return chebder(cs, m, scl)
@deprecate(message='Please import chebint from numpy.polynomial.chebyshev')
def chebint(cs, m=1, k=[], lbnd=0, scl=1):
from numpy.polynomial.chebyshev import chebint
return chebint(cs, m, k, lbnd, scl)
@deprecate(message='Please import chebval from numpy.polynomial.chebyshev')
def chebval(x, cs):
from numpy.polynomial.chebyshev import chebval
return chebval(x, cs)
@deprecate(message='Please import chebvander from numpy.polynomial.chebyshev')
def chebvander(x, deg) :
from numpy.polynomial.chebyshev import chebvander
return chebvander(x, deg)
@deprecate(message='Please import chebfit from numpy.polynomial.chebyshev')
def chebfit(x, y, deg, rcond=None, full=False, w=None):
from numpy.polynomial.chebyshev import chebfit
return chebfit(x, y, deg, rcond, full, w)
@deprecate(message='Please import chebroots from numpy.polynomial.chebyshev')
def chebroots(cs):
from numpy.polynomial.chebyshev import chebroots
return chebroots(cs)
@deprecate(message='Please import chebpts1 from numpy.polynomial.chebyshev')
def chebpts1(npts):
from numpy.polynomial.chebyshev import chebpts1
return chebpts1(npts)
@deprecate(message='Please import chebpts2 from numpy.polynomial.chebyshev')
def chebpts2(npts):
from numpy.polynomial.chebyshev import chebpts2
return chebpts2(npts)
# legendre functions
@deprecate(message='Please import poly2leg from numpy.polynomial.legendre')
def poly2leg(pol) :
from numpy.polynomial.legendre import poly2leg
return poly2leg(pol)
@deprecate(message='Please import leg2poly from numpy.polynomial.legendre')
def leg2poly(cs) :
from numpy.polynomial.legendre import leg2poly
return leg2poly(cs)
@deprecate(message='Please import legline from numpy.polynomial.legendre')
def legline(off, scl) :
from numpy.polynomial.legendre import legline
return legline(off, scl)
@deprecate(message='Please import legfromroots from numpy.polynomial.legendre')
def legfromroots(roots) :
from numpy.polynomial.legendre import legfromroots
return legfromroots(roots)
@deprecate(message='Please import legadd from numpy.polynomial.legendre')
def legadd(c1, c2):
from numpy.polynomial.legendre import legadd
return legadd(c1, c2)
@deprecate(message='Please import legsub from numpy.polynomial.legendre')
def legsub(c1, c2):
from numpy.polynomial.legendre import legsub
return legsub(c1, c2)
@deprecate(message='Please import legmulx from numpy.polynomial.legendre')
def legmulx(cs):
from numpy.polynomial.legendre import legmulx
return legmulx(cs)
@deprecate(message='Please import legmul from numpy.polynomial.legendre')
def legmul(c1, c2):
from numpy.polynomial.legendre import legmul
return legmul(c1, c2)
@deprecate(message='Please import legdiv from numpy.polynomial.legendre')
def legdiv(c1, c2):
from numpy.polynomial.legendre import legdiv
return legdiv(c1, c2)
@deprecate(message='Please import legpow from numpy.polynomial.legendre')
def legpow(cs, pow, maxpower=16) :
from numpy.polynomial.legendre import legpow
return legpow(cs, pow, maxpower)
@deprecate(message='Please import legder from numpy.polynomial.legendre')
def legder(cs, m=1, scl=1) :
from numpy.polynomial.legendre import legder
return legder(cs, m, scl)
@deprecate(message='Please import legint from numpy.polynomial.legendre')
def legint(cs, m=1, k=[], lbnd=0, scl=1):
from numpy.polynomial.legendre import legint
return legint(cs, m, k, lbnd, scl)
@deprecate(message='Please import legval from numpy.polynomial.legendre')
def legval(x, cs):
from numpy.polynomial.legendre import legval
return legval(x, cs)
@deprecate(message='Please import legvander from numpy.polynomial.legendre')
def legvander(x, deg) :
from numpy.polynomial.legendre import legvander
return legvander(x, deg)
@deprecate(message='Please import legfit from numpy.polynomial.legendre')
def legfit(x, y, deg, rcond=None, full=False, w=None):
from numpy.polynomial.legendre import legfit
return legfit(x, y, deg, rcond, full, w)
@deprecate(message='Please import legroots from numpy.polynomial.legendre')
def legroots(cs):
from numpy.polynomial.legendre import legroots
return legroots(cs)
# polyutils functions
@deprecate(message='Please import trimseq from numpy.polynomial.polyutils')
def trimseq(seq) :
from numpy.polynomial.polyutils import trimseq
return trimseq(seq)
@deprecate(message='Please import as_series from numpy.polynomial.polyutils')
def as_series(alist, trim=True) :
from numpy.polynomial.polyutils import as_series
return as_series(alist, trim)
@deprecate(message='Please import trimcoef from numpy.polynomial.polyutils')
def trimcoef(c, tol=0) :
from numpy.polynomial.polyutils import trimcoef
return trimcoef(c, tol)
@deprecate(message='Please import getdomain from numpy.polynomial.polyutils')
def getdomain(x) :
from numpy.polynomial.polyutils import getdomain
return getdomain(x)
# Just remove this function as it screws up the documentation of the same
# named class method.
#
#@deprecate(message='Please import mapparms from numpy.polynomial.polyutils')
#def mapparms(old, new) :
# from numpy.polynomial.polyutils import mapparms
# return mapparms(old, new)
@deprecate(message='Please import mapdomain from numpy.polynomial.polyutils')
def mapdomain(x, old, new) :
from numpy.polynomial.polyutils import mapdomain
return mapdomain(x, old, new)
from numpy.testing import Tester
test = Tester().test
bench = Tester().bench