328 lines
7.9 KiB
Python
328 lines
7.9 KiB
Python
|
from typing import (
|
||
|
Any,
|
||
|
Callable,
|
||
|
List,
|
||
|
Optional,
|
||
|
overload,
|
||
|
Tuple,
|
||
|
Union,
|
||
|
)
|
||
|
from typing_extensions import Literal
|
||
|
|
||
|
import numpy
|
||
|
|
||
|
_IntegerType = Union[int, numpy.integer]
|
||
|
_FloatingType = Union[float, numpy.floating]
|
||
|
_PointsAndWeights = Tuple[numpy.ndarray, numpy.ndarray]
|
||
|
_PointsAndWeightsAndMu = Tuple[numpy.ndarray, numpy.ndarray, float]
|
||
|
|
||
|
__all__ = [
|
||
|
'legendre',
|
||
|
'chebyt',
|
||
|
'chebyu',
|
||
|
'chebyc',
|
||
|
'chebys',
|
||
|
'jacobi',
|
||
|
'laguerre',
|
||
|
'genlaguerre',
|
||
|
'hermite',
|
||
|
'hermitenorm',
|
||
|
'gegenbauer',
|
||
|
'sh_legendre',
|
||
|
'sh_chebyt',
|
||
|
'sh_chebyu',
|
||
|
'sh_jacobi',
|
||
|
'roots_legendre',
|
||
|
'roots_chebyt',
|
||
|
'roots_chebyu',
|
||
|
'roots_chebyc',
|
||
|
'roots_chebys',
|
||
|
'roots_jacobi',
|
||
|
'roots_laguerre',
|
||
|
'roots_genlaguerre',
|
||
|
'roots_hermite',
|
||
|
'roots_hermitenorm',
|
||
|
'roots_gegenbauer',
|
||
|
'roots_sh_legendre',
|
||
|
'roots_sh_chebyt',
|
||
|
'roots_sh_chebyu',
|
||
|
'roots_sh_jacobi',
|
||
|
]
|
||
|
|
||
|
@overload
|
||
|
def roots_jacobi(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
beta: _FloatingType,
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_jacobi(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
beta: _FloatingType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_jacobi(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
beta: _FloatingType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_sh_jacobi(
|
||
|
n: _IntegerType,
|
||
|
p1: _FloatingType,
|
||
|
q1: _FloatingType,
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_jacobi(
|
||
|
n: _IntegerType,
|
||
|
p1: _FloatingType,
|
||
|
q1: _FloatingType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_jacobi(
|
||
|
n: _IntegerType,
|
||
|
p1: _FloatingType,
|
||
|
q1: _FloatingType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_genlaguerre(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_genlaguerre(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_genlaguerre(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_laguerre(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_laguerre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_laguerre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_hermite(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_hermite(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_hermite(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_hermitenorm(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_hermitenorm(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_hermitenorm(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_gegenbauer(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_gegenbauer(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_gegenbauer(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_chebyt(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyt(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyt(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_chebyu(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyu(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyu(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_chebyc(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyc(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebyc(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_chebys(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebys(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_chebys(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_sh_chebyt(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_chebyt(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_chebyt(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_sh_chebyu(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_chebyu(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_chebyu(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_legendre(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_legendre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_legendre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
@overload
|
||
|
def roots_sh_legendre(n: _IntegerType) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_legendre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[False],
|
||
|
) -> _PointsAndWeights: ...
|
||
|
@overload
|
||
|
def roots_sh_legendre(
|
||
|
n: _IntegerType,
|
||
|
mu: Literal[True],
|
||
|
) -> _PointsAndWeightsAndMu: ...
|
||
|
|
||
|
class orthopoly1d(numpy.poly1d):
|
||
|
def __init__(
|
||
|
self,
|
||
|
roots: Any, # TODO: ArrayLike
|
||
|
weights: Optional[Any], # TODO: ArrayLike
|
||
|
hn: float = ...,
|
||
|
kn: float = ...,
|
||
|
wfunc = Optional[Callable[[float], float]],
|
||
|
limits = Optional[Tuple[float, float]],
|
||
|
monic: bool = ...,
|
||
|
eval_func: numpy.ufunc = ...,
|
||
|
) -> None: ...
|
||
|
@property
|
||
|
def limits(self) -> Tuple[float, float]: ...
|
||
|
def wfunc(x: float) -> float: ...
|
||
|
# TODO: ArrayLike
|
||
|
def __call__(self, x: Any) -> numpy.ndarray: ...
|
||
|
|
||
|
def legendre(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def chebyt(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def chebyu(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def chebyc(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def chebys(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def jacobi(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
beta: _FloatingType,
|
||
|
monic: bool = ...,
|
||
|
) -> orthopoly1d: ...
|
||
|
def laguerre(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def genlaguerre(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
monic: bool = ...,
|
||
|
) -> orthopoly1d: ...
|
||
|
def hermite(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def hermitenorm(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def gegenbauer(
|
||
|
n: _IntegerType,
|
||
|
alpha: _FloatingType,
|
||
|
monic: bool = ...,
|
||
|
) -> orthopoly1d: ...
|
||
|
def sh_legendre(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def sh_chebyt(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def sh_chebyu(n: _IntegerType, monic: bool = ...) -> orthopoly1d: ...
|
||
|
def sh_jacobi(
|
||
|
n: _IntegerType,
|
||
|
p: _FloatingType,
|
||
|
q: _FloatingType,
|
||
|
monic: bool = ...,
|
||
|
) -> orthopoly1d: ...
|
||
|
|
||
|
# These functions are not public, but still need stubs because they
|
||
|
# get checked in the tests.
|
||
|
def _roots_hermite_asy(n: _IntegerType) -> _PointsAndWeights: ...
|