Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
reference/band.hpp
Go to the documentation of this file.
1#pragma once
2
10#include <uni20/config.hpp>
11
13{
14
15namespace detail
16{
17extern "C"
18{
19 void sgbsv_(blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs, float* ab,
20 blas_int const* ldab, blas_int* ipiv, float* b, blas_int const* ldb, blas_int* info);
21
22 void dgbsv_(blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs, double* ab,
23 blas_int const* ldab, blas_int* ipiv, double* b, blas_int const* ldb, blas_int* info);
24
25 void sgbtrf_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, float* ab,
26 blas_int const* ldab, blas_int* ipiv, blas_int* info);
27
28 void dgbtrf_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, double* ab,
29 blas_int const* ldab, blas_int* ipiv, blas_int* info);
30
31 void sgbtrs_(char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs,
32 float* ab, blas_int const* ldab, blas_int const* ipiv, float* b, blas_int const* ldb, blas_int* info);
33
34 void dgbtrs_(char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs,
35 double* ab, blas_int const* ldab, blas_int const* ipiv, double* b, blas_int const* ldb, blas_int* info);
36
37 void sgbcon_(char const* norm, blas_int const* n, blas_int const* kl, blas_int const* ku, float* ab,
38 blas_int const* ldab, blas_int const* ipiv, float const* anorm, float* rcond, float* work,
39 blas_int* iwork, blas_int* info);
40
41 void dgbcon_(char const* norm, blas_int const* n, blas_int const* kl, blas_int const* ku, double* ab,
42 blas_int const* ldab, blas_int const* ipiv, double const* anorm, double* rcond, double* work,
43 blas_int* iwork, blas_int* info);
44
45 void sgbrfs_(char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs,
46 float* ab, blas_int const* ldab, float* afb, blas_int const* ldafb, blas_int const* ipiv, float* b,
47 blas_int const* ldb, float* x, blas_int const* ldx, float* ferr, float* berr, float* work,
48 blas_int* iwork, blas_int* info);
49
50 void dgbrfs_(char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku, blas_int const* nrhs,
51 double* ab, blas_int const* ldab, double* afb, blas_int const* ldafb, blas_int const* ipiv, double* b,
52 blas_int const* ldb, double* x, blas_int const* ldx, double* ferr, double* berr, double* work,
53 blas_int* iwork, blas_int* info);
54
55 void sgbsvx_(char const* fact, char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku,
56 blas_int const* nrhs, float* ab, blas_int const* ldab, float* afb, blas_int const* ldafb, blas_int* ipiv,
57 char* equed, float* row_scale, float* column_scale, float* b, blas_int const* ldb, float* x,
58 blas_int const* ldx, float* rcond, float* ferr, float* berr, float* work, blas_int* iwork,
59 blas_int* info);
60
61 void dgbsvx_(char const* fact, char const* trans, blas_int const* n, blas_int const* kl, blas_int const* ku,
62 blas_int const* nrhs, double* ab, blas_int const* ldab, double* afb, blas_int const* ldafb,
63 blas_int* ipiv, char* equed, double* row_scale, double* column_scale, double* b, blas_int const* ldb,
64 double* x, blas_int const* ldx, double* rcond, double* ferr, double* berr, double* work, blas_int* iwork,
65 blas_int* info);
66
67 void sgbequ_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, float* ab,
68 blas_int const* ldab, float* row_scale, float* column_scale, float* row_condition,
69 float* column_condition, float* max_abs, blas_int* info);
70
71 void dgbequ_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, double* ab,
72 blas_int const* ldab, double* row_scale, double* column_scale, double* row_condition,
73 double* column_condition, double* max_abs, blas_int* info);
74
75 void sgbequb_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, float* ab,
76 blas_int const* ldab, float* row_scale, float* column_scale, float* row_condition,
77 float* column_condition, float* max_abs, blas_int* info);
78
79 void dgbequb_(blas_int const* m, blas_int const* n, blas_int const* kl, blas_int const* ku, double* ab,
80 blas_int const* ldab, double* row_scale, double* column_scale, double* row_condition,
81 double* column_condition, double* max_abs, blas_int* info);
82
83 void spbsv_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, float* ab,
84 blas_int const* ldab, float* b, blas_int const* ldb, blas_int* info);
85
86 void dpbsv_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, double* ab,
87 blas_int const* ldab, double* b, blas_int const* ldb, blas_int* info);
88
89 void spbtrf_(char const* uplo, blas_int const* n, blas_int const* kd, float* ab, blas_int const* ldab,
90 blas_int* info);
91
92 void dpbtrf_(char const* uplo, blas_int const* n, blas_int const* kd, double* ab, blas_int const* ldab,
93 blas_int* info);
94
95 void spbtrs_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, float* ab,
96 blas_int const* ldab, float* b, blas_int const* ldb, blas_int* info);
97
98 void dpbtrs_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, double* ab,
99 blas_int const* ldab, double* b, blas_int const* ldb, blas_int* info);
100
101 void spbcon_(char const* uplo, blas_int const* n, blas_int const* kd, float* ab, blas_int const* ldab,
102 float const* anorm, float* rcond, float* work, blas_int* iwork, blas_int* info);
103
104 void dpbcon_(char const* uplo, blas_int const* n, blas_int const* kd, double* ab, blas_int const* ldab,
105 double const* anorm, double* rcond, double* work, blas_int* iwork, blas_int* info);
106
107 void spbrfs_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, float* ab,
108 blas_int const* ldab, float* afb, blas_int const* ldafb, float* b, blas_int const* ldb, float* x,
109 blas_int const* ldx, float* ferr, float* berr, float* work, blas_int* iwork, blas_int* info);
110
111 void dpbrfs_(char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs, double* ab,
112 blas_int const* ldab, double* afb, blas_int const* ldafb, double* b, blas_int const* ldb, double* x,
113 blas_int const* ldx, double* ferr, double* berr, double* work, blas_int* iwork, blas_int* info);
114
115 void spbsvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs,
116 float* ab, blas_int const* ldab, float* afb, blas_int const* ldafb, char* equed, float* scale, float* b,
117 blas_int const* ldb, float* x, blas_int const* ldx, float* rcond, float* ferr, float* berr, float* work,
118 blas_int* iwork, blas_int* info);
119
120 void dpbsvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* kd, blas_int const* nrhs,
121 double* ab, blas_int const* ldab, double* afb, blas_int const* ldafb, char* equed, double* scale,
122 double* b, blas_int const* ldb, double* x, blas_int const* ldx, double* rcond, double* ferr,
123 double* berr, double* work, blas_int* iwork, blas_int* info);
124}
125} // namespace detail
126
127[[nodiscard]] inline blas_int gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs, float* ab, blas_int ldab,
128 blas_int* ipiv, float* b, blas_int ldb)
129{
130 blas_int info = 0;
131 UNI20_EXTERNAL_API_CALL(LAPACK, sgbsv_, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
132 detail::sgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info);
133 return info;
134}
135
136[[nodiscard]] inline blas_int gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs, double* ab, blas_int ldab,
137 blas_int* ipiv, double* b, blas_int ldb)
138{
139 blas_int info = 0;
140 UNI20_EXTERNAL_API_CALL(LAPACK, dgbsv_, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
141 detail::dgbsv_(&n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info);
142 return info;
143}
144
145[[nodiscard]] inline blas_int gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku, float* ab, blas_int ldab,
146 blas_int* ipiv)
147{
148 blas_int info = 0;
149 UNI20_EXTERNAL_API_CALL(LAPACK, sgbtrf_, m, n, kl, ku, ab, ldab, ipiv);
150 detail::sgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info);
151 return info;
152}
153
154[[nodiscard]] inline blas_int gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku, double* ab, blas_int ldab,
155 blas_int* ipiv)
156{
157 blas_int info = 0;
158 UNI20_EXTERNAL_API_CALL(LAPACK, dgbtrf_, m, n, kl, ku, ab, ldab, ipiv);
159 detail::dgbtrf_(&m, &n, &kl, &ku, ab, &ldab, ipiv, &info);
160 return info;
161}
162
163[[nodiscard]] inline blas_int gbtrs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, float* ab,
164 blas_int ldab, blas_int const* ipiv, float* b, blas_int ldb)
165{
166 blas_int info = 0;
167 UNI20_EXTERNAL_API_CALL(LAPACK, sgbtrs_, trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
168 detail::sgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info);
169 return info;
170}
171
172[[nodiscard]] inline blas_int gbtrs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, double* ab,
173 blas_int ldab, blas_int const* ipiv, double* b, blas_int ldb)
174{
175 blas_int info = 0;
176 UNI20_EXTERNAL_API_CALL(LAPACK, dgbtrs_, trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
177 detail::dgbtrs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, ipiv, b, &ldb, &info);
178 return info;
179}
180
181[[nodiscard]] inline blas_int gbcon(char norm, blas_int n, blas_int kl, blas_int ku, float* ab, blas_int ldab,
182 blas_int const* ipiv, float anorm, float& rcond, float* work, blas_int* iwork)
183{
184 blas_int info = 0;
185 UNI20_EXTERNAL_API_CALL(LAPACK, sgbcon_, norm, n, kl, ku, ab, ldab, ipiv, anorm, work, iwork);
186 detail::sgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, &anorm, &rcond, work, iwork, &info);
187 return info;
188}
189
190[[nodiscard]] inline blas_int gbcon(char norm, blas_int n, blas_int kl, blas_int ku, double* ab, blas_int ldab,
191 blas_int const* ipiv, double anorm, double& rcond, double* work, blas_int* iwork)
192{
193 blas_int info = 0;
194 UNI20_EXTERNAL_API_CALL(LAPACK, dgbcon_, norm, n, kl, ku, ab, ldab, ipiv, anorm, work, iwork);
195 detail::dgbcon_(&norm, &n, &kl, &ku, ab, &ldab, ipiv, &anorm, &rcond, work, iwork, &info);
196 return info;
197}
198
199[[nodiscard]] inline blas_int gbrfs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, float* ab,
200 blas_int ldab, float* afb, blas_int ldafb, blas_int const* ipiv, float* b,
201 blas_int ldb, float* x, blas_int ldx, float* forward_error, float* backward_error,
202 float* work, blas_int* iwork)
203{
204 blas_int info = 0;
205 UNI20_EXTERNAL_API_CALL(LAPACK, sgbrfs_, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx,
206 forward_error, backward_error, work, iwork);
207 detail::sgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, forward_error,
208 backward_error, work, iwork, &info);
209 return info;
210}
211
212[[nodiscard]] inline blas_int gbrfs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, double* ab,
213 blas_int ldab, double* afb, blas_int ldafb, blas_int const* ipiv, double* b,
214 blas_int ldb, double* x, blas_int ldx, double* forward_error,
215 double* backward_error, double* work, blas_int* iwork)
216{
217 blas_int info = 0;
218 UNI20_EXTERNAL_API_CALL(LAPACK, dgbrfs_, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx,
219 forward_error, backward_error, work, iwork);
220 detail::dgbrfs_(&trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, b, &ldb, x, &ldx, forward_error,
221 backward_error, work, iwork, &info);
222 return info;
223}
224
225[[nodiscard]] inline blas_int gbsvx(char fact, char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
226 float* ab, blas_int ldab, float* afb, blas_int ldafb, blas_int* ipiv, char& equed,
227 float* row_scale, float* column_scale, float* b, blas_int ldb, float* x,
228 blas_int ldx, float& rcond, float* forward_error, float* backward_error,
229 float* work, blas_int* iwork)
230{
231 blas_int info = 0;
232 UNI20_EXTERNAL_API_CALL(LAPACK, sgbsvx_, fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, equed, row_scale,
233 column_scale, b, ldb, x, ldx, work, iwork);
234 detail::sgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, row_scale, column_scale, b,
235 &ldb, x, &ldx, &rcond, forward_error, backward_error, work, iwork, &info);
236 return info;
237}
238
239[[nodiscard]] inline blas_int gbsvx(char fact, char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
240 double* ab, blas_int ldab, double* afb, blas_int ldafb, blas_int* ipiv, char& equed,
241 double* row_scale, double* column_scale, double* b, blas_int ldb, double* x,
242 blas_int ldx, double& rcond, double* forward_error, double* backward_error,
243 double* work, blas_int* iwork)
244{
245 blas_int info = 0;
246 UNI20_EXTERNAL_API_CALL(LAPACK, dgbsvx_, fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, equed, row_scale,
247 column_scale, b, ldb, x, ldx, work, iwork);
248 detail::dgbsvx_(&fact, &trans, &n, &kl, &ku, &nrhs, ab, &ldab, afb, &ldafb, ipiv, &equed, row_scale, column_scale, b,
249 &ldb, x, &ldx, &rcond, forward_error, backward_error, work, iwork, &info);
250 return info;
251}
252
253[[nodiscard]] inline blas_int gbequ(bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku, float* ab,
254 blas_int ldab, float* row_scale, float* column_scale, float& row_condition,
255 float& column_condition, float& max_abs)
256{
257 blas_int info = 0;
258 if (power_of_two)
259 {
260 UNI20_EXTERNAL_API_CALL(LAPACK, sgbequb_, m, n, kl, ku, ab, ldab, row_scale, column_scale);
261 detail::sgbequb_(&m, &n, &kl, &ku, ab, &ldab, row_scale, column_scale, &row_condition, &column_condition, &max_abs,
262 &info);
263 }
264 else
265 {
266 UNI20_EXTERNAL_API_CALL(LAPACK, sgbequ_, m, n, kl, ku, ab, ldab, row_scale, column_scale);
267 detail::sgbequ_(&m, &n, &kl, &ku, ab, &ldab, row_scale, column_scale, &row_condition, &column_condition, &max_abs,
268 &info);
269 }
270 return info;
271}
272
273[[nodiscard]] inline blas_int gbequ(bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku, double* ab,
274 blas_int ldab, double* row_scale, double* column_scale, double& row_condition,
275 double& column_condition, double& max_abs)
276{
277 blas_int info = 0;
278 if (power_of_two)
279 {
280 UNI20_EXTERNAL_API_CALL(LAPACK, dgbequb_, m, n, kl, ku, ab, ldab, row_scale, column_scale);
281 detail::dgbequb_(&m, &n, &kl, &ku, ab, &ldab, row_scale, column_scale, &row_condition, &column_condition, &max_abs,
282 &info);
283 }
284 else
285 {
286 UNI20_EXTERNAL_API_CALL(LAPACK, dgbequ_, m, n, kl, ku, ab, ldab, row_scale, column_scale);
287 detail::dgbequ_(&m, &n, &kl, &ku, ab, &ldab, row_scale, column_scale, &row_condition, &column_condition, &max_abs,
288 &info);
289 }
290 return info;
291}
292
293[[nodiscard]] inline blas_int pbsv(char uplo, blas_int n, blas_int kd, blas_int nrhs, float* ab, blas_int ldab,
294 float* b, blas_int ldb)
295{
296 blas_int info = 0;
297 UNI20_EXTERNAL_API_CALL(LAPACK, spbsv_, uplo, n, kd, nrhs, ab, ldab, b, ldb);
298 detail::spbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info);
299 return info;
300}
301
302[[nodiscard]] inline blas_int pbsv(char uplo, blas_int n, blas_int kd, blas_int nrhs, double* ab, blas_int ldab,
303 double* b, blas_int ldb)
304{
305 blas_int info = 0;
306 UNI20_EXTERNAL_API_CALL(LAPACK, dpbsv_, uplo, n, kd, nrhs, ab, ldab, b, ldb);
307 detail::dpbsv_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info);
308 return info;
309}
310
311[[nodiscard]] inline blas_int pbtrf(char uplo, blas_int n, blas_int kd, float* ab, blas_int ldab)
312{
313 blas_int info = 0;
314 UNI20_EXTERNAL_API_CALL(LAPACK, spbtrf_, uplo, n, kd, ab, ldab);
315 detail::spbtrf_(&uplo, &n, &kd, ab, &ldab, &info);
316 return info;
317}
318
319[[nodiscard]] inline blas_int pbtrf(char uplo, blas_int n, blas_int kd, double* ab, blas_int ldab)
320{
321 blas_int info = 0;
322 UNI20_EXTERNAL_API_CALL(LAPACK, dpbtrf_, uplo, n, kd, ab, ldab);
323 detail::dpbtrf_(&uplo, &n, &kd, ab, &ldab, &info);
324 return info;
325}
326
327[[nodiscard]] inline blas_int pbtrs(char uplo, blas_int n, blas_int kd, blas_int nrhs, float* ab, blas_int ldab,
328 float* b, blas_int ldb)
329{
330 blas_int info = 0;
331 UNI20_EXTERNAL_API_CALL(LAPACK, spbtrs_, uplo, n, kd, nrhs, ab, ldab, b, ldb);
332 detail::spbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info);
333 return info;
334}
335
336[[nodiscard]] inline blas_int pbtrs(char uplo, blas_int n, blas_int kd, blas_int nrhs, double* ab, blas_int ldab,
337 double* b, blas_int ldb)
338{
339 blas_int info = 0;
340 UNI20_EXTERNAL_API_CALL(LAPACK, dpbtrs_, uplo, n, kd, nrhs, ab, ldab, b, ldb);
341 detail::dpbtrs_(&uplo, &n, &kd, &nrhs, ab, &ldab, b, &ldb, &info);
342 return info;
343}
344
345[[nodiscard]] inline blas_int pbcon(char uplo, blas_int n, blas_int kd, float* ab, blas_int ldab, float anorm,
346 float& rcond, float* work, blas_int* iwork)
347{
348 blas_int info = 0;
349 UNI20_EXTERNAL_API_CALL(LAPACK, spbcon_, uplo, n, kd, ab, ldab, anorm, work, iwork);
350 detail::spbcon_(&uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork, &info);
351 return info;
352}
353
354[[nodiscard]] inline blas_int pbcon(char uplo, blas_int n, blas_int kd, double* ab, blas_int ldab, double anorm,
355 double& rcond, double* work, blas_int* iwork)
356{
357 blas_int info = 0;
358 UNI20_EXTERNAL_API_CALL(LAPACK, dpbcon_, uplo, n, kd, ab, ldab, anorm, work, iwork);
359 detail::dpbcon_(&uplo, &n, &kd, ab, &ldab, &anorm, &rcond, work, iwork, &info);
360 return info;
361}
362
363[[nodiscard]] inline blas_int pbrfs(char uplo, blas_int n, blas_int kd, blas_int nrhs, float* ab, blas_int ldab,
364 float* afb, blas_int ldafb, float* b, blas_int ldb, float* x, blas_int ldx,
365 float* forward_error, float* backward_error, float* work, blas_int* iwork)
366{
367 blas_int info = 0;
368 UNI20_EXTERNAL_API_CALL(LAPACK, spbrfs_, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, ldx, forward_error,
369 backward_error, work, iwork);
370 detail::spbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, forward_error, backward_error, work,
371 iwork, &info);
372 return info;
373}
374
375[[nodiscard]] inline blas_int pbrfs(char uplo, blas_int n, blas_int kd, blas_int nrhs, double* ab, blas_int ldab,
376 double* afb, blas_int ldafb, double* b, blas_int ldb, double* x, blas_int ldx,
377 double* forward_error, double* backward_error, double* work, blas_int* iwork)
378{
379 blas_int info = 0;
380 UNI20_EXTERNAL_API_CALL(LAPACK, dpbrfs_, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, ldx, forward_error,
381 backward_error, work, iwork);
382 detail::dpbrfs_(&uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, b, &ldb, x, &ldx, forward_error, backward_error, work,
383 iwork, &info);
384 return info;
385}
386
387[[nodiscard]] inline blas_int pbsvx(char fact, char uplo, blas_int n, blas_int kd, blas_int nrhs, float* ab,
388 blas_int ldab, float* afb, blas_int ldafb, char& equed, float* scale, float* b,
389 blas_int ldb, float* x, blas_int ldx, float& rcond, float* forward_error,
390 float* backward_error, float* work, blas_int* iwork)
391{
392 blas_int info = 0;
393 UNI20_EXTERNAL_API_CALL(LAPACK, spbsvx_, fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, equed, scale, b, ldb, x, ldx,
394 work, iwork);
395 detail::spbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, scale, b, &ldb, x, &ldx, &rcond,
396 forward_error, backward_error, work, iwork, &info);
397 return info;
398}
399
400[[nodiscard]] inline blas_int pbsvx(char fact, char uplo, blas_int n, blas_int kd, blas_int nrhs, double* ab,
401 blas_int ldab, double* afb, blas_int ldafb, char& equed, double* scale, double* b,
402 blas_int ldb, double* x, blas_int ldx, double& rcond, double* forward_error,
403 double* backward_error, double* work, blas_int* iwork)
404{
405 blas_int info = 0;
406 UNI20_EXTERNAL_API_CALL(LAPACK, dpbsvx_, fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, equed, scale, b, ldb, x, ldx,
407 work, iwork);
408 detail::dpbsvx_(&fact, &uplo, &n, &kd, &nrhs, ab, &ldab, afb, &ldafb, &equed, scale, b, &ldb, x, &ldx, &rcond,
409 forward_error, backward_error, work, iwork, &info);
410 return info;
411}
412
413} // namespace uni20::lapack::unchecked
#define UNI20_EXTERNAL_API_CALL(module, func,...)
Emits a trace log entry for an outgoing backend API call.
Definition backend.hpp:90
Definition mplapack/band.hpp:25
blas_int gbrfs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, blas_int const *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:80
blas_int pbtrs(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:161
blas_int gbtrs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:53
blas_int pbrfs(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:183
blas_int pbsvx(char fact, char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, char &equed, uni20::float128 *scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:198
blas_int gbcon(char norm, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, blas_int const *ipiv, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:66
blas_int gbequ(bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 &row_condition, uni20::float128 &column_condition, uni20::float128 &max_abs)
Definition mplapack/band.hpp:119
blas_int pbsv(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:142
blas_int pbtrf(char uplo, blas_int n, blas_int kd, uni20::float128 *ab, blas_int ldab)
Definition mplapack/band.hpp:152
blas_int gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, blas_int *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:27
blas_int pbcon(char uplo, blas_int n, blas_int kd, uni20::float128 *ab, blas_int ldab, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:171
blas_int gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, blas_int *ipiv)
Definition mplapack/band.hpp:40
blas_int gbsvx(char fact, char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, blas_int *ipiv, char &equed, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:98
mpreal norm(mpcomplex const &z)
Definition mpcomplex.hpp:494
void scale(Tensor &tensor, Scalar factor)
Multiply every stored numerical block by a scalar in place.
Definition block_tensor_linear.hpp:400