from collections.abc import Callable, Iterable from typing import ( Any, Concatenate, Final, Literal as L, TypeVar, overload, ) import numpy as np import numpy.typing as npt from numpy._typing import _IntLike_co from ._polybase import ABCPolyBase from ._polytypes import ( _SeriesLikeCoef_co, _Array1, _Series, _Array2, _CoefSeries, _FuncBinOp, _FuncCompanion, _FuncDer, _FuncFit, _FuncFromRoots, _FuncGauss, _FuncInteg, _FuncLine, _FuncPoly2Ortho, _FuncPow, _FuncPts, _FuncRoots, _FuncUnOp, _FuncVal, _FuncVal2D, _FuncVal3D, _FuncValFromRoots, _FuncVander, _FuncVander2D, _FuncVander3D, _FuncWeight, ) from .polyutils import trimcoef as chebtrim __all__ = [ "chebzero", "chebone", "chebx", "chebdomain", "chebline", "chebadd", "chebsub", "chebmulx", "chebmul", "chebdiv", "chebpow", "chebval", "chebder", "chebint", "cheb2poly", "poly2cheb", "chebfromroots", "chebvander", "chebfit", "chebtrim", "chebroots", "chebpts1", "chebpts2", "Chebyshev", "chebval2d", "chebval3d", "chebgrid2d", "chebgrid3d", "chebvander2d", "chebvander3d", "chebcompanion", "chebgauss", "chebweight", "chebinterpolate", ] _SCT = TypeVar("_SCT", bound=np.number[Any] | np.object_) def _cseries_to_zseries(c: npt.NDArray[_SCT]) -> _Series[_SCT]: ... def _zseries_to_cseries(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ... def _zseries_mul( z1: npt.NDArray[_SCT], z2: npt.NDArray[_SCT], ) -> _Series[_SCT]: ... def _zseries_div( z1: npt.NDArray[_SCT], z2: npt.NDArray[_SCT], ) -> _Series[_SCT]: ... def _zseries_der(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ... def _zseries_int(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ... poly2cheb: _FuncPoly2Ortho[L["poly2cheb"]] cheb2poly: _FuncUnOp[L["cheb2poly"]] chebdomain: Final[_Array2[np.float64]] chebzero: Final[_Array1[np.int_]] chebone: Final[_Array1[np.int_]] chebx: Final[_Array2[np.int_]] chebline: _FuncLine[L["chebline"]] chebfromroots: _FuncFromRoots[L["chebfromroots"]] chebadd: _FuncBinOp[L["chebadd"]] chebsub: _FuncBinOp[L["chebsub"]] chebmulx: _FuncUnOp[L["chebmulx"]] chebmul: _FuncBinOp[L["chebmul"]] chebdiv: _FuncBinOp[L["chebdiv"]] chebpow: _FuncPow[L["chebpow"]] chebder: _FuncDer[L["chebder"]] chebint: _FuncInteg[L["chebint"]] chebval: _FuncVal[L["chebval"]] chebval2d: _FuncVal2D[L["chebval2d"]] chebval3d: _FuncVal3D[L["chebval3d"]] chebvalfromroots: _FuncValFromRoots[L["chebvalfromroots"]] chebgrid2d: _FuncVal2D[L["chebgrid2d"]] chebgrid3d: _FuncVal3D[L["chebgrid3d"]] chebvander: _FuncVander[L["chebvander"]] chebvander2d: _FuncVander2D[L["chebvander2d"]] chebvander3d: _FuncVander3D[L["chebvander3d"]] chebfit: _FuncFit[L["chebfit"]] chebcompanion: _FuncCompanion[L["chebcompanion"]] chebroots: _FuncRoots[L["chebroots"]] chebgauss: _FuncGauss[L["chebgauss"]] chebweight: _FuncWeight[L["chebweight"]] chebpts1: _FuncPts[L["chebpts1"]] chebpts2: _FuncPts[L["chebpts2"]] # keep in sync with `Chebyshev.interpolate` _RT = TypeVar("_RT", bound=np.number[Any] | np.bool | np.object_) @overload def chebinterpolate( func: np.ufunc, deg: _IntLike_co, args: tuple[()] = ..., ) -> npt.NDArray[np.float64 | np.complex128 | np.object_]: ... @overload def chebinterpolate( func: Callable[[npt.NDArray[np.float64]], _RT], deg: _IntLike_co, args: tuple[()] = ..., ) -> npt.NDArray[_RT]: ... @overload def chebinterpolate( func: Callable[Concatenate[npt.NDArray[np.float64], ...], _RT], deg: _IntLike_co, args: Iterable[Any], ) -> npt.NDArray[_RT]: ... _Self = TypeVar("_Self", bound=object) class Chebyshev(ABCPolyBase[L["T"]]): @overload @classmethod def interpolate( cls: type[_Self], /, func: Callable[[npt.NDArray[np.float64]], _CoefSeries], deg: _IntLike_co, domain: None | _SeriesLikeCoef_co = ..., args: tuple[()] = ..., ) -> _Self: ... @overload @classmethod def interpolate( cls: type[_Self], /, func: Callable[ Concatenate[npt.NDArray[np.float64], ...], _CoefSeries, ], deg: _IntLike_co, domain: None | _SeriesLikeCoef_co = ..., *, args: Iterable[Any], ) -> _Self: ... @overload @classmethod def interpolate( cls: type[_Self], func: Callable[ Concatenate[npt.NDArray[np.float64], ...], _CoefSeries, ], deg: _IntLike_co, domain: None | _SeriesLikeCoef_co, args: Iterable[Any], /, ) -> _Self: ...