Skip to content

Commit 7dc9fad

Browse files
committed
linalg: type-tests for the "basic" solve* functions
1 parent d1cf54d commit 7dc9fad

File tree

1 file changed

+370
-0
lines changed

1 file changed

+370
-0
lines changed

tests/linalg/test__basic.pyi

Lines changed: 370 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,370 @@
1+
# type-tests for `linalg/_basic.pyi`
2+
3+
from typing import assert_type
4+
5+
import numpy as np
6+
import optype.numpy as onp
7+
import optype.numpy.compat as npc
8+
9+
from scipy.linalg import solve, solve_banded, solve_circulant, solve_toeplitz, solve_triangular, solveh_banded
10+
11+
i8_1d: onp.Array1D[np.int8]
12+
i8_2d: onp.Array2D[np.int8]
13+
i8_3d: onp.Array3D[np.int8]
14+
15+
f16_1d: onp.Array1D[np.float16]
16+
f16_2d: onp.Array2D[np.float16]
17+
f16_3d: onp.Array3D[np.float16]
18+
19+
f32_1d: onp.Array1D[np.float32]
20+
f32_2d: onp.Array2D[np.float32]
21+
f32_3d: onp.Array3D[np.float32]
22+
23+
f64_1d: onp.Array1D[np.float64]
24+
f64_2d: onp.Array2D[np.float64]
25+
f64_3d: onp.Array3D[np.float64]
26+
27+
f80_1d: onp.Array1D[np.longdouble]
28+
f80_2d: onp.Array2D[np.longdouble]
29+
f80_3d: onp.Array3D[np.longdouble]
30+
31+
c64_1d: onp.Array1D[np.complex64]
32+
c64_2d: onp.Array2D[np.complex64]
33+
c64_3d: onp.Array3D[np.complex64]
34+
35+
c128_1d: onp.Array1D[np.complex128]
36+
c128_2d: onp.Array2D[np.complex128]
37+
c128_3d: onp.Array3D[np.complex128]
38+
39+
c160_1d: onp.Array1D[np.clongdouble]
40+
c160_2d: onp.Array2D[np.clongdouble]
41+
c160_3d: onp.Array3D[np.clongdouble]
42+
43+
py_f_1d: list[float]
44+
py_f_2d: list[list[float]]
45+
py_f_3d: list[list[list[float]]]
46+
47+
py_c_1d: list[complex]
48+
py_c_2d: list[list[complex]]
49+
py_c_3d: list[list[list[complex]]]
50+
51+
###
52+
# solve
53+
54+
assert_type(solve(i8_2d, i8_1d), onp.Array2D[np.float64])
55+
assert_type(solve(i8_2d, i8_2d), onp.Array2D[np.float64])
56+
assert_type(solve(i8_2d, i8_3d), onp.ArrayND[np.float64])
57+
assert_type(solve(i8_3d, i8_1d), onp.ArrayND[np.float64])
58+
59+
assert_type(solve(f16_2d, f16_1d), onp.Array2D[np.float32])
60+
assert_type(solve(f16_2d, f16_2d), onp.Array2D[np.float32])
61+
assert_type(solve(f16_2d, f16_3d), onp.ArrayND[np.float32])
62+
assert_type(solve(f16_3d, f16_1d), onp.ArrayND[np.float32])
63+
64+
assert_type(solve(f32_2d, f32_1d), onp.Array2D[np.float32])
65+
assert_type(solve(f32_2d, f32_2d), onp.Array2D[np.float32])
66+
assert_type(solve(f32_2d, f32_3d), onp.ArrayND[np.float32])
67+
assert_type(solve(f32_3d, f32_1d), onp.ArrayND[np.float32])
68+
69+
assert_type(solve(f64_2d, f64_1d), onp.Array2D[np.float64])
70+
assert_type(solve(f64_2d, f64_2d), onp.Array2D[np.float64])
71+
assert_type(solve(f64_2d, f64_3d), onp.ArrayND[np.float64])
72+
assert_type(solve(f64_3d, f64_1d), onp.ArrayND[np.float64])
73+
74+
assert_type(solve(f80_2d, f80_1d), onp.Array2D[np.float64])
75+
assert_type(solve(f80_2d, f80_2d), onp.Array2D[np.float64])
76+
assert_type(solve(f80_2d, f80_3d), onp.ArrayND[np.float64])
77+
assert_type(solve(f80_3d, f80_1d), onp.ArrayND[np.float64])
78+
79+
assert_type(solve(c64_2d, c64_1d), onp.Array2D[np.complex64])
80+
assert_type(solve(c64_2d, c64_2d), onp.Array2D[np.complex64])
81+
assert_type(solve(c64_2d, c64_3d), onp.ArrayND[np.complex64])
82+
assert_type(solve(c64_3d, c64_1d), onp.ArrayND[np.complex64])
83+
84+
assert_type(solve(c128_2d, c128_1d), onp.Array2D[np.complex128])
85+
assert_type(solve(c128_2d, c128_2d), onp.Array2D[np.complex128])
86+
assert_type(solve(c128_2d, c128_3d), onp.ArrayND[np.complex128])
87+
assert_type(solve(c128_3d, c128_1d), onp.ArrayND[np.complex128])
88+
89+
assert_type(solve(c160_2d, c160_1d), onp.Array2D[np.complex128])
90+
assert_type(solve(c160_2d, c160_2d), onp.Array2D[np.complex128])
91+
assert_type(solve(c160_2d, c160_3d), onp.ArrayND[np.complex128])
92+
assert_type(solve(c160_3d, c160_1d), onp.ArrayND[np.complex128])
93+
94+
assert_type(solve(py_f_2d, py_f_1d), onp.Array2D[np.float64])
95+
assert_type(solve(py_f_2d, py_f_2d), onp.Array2D[np.float64])
96+
assert_type(solve(py_f_2d, py_f_3d), onp.ArrayND[np.float64])
97+
assert_type(solve(py_f_3d, py_f_1d), onp.ArrayND[np.float64])
98+
99+
assert_type(solve(py_c_2d, py_c_1d), onp.Array2D[np.complex128])
100+
assert_type(solve(py_c_2d, py_c_2d), onp.Array2D[np.complex128])
101+
assert_type(solve(py_c_2d, py_c_3d), onp.ArrayND[np.complex128])
102+
assert_type(solve(py_c_3d, py_c_1d), onp.ArrayND[np.complex128])
103+
104+
###
105+
# solve_triangular
106+
107+
assert_type(solve_triangular(i8_2d, i8_1d), onp.Array1D[np.float64])
108+
assert_type(solve_triangular(i8_2d, i8_2d), onp.Array2D[np.float64])
109+
assert_type(solve_triangular(i8_2d, i8_3d), onp.ArrayND[np.float64])
110+
assert_type(solve_triangular(i8_3d, i8_1d), onp.ArrayND[np.float64])
111+
112+
assert_type(solve_triangular(f16_2d, f16_1d), onp.Array1D[np.float32])
113+
assert_type(solve_triangular(f16_2d, f16_2d), onp.Array2D[np.float32])
114+
assert_type(solve_triangular(f16_2d, f16_3d), onp.ArrayND[np.float32])
115+
assert_type(solve_triangular(f16_3d, f16_1d), onp.ArrayND[np.float32])
116+
117+
assert_type(solve_triangular(f32_2d, f32_1d), onp.Array1D[np.float32])
118+
assert_type(solve_triangular(f32_2d, f32_2d), onp.Array2D[np.float32])
119+
assert_type(solve_triangular(f32_2d, f32_3d), onp.ArrayND[np.float32])
120+
assert_type(solve_triangular(f32_3d, f32_1d), onp.ArrayND[np.float32])
121+
122+
assert_type(solve_triangular(f64_2d, f64_1d), onp.Array1D[np.float64])
123+
assert_type(solve_triangular(f64_2d, f64_2d), onp.Array2D[np.float64])
124+
assert_type(solve_triangular(f64_2d, f64_3d), onp.ArrayND[np.float64])
125+
assert_type(solve_triangular(f64_3d, f64_1d), onp.ArrayND[np.float64])
126+
127+
assert_type(solve_triangular(f80_2d, f80_1d), onp.Array1D[np.float64])
128+
assert_type(solve_triangular(f80_2d, f80_2d), onp.Array2D[np.float64])
129+
assert_type(solve_triangular(f80_2d, f80_3d), onp.ArrayND[np.float64])
130+
assert_type(solve_triangular(f80_3d, f80_1d), onp.ArrayND[np.float64])
131+
132+
assert_type(solve_triangular(c64_2d, c64_1d), onp.Array1D[np.complex64])
133+
assert_type(solve_triangular(c64_2d, c64_2d), onp.Array2D[np.complex64])
134+
assert_type(solve_triangular(c64_2d, c64_3d), onp.ArrayND[np.complex64])
135+
assert_type(solve_triangular(c64_3d, c64_1d), onp.ArrayND[np.complex64])
136+
137+
assert_type(solve_triangular(c128_2d, c128_1d), onp.Array1D[np.complex128])
138+
assert_type(solve_triangular(c128_2d, c128_2d), onp.Array2D[np.complex128])
139+
assert_type(solve_triangular(c128_2d, c128_3d), onp.ArrayND[np.complex128])
140+
assert_type(solve_triangular(c128_3d, c128_1d), onp.ArrayND[np.complex128])
141+
142+
assert_type(solve_triangular(c160_2d, c160_1d), onp.Array1D[np.complex128])
143+
assert_type(solve_triangular(c160_2d, c160_2d), onp.Array2D[np.complex128])
144+
assert_type(solve_triangular(c160_2d, c160_3d), onp.ArrayND[np.complex128])
145+
assert_type(solve_triangular(c160_3d, c160_1d), onp.ArrayND[np.complex128])
146+
147+
assert_type(solve_triangular(py_f_2d, py_f_1d), onp.Array1D[np.float64])
148+
assert_type(solve_triangular(py_f_2d, py_f_2d), onp.Array2D[np.float64])
149+
assert_type(solve_triangular(py_f_2d, py_f_3d), onp.ArrayND[np.float64])
150+
assert_type(solve_triangular(py_f_3d, py_f_1d), onp.ArrayND[np.float64])
151+
152+
assert_type(solve_triangular(py_c_2d, py_c_1d), onp.Array1D[np.complex128])
153+
assert_type(solve_triangular(py_c_2d, py_c_2d), onp.Array2D[np.complex128])
154+
assert_type(solve_triangular(py_c_2d, py_c_3d), onp.ArrayND[np.complex128])
155+
assert_type(solve_triangular(py_c_3d, py_c_1d), onp.ArrayND[np.complex128])
156+
157+
###
158+
# solve_banded
159+
160+
assert_type(solve_banded((1, 2), i8_2d, i8_1d), onp.Array1D[np.float64])
161+
assert_type(solve_banded((1, 2), i8_2d, i8_2d), onp.Array2D[np.float64])
162+
assert_type(solve_banded((1, 2), i8_2d, i8_3d), onp.ArrayND[np.float64])
163+
assert_type(solve_banded((1, 2), i8_3d, i8_1d), onp.ArrayND[np.float64])
164+
165+
assert_type(solve_banded((1, 2), f16_2d, f16_1d), onp.Array1D[np.float32])
166+
assert_type(solve_banded((1, 2), f16_2d, f16_2d), onp.Array2D[np.float32])
167+
assert_type(solve_banded((1, 2), f16_2d, f16_3d), onp.ArrayND[np.float32])
168+
assert_type(solve_banded((1, 2), f16_3d, f16_1d), onp.ArrayND[np.float32])
169+
170+
assert_type(solve_banded((1, 2), f32_2d, f32_1d), onp.Array1D[np.float32])
171+
assert_type(solve_banded((1, 2), f32_2d, f32_2d), onp.Array2D[np.float32])
172+
assert_type(solve_banded((1, 2), f32_2d, f32_3d), onp.ArrayND[np.float32])
173+
assert_type(solve_banded((1, 2), f32_3d, f32_1d), onp.ArrayND[np.float32])
174+
175+
assert_type(solve_banded((1, 2), f64_2d, f64_1d), onp.Array1D[np.float64])
176+
assert_type(solve_banded((1, 2), f64_2d, f64_2d), onp.Array2D[np.float64])
177+
assert_type(solve_banded((1, 2), f64_2d, f64_3d), onp.ArrayND[np.float64])
178+
assert_type(solve_banded((1, 2), f64_3d, f64_1d), onp.ArrayND[np.float64])
179+
180+
assert_type(solve_banded((1, 2), f80_2d, f80_1d), onp.Array1D[np.float64])
181+
assert_type(solve_banded((1, 2), f80_2d, f80_2d), onp.Array2D[np.float64])
182+
assert_type(solve_banded((1, 2), f80_2d, f80_3d), onp.ArrayND[np.float64])
183+
assert_type(solve_banded((1, 2), f80_3d, f80_1d), onp.ArrayND[np.float64])
184+
185+
assert_type(solve_banded((1, 2), c64_2d, c64_1d), onp.Array1D[np.complex64])
186+
assert_type(solve_banded((1, 2), c64_2d, c64_2d), onp.Array2D[np.complex64])
187+
assert_type(solve_banded((1, 2), c64_2d, c64_3d), onp.ArrayND[np.complex64])
188+
assert_type(solve_banded((1, 2), c64_3d, c64_1d), onp.ArrayND[np.complex64])
189+
190+
assert_type(solve_banded((1, 2), c128_2d, c128_1d), onp.Array1D[np.complex128])
191+
assert_type(solve_banded((1, 2), c128_2d, c128_2d), onp.Array2D[np.complex128])
192+
assert_type(solve_banded((1, 2), c128_2d, c128_3d), onp.ArrayND[np.complex128])
193+
assert_type(solve_banded((1, 2), c128_3d, c128_1d), onp.ArrayND[np.complex128])
194+
195+
assert_type(solve_banded((1, 2), c160_2d, c160_1d), onp.Array1D[np.complex128])
196+
assert_type(solve_banded((1, 2), c160_2d, c160_2d), onp.Array2D[np.complex128])
197+
assert_type(solve_banded((1, 2), c160_2d, c160_3d), onp.ArrayND[np.complex128])
198+
assert_type(solve_banded((1, 2), c160_3d, c160_1d), onp.ArrayND[np.complex128])
199+
200+
assert_type(solve_banded((1, 2), py_f_2d, py_f_1d), onp.Array1D[np.float64])
201+
assert_type(solve_banded((1, 2), py_f_2d, py_f_2d), onp.Array2D[np.float64])
202+
assert_type(solve_banded((1, 2), py_f_2d, py_f_3d), onp.ArrayND[np.float64])
203+
assert_type(solve_banded((1, 2), py_f_3d, py_f_1d), onp.ArrayND[np.float64])
204+
205+
assert_type(solve_banded((1, 2), py_c_2d, py_c_1d), onp.Array1D[np.complex128])
206+
assert_type(solve_banded((1, 2), py_c_2d, py_c_2d), onp.Array2D[np.complex128])
207+
assert_type(solve_banded((1, 2), py_c_2d, py_c_3d), onp.ArrayND[np.complex128])
208+
assert_type(solve_banded((1, 2), py_c_3d, py_c_1d), onp.ArrayND[np.complex128])
209+
210+
###
211+
# solveh_banded
212+
213+
assert_type(solveh_banded(i8_2d, i8_1d), onp.Array1D[np.float64])
214+
assert_type(solveh_banded(i8_2d, i8_2d), onp.Array2D[np.float64])
215+
assert_type(solveh_banded(i8_2d, i8_3d), onp.ArrayND[np.float64])
216+
assert_type(solveh_banded(i8_3d, i8_1d), onp.ArrayND[np.float64])
217+
218+
assert_type(solveh_banded(f16_2d, f16_1d), onp.Array1D[np.float32])
219+
assert_type(solveh_banded(f16_2d, f16_2d), onp.Array2D[np.float32])
220+
assert_type(solveh_banded(f16_2d, f16_3d), onp.ArrayND[np.float32])
221+
assert_type(solveh_banded(f16_3d, f16_1d), onp.ArrayND[np.float32])
222+
223+
assert_type(solveh_banded(f32_2d, f32_1d), onp.Array1D[np.float32])
224+
assert_type(solveh_banded(f32_2d, f32_2d), onp.Array2D[np.float32])
225+
assert_type(solveh_banded(f32_2d, f32_3d), onp.ArrayND[np.float32])
226+
assert_type(solveh_banded(f32_3d, f32_1d), onp.ArrayND[np.float32])
227+
228+
assert_type(solveh_banded(f64_2d, f64_1d), onp.Array1D[np.float64])
229+
assert_type(solveh_banded(f64_2d, f64_2d), onp.Array2D[np.float64])
230+
assert_type(solveh_banded(f64_2d, f64_3d), onp.ArrayND[np.float64])
231+
assert_type(solveh_banded(f64_3d, f64_1d), onp.ArrayND[np.float64])
232+
233+
assert_type(solveh_banded(f80_2d, f80_1d), onp.Array1D[np.float64])
234+
assert_type(solveh_banded(f80_2d, f80_2d), onp.Array2D[np.float64])
235+
assert_type(solveh_banded(f80_2d, f80_3d), onp.ArrayND[np.float64])
236+
assert_type(solveh_banded(f80_3d, f80_1d), onp.ArrayND[np.float64])
237+
238+
assert_type(solveh_banded(c64_2d, c64_1d), onp.Array1D[np.complex64])
239+
assert_type(solveh_banded(c64_2d, c64_2d), onp.Array2D[np.complex64])
240+
assert_type(solveh_banded(c64_2d, c64_3d), onp.ArrayND[np.complex64])
241+
assert_type(solveh_banded(c64_3d, c64_1d), onp.ArrayND[np.complex64])
242+
243+
assert_type(solveh_banded(c128_2d, c128_1d), onp.Array1D[np.complex128])
244+
assert_type(solveh_banded(c128_2d, c128_2d), onp.Array2D[np.complex128])
245+
assert_type(solveh_banded(c128_2d, c128_3d), onp.ArrayND[np.complex128])
246+
assert_type(solveh_banded(c128_3d, c128_1d), onp.ArrayND[np.complex128])
247+
248+
assert_type(solveh_banded(c160_2d, c160_1d), onp.Array1D[np.complex128])
249+
assert_type(solveh_banded(c160_2d, c160_2d), onp.Array2D[np.complex128])
250+
assert_type(solveh_banded(c160_2d, c160_3d), onp.ArrayND[np.complex128])
251+
assert_type(solveh_banded(c160_3d, c160_1d), onp.ArrayND[np.complex128])
252+
253+
assert_type(solveh_banded(py_f_2d, py_f_1d), onp.Array1D[np.float64])
254+
assert_type(solveh_banded(py_f_2d, py_f_2d), onp.Array2D[np.float64])
255+
assert_type(solveh_banded(py_f_2d, py_f_3d), onp.ArrayND[np.float64])
256+
assert_type(solveh_banded(py_f_3d, py_f_1d), onp.ArrayND[np.float64])
257+
258+
assert_type(solveh_banded(py_c_2d, py_c_1d), onp.Array1D[np.complex128])
259+
assert_type(solveh_banded(py_c_2d, py_c_2d), onp.Array2D[np.complex128])
260+
assert_type(solveh_banded(py_c_2d, py_c_3d), onp.ArrayND[np.complex128])
261+
assert_type(solveh_banded(py_c_3d, py_c_1d), onp.ArrayND[np.complex128])
262+
263+
###
264+
# solve_toeplitz
265+
266+
assert_type(solve_toeplitz(i8_1d, i8_1d), onp.Array1D[np.float64])
267+
assert_type(solve_toeplitz(i8_1d, i8_2d), onp.Array2D[np.float64])
268+
assert_type(solve_toeplitz(i8_1d, i8_3d), onp.ArrayND[np.float64])
269+
assert_type(solve_toeplitz(i8_2d, i8_1d), onp.ArrayND[np.float64])
270+
271+
assert_type(solve_toeplitz(f16_1d, f16_1d), onp.Array1D[np.float64])
272+
assert_type(solve_toeplitz(f16_1d, f16_2d), onp.Array2D[np.float64])
273+
assert_type(solve_toeplitz(f16_1d, f16_3d), onp.ArrayND[np.float64])
274+
assert_type(solve_toeplitz(f16_2d, f16_1d), onp.ArrayND[np.float64])
275+
276+
assert_type(solve_toeplitz(f32_1d, f32_1d), onp.Array1D[np.float64])
277+
assert_type(solve_toeplitz(f32_1d, f32_2d), onp.Array2D[np.float64])
278+
assert_type(solve_toeplitz(f32_1d, f32_3d), onp.ArrayND[np.float64])
279+
assert_type(solve_toeplitz(f32_2d, f32_1d), onp.ArrayND[np.float64])
280+
281+
assert_type(solve_toeplitz(f64_1d, f64_1d), onp.Array1D[np.float64])
282+
assert_type(solve_toeplitz(f64_1d, f64_2d), onp.Array2D[np.float64])
283+
assert_type(solve_toeplitz(f64_1d, f64_3d), onp.ArrayND[np.float64])
284+
assert_type(solve_toeplitz(f64_2d, f64_1d), onp.ArrayND[np.float64])
285+
286+
assert_type(solve_toeplitz(f80_1d, f80_1d), onp.Array1D[np.float64])
287+
assert_type(solve_toeplitz(f80_1d, f80_2d), onp.Array2D[np.float64])
288+
assert_type(solve_toeplitz(f80_1d, f80_3d), onp.ArrayND[np.float64])
289+
assert_type(solve_toeplitz(f80_2d, f80_1d), onp.ArrayND[np.float64])
290+
291+
assert_type(solve_toeplitz(c64_1d, c64_1d), onp.Array1D[np.complex128])
292+
assert_type(solve_toeplitz(c64_1d, c64_2d), onp.Array2D[np.complex128])
293+
assert_type(solve_toeplitz(c64_1d, c64_3d), onp.ArrayND[np.complex128])
294+
assert_type(solve_toeplitz(c64_2d, c64_1d), onp.ArrayND[np.complex128])
295+
296+
assert_type(solve_toeplitz(c128_1d, c128_1d), onp.Array1D[np.complex128])
297+
assert_type(solve_toeplitz(c128_1d, c128_2d), onp.Array2D[np.complex128])
298+
assert_type(solve_toeplitz(c128_1d, c128_3d), onp.ArrayND[np.complex128])
299+
assert_type(solve_toeplitz(c128_2d, c128_1d), onp.ArrayND[np.complex128])
300+
301+
assert_type(solve_toeplitz(c160_1d, c160_1d), onp.Array1D[np.complex128])
302+
assert_type(solve_toeplitz(c160_1d, c160_2d), onp.Array2D[np.complex128])
303+
assert_type(solve_toeplitz(c160_1d, c160_3d), onp.ArrayND[np.complex128])
304+
assert_type(solve_toeplitz(c160_2d, c160_1d), onp.ArrayND[np.complex128])
305+
306+
assert_type(solve_toeplitz(py_f_1d, py_f_1d), onp.Array1D[np.float64])
307+
assert_type(solve_toeplitz(py_f_1d, py_f_2d), onp.Array2D[np.float64])
308+
assert_type(solve_toeplitz(py_f_1d, py_f_3d), onp.ArrayND[np.float64])
309+
assert_type(solve_toeplitz(py_f_2d, py_f_1d), onp.ArrayND[np.float64])
310+
311+
assert_type(solve_toeplitz(py_c_1d, py_c_1d), onp.Array1D[np.complex128])
312+
assert_type(solve_toeplitz(py_c_1d, py_c_2d), onp.Array2D[np.complex128])
313+
assert_type(solve_toeplitz(py_c_1d, py_c_3d), onp.ArrayND[np.complex128])
314+
assert_type(solve_toeplitz(py_c_2d, py_c_1d), onp.ArrayND[np.complex128])
315+
316+
###
317+
# solve_circulant
318+
319+
assert_type(solve_circulant(i8_1d, i8_1d), onp.Array1D[np.float64])
320+
assert_type(solve_circulant(i8_1d, i8_2d), onp.Array2D[np.float64])
321+
assert_type(solve_circulant(i8_1d, i8_3d), onp.ArrayND[np.float64])
322+
assert_type(solve_circulant(i8_2d, i8_1d), onp.ArrayND[np.float64])
323+
324+
assert_type(solve_circulant(f16_1d, f16_1d), onp.Array1D[np.float32])
325+
assert_type(solve_circulant(f16_1d, f16_2d), onp.Array2D[np.float32])
326+
assert_type(solve_circulant(f16_1d, f16_3d), onp.ArrayND[np.float32])
327+
assert_type(solve_circulant(f16_2d, f16_1d), onp.ArrayND[np.float32])
328+
329+
assert_type(solve_circulant(f32_1d, f32_1d), onp.Array1D[np.float32])
330+
assert_type(solve_circulant(f32_1d, f32_2d), onp.Array2D[np.float32])
331+
assert_type(solve_circulant(f32_1d, f32_3d), onp.ArrayND[np.float32])
332+
assert_type(solve_circulant(f32_2d, f32_1d), onp.ArrayND[np.float32])
333+
334+
assert_type(solve_circulant(f64_1d, f64_1d), onp.Array1D[np.float64])
335+
assert_type(solve_circulant(f64_1d, f64_2d), onp.Array2D[np.float64])
336+
assert_type(solve_circulant(f64_1d, f64_3d), onp.ArrayND[np.float64])
337+
assert_type(solve_circulant(f64_2d, f64_1d), onp.ArrayND[np.float64])
338+
339+
assert_type(solve_circulant(f80_1d, f80_1d), onp.Array1D[npc.floating])
340+
assert_type(solve_circulant(f80_1d, f80_2d), onp.Array2D[npc.floating])
341+
assert_type(solve_circulant(f80_1d, f80_3d), onp.ArrayND[npc.floating])
342+
assert_type(solve_circulant(f80_2d, f80_1d), onp.ArrayND[npc.floating])
343+
344+
assert_type(solve_circulant(c64_1d, c64_1d), onp.Array1D[np.complex64])
345+
assert_type(solve_circulant(c64_1d, c64_2d), onp.Array2D[np.complex64])
346+
assert_type(solve_circulant(c64_1d, c64_3d), onp.ArrayND[np.complex64])
347+
assert_type(solve_circulant(c64_2d, c64_1d), onp.ArrayND[np.complex64])
348+
349+
assert_type(solve_circulant(c128_1d, c128_1d), onp.Array1D[np.complex128])
350+
assert_type(solve_circulant(c128_1d, c128_2d), onp.Array2D[np.complex128])
351+
assert_type(solve_circulant(c128_1d, c128_3d), onp.ArrayND[np.complex128])
352+
assert_type(solve_circulant(c128_2d, c128_1d), onp.ArrayND[np.complex128])
353+
354+
assert_type(solve_circulant(c160_1d, c160_1d), onp.Array1D[npc.complexfloating])
355+
assert_type(solve_circulant(c160_1d, c160_2d), onp.Array2D[npc.complexfloating])
356+
assert_type(solve_circulant(c160_1d, c160_3d), onp.ArrayND[npc.complexfloating])
357+
assert_type(solve_circulant(c160_2d, c160_1d), onp.ArrayND[npc.complexfloating])
358+
359+
assert_type(solve_circulant(py_f_1d, py_f_1d), onp.Array1D[np.float64])
360+
assert_type(solve_circulant(py_f_1d, py_f_2d), onp.Array2D[np.float64])
361+
assert_type(solve_circulant(py_f_1d, py_f_3d), onp.ArrayND[np.float64])
362+
assert_type(solve_circulant(py_f_2d, py_f_1d), onp.ArrayND[np.float64])
363+
364+
assert_type(solve_circulant(py_c_1d, py_c_1d), onp.Array1D[np.complex128])
365+
assert_type(solve_circulant(py_c_1d, py_c_2d), onp.Array2D[np.complex128])
366+
assert_type(solve_circulant(py_c_1d, py_c_3d), onp.ArrayND[np.complex128])
367+
assert_type(solve_circulant(py_c_2d, py_c_1d), onp.ArrayND[np.complex128])
368+
369+
###
370+
# TODO(jorenham): inv, pinv, pinvh, det, lstsq, matrix_balance, matmul_toeplitz

0 commit comments

Comments
 (0)