codekingpro/portable-devtools
114k
1from collections.abc import Sequence
2from typing import Any, TypeAlias, assert_type
3
4import numpy as np
5import numpy.polynomial as npp
6import numpy.typing as npt
7
8_ArrFloat1D: TypeAlias = np.ndarray[tuple[int], np.dtype[np.floating]]
9_ArrFloat1D64: TypeAlias = np.ndarray[tuple[int], np.dtype[np.float64]]
10_ArrComplex1D: TypeAlias = np.ndarray[tuple[int], np.dtype[np.complexfloating]]
11_ArrComplex1D128: TypeAlias = np.ndarray[tuple[int], np.dtype[np.complex128]]
12_ArrObject1D: TypeAlias = np.ndarray[tuple[int], np.dtype[np.object_]]
13
14AR_b: npt.NDArray[np.bool]
15AR_u4: npt.NDArray[np.uint32]
16AR_i8: npt.NDArray[np.int64]
17AR_f8: npt.NDArray[np.float64]
18AR_c16: npt.NDArray[np.complex128]
19AR_O: npt.NDArray[np.object_]
20
21PS_poly: npp.Polynomial
22PS_cheb: npp.Chebyshev
23
24assert_type(npp.polynomial.polyroots(AR_f8), _ArrFloat1D64)
25assert_type(npp.polynomial.polyroots(AR_c16), _ArrComplex1D128)
26assert_type(npp.polynomial.polyroots(AR_O), _ArrObject1D)
27
28assert_type(npp.polynomial.polyfromroots(AR_f8), _ArrFloat1D)
29assert_type(npp.polynomial.polyfromroots(AR_c16), _ArrComplex1D)
30assert_type(npp.polynomial.polyfromroots(AR_O), _ArrObject1D)
31
32# assert_type(npp.polynomial.polyadd(AR_b, AR_b), NoReturn)
33assert_type(npp.polynomial.polyadd(AR_u4, AR_b), _ArrFloat1D)
34assert_type(npp.polynomial.polyadd(AR_i8, AR_i8), _ArrFloat1D)
35assert_type(npp.polynomial.polyadd(AR_f8, AR_i8), _ArrFloat1D)
36assert_type(npp.polynomial.polyadd(AR_i8, AR_c16), _ArrComplex1D)
37assert_type(npp.polynomial.polyadd(AR_O, AR_O), _ArrObject1D)
38
39assert_type(npp.polynomial.polymulx(AR_u4), _ArrFloat1D)
40assert_type(npp.polynomial.polymulx(AR_i8), _ArrFloat1D)
41assert_type(npp.polynomial.polymulx(AR_f8), _ArrFloat1D)
42assert_type(npp.polynomial.polymulx(AR_c16), _ArrComplex1D)
43assert_type(npp.polynomial.polymulx(AR_O), _ArrObject1D)
44
45assert_type(npp.polynomial.polypow(AR_u4, 2), _ArrFloat1D)
46assert_type(npp.polynomial.polypow(AR_i8, 2), _ArrFloat1D)
47assert_type(npp.polynomial.polypow(AR_f8, 2), _ArrFloat1D)
48assert_type(npp.polynomial.polypow(AR_c16, 2), _ArrComplex1D)
49assert_type(npp.polynomial.polypow(AR_O, 2), _ArrObject1D)
50
51# assert_type(npp.polynomial.polyder(PS_poly), npt.NDArray[np.object_])
52assert_type(npp.polynomial.polyder(AR_f8), npt.NDArray[np.floating])
53assert_type(npp.polynomial.polyder(AR_c16), npt.NDArray[np.complexfloating])
54assert_type(npp.polynomial.polyder(AR_O, m=2), npt.NDArray[np.object_])
55
56# assert_type(npp.polynomial.polyint(PS_poly), npt.NDArray[np.object_])
57assert_type(npp.polynomial.polyint(AR_f8), npt.NDArray[np.floating])
58assert_type(npp.polynomial.polyint(AR_f8, k=AR_c16), npt.NDArray[np.complexfloating])
59assert_type(npp.polynomial.polyint(AR_O, m=2), npt.NDArray[np.object_])
60
61assert_type(npp.polynomial.polyval(AR_b, AR_b), npt.NDArray[np.floating])
62assert_type(npp.polynomial.polyval(AR_u4, AR_b), npt.NDArray[np.floating])
63assert_type(npp.polynomial.polyval(AR_i8, AR_i8), npt.NDArray[np.floating])
64assert_type(npp.polynomial.polyval(AR_f8, AR_i8), npt.NDArray[np.floating])
65assert_type(npp.polynomial.polyval(AR_i8, AR_c16), npt.NDArray[np.complexfloating])
66assert_type(npp.polynomial.polyval(AR_O, AR_O), npt.NDArray[np.object_])
67
68assert_type(npp.polynomial.polyval2d(AR_b, AR_b, AR_b), npt.NDArray[np.floating])
69assert_type(npp.polynomial.polyval2d(AR_u4, AR_u4, AR_b), npt.NDArray[np.floating])
70assert_type(npp.polynomial.polyval2d(AR_i8, AR_i8, AR_i8), npt.NDArray[np.floating])
71assert_type(npp.polynomial.polyval2d(AR_f8, AR_f8, AR_i8), npt.NDArray[np.floating])
72assert_type(npp.polynomial.polyval2d(AR_i8, AR_i8, AR_c16), npt.NDArray[np.complexfloating])
73assert_type(npp.polynomial.polyval2d(AR_O, AR_O, AR_O), npt.NDArray[np.object_])
74
75assert_type(npp.polynomial.polyval3d(AR_b, AR_b, AR_b, AR_b), npt.NDArray[np.floating])
76assert_type(npp.polynomial.polyval3d(AR_u4, AR_u4, AR_u4, AR_b), npt.NDArray[np.floating])
77assert_type(npp.polynomial.polyval3d(AR_i8, AR_i8, AR_i8, AR_i8), npt.NDArray[np.floating])
78assert_type(npp.polynomial.polyval3d(AR_f8, AR_f8, AR_f8, AR_i8), npt.NDArray[np.floating])
79assert_type(npp.polynomial.polyval3d(AR_i8, AR_i8, AR_i8, AR_c16), npt.NDArray[np.complexfloating])
80assert_type(npp.polynomial.polyval3d(AR_O, AR_O, AR_O, AR_O), npt.NDArray[np.object_])
81
82assert_type(npp.polynomial.polyvalfromroots(AR_b, AR_b), npt.NDArray[np.float64 | Any])
83assert_type(npp.polynomial.polyvalfromroots(AR_u4, AR_b), npt.NDArray[np.float64 | Any])
84assert_type(npp.polynomial.polyvalfromroots(AR_i8, AR_i8), npt.NDArray[np.float64 | Any])
85assert_type(npp.polynomial.polyvalfromroots(AR_f8, AR_i8), npt.NDArray[np.float64 | Any])
86assert_type(npp.polynomial.polyvalfromroots(AR_i8, AR_c16), npt.NDArray[np.complex128 | Any])
87assert_type(npp.polynomial.polyvalfromroots(AR_O, AR_O), npt.NDArray[np.object_ | Any])
88
89assert_type(npp.polynomial.polyvander(AR_f8, 3), npt.NDArray[np.floating])
90assert_type(npp.polynomial.polyvander(AR_c16, 3), npt.NDArray[np.complexfloating])
91assert_type(npp.polynomial.polyvander(AR_O, 3), npt.NDArray[np.object_])
92
93assert_type(npp.polynomial.polyvander2d(AR_f8, AR_f8, [4, 2]), npt.NDArray[np.floating])
94assert_type(npp.polynomial.polyvander2d(AR_c16, AR_c16, [4, 2]), npt.NDArray[np.complexfloating])
95assert_type(npp.polynomial.polyvander2d(AR_O, AR_O, [4, 2]), npt.NDArray[np.object_])
96
97assert_type(npp.polynomial.polyvander3d(AR_f8, AR_f8, AR_f8, [4, 3, 2]), npt.NDArray[np.floating])
98assert_type(npp.polynomial.polyvander3d(AR_c16, AR_c16, AR_c16, [4, 3, 2]), npt.NDArray[np.complexfloating])
99assert_type(npp.polynomial.polyvander3d(AR_O, AR_O, AR_O, [4, 3, 2]), npt.NDArray[np.object_])
100
101assert_type(
102 npp.polynomial.polyfit(AR_f8, AR_f8, 2),
103 npt.NDArray[np.floating],
104)
105assert_type(
106 npp.polynomial.polyfit(AR_f8, AR_i8, 1, full=True),
107 tuple[npt.NDArray[np.floating], Sequence[np.inexact | np.int32]],
108)
109assert_type(
110 npp.polynomial.polyfit(AR_c16, AR_f8, 2),
111 npt.NDArray[np.complexfloating],
112)
113assert_type(
114 npp.polynomial.polyfit(AR_f8, AR_c16, 1, full=True)[0],
115 npt.NDArray[np.complexfloating],
116)
117
118assert_type(npp.chebyshev.chebgauss(2), tuple[_ArrFloat1D64, _ArrFloat1D64])
119
120assert_type(npp.chebyshev.chebweight(AR_f8), npt.NDArray[np.float64])
121assert_type(npp.chebyshev.chebweight(AR_c16), npt.NDArray[np.complex128])
122assert_type(npp.chebyshev.chebweight(AR_O), npt.NDArray[np.object_])
123
124assert_type(npp.chebyshev.poly2cheb(AR_f8), _ArrFloat1D)
125assert_type(npp.chebyshev.poly2cheb(AR_c16), _ArrComplex1D)
126assert_type(npp.chebyshev.poly2cheb(AR_O), _ArrObject1D)
127
128assert_type(npp.chebyshev.cheb2poly(AR_f8), _ArrFloat1D)
129assert_type(npp.chebyshev.cheb2poly(AR_c16), _ArrComplex1D)
130assert_type(npp.chebyshev.cheb2poly(AR_O), _ArrObject1D)
131
132assert_type(npp.chebyshev.chebpts1(6), _ArrFloat1D64)
133assert_type(npp.chebyshev.chebpts2(6), _ArrFloat1D64)
134
135assert_type(
136 npp.chebyshev.chebinterpolate(np.tanh, 3),
137 npt.NDArray[np.float64 | np.complex128 | np.object_],
138)
139 