304 lines
6.8 KiB
Python
304 lines
6.8 KiB
Python
|
from typing import (
|
||
|
Literal as L,
|
||
|
overload,
|
||
|
Any,
|
||
|
SupportsInt,
|
||
|
SupportsIndex,
|
||
|
TypeVar,
|
||
|
NoReturn,
|
||
|
)
|
||
|
|
||
|
from numpy import (
|
||
|
RankWarning as RankWarning,
|
||
|
poly1d as poly1d,
|
||
|
unsignedinteger,
|
||
|
signedinteger,
|
||
|
floating,
|
||
|
complexfloating,
|
||
|
bool_,
|
||
|
int32,
|
||
|
int64,
|
||
|
float64,
|
||
|
complex128,
|
||
|
object_,
|
||
|
)
|
||
|
|
||
|
from numpy._typing import (
|
||
|
NDArray,
|
||
|
ArrayLike,
|
||
|
_ArrayLikeBool_co,
|
||
|
_ArrayLikeUInt_co,
|
||
|
_ArrayLikeInt_co,
|
||
|
_ArrayLikeFloat_co,
|
||
|
_ArrayLikeComplex_co,
|
||
|
_ArrayLikeObject_co,
|
||
|
)
|
||
|
|
||
|
_T = TypeVar("_T")
|
||
|
|
||
|
_2Tup = tuple[_T, _T]
|
||
|
_5Tup = tuple[
|
||
|
_T,
|
||
|
NDArray[float64],
|
||
|
NDArray[int32],
|
||
|
NDArray[float64],
|
||
|
NDArray[float64],
|
||
|
]
|
||
|
|
||
|
__all__: list[str]
|
||
|
|
||
|
def poly(seq_of_zeros: ArrayLike) -> NDArray[floating[Any]]: ...
|
||
|
|
||
|
# Returns either a float or complex array depending on the input values.
|
||
|
# See `np.linalg.eigvals`.
|
||
|
def roots(p: ArrayLike) -> NDArray[complexfloating[Any, Any]] | NDArray[floating[Any]]: ...
|
||
|
|
||
|
@overload
|
||
|
def polyint(
|
||
|
p: poly1d,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
k: None | _ArrayLikeComplex_co | _ArrayLikeObject_co = ...,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polyint(
|
||
|
p: _ArrayLikeFloat_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
k: None | _ArrayLikeFloat_co = ...,
|
||
|
) -> NDArray[floating[Any]]: ...
|
||
|
@overload
|
||
|
def polyint(
|
||
|
p: _ArrayLikeComplex_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
k: None | _ArrayLikeComplex_co = ...,
|
||
|
) -> NDArray[complexfloating[Any, Any]]: ...
|
||
|
@overload
|
||
|
def polyint(
|
||
|
p: _ArrayLikeObject_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
k: None | _ArrayLikeObject_co = ...,
|
||
|
) -> NDArray[object_]: ...
|
||
|
|
||
|
@overload
|
||
|
def polyder(
|
||
|
p: poly1d,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polyder(
|
||
|
p: _ArrayLikeFloat_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
) -> NDArray[floating[Any]]: ...
|
||
|
@overload
|
||
|
def polyder(
|
||
|
p: _ArrayLikeComplex_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
) -> NDArray[complexfloating[Any, Any]]: ...
|
||
|
@overload
|
||
|
def polyder(
|
||
|
p: _ArrayLikeObject_co,
|
||
|
m: SupportsInt | SupportsIndex = ...,
|
||
|
) -> NDArray[object_]: ...
|
||
|
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeFloat_co,
|
||
|
y: _ArrayLikeFloat_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[False] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: L[False] = ...,
|
||
|
) -> NDArray[float64]: ...
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeComplex_co,
|
||
|
y: _ArrayLikeComplex_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[False] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: L[False] = ...,
|
||
|
) -> NDArray[complex128]: ...
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeFloat_co,
|
||
|
y: _ArrayLikeFloat_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[False] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: L[True, "unscaled"] = ...,
|
||
|
) -> _2Tup[NDArray[float64]]: ...
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeComplex_co,
|
||
|
y: _ArrayLikeComplex_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[False] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: L[True, "unscaled"] = ...,
|
||
|
) -> _2Tup[NDArray[complex128]]: ...
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeFloat_co,
|
||
|
y: _ArrayLikeFloat_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[True] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: bool | L["unscaled"] = ...,
|
||
|
) -> _5Tup[NDArray[float64]]: ...
|
||
|
@overload
|
||
|
def polyfit(
|
||
|
x: _ArrayLikeComplex_co,
|
||
|
y: _ArrayLikeComplex_co,
|
||
|
deg: SupportsIndex | SupportsInt,
|
||
|
rcond: None | float = ...,
|
||
|
full: L[True] = ...,
|
||
|
w: None | _ArrayLikeFloat_co = ...,
|
||
|
cov: bool | L["unscaled"] = ...,
|
||
|
) -> _5Tup[NDArray[complex128]]: ...
|
||
|
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeBool_co,
|
||
|
x: _ArrayLikeBool_co,
|
||
|
) -> NDArray[int64]: ...
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeUInt_co,
|
||
|
x: _ArrayLikeUInt_co,
|
||
|
) -> NDArray[unsignedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeInt_co,
|
||
|
x: _ArrayLikeInt_co,
|
||
|
) -> NDArray[signedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeFloat_co,
|
||
|
x: _ArrayLikeFloat_co,
|
||
|
) -> NDArray[floating[Any]]: ...
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeComplex_co,
|
||
|
x: _ArrayLikeComplex_co,
|
||
|
) -> NDArray[complexfloating[Any, Any]]: ...
|
||
|
@overload
|
||
|
def polyval(
|
||
|
p: _ArrayLikeObject_co,
|
||
|
x: _ArrayLikeObject_co,
|
||
|
) -> NDArray[object_]: ...
|
||
|
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: poly1d,
|
||
|
a2: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
a2: poly1d,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeBool_co,
|
||
|
a2: _ArrayLikeBool_co,
|
||
|
) -> NDArray[bool_]: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeUInt_co,
|
||
|
a2: _ArrayLikeUInt_co,
|
||
|
) -> NDArray[unsignedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeInt_co,
|
||
|
a2: _ArrayLikeInt_co,
|
||
|
) -> NDArray[signedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeFloat_co,
|
||
|
a2: _ArrayLikeFloat_co,
|
||
|
) -> NDArray[floating[Any]]: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeComplex_co,
|
||
|
a2: _ArrayLikeComplex_co,
|
||
|
) -> NDArray[complexfloating[Any, Any]]: ...
|
||
|
@overload
|
||
|
def polyadd(
|
||
|
a1: _ArrayLikeObject_co,
|
||
|
a2: _ArrayLikeObject_co,
|
||
|
) -> NDArray[object_]: ...
|
||
|
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: poly1d,
|
||
|
a2: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
a2: poly1d,
|
||
|
) -> poly1d: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeBool_co,
|
||
|
a2: _ArrayLikeBool_co,
|
||
|
) -> NoReturn: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeUInt_co,
|
||
|
a2: _ArrayLikeUInt_co,
|
||
|
) -> NDArray[unsignedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeInt_co,
|
||
|
a2: _ArrayLikeInt_co,
|
||
|
) -> NDArray[signedinteger[Any]]: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeFloat_co,
|
||
|
a2: _ArrayLikeFloat_co,
|
||
|
) -> NDArray[floating[Any]]: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeComplex_co,
|
||
|
a2: _ArrayLikeComplex_co,
|
||
|
) -> NDArray[complexfloating[Any, Any]]: ...
|
||
|
@overload
|
||
|
def polysub(
|
||
|
a1: _ArrayLikeObject_co,
|
||
|
a2: _ArrayLikeObject_co,
|
||
|
) -> NDArray[object_]: ...
|
||
|
|
||
|
# NOTE: Not an alias, but they do have the same signature (that we can reuse)
|
||
|
polymul = polyadd
|
||
|
|
||
|
@overload
|
||
|
def polydiv(
|
||
|
u: poly1d,
|
||
|
v: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
) -> _2Tup[poly1d]: ...
|
||
|
@overload
|
||
|
def polydiv(
|
||
|
u: _ArrayLikeComplex_co | _ArrayLikeObject_co,
|
||
|
v: poly1d,
|
||
|
) -> _2Tup[poly1d]: ...
|
||
|
@overload
|
||
|
def polydiv(
|
||
|
u: _ArrayLikeFloat_co,
|
||
|
v: _ArrayLikeFloat_co,
|
||
|
) -> _2Tup[NDArray[floating[Any]]]: ...
|
||
|
@overload
|
||
|
def polydiv(
|
||
|
u: _ArrayLikeComplex_co,
|
||
|
v: _ArrayLikeComplex_co,
|
||
|
) -> _2Tup[NDArray[complexfloating[Any, Any]]]: ...
|
||
|
@overload
|
||
|
def polydiv(
|
||
|
u: _ArrayLikeObject_co,
|
||
|
v: _ArrayLikeObject_co,
|
||
|
) -> _2Tup[NDArray[Any]]: ...
|