Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
reference/general.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 sgesv_(blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, blas_int* ipiv, float* b,
20 blas_int const* ldb, blas_int* info);
21
22 void dgesv_(blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, blas_int* ipiv, double* b,
23 blas_int const* ldb, blas_int* info);
24
25 void cgesv_(blas_int const* n, blas_int const* nrhs, uni20::complex<float>* a, blas_int const* lda, blas_int* ipiv,
26 uni20::complex<float>* b, blas_int const* ldb, blas_int* info);
27
28 void zgesv_(blas_int const* n, blas_int const* nrhs, uni20::complex<double>* a, blas_int const* lda, blas_int* ipiv,
29 uni20::complex<double>* b, blas_int const* ldb, blas_int* info);
30
31 void sgesvx_(char const* fact, char const* trans, blas_int const* n, blas_int const* nrhs, float* a,
32 blas_int const* lda, float* af, blas_int const* ldaf, blas_int* ipiv, char* equed, float* r, float* c,
33 float* b, blas_int const* ldb, float* x, blas_int const* ldx, float* rcond, float* ferr, float* berr,
34 float* work, blas_int* iwork, blas_int* info);
35
36 void dgesvx_(char const* fact, char const* trans, blas_int const* n, blas_int const* nrhs, double* a,
37 blas_int const* lda, double* af, blas_int const* ldaf, blas_int* ipiv, char* equed, double* r, double* c,
38 double* b, blas_int const* ldb, double* x, blas_int const* ldx, double* rcond, double* ferr,
39 double* berr, double* work, blas_int* iwork, blas_int* info);
40
41 void sgeequ_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* r, float* c, float* rowcnd,
42 float* colcnd, float* amax, blas_int* info);
43
44 void dgeequ_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* r, double* c,
45 double* rowcnd, double* colcnd, double* amax, blas_int* info);
46
47 void sgetrf_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, blas_int* ipiv, blas_int* info);
48
49 void dgetrf_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, blas_int* ipiv, blas_int* info);
50
51 void cgetrf_(blas_int const* m, blas_int const* n, uni20::complex<float>* a, blas_int const* lda, blas_int* ipiv,
52 blas_int* info);
53
54 void zgetrf_(blas_int const* m, blas_int const* n, uni20::complex<double>* a, blas_int const* lda, blas_int* ipiv,
55 blas_int* info);
56
57 void sgetrs_(char const* trans, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda,
58 blas_int const* ipiv, float* b, blas_int const* ldb, blas_int* info);
59
60 void dgetrs_(char const* trans, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda,
61 blas_int const* ipiv, double* b, blas_int const* ldb, blas_int* info);
62
63 void cgetrs_(char const* trans, blas_int const* n, blas_int const* nrhs, uni20::complex<float>* a,
64 blas_int const* lda, blas_int const* ipiv, uni20::complex<float>* b, blas_int const* ldb,
65 blas_int* info);
66
67 void zgetrs_(char const* trans, blas_int const* n, blas_int const* nrhs, uni20::complex<double>* a,
68 blas_int const* lda, blas_int const* ipiv, uni20::complex<double>* b, blas_int const* ldb,
69 blas_int* info);
70
71 void sgerfs_(char const* trans, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* af,
72 blas_int const* ldaf, blas_int const* ipiv, float* b, blas_int const* ldb, float* x, blas_int const* ldx,
73 float* ferr, float* berr, float* work, blas_int* iwork, blas_int* info);
74
75 void dgerfs_(char const* trans, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* af,
76 blas_int const* ldaf, blas_int const* ipiv, double* b, blas_int const* ldb, double* x,
77 blas_int const* ldx, double* ferr, double* berr, double* work, blas_int* iwork, blas_int* info);
78
79 void sgetri_(blas_int const* n, float* a, blas_int const* lda, blas_int* ipiv, float* work, blas_int const* lwork,
80 blas_int* info);
81
82 void dgetri_(blas_int const* n, double* a, blas_int const* lda, blas_int* ipiv, double* work, blas_int const* lwork,
83 blas_int* info);
84
85 void cgetri_(blas_int const* n, uni20::complex<float>* a, blas_int const* lda, blas_int* ipiv,
86 uni20::complex<float>* work, blas_int const* lwork, blas_int* info);
87
88 void zgetri_(blas_int const* n, uni20::complex<double>* a, blas_int const* lda, blas_int* ipiv,
89 uni20::complex<double>* work, blas_int const* lwork, blas_int* info);
90
91 void sgecon_(char const* norm, blas_int const* n, float const* a, blas_int const* lda, float const* anorm,
92 float* rcond, float* work, blas_int* iwork, blas_int* info);
93
94 void dgecon_(char const* norm, blas_int const* n, double const* a, blas_int const* lda, double const* anorm,
95 double* rcond, double* work, blas_int* iwork, blas_int* info);
96
97 void cgecon_(char const* norm, blas_int const* n, uni20::complex<float> const* a, blas_int const* lda,
98 float const* anorm, float* rcond, uni20::complex<float>* work, float* rwork, blas_int* info);
99
100 void zgecon_(char const* norm, blas_int const* n, uni20::complex<double> const* a, blas_int const* lda,
101 double const* anorm, double* rcond, uni20::complex<double>* work, double* rwork, blas_int* info);
102
103 void sgels_(char const* trans, blas_int const* m, blas_int const* n, blas_int const* nrhs, float* a,
104 blas_int const* lda, float* b, blas_int const* ldb, float* work, blas_int const* lwork, blas_int* info);
105
106 void dgels_(char const* trans, blas_int const* m, blas_int const* n, blas_int const* nrhs, double* a,
107 blas_int const* lda, double* b, blas_int const* ldb, double* work, blas_int const* lwork, blas_int* info);
108
109 void cgelss_(blas_int const* m, blas_int const* n, blas_int const* nrhs, uni20::complex<float>* a,
110 blas_int const* lda, uni20::complex<float>* b, blas_int const* ldb, float* s, float const* rcond,
111 blas_int* rank, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* info);
112
113 void zgelss_(blas_int const* m, blas_int const* n, blas_int const* nrhs, uni20::complex<double>* a,
114 blas_int const* lda, uni20::complex<double>* b, blas_int const* ldb, double* s, double const* rcond,
115 blas_int* rank, uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int* info);
116
117 void sgelss_(blas_int const* m, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* b,
118 blas_int const* ldb, float* s, float const* rcond, blas_int* rank, float* work, blas_int const* lwork,
119 blas_int* info);
120
121 void dgelss_(blas_int const* m, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* b,
122 blas_int const* ldb, double* s, double const* rcond, blas_int* rank, double* work, blas_int const* lwork,
123 blas_int* info);
124
125 void sgelsd_(blas_int const* m, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* b,
126 blas_int const* ldb, float* s, float const* rcond, blas_int* rank, float* work, blas_int const* lwork,
127 blas_int* iwork, blas_int* info);
128
129 void dgelsd_(blas_int const* m, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* b,
130 blas_int const* ldb, double* s, double const* rcond, blas_int* rank, double* work, blas_int const* lwork,
131 blas_int* iwork, blas_int* info);
132
133 void sgelsy_(blas_int const* m, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* b,
134 blas_int const* ldb, blas_int* jpvt, float const* rcond, blas_int* rank, float* work,
135 blas_int const* lwork, blas_int* info);
136
137 void dgelsy_(blas_int const* m, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* b,
138 blas_int const* ldb, blas_int* jpvt, double const* rcond, blas_int* rank, double* work,
139 blas_int const* lwork, blas_int* info);
140
141 void sgeqrf_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* tau, float* work,
142 blas_int const* lwork, blas_int* info);
143
144 void dgeqrf_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* tau, double* work,
145 blas_int const* lwork, blas_int* info);
146
147 void zgeqrf_(blas_int const* m, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
148 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int const* lwork, blas_int* info);
149
150 void cgeqrf_(blas_int const* m, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
151 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int const* lwork, blas_int* info);
152
153 void sgelqf_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* tau, float* work,
154 blas_int const* lwork, blas_int* info);
155
156 void dgelqf_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* tau, double* work,
157 blas_int const* lwork, blas_int* info);
158
159 void zgelqf_(blas_int const* m, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
160 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int const* lwork, blas_int* info);
161
162 void cgelqf_(blas_int const* m, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
163 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int const* lwork, blas_int* info);
164
165 void sgeqlf_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* tau, float* work,
166 blas_int const* lwork, blas_int* info);
167
168 void dgeqlf_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* tau, double* work,
169 blas_int const* lwork, blas_int* info);
170
171 void sgerqf_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* tau, float* work,
172 blas_int const* lwork, blas_int* info);
173
174 void dgerqf_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* tau, double* work,
175 blas_int const* lwork, blas_int* info);
176
177 void sorgqr_(blas_int const* m, blas_int const* n, blas_int const* k, float* a, blas_int const* lda, float* tau,
178 float* work, blas_int const* lwork, blas_int* info);
179
180 void dorgqr_(blas_int const* m, blas_int const* n, blas_int const* k, double* a, blas_int const* lda, double* tau,
181 double* work, blas_int const* lwork, blas_int* info);
182
183 void zungqr_(blas_int const* m, blas_int const* n, blas_int const* k, uni20::complex<double>* a, blas_int const* lda,
184 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int const* lwork, blas_int* info);
185
186 void cungqr_(blas_int const* m, blas_int const* n, blas_int const* k, uni20::complex<float>* a, blas_int const* lda,
187 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int const* lwork, blas_int* info);
188
189 void sorglq_(blas_int const* m, blas_int const* n, blas_int const* k, float* a, blas_int const* lda, float* tau,
190 float* work, blas_int const* lwork, blas_int* info);
191
192 void dorglq_(blas_int const* m, blas_int const* n, blas_int const* k, double* a, blas_int const* lda, double* tau,
193 double* work, blas_int const* lwork, blas_int* info);
194
195 void zunglq_(blas_int const* m, blas_int const* n, blas_int const* k, uni20::complex<double>* a, blas_int const* lda,
196 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int const* lwork, blas_int* info);
197
198 void cunglq_(blas_int const* m, blas_int const* n, blas_int const* k, uni20::complex<float>* a, blas_int const* lda,
199 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int const* lwork, blas_int* info);
200
201 void sorgql_(blas_int const* m, blas_int const* n, blas_int const* k, float* a, blas_int const* lda, float* tau,
202 float* work, blas_int const* lwork, blas_int* info);
203
204 void dorgql_(blas_int const* m, blas_int const* n, blas_int const* k, double* a, blas_int const* lda, double* tau,
205 double* work, blas_int const* lwork, blas_int* info);
206
207 void sorgrq_(blas_int const* m, blas_int const* n, blas_int const* k, float* a, blas_int const* lda, float* tau,
208 float* work, blas_int const* lwork, blas_int* info);
209
210 void dorgrq_(blas_int const* m, blas_int const* n, blas_int const* k, double* a, blas_int const* lda, double* tau,
211 double* work, blas_int const* lwork, blas_int* info);
212
213 void sormqr_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, float* a,
214 blas_int const* lda, float* tau, float* c, blas_int const* ldc, float* work, blas_int const* lwork,
215 blas_int* info);
216
217 void dormqr_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, double* a,
218 blas_int const* lda, double* tau, double* c, blas_int const* ldc, double* work, blas_int const* lwork,
219 blas_int* info);
220
221 void sormlq_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, float* a,
222 blas_int const* lda, float* tau, float* c, blas_int const* ldc, float* work, blas_int const* lwork,
223 blas_int* info);
224
225 void dormlq_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, double* a,
226 blas_int const* lda, double* tau, double* c, blas_int const* ldc, double* work, blas_int const* lwork,
227 blas_int* info);
228
229 void sormql_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, float* a,
230 blas_int const* lda, float* tau, float* c, blas_int const* ldc, float* work, blas_int const* lwork,
231 blas_int* info);
232
233 void dormql_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, double* a,
234 blas_int const* lda, double* tau, double* c, blas_int const* ldc, double* work, blas_int const* lwork,
235 blas_int* info);
236
237 void sormrq_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, float* a,
238 blas_int const* lda, float* tau, float* c, blas_int const* ldc, float* work, blas_int const* lwork,
239 blas_int* info);
240
241 void dormrq_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* k, double* a,
242 blas_int const* lda, double* tau, double* c, blas_int const* ldc, double* work, blas_int const* lwork,
243 blas_int* info);
244
245 void sgebrd_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* d, float* e, float* tauq,
246 float* taup, float* work, blas_int const* lwork, blas_int* info);
247
248 void dgebrd_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* d, double* e, double* tauq,
249 double* taup, double* work, blas_int const* lwork, blas_int* info);
250
251 void sgehrd_(blas_int const* n, blas_int const* ilo, blas_int const* ihi, float* a, blas_int const* lda, float* tau,
252 float* work, blas_int const* lwork, blas_int* info);
253
254 void dgehrd_(blas_int const* n, blas_int const* ilo, blas_int const* ihi, double* a, blas_int const* lda, double* tau,
255 double* work, blas_int const* lwork, blas_int* info);
256
257 void sgeqp3_(blas_int const* m, blas_int const* n, float* a, blas_int const* lda, blas_int* jpvt, float* tau,
258 float* work, blas_int const* lwork, blas_int* info);
259
260 void dgeqp3_(blas_int const* m, blas_int const* n, double* a, blas_int const* lda, blas_int* jpvt, double* tau,
261 double* work, blas_int const* lwork, blas_int* info);
262
263 void ssytrd_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, float* d, float* e, float* tau,
264 float* work, blas_int const* lwork, blas_int* info);
265
266 void dsytrd_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, double* d, double* e, double* tau,
267 double* work, blas_int const* lwork, blas_int* info);
268
269 void ssyev_(char const* jobz, char const* uplo, blas_int const* n, float* a, blas_int const* lda, float* w,
270 float* work, blas_int const* lwork, blas_int* info);
271
272 void dsyev_(char const* jobz, char const* uplo, blas_int const* n, double* a, blas_int const* lda, double* w,
273 double* work, blas_int const* lwork, blas_int* info);
274
275 void ssyevd_(char const* jobz, char const* uplo, blas_int const* n, float* a, blas_int const* lda, float* w,
276 float* work, blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
277
278 void dsyevd_(char const* jobz, char const* uplo, blas_int const* n, double* a, blas_int const* lda, double* w,
279 double* work, blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
280
281 void ssyevr_(char const* jobz, char const* range, char const* uplo, blas_int const* n, float* a, blas_int const* lda,
282 float const* vl, float const* vu, blas_int const* il, blas_int const* iu, float const* abstol,
283 blas_int* m, float* w, float* z, blas_int const* ldz, blas_int* isuppz, float* work,
284 blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
285
286 void dsyevr_(char const* jobz, char const* range, char const* uplo, blas_int const* n, double* a, blas_int const* lda,
287 double const* vl, double const* vu, blas_int const* il, blas_int const* iu, double const* abstol,
288 blas_int* m, double* w, double* z, blas_int const* ldz, blas_int* isuppz, double* work,
289 blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
290
291 void ssygv_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, float* a,
292 blas_int const* lda, float* b, blas_int const* ldb, float* w, float* work, blas_int const* lwork,
293 blas_int* info);
294
295 void dsygv_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, double* a,
296 blas_int const* lda, double* b, blas_int const* ldb, double* w, double* work, blas_int const* lwork,
297 blas_int* info);
298
299 void ssygvd_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, float* a,
300 blas_int const* lda, float* b, blas_int const* ldb, float* w, float* work, blas_int const* lwork,
301 blas_int* iwork, blas_int const* liwork, blas_int* info);
302
303 void dsygvd_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, double* a,
304 blas_int const* lda, double* b, blas_int const* ldb, double* w, double* work, blas_int const* lwork,
305 blas_int* iwork, blas_int const* liwork, blas_int* info);
306
307 void ssygvx_(blas_int const* itype, char const* jobz, char const* range, char const* uplo, blas_int const* n,
308 float* a, blas_int const* lda, float* b, blas_int const* ldb, float const* vl, float const* vu,
309 blas_int const* il, blas_int const* iu, float const* abstol, blas_int* m, float* w, float* z,
310 blas_int const* ldz, float* work, blas_int const* lwork, blas_int* iwork, blas_int* ifail,
311 blas_int* info);
312
313 void dsygvx_(blas_int const* itype, char const* jobz, char const* range, char const* uplo, blas_int const* n,
314 double* a, blas_int const* lda, double* b, blas_int const* ldb, double const* vl, double const* vu,
315 blas_int const* il, blas_int const* iu, double const* abstol, blas_int* m, double* w, double* z,
316 blas_int const* ldz, double* work, blas_int const* lwork, blas_int* iwork, blas_int* ifail,
317 blas_int* info);
318
319 void cheev_(char const* jobz, char const* uplo, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
320 float* w, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* info);
321
322 void zheev_(char const* jobz, char const* uplo, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
323 double* w, uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int* info);
324
325 void cheevd_(char const* jobz, char const* uplo, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
326 float* w, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int const* lrwork,
327 blas_int* iwork, blas_int const* liwork, blas_int* info);
328
329 void zheevd_(char const* jobz, char const* uplo, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
330 double* w, uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int const* lrwork,
331 blas_int* iwork, blas_int const* liwork, blas_int* info);
332
333 void cheevr_(char const* jobz, char const* range, char const* uplo, blas_int const* n, uni20::complex<float>* a,
334 blas_int const* lda, float const* vl, float const* vu, blas_int const* il, blas_int const* iu,
335 float const* abstol, blas_int* m, float* w, uni20::complex<float>* z, blas_int const* ldz,
336 blas_int* isuppz, uni20::complex<float>* work, blas_int const* lwork, float* rwork,
337 blas_int const* lrwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
338
339 void zheevr_(char const* jobz, char const* range, char const* uplo, blas_int const* n, uni20::complex<double>* a,
340 blas_int const* lda, double const* vl, double const* vu, blas_int const* il, blas_int const* iu,
341 double const* abstol, blas_int* m, double* w, uni20::complex<double>* z, blas_int const* ldz,
342 blas_int* isuppz, uni20::complex<double>* work, blas_int const* lwork, double* rwork,
343 blas_int const* lrwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
344
345 void chegv_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, uni20::complex<float>* a,
346 blas_int const* lda, uni20::complex<float>* b, blas_int const* ldb, float* w, uni20::complex<float>* work,
347 blas_int const* lwork, float* rwork, blas_int* info);
348
349 void zhegv_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, uni20::complex<double>* a,
350 blas_int const* lda, uni20::complex<double>* b, blas_int const* ldb, double* w,
351 uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int* info);
352
353 void chegvd_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, uni20::complex<float>* a,
354 blas_int const* lda, uni20::complex<float>* b, blas_int const* ldb, float* w,
355 uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int const* lrwork,
356 blas_int* iwork, blas_int const* liwork, blas_int* info);
357
358 void zhegvd_(blas_int const* itype, char const* jobz, char const* uplo, blas_int const* n, uni20::complex<double>* a,
359 blas_int const* lda, uni20::complex<double>* b, blas_int const* ldb, double* w,
360 uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int const* lrwork,
361 blas_int* iwork, blas_int const* liwork, blas_int* info);
362
363 void chegvx_(blas_int const* itype, char const* jobz, char const* range, char const* uplo, blas_int const* n,
364 uni20::complex<float>* a, blas_int const* lda, uni20::complex<float>* b, blas_int const* ldb,
365 float const* vl, float const* vu, blas_int const* il, blas_int const* iu, float const* abstol,
366 blas_int* m, float* w, uni20::complex<float>* z, blas_int const* ldz, uni20::complex<float>* work,
367 blas_int const* lwork, float* rwork, blas_int* iwork, blas_int* ifail, blas_int* info);
368
369 void zhegvx_(blas_int const* itype, char const* jobz, char const* range, char const* uplo, blas_int const* n,
370 uni20::complex<double>* a, blas_int const* lda, uni20::complex<double>* b, blas_int const* ldb,
371 double const* vl, double const* vu, blas_int const* il, blas_int const* iu, double const* abstol,
372 blas_int* m, double* w, uni20::complex<double>* z, blas_int const* ldz, uni20::complex<double>* work,
373 blas_int const* lwork, double* rwork, blas_int* iwork, blas_int* ifail, blas_int* info);
374
375 void sgeev_(char const* jobvl, char const* jobvr, blas_int const* n, float* a, blas_int const* lda, float* wr,
376 float* wi, float* vl, blas_int const* ldvl, float* vr, blas_int const* ldvr, float* work,
377 blas_int const* lwork, blas_int* info);
378
379 void dgeev_(char const* jobvl, char const* jobvr, blas_int const* n, double* a, blas_int const* lda, double* wr,
380 double* wi, double* vl, blas_int const* ldvl, double* vr, blas_int const* ldvr, double* work,
381 blas_int const* lwork, blas_int* info);
382
383 void sgeevx_(char const* balanc, char const* jobvl, char const* jobvr, char const* sense, blas_int const* n, float* a,
384 blas_int const* lda, float* wr, float* wi, float* vl, blas_int const* ldvl, float* vr,
385 blas_int const* ldvr, blas_int* ilo, blas_int* ihi, float* scale, float* abnrm, float* rconde,
386 float* rcondv, float* work, blas_int const* lwork, blas_int* iwork, blas_int* info);
387
388 void dgeevx_(char const* balanc, char const* jobvl, char const* jobvr, char const* sense, blas_int const* n,
389 double* a, blas_int const* lda, double* wr, double* wi, double* vl, blas_int const* ldvl, double* vr,
390 blas_int const* ldvr, blas_int* ilo, blas_int* ihi, double* scale, double* abnrm, double* rconde,
391 double* rcondv, double* work, blas_int const* lwork, blas_int* iwork, blas_int* info);
392
393 void sgebal_(char const* job, blas_int const* n, float* a, blas_int const* lda, blas_int* ilo, blas_int* ihi,
394 float* scale, blas_int* info);
395
396 void dgebal_(char const* job, blas_int const* n, double* a, blas_int const* lda, blas_int* ilo, blas_int* ihi,
397 double* scale, blas_int* info);
398
399 void sgebak_(char const* job, char const* side, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
400 float* scale, blas_int const* m, float* v, blas_int const* ldv, blas_int* info);
401
402 void dgebak_(char const* job, char const* side, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
403 double* scale, blas_int const* m, double* v, blas_int const* ldv, blas_int* info);
404
405 void cgeev_(char const* jobvl, char const* jobvr, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
406 uni20::complex<float>* w, uni20::complex<float>* vl, blas_int const* ldvl, uni20::complex<float>* vr,
407 blas_int const* ldvr, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* info);
408
409 void zgeev_(char const* jobvl, char const* jobvr, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
411 blas_int const* ldvr, uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int* info);
412
413 void sgees_(char const* jobvs, char const* sort, void* select, blas_int const* n, float* a, blas_int const* lda,
414 blas_int* sdim, float* wr, float* wi, float* vs, blas_int const* ldvs, float* work, blas_int const* lwork,
415 blas_int* bwork, blas_int* info);
416
417 void dgees_(char const* jobvs, char const* sort, void* select, blas_int const* n, double* a, blas_int const* lda,
418 blas_int* sdim, double* wr, double* wi, double* vs, blas_int const* ldvs, double* work,
419 blas_int const* lwork, blas_int* bwork, blas_int* info);
420
421 void cgees_(char const* jobvs, char const* sort, void* select, blas_int const* n, uni20::complex<float>* a,
422 blas_int const* lda, blas_int* sdim, uni20::complex<float>* w, uni20::complex<float>* vs,
423 blas_int const* ldvs, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* bwork,
424 blas_int* info);
425
426 void zgees_(char const* jobvs, char const* sort, void* select, blas_int const* n, uni20::complex<double>* a,
427 blas_int const* lda, blas_int* sdim, uni20::complex<double>* w, uni20::complex<double>* vs,
428 blas_int const* ldvs, uni20::complex<double>* work, blas_int const* lwork, double* rwork, blas_int* bwork,
429 blas_int* info);
430
431 void shseqr_(char const* job, char const* compz, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
432 float* h, blas_int const* ldh, float* wr, float* wi, float* z, blas_int const* ldz, float* work,
433 blas_int const* lwork, blas_int* info);
434
435 void dhseqr_(char const* job, char const* compz, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
436 double* h, blas_int const* ldh, double* wr, double* wi, double* z, blas_int const* ldz, double* work,
437 blas_int const* lwork, blas_int* info);
438
439 void strexc_(char const* compq, blas_int const* n, float* t, blas_int const* ldt, float* q, blas_int const* ldq,
440 blas_int* ifst, blas_int* ilst, float* work, blas_int* info);
441
442 void dtrexc_(char const* compq, blas_int const* n, double* t, blas_int const* ldt, double* q, blas_int const* ldq,
443 blas_int* ifst, blas_int* ilst, double* work, blas_int* info);
444
445 void ctrexc_(char const* compq, blas_int const* n, uni20::complex<float>* t, blas_int const* ldt,
446 uni20::complex<float>* q, blas_int const* ldq, blas_int* ifst, blas_int* ilst, blas_int* info);
447
448 void ztrexc_(char const* compq, blas_int const* n, uni20::complex<double>* t, blas_int const* ldt,
449 uni20::complex<double>* q, blas_int const* ldq, blas_int* ifst, blas_int* ilst, blas_int* info);
450
451 void strsen_(char const* job, char const* compq, blas_int* select, blas_int const* n, float* t, blas_int const* ldt,
452 float* q, blas_int const* ldq, float* wr, float* wi, blas_int* m, float* s, float* sep, float* work,
453 blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
454
455 void dtrsen_(char const* job, char const* compq, blas_int* select, blas_int const* n, double* t, blas_int const* ldt,
456 double* q, blas_int const* ldq, double* wr, double* wi, blas_int* m, double* s, double* sep,
457 double* work, blas_int const* lwork, blas_int* iwork, blas_int const* liwork, blas_int* info);
458
459 void strevc_(char const* side, char const* howmny, blas_int* select, blas_int const* n, float* t, blas_int const* ldt,
460 float* vl, blas_int const* ldvl, float* vr, blas_int const* ldvr, blas_int const* mm, blas_int* m,
461 float* work, blas_int* info);
462
463 void dtrevc_(char const* side, char const* howmny, blas_int* select, blas_int const* n, double* t,
464 blas_int const* ldt, double* vl, blas_int const* ldvl, double* vr, blas_int const* ldvr,
465 blas_int const* mm, blas_int* m, double* work, blas_int* info);
466
467 void strsna_(char const* job, char const* howmny, blas_int* select, blas_int const* n, float* t, blas_int const* ldt,
468 float* vl, blas_int const* ldvl, float* vr, blas_int const* ldvr, float* s, float* sep,
469 blas_int const* mm, blas_int* m, float* work, blas_int const* ldwork, blas_int* iwork, blas_int* info);
470
471 void dtrsna_(char const* job, char const* howmny, blas_int* select, blas_int const* n, double* t, blas_int const* ldt,
472 double* vl, blas_int const* ldvl, double* vr, blas_int const* ldvr, double* s, double* sep,
473 blas_int const* mm, blas_int* m, double* work, blas_int const* ldwork, blas_int* iwork, blas_int* info);
474
475 void sggev_(char const* jobvl, char const* jobvr, blas_int const* n, float* a, blas_int const* lda, float* b,
476 blas_int const* ldb, float* alphar, float* alphai, float* beta, float* vl, blas_int const* ldvl,
477 float* vr, blas_int const* ldvr, float* work, blas_int const* lwork, blas_int* info);
478
479 void dggev_(char const* jobvl, char const* jobvr, blas_int const* n, double* a, blas_int const* lda, double* b,
480 blas_int const* ldb, double* alphar, double* alphai, double* beta, double* vl, blas_int const* ldvl,
481 double* vr, blas_int const* ldvr, double* work, blas_int const* lwork, blas_int* info);
482
483 void sggevx_(char const* balanc, char const* jobvl, char const* jobvr, char const* sense, blas_int const* n, float* a,
484 blas_int const* lda, float* b, blas_int const* ldb, float* alphar, float* alphai, float* beta, float* vl,
485 blas_int const* ldvl, float* vr, blas_int const* ldvr, blas_int* ilo, blas_int* ihi, float* lscale,
486 float* rscale, float* abnrm, float* bbnrm, float* rconde, float* rcondv, float* work,
487 blas_int const* lwork, blas_int* iwork, blas_int* bwork, blas_int* info);
488
489 void dggevx_(char const* balanc, char const* jobvl, char const* jobvr, char const* sense, blas_int const* n,
490 double* a, blas_int const* lda, double* b, blas_int const* ldb, double* alphar, double* alphai,
491 double* beta, double* vl, blas_int const* ldvl, double* vr, blas_int const* ldvr, blas_int* ilo,
492 blas_int* ihi, double* lscale, double* rscale, double* abnrm, double* bbnrm, double* rconde,
493 double* rcondv, double* work, blas_int const* lwork, blas_int* iwork, blas_int* bwork, blas_int* info);
494
495 void sggbal_(char const* job, blas_int const* n, float* a, blas_int const* lda, float* b, blas_int const* ldb,
496 blas_int* ilo, blas_int* ihi, float* lscale, float* rscale, float* work, blas_int* info);
497
498 void dggbal_(char const* job, blas_int const* n, double* a, blas_int const* lda, double* b, blas_int const* ldb,
499 blas_int* ilo, blas_int* ihi, double* lscale, double* rscale, double* work, blas_int* info);
500
501 void sggbak_(char const* job, char const* side, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
502 float* lscale, float* rscale, blas_int const* m, float* v, blas_int const* ldv, blas_int* info);
503
504 void dggbak_(char const* job, char const* side, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
505 double* lscale, double* rscale, blas_int const* m, double* v, blas_int const* ldv, blas_int* info);
506
507 void sgges_(char const* jobvsl, char const* jobvsr, char const* sort, void* select, blas_int const* n, float* a,
508 blas_int const* lda, float* b, blas_int const* ldb, blas_int* selected_dimension, float* alphar,
509 float* alphai, float* beta, float* vsl, blas_int const* ldvsl, float* vsr, blas_int const* ldvsr,
510 float* work, blas_int const* lwork, blas_int* bwork, blas_int* info);
511
512 void dgges_(char const* jobvsl, char const* jobvsr, char const* sort, void* select, blas_int const* n, double* a,
513 blas_int const* lda, double* b, blas_int const* ldb, blas_int* selected_dimension, double* alphar,
514 double* alphai, double* beta, double* vsl, blas_int const* ldvsl, double* vsr, blas_int const* ldvsr,
515 double* work, blas_int const* lwork, blas_int* bwork, blas_int* info);
516
517 void sgghrd_(char const* compq, char const* compz, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
518 float* a, blas_int const* lda, float* b, blas_int const* ldb, float* q, blas_int const* ldq, float* z,
519 blas_int const* ldz, blas_int* info);
520
521 void dgghrd_(char const* compq, char const* compz, blas_int const* n, blas_int const* ilo, blas_int const* ihi,
522 double* a, blas_int const* lda, double* b, blas_int const* ldb, double* q, blas_int const* ldq,
523 double* z, blas_int const* ldz, blas_int* info);
524
525 void shgeqz_(char const* job, char const* compq, char const* compz, blas_int const* n, blas_int const* ilo,
526 blas_int const* ihi, float* h, blas_int const* ldh, float* t, blas_int const* ldt, float* alphar,
527 float* alphai, float* beta, float* q, blas_int const* ldq, float* z, blas_int const* ldz, float* work,
528 blas_int const* lwork, blas_int* info);
529
530 void dhgeqz_(char const* job, char const* compq, char const* compz, blas_int const* n, blas_int const* ilo,
531 blas_int const* ihi, double* h, blas_int const* ldh, double* t, blas_int const* ldt, double* alphar,
532 double* alphai, double* beta, double* q, blas_int const* ldq, double* z, blas_int const* ldz,
533 double* work, blas_int const* lwork, blas_int* info);
534
535 void stgexc_(blas_int const* wantq, blas_int const* wantz, blas_int const* n, float* a, blas_int const* lda, float* b,
536 blas_int const* ldb, float* q, blas_int const* ldq, float* z, blas_int const* ldz, blas_int* first,
537 blas_int* last, float* work, blas_int const* lwork, blas_int* info);
538
539 void dtgexc_(blas_int const* wantq, blas_int const* wantz, blas_int const* n, double* a, blas_int const* lda,
540 double* b, blas_int const* ldb, double* q, blas_int const* ldq, double* z, blas_int const* ldz,
541 blas_int* first, blas_int* last, double* work, blas_int const* lwork, blas_int* info);
542
543 void stgsen_(blas_int const* ijob, blas_int const* wantq, blas_int const* wantz, blas_int* select, blas_int const* n,
544 float* a, blas_int const* lda, float* b, blas_int const* ldb, float* alphar, float* alphai, float* beta,
545 float* q, blas_int const* ldq, float* z, blas_int const* ldz, blas_int* selected_dimension, float* pl,
546 float* pr, float* dif, float* work, blas_int const* lwork, blas_int* iwork, blas_int const* liwork,
547 blas_int* info);
548
549 void dtgsen_(blas_int const* ijob, blas_int const* wantq, blas_int const* wantz, blas_int* select, blas_int const* n,
550 double* a, blas_int const* lda, double* b, blas_int const* ldb, double* alphar, double* alphai,
551 double* beta, double* q, blas_int const* ldq, double* z, blas_int const* ldz,
552 blas_int* selected_dimension, double* pl, double* pr, double* dif, double* work, blas_int const* lwork,
553 blas_int* iwork, blas_int const* liwork, blas_int* info);
554
555 void stgevc_(char const* side, char const* howmny, blas_int* select, blas_int const* n, float* s, blas_int const* lds,
556 float* p, blas_int const* ldp, float* vl, blas_int const* ldvl, float* vr, blas_int const* ldvr,
557 blas_int const* mm, blas_int* computed_vectors, float* work, blas_int* info);
558
559 void dtgevc_(char const* side, char const* howmny, blas_int* select, blas_int const* n, double* s,
560 blas_int const* lds, double* p, blas_int const* ldp, double* vl, blas_int const* ldvl, double* vr,
561 blas_int const* ldvr, blas_int const* mm, blas_int* computed_vectors, double* work, blas_int* info);
562
563 void stgsna_(char const* job, char const* howmny, blas_int* select, blas_int const* n, float* a, blas_int const* lda,
564 float* b, blas_int const* ldb, float* vl, blas_int const* ldvl, float* vr, blas_int const* ldvr,
565 float* s, float* dif, blas_int const* mm, blas_int* computed_estimates, float* work,
566 blas_int const* lwork, blas_int* iwork, blas_int* info);
567
568 void dtgsna_(char const* job, char const* howmny, blas_int* select, blas_int const* n, double* a, blas_int const* lda,
569 double* b, blas_int const* ldb, double* vl, blas_int const* ldvl, double* vr, blas_int const* ldvr,
570 double* s, double* dif, blas_int const* mm, blas_int* computed_estimates, double* work,
571 blas_int const* lwork, blas_int* iwork, blas_int* info);
572
573 void sorgbr_(char const* vect, blas_int const* m, blas_int const* n, blas_int const* k, float* a, blas_int const* lda,
574 float* tau, float* work, blas_int const* lwork, blas_int* info);
575
576 void dorgbr_(char const* vect, blas_int const* m, blas_int const* n, blas_int const* k, double* a,
577 blas_int const* lda, double* tau, double* work, blas_int const* lwork, blas_int* info);
578
579 void sorghr_(blas_int const* n, blas_int const* ilo, blas_int const* ihi, float* a, blas_int const* lda,
580 float const* tau, float* work, blas_int const* lwork, blas_int* info);
581
582 void dorghr_(blas_int const* n, blas_int const* ilo, blas_int const* ihi, double* a, blas_int const* lda,
583 double const* tau, double* work, blas_int const* lwork, blas_int* info);
584
585 void sorgtr_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, float const* tau, float* work,
586 blas_int const* lwork, blas_int* info);
587
588 void dorgtr_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, double const* tau, double* work,
589 blas_int const* lwork, blas_int* info);
590
591 void sormhr_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* ilo,
592 blas_int const* ihi, float* a, blas_int const* lda, float const* tau, float* c, blas_int const* ldc,
593 float* work, blas_int const* lwork, blas_int* info);
594
595 void dormhr_(char const* side, char const* trans, blas_int const* m, blas_int const* n, blas_int const* ilo,
596 blas_int const* ihi, double* a, blas_int const* lda, double const* tau, double* c, blas_int const* ldc,
597 double* work, blas_int const* lwork, blas_int* info);
598
599 void sormtr_(char const* side, char const* uplo, char const* trans, blas_int const* m, blas_int const* n, float* a,
600 blas_int const* lda, float const* tau, float* c, blas_int const* ldc, float* work, blas_int const* lwork,
601 blas_int* info);
602
603 void dormtr_(char const* side, char const* uplo, char const* trans, blas_int const* m, blas_int const* n, double* a,
604 blas_int const* lda, double const* tau, double* c, blas_int const* ldc, double* work,
605 blas_int const* lwork, blas_int* info);
606
607 void sormbr_(char const* vect, char const* side, char const* trans, blas_int const* m, blas_int const* n,
608 blas_int const* k, float* a, blas_int const* lda, float* tau, float* c, blas_int const* ldc, float* work,
609 blas_int const* lwork, blas_int* info);
610
611 void dormbr_(char const* vect, char const* side, char const* trans, blas_int const* m, blas_int const* n,
612 blas_int const* k, double* a, blas_int const* lda, double* tau, double* c, blas_int const* ldc,
613 double* work, blas_int const* lwork, blas_int* info);
614
615 void sgesvd_(char const* jobu, char const* jobvt, blas_int const* m, blas_int const* n, float* a, blas_int const* lda,
616 float* s, float* u, blas_int const* ldu, float* vt, blas_int const* ldvt, float* work,
617 blas_int const* lwork, blas_int* info);
618
619 void dgesvd_(char const* jobu, char const* jobvt, blas_int const* m, blas_int const* n, double* a,
620 blas_int const* lda, double* s, double* u, blas_int const* ldu, double* vt, blas_int const* ldvt,
621 double* work, blas_int const* lwork, blas_int* info);
622
623 void cgesvd_(char const* jobu, char const* jobvt, blas_int const* m, blas_int const* n, uni20::complex<float>* a,
624 blas_int const* lda, float* s, uni20::complex<float>* u, blas_int const* ldu, uni20::complex<float>* vt,
625 blas_int const* ldvt, uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* info);
626
627 void zgesvd_(char const* jobu, char const* jobvt, blas_int const* m, blas_int const* n, uni20::complex<double>* a,
628 blas_int const* lda, double* s, uni20::complex<double>* u, blas_int const* ldu,
629 uni20::complex<double>* vt, blas_int const* ldvt, uni20::complex<double>* work, blas_int const* lwork,
630 double* rwork, blas_int* info);
631
632 void sgesdd_(char const* jobz, blas_int const* m, blas_int const* n, float* a, blas_int const* lda, float* s,
633 float* u, blas_int const* ldu, float* vt, blas_int const* ldvt, float* work, blas_int const* lwork,
634 blas_int* iwork, blas_int* info);
635
636 void dgesdd_(char const* jobz, blas_int const* m, blas_int const* n, double* a, blas_int const* lda, double* s,
637 double* u, blas_int const* ldu, double* vt, blas_int const* ldvt, double* work, blas_int const* lwork,
638 blas_int* iwork, blas_int* info);
639
640 void cgesdd_(char const* jobz, blas_int const* m, blas_int const* n, uni20::complex<float>* a, blas_int const* lda,
641 float* s, uni20::complex<float>* u, blas_int const* ldu, uni20::complex<float>* vt, blas_int const* ldvt,
642 uni20::complex<float>* work, blas_int const* lwork, float* rwork, blas_int* iwork, blas_int* info);
643
644 void zgesdd_(char const* jobz, blas_int const* m, blas_int const* n, uni20::complex<double>* a, blas_int const* lda,
645 double* s, uni20::complex<double>* u, blas_int const* ldu, uni20::complex<double>* vt,
646 blas_int const* ldvt, uni20::complex<double>* work, blas_int const* lwork, double* rwork,
647 blas_int* iwork, blas_int* info);
648
649 void sgesvdx_(char const* jobu, char const* jobvt, char const* range, blas_int const* m, blas_int const* n, float* a,
650 blas_int const* lda, float const* vl, float const* vu, blas_int const* il, blas_int const* iu,
651 blas_int* ns, float* s, float* u, blas_int const* ldu, float* vt, blas_int const* ldvt, float* work,
652 blas_int const* lwork, blas_int* iwork, blas_int* info);
653
654 void dgesvdx_(char const* jobu, char const* jobvt, char const* range, blas_int const* m, blas_int const* n, double* a,
655 blas_int const* lda, double const* vl, double const* vu, blas_int const* il, blas_int const* iu,
656 blas_int* ns, double* s, double* u, blas_int const* ldu, double* vt, blas_int const* ldvt, double* work,
657 blas_int const* lwork, blas_int* iwork, blas_int* info);
658
659 void cgesvdx_(char const* jobu, char const* jobvt, char const* range, blas_int const* m, blas_int const* n,
660 uni20::complex<float>* a, blas_int const* lda, float const* vl, float const* vu, blas_int const* il,
661 blas_int const* iu, blas_int* ns, float* s, uni20::complex<float>* u, blas_int const* ldu,
662 uni20::complex<float>* vt, blas_int const* ldvt, uni20::complex<float>* work, blas_int const* lwork,
663 float* rwork, blas_int* iwork, blas_int* info);
664
665 void zgesvdx_(char const* jobu, char const* jobvt, char const* range, blas_int const* m, blas_int const* n,
666 uni20::complex<double>* a, blas_int const* lda, double const* vl, double const* vu, blas_int const* il,
667 blas_int const* iu, blas_int* ns, double* s, uni20::complex<double>* u, blas_int const* ldu,
668 uni20::complex<double>* vt, blas_int const* ldvt, uni20::complex<double>* work, blas_int const* lwork,
669 double* rwork, blas_int* iwork, blas_int* info);
670
671 void sbdsqr_(char const* uplo, blas_int const* n, blas_int const* ncvt, blas_int const* nru, blas_int const* ncc,
672 float* d, float* e, float* vt, blas_int const* ldvt, float* u, blas_int const* ldu, float* c,
673 blas_int const* ldc, float* work, blas_int* info);
674
675 void dbdsqr_(char const* uplo, blas_int const* n, blas_int const* ncvt, blas_int const* nru, blas_int const* ncc,
676 double* d, double* e, double* vt, blas_int const* ldvt, double* u, blas_int const* ldu, double* c,
677 blas_int const* ldc, double* work, blas_int* info);
678
679 void sbdsdc_(char const* uplo, char const* compq, blas_int const* n, float* d, float* e, float* u,
680 blas_int const* ldu, float* vt, blas_int const* ldvt, float* q, blas_int* iq, float* work,
681 blas_int* iwork, blas_int* info);
682
683 void dbdsdc_(char const* uplo, char const* compq, blas_int const* n, double* d, double* e, double* u,
684 blas_int const* ldu, double* vt, blas_int const* ldvt, double* q, blas_int* iq, double* work,
685 blas_int* iwork, blas_int* info);
686
687 void sbdsvdx_(char const* uplo, char const* jobz, char const* range, blas_int const* n, float* d, float* e,
688 float const* vl, float const* vu, blas_int const* il, blas_int const* iu, blas_int* ns, float* s,
689 float* z, blas_int const* ldz, float* work, blas_int* iwork, blas_int* info);
690
691 void dbdsvdx_(char const* uplo, char const* jobz, char const* range, blas_int const* n, double* d, double* e,
692 double const* vl, double const* vu, blas_int const* il, blas_int const* iu, blas_int* ns, double* s,
693 double* z, blas_int const* ldz, double* work, blas_int* iwork, blas_int* info);
694
695 void spotrf_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int* info);
696
697 void dpotrf_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int* info);
698
699 void spstrf_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int* piv, blas_int* rank,
700 float const* tol, float* work, blas_int* info);
701
702 void dpstrf_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int* piv, blas_int* rank,
703 double const* tol, double* work, blas_int* info);
704
705 void spotri_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int* info);
706
707 void dpotri_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int* info);
708
709 void spotrs_(char const* uplo, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* b,
710 blas_int const* ldb, blas_int* info);
711
712 void dpotrs_(char const* uplo, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* b,
713 blas_int const* ldb, blas_int* info);
714
715 void sporfs_(char const* uplo, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* af,
716 blas_int const* ldaf, float* b, blas_int const* ldb, float* x, blas_int const* ldx, float* ferr,
717 float* berr, float* work, blas_int* iwork, blas_int* info);
718
719 void dporfs_(char const* uplo, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* af,
720 blas_int const* ldaf, double* b, blas_int const* ldb, double* x, blas_int const* ldx, double* ferr,
721 double* berr, double* work, blas_int* iwork, blas_int* info);
722
723 void sposvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* nrhs, float* a,
724 blas_int const* lda, float* af, blas_int const* ldaf, char* equed, float* s, float* b,
725 blas_int const* ldb, float* x, blas_int const* ldx, float* rcond, float* ferr, float* berr, float* work,
726 blas_int* iwork, blas_int* info);
727
728 void dposvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* nrhs, double* a,
729 blas_int const* lda, double* af, blas_int const* ldaf, char* equed, double* s, double* b,
730 blas_int const* ldb, double* x, blas_int const* ldx, double* rcond, double* ferr, double* berr,
731 double* work, blas_int* iwork, blas_int* info);
732
733 void spoequ_(blas_int const* n, float* a, blas_int const* lda, float* s, float* scond, float* amax, blas_int* info);
734
735 void dpoequ_(blas_int const* n, double* a, blas_int const* lda, double* s, double* scond, double* amax,
736 blas_int* info);
737
738 void spocon_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, float const* anorm, float* rcond,
739 float* work, blas_int* iwork, blas_int* info);
740
741 void dpocon_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, double const* anorm, double* rcond,
742 double* work, blas_int* iwork, blas_int* info);
743
744 void ssytrf_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int* ipiv, float* work,
745 blas_int const* lwork, blas_int* info);
746
747 void dsytrf_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int* ipiv, double* work,
748 blas_int const* lwork, blas_int* info);
749
750 void ssytrs_(char const* uplo, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda,
751 blas_int const* ipiv, float* b, blas_int const* ldb, blas_int* info);
752
753 void dsytrs_(char const* uplo, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda,
754 blas_int const* ipiv, double* b, blas_int const* ldb, blas_int* info);
755
756 void ssytri_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int const* ipiv, float* work,
757 blas_int* info);
758
759 void dsytri_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int const* ipiv, double* work,
760 blas_int* info);
761
762 void ssyrfs_(char const* uplo, blas_int const* n, blas_int const* nrhs, float* a, blas_int const* lda, float* af,
763 blas_int const* ldaf, blas_int* ipiv, float* b, blas_int const* ldb, float* x, blas_int const* ldx,
764 float* ferr, float* berr, float* work, blas_int* iwork, blas_int* info);
765
766 void dsyrfs_(char const* uplo, blas_int const* n, blas_int const* nrhs, double* a, blas_int const* lda, double* af,
767 blas_int const* ldaf, blas_int* ipiv, double* b, blas_int const* ldb, double* x, blas_int const* ldx,
768 double* ferr, double* berr, double* work, blas_int* iwork, blas_int* info);
769
770 void ssysvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* nrhs, float* a,
771 blas_int const* lda, float* af, blas_int const* ldaf, blas_int* ipiv, float* b, blas_int const* ldb,
772 float* x, blas_int const* ldx, float* rcond, float* ferr, float* berr, float* work,
773 blas_int const* lwork, blas_int* iwork, blas_int* info);
774
775 void dsysvx_(char const* fact, char const* uplo, blas_int const* n, blas_int const* nrhs, double* a,
776 blas_int const* lda, double* af, blas_int const* ldaf, blas_int* ipiv, double* b, blas_int const* ldb,
777 double* x, blas_int const* ldx, double* rcond, double* ferr, double* berr, double* work,
778 blas_int const* lwork, blas_int* iwork, blas_int* info);
779
780 void ssycon_(char const* uplo, blas_int const* n, float* a, blas_int const* lda, blas_int const* ipiv,
781 float const* anorm, float* rcond, float* work, blas_int* iwork, blas_int* info);
782
783 void dsycon_(char const* uplo, blas_int const* n, double* a, blas_int const* lda, blas_int const* ipiv,
784 double const* anorm, double* rcond, double* work, blas_int* iwork, blas_int* info);
785
786 void strtrs_(char const* uplo, char const* trans, char const* diag, blas_int const* n, blas_int const* nrhs, float* a,
787 blas_int const* lda, float* b, blas_int const* ldb, blas_int* info);
788
789 void dtrtrs_(char const* uplo, char const* trans, char const* diag, blas_int const* n, blas_int const* nrhs,
790 double* a, blas_int const* lda, double* b, blas_int const* ldb, blas_int* info);
791
792 void strrfs_(char const* uplo, char const* trans, char const* diag, blas_int const* n, blas_int const* nrhs, float* a,
793 blas_int const* lda, float* b, blas_int const* ldb, float* x, blas_int const* ldx, float* ferr,
794 float* berr, float* work, blas_int* iwork, blas_int* info);
795
796 void dtrrfs_(char const* uplo, char const* trans, char const* diag, blas_int const* n, blas_int const* nrhs,
797 double* a, blas_int const* lda, double* b, blas_int const* ldb, double* x, blas_int const* ldx,
798 double* ferr, double* berr, double* work, blas_int* iwork, blas_int* info);
799
800 void strtri_(char const* uplo, char const* diag, blas_int const* n, float* a, blas_int const* lda, blas_int* info);
801
802 void dtrtri_(char const* uplo, char const* diag, blas_int const* n, double* a, blas_int const* lda, blas_int* info);
803
804 void strcon_(char const* norm, char const* uplo, char const* diag, blas_int const* n, float* a, blas_int const* lda,
805 float* rcond, float* work, blas_int* iwork, blas_int* info);
806
807 void dtrcon_(char const* norm, char const* uplo, char const* diag, blas_int const* n, double* a, blas_int const* lda,
808 double* rcond, double* work, blas_int* iwork, blas_int* info);
809
810 void strsyl_(char const* trana, char const* tranb, blas_int const* isgn, blas_int const* m, blas_int const* n,
811 float* a, blas_int const* lda, float* b, blas_int const* ldb, float* c, blas_int const* ldc,
812 float* scale, blas_int* info);
813
814 void dtrsyl_(char const* trana, char const* tranb, blas_int const* isgn, blas_int const* m, blas_int const* n,
815 double* a, blas_int const* lda, double* b, blas_int const* ldb, double* c, blas_int const* ldc,
816 double* scale, blas_int* info);
817}
818} // namespace detail
819
820[[nodiscard]] inline blas_int gesv(blas_int n, blas_int nrhs, float* a, blas_int lda, blas_int* ipiv, float* b,
821 blas_int ldb)
822{
823 blas_int info = 0;
824 UNI20_EXTERNAL_API_CALL(LAPACK, sgesv_, n, nrhs, a, lda, ipiv, b, ldb);
825 detail::sgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
826 return info;
827}
828
829[[nodiscard]] inline blas_int gesv(blas_int n, blas_int nrhs, double* a, blas_int lda, blas_int* ipiv, double* b,
830 blas_int ldb)
831{
832 blas_int info = 0;
833 UNI20_EXTERNAL_API_CALL(LAPACK, dgesv_, n, nrhs, a, lda, ipiv, b, ldb);
834 detail::dgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
835 return info;
836}
837
838[[nodiscard]] inline blas_int gesv(blas_int n, blas_int nrhs, uni20::complex<float>* a, blas_int lda, blas_int* ipiv,
839 uni20::complex<float>* b, blas_int ldb)
840{
841 blas_int info = 0;
842 UNI20_EXTERNAL_API_CALL(LAPACK, cgesv_, n, nrhs, a, lda, ipiv, b, ldb);
843 detail::cgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
844 return info;
845}
846
847[[nodiscard]] inline blas_int gesv(blas_int n, blas_int nrhs, uni20::complex<double>* a, blas_int lda, blas_int* ipiv,
848 uni20::complex<double>* b, blas_int ldb)
849{
850 blas_int info = 0;
851 UNI20_EXTERNAL_API_CALL(LAPACK, zgesv_, n, nrhs, a, lda, ipiv, b, ldb);
852 detail::zgesv_(&n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
853 return info;
854}
855
856[[nodiscard]] inline blas_int gesvx(char fact, char trans, blas_int n, blas_int nrhs, float* a, blas_int lda, float* af,
857 blas_int ldaf, blas_int* ipiv, char& equed, float* row_scale, float* column_scale,
858 float* b, blas_int ldb, float* x, blas_int ldx, float& rcond, float* forward_error,
859 float* backward_error, float* work, blas_int* iwork)
860{
861 blas_int info = 0;
862 UNI20_EXTERNAL_API_CALL(LAPACK, sgesvx_, fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, row_scale, column_scale,
863 b, ldb, x, ldx, work, iwork);
864 detail::sgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, row_scale, column_scale, b, &ldb, x, &ldx,
865 &rcond, forward_error, backward_error, work, iwork, &info);
866 return info;
867}
868
869[[nodiscard]] inline blas_int gesvx(char fact, char trans, blas_int n, blas_int nrhs, double* a, blas_int lda,
870 double* af, blas_int ldaf, blas_int* ipiv, char& equed, double* row_scale,
871 double* column_scale, double* b, blas_int ldb, double* x, blas_int ldx,
872 double& rcond, double* forward_error, double* backward_error, double* work,
873 blas_int* iwork)
874{
875 blas_int info = 0;
876 UNI20_EXTERNAL_API_CALL(LAPACK, dgesvx_, fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, row_scale, column_scale,
877 b, ldb, x, ldx, work, iwork);
878 detail::dgesvx_(&fact, &trans, &n, &nrhs, a, &lda, af, &ldaf, ipiv, &equed, row_scale, column_scale, b, &ldb, x, &ldx,
879 &rcond, forward_error, backward_error, work, iwork, &info);
880 return info;
881}
882
883[[nodiscard]] inline blas_int geequ(blas_int m, blas_int n, float* a, blas_int lda, float* row_scale,
884 float* column_scale, float& row_condition, float& column_condition, float& max_abs)
885{
886 blas_int info = 0;
887 UNI20_EXTERNAL_API_CALL(LAPACK, sgeequ_, m, n, a, lda, row_scale, column_scale);
888 detail::sgeequ_(&m, &n, a, &lda, row_scale, column_scale, &row_condition, &column_condition, &max_abs, &info);
889 return info;
890}
891
892[[nodiscard]] inline blas_int geequ(blas_int m, blas_int n, double* a, blas_int lda, double* row_scale,
893 double* column_scale, double& row_condition, double& column_condition,
894 double& max_abs)
895{
896 blas_int info = 0;
897 UNI20_EXTERNAL_API_CALL(LAPACK, dgeequ_, m, n, a, lda, row_scale, column_scale);
898 detail::dgeequ_(&m, &n, a, &lda, row_scale, column_scale, &row_condition, &column_condition, &max_abs, &info);
899 return info;
900}
901
902[[nodiscard]] inline blas_int getrf(blas_int m, blas_int n, float* a, blas_int lda, blas_int* ipiv)
903{
904 blas_int info = 0;
905 UNI20_EXTERNAL_API_CALL(LAPACK, sgetrf_, m, n, a, lda, ipiv);
906 detail::sgetrf_(&m, &n, a, &lda, ipiv, &info);
907 return info;
908}
909
910[[nodiscard]] inline blas_int getrf(blas_int m, blas_int n, double* a, blas_int lda, blas_int* ipiv)
911{
912 blas_int info = 0;
913 UNI20_EXTERNAL_API_CALL(LAPACK, dgetrf_, m, n, a, lda, ipiv);
914 detail::dgetrf_(&m, &n, a, &lda, ipiv, &info);
915 return info;
916}
917
918[[nodiscard]] inline blas_int getrf(blas_int m, blas_int n, uni20::complex<float>* a, blas_int lda, blas_int* ipiv)
919{
920 blas_int info = 0;
921 UNI20_EXTERNAL_API_CALL(LAPACK, cgetrf_, m, n, a, lda, ipiv);
922 detail::cgetrf_(&m, &n, a, &lda, ipiv, &info);
923 return info;
924}
925
926[[nodiscard]] inline blas_int getrf(blas_int m, blas_int n, uni20::complex<double>* a, blas_int lda, blas_int* ipiv)
927{
928 blas_int info = 0;
929 UNI20_EXTERNAL_API_CALL(LAPACK, zgetrf_, m, n, a, lda, ipiv);
930 detail::zgetrf_(&m, &n, a, &lda, ipiv, &info);
931 return info;
932}
933
934[[nodiscard]] inline blas_int getrs(char trans, blas_int n, blas_int nrhs, float* a, blas_int lda, blas_int const* ipiv,
935 float* b, blas_int ldb)
936{
937 blas_int info = 0;
938 UNI20_EXTERNAL_API_CALL(LAPACK, sgetrs_, trans, n, nrhs, a, lda, ipiv, b, ldb);
939 detail::sgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
940 return info;
941}
942
943[[nodiscard]] inline blas_int getrs(char trans, blas_int n, blas_int nrhs, double* a, blas_int lda,
944 blas_int const* ipiv, double* b, blas_int ldb)
945{
946 blas_int info = 0;
947 UNI20_EXTERNAL_API_CALL(LAPACK, dgetrs_, trans, n, nrhs, a, lda, ipiv, b, ldb);
948 detail::dgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
949 return info;
950}
951
952[[nodiscard]] inline blas_int getrs(char trans, blas_int n, blas_int nrhs, uni20::complex<float>* a, blas_int lda,
953 blas_int const* ipiv, uni20::complex<float>* b, blas_int ldb)
954{
955 blas_int info = 0;
956 UNI20_EXTERNAL_API_CALL(LAPACK, cgetrs_, trans, n, nrhs, a, lda, ipiv, b, ldb);
957 detail::cgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
958 return info;
959}
960
961[[nodiscard]] inline blas_int getrs(char trans, blas_int n, blas_int nrhs, uni20::complex<double>* a, blas_int lda,
962 blas_int const* ipiv, uni20::complex<double>* b, blas_int ldb)
963{
964 blas_int info = 0;
965 UNI20_EXTERNAL_API_CALL(LAPACK, zgetrs_, trans, n, nrhs, a, lda, ipiv, b, ldb);
966 detail::zgetrs_(&trans, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
967 return info;
968}
969
970[[nodiscard]] inline blas_int gerfs(char trans, blas_int n, blas_int nrhs, float* a, blas_int lda, float* factors,
971 blas_int factor_lda, blas_int const* ipiv, float* b, blas_int ldb, float* x,
972 blas_int ldx, float* forward_error, float* backward_error, float* work,
973 blas_int* iwork)
974{
975 blas_int info = 0;
976 UNI20_EXTERNAL_API_CALL(LAPACK, sgerfs_, trans, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
977 forward_error, backward_error, work, iwork);
978 detail::sgerfs_(&trans, &n, &nrhs, a, &lda, factors, &factor_lda, ipiv, b, &ldb, x, &ldx, forward_error,
979 backward_error, work, iwork, &info);
980 return info;
981}
982
983[[nodiscard]] inline blas_int gerfs(char trans, blas_int n, blas_int nrhs, double* a, blas_int lda, double* factors,
984 blas_int factor_lda, blas_int const* ipiv, double* b, blas_int ldb, double* x,
985 blas_int ldx, double* forward_error, double* backward_error, double* work,
986 blas_int* iwork)
987{
988 blas_int info = 0;
989 UNI20_EXTERNAL_API_CALL(LAPACK, dgerfs_, trans, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
990 forward_error, backward_error, work, iwork);
991 detail::dgerfs_(&trans, &n, &nrhs, a, &lda, factors, &factor_lda, ipiv, b, &ldb, x, &ldx, forward_error,
992 backward_error, work, iwork, &info);
993 return info;
994}
995
996[[nodiscard]] inline blas_int getri(blas_int n, float* a, blas_int lda, blas_int* ipiv, float* work, blas_int lwork)
997{
998 blas_int info = 0;
999 UNI20_EXTERNAL_API_CALL(LAPACK, sgetri_, n, a, lda, ipiv, work, lwork);
1000 detail::sgetri_(&n, a, &lda, ipiv, work, &lwork, &info);
1001 return info;
1002}
1003
1004[[nodiscard]] inline blas_int getri(blas_int n, double* a, blas_int lda, blas_int* ipiv, double* work, blas_int lwork)
1005{
1006 blas_int info = 0;
1007 UNI20_EXTERNAL_API_CALL(LAPACK, dgetri_, n, a, lda, ipiv, work, lwork);
1008 detail::dgetri_(&n, a, &lda, ipiv, work, &lwork, &info);
1009 return info;
1010}
1011
1012[[nodiscard]] inline blas_int getri(blas_int n, uni20::complex<float>* a, blas_int lda, blas_int* ipiv,
1013 uni20::complex<float>* work, blas_int lwork)
1014{
1015 blas_int info = 0;
1016 UNI20_EXTERNAL_API_CALL(LAPACK, cgetri_, n, a, lda, ipiv, work, lwork);
1017 detail::cgetri_(&n, a, &lda, ipiv, work, &lwork, &info);
1018 return info;
1019}
1020
1021[[nodiscard]] inline blas_int getri(blas_int n, uni20::complex<double>* a, blas_int lda, blas_int* ipiv,
1022 uni20::complex<double>* work, blas_int lwork)
1023{
1024 blas_int info = 0;
1025 UNI20_EXTERNAL_API_CALL(LAPACK, zgetri_, n, a, lda, ipiv, work, lwork);
1026 detail::zgetri_(&n, a, &lda, ipiv, work, &lwork, &info);
1027 return info;
1028}
1029
1030[[nodiscard]] inline blas_int gecon(char norm, blas_int n, float const* a, blas_int lda, float anorm, float& rcond,
1031 float* work, blas_int* iwork)
1032{
1033 blas_int info = 0;
1034 UNI20_EXTERNAL_API_CALL(LAPACK, sgecon_, norm, n, a, lda, anorm, work, iwork);
1035 detail::sgecon_(&norm, &n, a, &lda, &anorm, &rcond, work, iwork, &info);
1036 return info;
1037}
1038
1039[[nodiscard]] inline blas_int gecon(char norm, blas_int n, double const* a, blas_int lda, double anorm, double& rcond,
1040 double* work, blas_int* iwork)
1041{
1042 blas_int info = 0;
1043 UNI20_EXTERNAL_API_CALL(LAPACK, dgecon_, norm, n, a, lda, anorm, work, iwork);
1044 detail::dgecon_(&norm, &n, a, &lda, &anorm, &rcond, work, iwork, &info);
1045 return info;
1046}
1047
1048[[nodiscard]] inline blas_int gecon(char norm, blas_int n, uni20::complex<float> const* a, blas_int lda, float anorm,
1049 float& rcond, uni20::complex<float>* work, float* rwork)
1050{
1051 blas_int info = 0;
1052 UNI20_EXTERNAL_API_CALL(LAPACK, cgecon_, norm, n, a, lda, anorm, work, rwork);
1053 detail::cgecon_(&norm, &n, a, &lda, &anorm, &rcond, work, rwork, &info);
1054 return info;
1055}
1056
1057[[nodiscard]] inline blas_int gecon(char norm, blas_int n, uni20::complex<double> const* a, blas_int lda, double anorm,
1058 double& rcond, uni20::complex<double>* work, double* rwork)
1059{
1060 blas_int info = 0;
1061 UNI20_EXTERNAL_API_CALL(LAPACK, zgecon_, norm, n, a, lda, anorm, work, rwork);
1062 detail::zgecon_(&norm, &n, a, &lda, &anorm, &rcond, work, rwork, &info);
1063 return info;
1064}
1065
1066[[nodiscard]] inline blas_int gels(char trans, blas_int m, blas_int n, blas_int nrhs, float* a, blas_int lda, float* b,
1067 blas_int ldb, float* work, blas_int lwork)
1068{
1069 blas_int info = 0;
1070 UNI20_EXTERNAL_API_CALL(LAPACK, sgels_, trans, m, n, nrhs, a, lda, b, ldb, work, lwork);
1071 detail::sgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info);
1072 return info;
1073}
1074
1075[[nodiscard]] inline blas_int gels(char trans, blas_int m, blas_int n, blas_int nrhs, double* a, blas_int lda,
1076 double* b, blas_int ldb, double* work, blas_int lwork)
1077{
1078 blas_int info = 0;
1079 UNI20_EXTERNAL_API_CALL(LAPACK, dgels_, trans, m, n, nrhs, a, lda, b, ldb, work, lwork);
1080 detail::dgels_(&trans, &m, &n, &nrhs, a, &lda, b, &ldb, work, &lwork, &info);
1081 return info;
1082}
1083
1084[[nodiscard]] inline blas_int gelss(blas_int m, blas_int n, blas_int nrhs, float* a, blas_int lda, float* b,
1085 blas_int ldb, float* s, float rcond, blas_int& rank, float* work, blas_int lwork)
1086{
1087 blas_int info = 0;
1088 UNI20_EXTERNAL_API_CALL(LAPACK, sgelss_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork);
1089 detail::sgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info);
1090 return info;
1091}
1092
1093[[nodiscard]] inline blas_int gelss(blas_int m, blas_int n, blas_int nrhs, double* a, blas_int lda, double* b,
1094 blas_int ldb, double* s, double rcond, blas_int& rank, double* work, blas_int lwork)
1095{
1096 blas_int info = 0;
1097 UNI20_EXTERNAL_API_CALL(LAPACK, dgelss_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork);
1098 detail::dgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info);
1099 return info;
1100}
1101
1103[[nodiscard]] inline blas_int gelss(blas_int m, blas_int n, blas_int nrhs, uni20::complex<float>* a, blas_int lda,
1104 uni20::complex<float>* b, blas_int ldb, float* s, float rcond, blas_int& rank,
1105 uni20::complex<float>* work, blas_int lwork, float* rwork)
1106{
1107 blas_int info = 0;
1108 UNI20_EXTERNAL_API_CALL(LAPACK, cgelss_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork);
1109 detail::cgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info);
1110 return info;
1111}
1112
1114[[nodiscard]] inline blas_int gelss(blas_int m, blas_int n, blas_int nrhs, uni20::complex<double>* a, blas_int lda,
1115 uni20::complex<double>* b, blas_int ldb, double* s, double rcond, blas_int& rank,
1116 uni20::complex<double>* work, blas_int lwork, double* rwork)
1117{
1118 blas_int info = 0;
1119 UNI20_EXTERNAL_API_CALL(LAPACK, zgelss_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork);
1120 detail::zgelss_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info);
1121 return info;
1122}
1123
1124[[nodiscard]] inline blas_int gelsd(blas_int m, blas_int n, blas_int nrhs, float* a, blas_int lda, float* b,
1125 blas_int ldb, float* s, float rcond, blas_int& rank, float* work, blas_int lwork,
1126 blas_int* iwork)
1127{
1128 blas_int info = 0;
1129 UNI20_EXTERNAL_API_CALL(LAPACK, sgelsd_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, iwork);
1130 detail::sgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, iwork, &info);
1131 return info;
1132}
1133
1134[[nodiscard]] inline blas_int gelsd(blas_int m, blas_int n, blas_int nrhs, double* a, blas_int lda, double* b,
1135 blas_int ldb, double* s, double rcond, blas_int& rank, double* work, blas_int lwork,
1136 blas_int* iwork)
1137{
1138 blas_int info = 0;
1139 UNI20_EXTERNAL_API_CALL(LAPACK, dgelsd_, m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, iwork);
1140 detail::dgelsd_(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, iwork, &info);
1141 return info;
1142}
1143
1144[[nodiscard]] inline blas_int gelsy(blas_int m, blas_int n, blas_int nrhs, float* a, blas_int lda, float* b,
1145 blas_int ldb, blas_int* jpvt, float rcond, blas_int& rank, float* work,
1146 blas_int lwork)
1147{
1148 blas_int info = 0;
1149 UNI20_EXTERNAL_API_CALL(LAPACK, sgelsy_, m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, lwork);
1150 detail::sgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, jpvt, &rcond, &rank, work, &lwork, &info);
1151 return info;
1152}
1153
1154[[nodiscard]] inline blas_int gelsy(blas_int m, blas_int n, blas_int nrhs, double* a, blas_int lda, double* b,
1155 blas_int ldb, blas_int* jpvt, double rcond, blas_int& rank, double* work,
1156 blas_int lwork)
1157{
1158 blas_int info = 0;
1159 UNI20_EXTERNAL_API_CALL(LAPACK, dgelsy_, m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, lwork);
1160 detail::dgelsy_(&m, &n, &nrhs, a, &lda, b, &ldb, jpvt, &rcond, &rank, work, &lwork, &info);
1161 return info;
1162}
1163
1164[[nodiscard]] inline blas_int geqrf(blas_int m, blas_int n, float* a, blas_int lda, float* tau, float* work,
1165 blas_int lwork)
1166{
1167 blas_int info = 0;
1168 UNI20_EXTERNAL_API_CALL(LAPACK, sgeqrf_, m, n, a, lda, tau, work, lwork);
1169 detail::sgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1170 return info;
1171}
1172
1173[[nodiscard]] inline blas_int geqrf(blas_int m, blas_int n, double* a, blas_int lda, double* tau, double* work,
1174 blas_int lwork)
1175{
1176 blas_int info = 0;
1177 UNI20_EXTERNAL_API_CALL(LAPACK, dgeqrf_, m, n, a, lda, tau, work, lwork);
1178 detail::dgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1179 return info;
1180}
1181
1182[[nodiscard]] inline blas_int geqrf(blas_int m, blas_int n, uni20::complex<double>* a, blas_int lda,
1183 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int lwork)
1184{
1185 blas_int info = 0;
1186 UNI20_EXTERNAL_API_CALL(LAPACK, zgeqrf_, m, n, a, lda, tau, work, lwork);
1187 detail::zgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1188 return info;
1189}
1190
1191[[nodiscard]] inline blas_int geqrf(blas_int m, blas_int n, uni20::complex<float>* a, blas_int lda,
1192 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int lwork)
1193{
1194 blas_int info = 0;
1195 UNI20_EXTERNAL_API_CALL(LAPACK, cgeqrf_, m, n, a, lda, tau, work, lwork);
1196 detail::cgeqrf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1197 return info;
1198}
1199
1200[[nodiscard]] inline blas_int gelqf(blas_int m, blas_int n, float* a, blas_int lda, float* tau, float* work,
1201 blas_int lwork)
1202{
1203 blas_int info = 0;
1204 UNI20_EXTERNAL_API_CALL(LAPACK, sgelqf_, m, n, a, lda, tau, work, lwork);
1205 detail::sgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1206 return info;
1207}
1208
1209[[nodiscard]] inline blas_int gelqf(blas_int m, blas_int n, double* a, blas_int lda, double* tau, double* work,
1210 blas_int lwork)
1211{
1212 blas_int info = 0;
1213 UNI20_EXTERNAL_API_CALL(LAPACK, dgelqf_, m, n, a, lda, tau, work, lwork);
1214 detail::dgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1215 return info;
1216}
1217
1218[[nodiscard]] inline blas_int gelqf(blas_int m, blas_int n, uni20::complex<double>* a, blas_int lda,
1219 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int lwork)
1220{
1221 blas_int info = 0;
1222 UNI20_EXTERNAL_API_CALL(LAPACK, zgelqf_, m, n, a, lda, tau, work, lwork);
1223 detail::zgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1224 return info;
1225}
1226
1227[[nodiscard]] inline blas_int gelqf(blas_int m, blas_int n, uni20::complex<float>* a, blas_int lda,
1228 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int lwork)
1229{
1230 blas_int info = 0;
1231 UNI20_EXTERNAL_API_CALL(LAPACK, cgelqf_, m, n, a, lda, tau, work, lwork);
1232 detail::cgelqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1233 return info;
1234}
1235
1236[[nodiscard]] inline blas_int geqlf(blas_int m, blas_int n, float* a, blas_int lda, float* tau, float* work,
1237 blas_int lwork)
1238{
1239 blas_int info = 0;
1240 UNI20_EXTERNAL_API_CALL(LAPACK, sgeqlf_, m, n, a, lda, tau, work, lwork);
1241 detail::sgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1242 return info;
1243}
1244
1245[[nodiscard]] inline blas_int geqlf(blas_int m, blas_int n, double* a, blas_int lda, double* tau, double* work,
1246 blas_int lwork)
1247{
1248 blas_int info = 0;
1249 UNI20_EXTERNAL_API_CALL(LAPACK, dgeqlf_, m, n, a, lda, tau, work, lwork);
1250 detail::dgeqlf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1251 return info;
1252}
1253
1254[[nodiscard]] inline blas_int gerqf(blas_int m, blas_int n, float* a, blas_int lda, float* tau, float* work,
1255 blas_int lwork)
1256{
1257 blas_int info = 0;
1258 UNI20_EXTERNAL_API_CALL(LAPACK, sgerqf_, m, n, a, lda, tau, work, lwork);
1259 detail::sgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1260 return info;
1261}
1262
1263[[nodiscard]] inline blas_int gerqf(blas_int m, blas_int n, double* a, blas_int lda, double* tau, double* work,
1264 blas_int lwork)
1265{
1266 blas_int info = 0;
1267 UNI20_EXTERNAL_API_CALL(LAPACK, dgerqf_, m, n, a, lda, tau, work, lwork);
1268 detail::dgerqf_(&m, &n, a, &lda, tau, work, &lwork, &info);
1269 return info;
1270}
1271
1272[[nodiscard]] inline blas_int orgqr(blas_int m, blas_int n, blas_int k, float* a, blas_int lda, float* tau, float* work,
1273 blas_int lwork)
1274{
1275 blas_int info = 0;
1276 UNI20_EXTERNAL_API_CALL(LAPACK, sorgqr_, m, n, k, a, lda, tau, work, lwork);
1277 detail::sorgqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1278 return info;
1279}
1280
1281[[nodiscard]] inline blas_int orgqr(blas_int m, blas_int n, blas_int k, double* a, blas_int lda, double* tau,
1282 double* work, blas_int lwork)
1283{
1284 blas_int info = 0;
1285 UNI20_EXTERNAL_API_CALL(LAPACK, dorgqr_, m, n, k, a, lda, tau, work, lwork);
1286 detail::dorgqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1287 return info;
1288}
1289
1290[[nodiscard]] inline blas_int orgqr(blas_int m, blas_int n, blas_int k, uni20::complex<double>* a, blas_int lda,
1291 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int lwork)
1292{
1293 blas_int info = 0;
1294 UNI20_EXTERNAL_API_CALL(LAPACK, zungqr_, m, n, k, a, lda, tau, work, lwork);
1295 detail::zungqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1296 return info;
1297}
1298
1299[[nodiscard]] inline blas_int orgqr(blas_int m, blas_int n, blas_int k, uni20::complex<float>* a, blas_int lda,
1300 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int lwork)
1301{
1302 blas_int info = 0;
1303 UNI20_EXTERNAL_API_CALL(LAPACK, cungqr_, m, n, k, a, lda, tau, work, lwork);
1304 detail::cungqr_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1305 return info;
1306}
1307
1308[[nodiscard]] inline blas_int orglq(blas_int m, blas_int n, blas_int k, float* a, blas_int lda, float* tau, float* work,
1309 blas_int lwork)
1310{
1311 blas_int info = 0;
1312 UNI20_EXTERNAL_API_CALL(LAPACK, sorglq_, m, n, k, a, lda, tau, work, lwork);
1313 detail::sorglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1314 return info;
1315}
1316
1317[[nodiscard]] inline blas_int orglq(blas_int m, blas_int n, blas_int k, double* a, blas_int lda, double* tau,
1318 double* work, blas_int lwork)
1319{
1320 blas_int info = 0;
1321 UNI20_EXTERNAL_API_CALL(LAPACK, dorglq_, m, n, k, a, lda, tau, work, lwork);
1322 detail::dorglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1323 return info;
1324}
1325
1326[[nodiscard]] inline blas_int orglq(blas_int m, blas_int n, blas_int k, uni20::complex<double>* a, blas_int lda,
1327 uni20::complex<double>* tau, uni20::complex<double>* work, blas_int lwork)
1328{
1329 blas_int info = 0;
1330 UNI20_EXTERNAL_API_CALL(LAPACK, zunglq_, m, n, k, a, lda, tau, work, lwork);
1331 detail::zunglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1332 return info;
1333}
1334
1335[[nodiscard]] inline blas_int orglq(blas_int m, blas_int n, blas_int k, uni20::complex<float>* a, blas_int lda,
1336 uni20::complex<float>* tau, uni20::complex<float>* work, blas_int lwork)
1337{
1338 blas_int info = 0;
1339 UNI20_EXTERNAL_API_CALL(LAPACK, cunglq_, m, n, k, a, lda, tau, work, lwork);
1340 detail::cunglq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1341 return info;
1342}
1343
1344[[nodiscard]] inline blas_int orgql(blas_int m, blas_int n, blas_int k, float* a, blas_int lda, float* tau, float* work,
1345 blas_int lwork)
1346{
1347 blas_int info = 0;
1348 UNI20_EXTERNAL_API_CALL(LAPACK, sorgql_, m, n, k, a, lda, tau, work, lwork);
1349 detail::sorgql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1350 return info;
1351}
1352
1353[[nodiscard]] inline blas_int orgql(blas_int m, blas_int n, blas_int k, double* a, blas_int lda, double* tau,
1354 double* work, blas_int lwork)
1355{
1356 blas_int info = 0;
1357 UNI20_EXTERNAL_API_CALL(LAPACK, dorgql_, m, n, k, a, lda, tau, work, lwork);
1358 detail::dorgql_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1359 return info;
1360}
1361
1362[[nodiscard]] inline blas_int orgrq(blas_int m, blas_int n, blas_int k, float* a, blas_int lda, float* tau, float* work,
1363 blas_int lwork)
1364{
1365 blas_int info = 0;
1366 UNI20_EXTERNAL_API_CALL(LAPACK, sorgrq_, m, n, k, a, lda, tau, work, lwork);
1367 detail::sorgrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1368 return info;
1369}
1370
1371[[nodiscard]] inline blas_int orgrq(blas_int m, blas_int n, blas_int k, double* a, blas_int lda, double* tau,
1372 double* work, blas_int lwork)
1373{
1374 blas_int info = 0;
1375 UNI20_EXTERNAL_API_CALL(LAPACK, dorgrq_, m, n, k, a, lda, tau, work, lwork);
1376 detail::dorgrq_(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
1377 return info;
1378}
1379
1380[[nodiscard]] inline blas_int ormqr(char side, char trans, blas_int m, blas_int n, blas_int k, float* a, blas_int lda,
1381 float* tau, float* c, blas_int ldc, float* work, blas_int lwork)
1382{
1383 blas_int info = 0;
1384 UNI20_EXTERNAL_API_CALL(LAPACK, sormqr_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1385 detail::sormqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1386 return info;
1387}
1388
1389[[nodiscard]] inline blas_int ormqr(char side, char trans, blas_int m, blas_int n, blas_int k, double* a, blas_int lda,
1390 double* tau, double* c, blas_int ldc, double* work, blas_int lwork)
1391{
1392 blas_int info = 0;
1393 UNI20_EXTERNAL_API_CALL(LAPACK, dormqr_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1394 detail::dormqr_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1395 return info;
1396}
1397
1398[[nodiscard]] inline blas_int ormlq(char side, char trans, blas_int m, blas_int n, blas_int k, float* a, blas_int lda,
1399 float* tau, float* c, blas_int ldc, float* work, blas_int lwork)
1400{
1401 blas_int info = 0;
1402 UNI20_EXTERNAL_API_CALL(LAPACK, sormlq_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1403 detail::sormlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1404 return info;
1405}
1406
1407[[nodiscard]] inline blas_int ormlq(char side, char trans, blas_int m, blas_int n, blas_int k, double* a, blas_int lda,
1408 double* tau, double* c, blas_int ldc, double* work, blas_int lwork)
1409{
1410 blas_int info = 0;
1411 UNI20_EXTERNAL_API_CALL(LAPACK, dormlq_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1412 detail::dormlq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1413 return info;
1414}
1415
1416[[nodiscard]] inline blas_int ormql(char side, char trans, blas_int m, blas_int n, blas_int k, float* a, blas_int lda,
1417 float* tau, float* c, blas_int ldc, float* work, blas_int lwork)
1418{
1419 blas_int info = 0;
1420 UNI20_EXTERNAL_API_CALL(LAPACK, sormql_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1421 detail::sormql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1422 return info;
1423}
1424
1425[[nodiscard]] inline blas_int ormql(char side, char trans, blas_int m, blas_int n, blas_int k, double* a, blas_int lda,
1426 double* tau, double* c, blas_int ldc, double* work, blas_int lwork)
1427{
1428 blas_int info = 0;
1429 UNI20_EXTERNAL_API_CALL(LAPACK, dormql_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1430 detail::dormql_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1431 return info;
1432}
1433
1434[[nodiscard]] inline blas_int ormrq(char side, char trans, blas_int m, blas_int n, blas_int k, float* a, blas_int lda,
1435 float* tau, float* c, blas_int ldc, float* work, blas_int lwork)
1436{
1437 blas_int info = 0;
1438 UNI20_EXTERNAL_API_CALL(LAPACK, sormrq_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1439 detail::sormrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1440 return info;
1441}
1442
1443[[nodiscard]] inline blas_int ormrq(char side, char trans, blas_int m, blas_int n, blas_int k, double* a, blas_int lda,
1444 double* tau, double* c, blas_int ldc, double* work, blas_int lwork)
1445{
1446 blas_int info = 0;
1447 UNI20_EXTERNAL_API_CALL(LAPACK, dormrq_, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
1448 detail::dormrq_(&side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
1449 return info;
1450}
1451
1452[[nodiscard]] inline blas_int gebrd(blas_int m, blas_int n, float* a, blas_int lda, float* d, float* e, float* tauq,
1453 float* taup, float* work, blas_int lwork)
1454{
1455 blas_int info = 0;
1456 UNI20_EXTERNAL_API_CALL(LAPACK, sgebrd_, m, n, a, lda, d, e, tauq, taup, work, lwork);
1457 detail::sgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info);
1458 return info;
1459}
1460
1461[[nodiscard]] inline blas_int gebrd(blas_int m, blas_int n, double* a, blas_int lda, double* d, double* e, double* tauq,
1462 double* taup, double* work, blas_int lwork)
1463{
1464 blas_int info = 0;
1465 UNI20_EXTERNAL_API_CALL(LAPACK, dgebrd_, m, n, a, lda, d, e, tauq, taup, work, lwork);
1466 detail::dgebrd_(&m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info);
1467 return info;
1468}
1469
1470[[nodiscard]] inline blas_int gehrd(blas_int n, blas_int first, blas_int last, float* a, blas_int lda, float* tau,
1471 float* work, blas_int lwork)
1472{
1473 blas_int info = 0;
1474 UNI20_EXTERNAL_API_CALL(LAPACK, sgehrd_, n, first, last, a, lda, tau, work, lwork);
1475 detail::sgehrd_(&n, &first, &last, a, &lda, tau, work, &lwork, &info);
1476 return info;
1477}
1478
1479[[nodiscard]] inline blas_int gehrd(blas_int n, blas_int first, blas_int last, double* a, blas_int lda, double* tau,
1480 double* work, blas_int lwork)
1481{
1482 blas_int info = 0;
1483 UNI20_EXTERNAL_API_CALL(LAPACK, dgehrd_, n, first, last, a, lda, tau, work, lwork);
1484 detail::dgehrd_(&n, &first, &last, a, &lda, tau, work, &lwork, &info);
1485 return info;
1486}
1487
1488[[nodiscard]] inline blas_int geqp3(blas_int m, blas_int n, float* a, blas_int lda, blas_int* jpvt, float* tau,
1489 float* work, blas_int lwork)
1490{
1491 blas_int info = 0;
1492 UNI20_EXTERNAL_API_CALL(LAPACK, sgeqp3_, m, n, a, lda, jpvt, tau, work, lwork);
1493 detail::sgeqp3_(&m, &n, a, &lda, jpvt, tau, work, &lwork, &info);
1494 return info;
1495}
1496
1497[[nodiscard]] inline blas_int geqp3(blas_int m, blas_int n, double* a, blas_int lda, blas_int* jpvt, double* tau,
1498 double* work, blas_int lwork)
1499{
1500 blas_int info = 0;
1501 UNI20_EXTERNAL_API_CALL(LAPACK, dgeqp3_, m, n, a, lda, jpvt, tau, work, lwork);
1502 detail::dgeqp3_(&m, &n, a, &lda, jpvt, tau, work, &lwork, &info);
1503 return info;
1504}
1505
1506[[nodiscard]] inline blas_int sytrd(char uplo, blas_int n, float* a, blas_int lda, float* d, float* e, float* tau,
1507 float* work, blas_int lwork)
1508{
1509 blas_int info = 0;
1510 UNI20_EXTERNAL_API_CALL(LAPACK, ssytrd_, uplo, n, a, lda, d, e, tau, work, lwork);
1511 detail::ssytrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info);
1512 return info;
1513}
1514
1515[[nodiscard]] inline blas_int sytrd(char uplo, blas_int n, double* a, blas_int lda, double* d, double* e, double* tau,
1516 double* work, blas_int lwork)
1517{
1518 blas_int info = 0;
1519 UNI20_EXTERNAL_API_CALL(LAPACK, dsytrd_, uplo, n, a, lda, d, e, tau, work, lwork);
1520 detail::dsytrd_(&uplo, &n, a, &lda, d, e, tau, work, &lwork, &info);
1521 return info;
1522}
1523
1524[[nodiscard]] inline blas_int syev(char jobz, char uplo, blas_int n, float* a, blas_int lda, float* w, float* work,
1525 blas_int lwork)
1526{
1527 blas_int info = 0;
1528 UNI20_EXTERNAL_API_CALL(LAPACK, ssyev_, jobz, uplo, n, a, lda, w, work, lwork);
1529 detail::ssyev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
1530 return info;
1531}
1532
1533[[nodiscard]] inline blas_int syev(char jobz, char uplo, blas_int n, double* a, blas_int lda, double* w, double* work,
1534 blas_int lwork)
1535{
1536 blas_int info = 0;
1537 UNI20_EXTERNAL_API_CALL(LAPACK, dsyev_, jobz, uplo, n, a, lda, w, work, lwork);
1538 detail::dsyev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
1539 return info;
1540}
1541
1542[[nodiscard]] inline blas_int syevd(char jobz, char uplo, blas_int n, float* a, blas_int lda, float* w, float* work,
1543 blas_int lwork, blas_int* iwork, blas_int liwork)
1544{
1545 blas_int info = 0;
1546 UNI20_EXTERNAL_API_CALL(LAPACK, ssyevd_, jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork);
1547 detail::ssyevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, iwork, &liwork, &info);
1548 return info;
1549}
1550
1551[[nodiscard]] inline blas_int syevd(char jobz, char uplo, blas_int n, double* a, blas_int lda, double* w, double* work,
1552 blas_int lwork, blas_int* iwork, blas_int liwork)
1553{
1554 blas_int info = 0;
1555 UNI20_EXTERNAL_API_CALL(LAPACK, dsyevd_, jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork);
1556 detail::dsyevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, iwork, &liwork, &info);
1557 return info;
1558}
1559
1560[[nodiscard]] inline blas_int syevr(char jobz, char range, char uplo, blas_int n, float* a, blas_int lda, float vl,
1561 float vu, blas_int il, blas_int iu, float abstol, blas_int& selected_count,
1562 float* w, float* z, blas_int ldz, blas_int* isuppz, float* work, blas_int lwork,
1563 blas_int* iwork, blas_int liwork)
1564{
1565 blas_int info = 0;
1566 UNI20_EXTERNAL_API_CALL(LAPACK, ssyevr_, jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
1567 ldz, isuppz, work, lwork, iwork, liwork);
1568 detail::ssyevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &selected_count, w, z, &ldz, isuppz,
1569 work, &lwork, iwork, &liwork, &info);
1570 return info;
1571}
1572
1573[[nodiscard]] inline blas_int syevr(char jobz, char range, char uplo, blas_int n, double* a, blas_int lda, double vl,
1574 double vu, blas_int il, blas_int iu, double abstol, blas_int& selected_count,
1575 double* w, double* z, blas_int ldz, blas_int* isuppz, double* work, blas_int lwork,
1576 blas_int* iwork, blas_int liwork)
1577{
1578 blas_int info = 0;
1579 UNI20_EXTERNAL_API_CALL(LAPACK, dsyevr_, jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
1580 ldz, isuppz, work, lwork, iwork, liwork);
1581 detail::dsyevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &selected_count, w, z, &ldz, isuppz,
1582 work, &lwork, iwork, &liwork, &info);
1583 return info;
1584}
1585
1586[[nodiscard]] inline blas_int sygv(blas_int itype, char jobz, char uplo, blas_int n, float* a, blas_int lda, float* b,
1587 blas_int ldb, float* w, float* work, blas_int lwork)
1588{
1589 blas_int info = 0;
1590 UNI20_EXTERNAL_API_CALL(LAPACK, ssygv_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork);
1591 detail::ssygv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
1592 return info;
1593}
1594
1595[[nodiscard]] inline blas_int sygv(blas_int itype, char jobz, char uplo, blas_int n, double* a, blas_int lda, double* b,
1596 blas_int ldb, double* w, double* work, blas_int lwork)
1597{
1598 blas_int info = 0;
1599 UNI20_EXTERNAL_API_CALL(LAPACK, dsygv_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork);
1600 detail::dsygv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
1601 return info;
1602}
1603
1604[[nodiscard]] inline blas_int sygvd(blas_int itype, char jobz, char uplo, blas_int n, float* a, blas_int lda, float* b,
1605 blas_int ldb, float* w, float* work, blas_int lwork, blas_int* iwork,
1606 blas_int liwork)
1607{
1608 blas_int info = 0;
1609 UNI20_EXTERNAL_API_CALL(LAPACK, ssygvd_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork);
1610 detail::ssygvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, iwork, &liwork, &info);
1611 return info;
1612}
1613
1614[[nodiscard]] inline blas_int sygvd(blas_int itype, char jobz, char uplo, blas_int n, double* a, blas_int lda,
1615 double* b, blas_int ldb, double* w, double* work, blas_int lwork, blas_int* iwork,
1616 blas_int liwork)
1617{
1618 blas_int info = 0;
1619 UNI20_EXTERNAL_API_CALL(LAPACK, dsygvd_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork);
1620 detail::dsygvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, iwork, &liwork, &info);
1621 return info;
1622}
1623
1624[[nodiscard]] inline blas_int sygvx(blas_int itype, char jobz, char range, char uplo, blas_int n, float* a,
1625 blas_int lda, float* b, blas_int ldb, float vl, float vu, blas_int il, blas_int iu,
1626 float abstol, blas_int& selected_count, float* w, float* z, blas_int ldz,
1627 float* work, blas_int lwork, blas_int* iwork, blas_int* ifail)
1628{
1629 blas_int info = 0;
1630 UNI20_EXTERNAL_API_CALL(LAPACK, ssygvx_, itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
1631 selected_count, w, z, ldz, work, lwork, iwork, ifail);
1632 detail::ssygvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, &vl, &vu, &il, &iu, &abstol, &selected_count, w,
1633 z, &ldz, work, &lwork, iwork, ifail, &info);
1634 return info;
1635}
1636
1637[[nodiscard]] inline blas_int sygvx(blas_int itype, char jobz, char range, char uplo, blas_int n, double* a,
1638 blas_int lda, double* b, blas_int ldb, double vl, double vu, blas_int il,
1639 blas_int iu, double abstol, blas_int& selected_count, double* w, double* z,
1640 blas_int ldz, double* work, blas_int lwork, blas_int* iwork, blas_int* ifail)
1641{
1642 blas_int info = 0;
1643 UNI20_EXTERNAL_API_CALL(LAPACK, dsygvx_, itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
1644 selected_count, w, z, ldz, work, lwork, iwork, ifail);
1645 detail::dsygvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, &vl, &vu, &il, &iu, &abstol, &selected_count, w,
1646 z, &ldz, work, &lwork, iwork, ifail, &info);
1647 return info;
1648}
1649
1650[[nodiscard]] inline blas_int heev(char jobz, char uplo, blas_int n, uni20::complex<float>* a, blas_int lda, float* w,
1651 uni20::complex<float>* work, blas_int lwork, float* rwork)
1652{
1653 blas_int info = 0;
1654 UNI20_EXTERNAL_API_CALL(LAPACK, cheev_, jobz, uplo, n, a, lda, w, work, lwork, rwork);
1655 detail::cheev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info);
1656 return info;
1657}
1658
1659[[nodiscard]] inline blas_int heev(char jobz, char uplo, blas_int n, uni20::complex<double>* a, blas_int lda, double* w,
1660 uni20::complex<double>* work, blas_int lwork, double* rwork)
1661{
1662 blas_int info = 0;
1663 UNI20_EXTERNAL_API_CALL(LAPACK, zheev_, jobz, uplo, n, a, lda, w, work, lwork, rwork);
1664 detail::zheev_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info);
1665 return info;
1666}
1667
1668[[nodiscard]] inline blas_int heevd(char jobz, char uplo, blas_int n, uni20::complex<float>* a, blas_int lda, float* w,
1669 uni20::complex<float>* work, blas_int lwork, float* rwork, blas_int lrwork,
1670 blas_int* iwork, blas_int liwork)
1671{
1672 blas_int info = 0;
1673 UNI20_EXTERNAL_API_CALL(LAPACK, cheevd_, jobz, uplo, n, a, lda, w, work, lwork, rwork, lrwork, iwork, liwork);
1674 detail::cheevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1675 return info;
1676}
1677
1678[[nodiscard]] inline blas_int heevd(char jobz, char uplo, blas_int n, uni20::complex<double>* a, blas_int lda,
1679 double* w, uni20::complex<double>* work, blas_int lwork, double* rwork,
1680 blas_int lrwork, blas_int* iwork, blas_int liwork)
1681{
1682 blas_int info = 0;
1683 UNI20_EXTERNAL_API_CALL(LAPACK, zheevd_, jobz, uplo, n, a, lda, w, work, lwork, rwork, lrwork, iwork, liwork);
1684 detail::zheevd_(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1685 return info;
1686}
1687
1688[[nodiscard]] inline blas_int heevr(char jobz, char range, char uplo, blas_int n, uni20::complex<float>* a,
1689 blas_int lda, float vl, float vu, blas_int il, blas_int iu, float abstol,
1690 blas_int& selected_count, float* w, uni20::complex<float>* z, blas_int ldz,
1691 blas_int* isuppz, uni20::complex<float>* work, blas_int lwork, float* rwork,
1692 blas_int lrwork, blas_int* iwork, blas_int liwork)
1693{
1694 blas_int info = 0;
1695 UNI20_EXTERNAL_API_CALL(LAPACK, cheevr_, jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
1696 ldz, isuppz, work, lwork, rwork, lrwork, iwork, liwork);
1697 detail::cheevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &selected_count, w, z, &ldz, isuppz,
1698 work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1699 return info;
1700}
1701
1702[[nodiscard]] inline blas_int heevr(char jobz, char range, char uplo, blas_int n, uni20::complex<double>* a,
1703 blas_int lda, double vl, double vu, blas_int il, blas_int iu, double abstol,
1704 blas_int& selected_count, double* w, uni20::complex<double>* z, blas_int ldz,
1705 blas_int* isuppz, uni20::complex<double>* work, blas_int lwork, double* rwork,
1706 blas_int lrwork, blas_int* iwork, blas_int liwork)
1707{
1708 blas_int info = 0;
1709 UNI20_EXTERNAL_API_CALL(LAPACK, zheevr_, jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
1710 ldz, isuppz, work, lwork, rwork, lrwork, iwork, liwork);
1711 detail::zheevr_(&jobz, &range, &uplo, &n, a, &lda, &vl, &vu, &il, &iu, &abstol, &selected_count, w, z, &ldz, isuppz,
1712 work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1713 return info;
1714}
1715
1716[[nodiscard]] inline blas_int hegv(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex<float>* a,
1717 blas_int lda, uni20::complex<float>* b, blas_int ldb, float* w,
1718 uni20::complex<float>* work, blas_int lwork, float* rwork)
1719{
1720 blas_int info = 0;
1721 UNI20_EXTERNAL_API_CALL(LAPACK, chegv_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork);
1722 detail::chegv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info);
1723 return info;
1724}
1725
1726[[nodiscard]] inline blas_int hegv(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex<double>* a,
1727 blas_int lda, uni20::complex<double>* b, blas_int ldb, double* w,
1728 uni20::complex<double>* work, blas_int lwork, double* rwork)
1729{
1730 blas_int info = 0;
1731 UNI20_EXTERNAL_API_CALL(LAPACK, zhegv_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork);
1732 detail::zhegv_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info);
1733 return info;
1734}
1735
1736[[nodiscard]] inline blas_int hegvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex<float>* a,
1737 blas_int lda, uni20::complex<float>* b, blas_int ldb, float* w,
1738 uni20::complex<float>* work, blas_int lwork, float* rwork, blas_int lrwork,
1739 blas_int* iwork, blas_int liwork)
1740{
1741 blas_int info = 0;
1742 UNI20_EXTERNAL_API_CALL(LAPACK, chegvd_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, lrwork, iwork,
1743 liwork);
1744 detail::chegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1745 return info;
1746}
1747
1748[[nodiscard]] inline blas_int hegvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex<double>* a,
1749 blas_int lda, uni20::complex<double>* b, blas_int ldb, double* w,
1750 uni20::complex<double>* work, blas_int lwork, double* rwork, blas_int lrwork,
1751 blas_int* iwork, blas_int liwork)
1752{
1753 blas_int info = 0;
1754 UNI20_EXTERNAL_API_CALL(LAPACK, zhegvd_, itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, lrwork, iwork,
1755 liwork);
1756 detail::zhegvd_(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &lrwork, iwork, &liwork, &info);
1757 return info;
1758}
1759
1760[[nodiscard]] inline blas_int hegvx(blas_int itype, char jobz, char range, char uplo, blas_int n,
1761 uni20::complex<float>* a, blas_int lda, uni20::complex<float>* b, blas_int ldb,
1762 float vl, float vu, blas_int il, blas_int iu, float abstol,
1763 blas_int& selected_count, float* w, uni20::complex<float>* z, blas_int ldz,
1764 uni20::complex<float>* work, blas_int lwork, float* rwork, blas_int* iwork,
1765 blas_int* ifail)
1766{
1767 blas_int info = 0;
1768 UNI20_EXTERNAL_API_CALL(LAPACK, chegvx_, itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
1769 selected_count, w, z, ldz, work, lwork, rwork, iwork, ifail);
1770 detail::chegvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, &vl, &vu, &il, &iu, &abstol, &selected_count, w,
1771 z, &ldz, work, &lwork, rwork, iwork, ifail, &info);
1772 return info;
1773}
1774
1775[[nodiscard]] inline blas_int hegvx(blas_int itype, char jobz, char range, char uplo, blas_int n,
1776 uni20::complex<double>* a, blas_int lda, uni20::complex<double>* b, blas_int ldb,
1777 double vl, double vu, blas_int il, blas_int iu, double abstol,
1778 blas_int& selected_count, double* w, uni20::complex<double>* z, blas_int ldz,
1779 uni20::complex<double>* work, blas_int lwork, double* rwork, blas_int* iwork,
1780 blas_int* ifail)
1781{
1782 blas_int info = 0;
1783 UNI20_EXTERNAL_API_CALL(LAPACK, zhegvx_, itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
1784 selected_count, w, z, ldz, work, lwork, rwork, iwork, ifail);
1785 detail::zhegvx_(&itype, &jobz, &range, &uplo, &n, a, &lda, b, &ldb, &vl, &vu, &il, &iu, &abstol, &selected_count, w,
1786 z, &ldz, work, &lwork, rwork, iwork, ifail, &info);
1787 return info;
1788}
1789
1790[[nodiscard]] inline blas_int geev(char jobvl, char jobvr, blas_int n, float* a, blas_int lda, float* wr, float* wi,
1791 float* vl, blas_int ldvl, float* vr, blas_int ldvr, float* work, blas_int lwork)
1792{
1793 blas_int info = 0;
1794 UNI20_EXTERNAL_API_CALL(LAPACK, sgeev_, jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork);
1795 detail::sgeev_(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
1796 return info;
1797}
1798
1799[[nodiscard]] inline blas_int geev(char jobvl, char jobvr, blas_int n, double* a, blas_int lda, double* wr, double* wi,
1800 double* vl, blas_int ldvl, double* vr, blas_int ldvr, double* work, blas_int lwork)
1801{
1802 blas_int info = 0;
1803 UNI20_EXTERNAL_API_CALL(LAPACK, dgeev_, jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork);
1804 detail::dgeev_(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
1805 return info;
1806}
1807
1808[[nodiscard]] inline blas_int geevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, float* a, blas_int lda,
1809 float* wr, float* wi, float* vl, blas_int ldvl, float* vr, blas_int ldvr,
1810 blas_int& ilo, blas_int& ihi, float* scale, float& abnrm, float* rconde,
1811 float* rcondv, float* work, blas_int lwork, blas_int* iwork)
1812{
1813 blas_int info = 0;
1814 UNI20_EXTERNAL_API_CALL(LAPACK, sgeevx_, balanc, jobvl, jobvr, sense, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, ilo, ihi,
1815 scale, abnrm, rconde, rcondv, work, lwork, iwork);
1816 detail::sgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, &abnrm,
1817 rconde, rcondv, work, &lwork, iwork, &info);
1818 return info;
1819}
1820
1821[[nodiscard]] inline blas_int geevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, double* a,
1822 blas_int lda, double* wr, double* wi, double* vl, blas_int ldvl, double* vr,
1823 blas_int ldvr, blas_int& ilo, blas_int& ihi, double* scale, double& abnrm,
1824 double* rconde, double* rcondv, double* work, blas_int lwork, blas_int* iwork)
1825{
1826 blas_int info = 0;
1827 UNI20_EXTERNAL_API_CALL(LAPACK, dgeevx_, balanc, jobvl, jobvr, sense, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, ilo, ihi,
1828 scale, abnrm, rconde, rcondv, work, lwork, iwork);
1829 detail::dgeevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, &ilo, &ihi, scale, &abnrm,
1830 rconde, rcondv, work, &lwork, iwork, &info);
1831 return info;
1832}
1833
1834[[nodiscard]] inline blas_int gebal(char job, blas_int n, float* a, blas_int lda, blas_int& first, blas_int& last,
1835 float* scale)
1836{
1837 blas_int info = 0;
1838 UNI20_EXTERNAL_API_CALL(LAPACK, sgebal_, job, n, a, lda, first, last, scale);
1839 detail::sgebal_(&job, &n, a, &lda, &first, &last, scale, &info);
1840 return info;
1841}
1842
1843[[nodiscard]] inline blas_int gebal(char job, blas_int n, double* a, blas_int lda, blas_int& first, blas_int& last,
1844 double* scale)
1845{
1846 blas_int info = 0;
1847 UNI20_EXTERNAL_API_CALL(LAPACK, dgebal_, job, n, a, lda, first, last, scale);
1848 detail::dgebal_(&job, &n, a, &lda, &first, &last, scale, &info);
1849 return info;
1850}
1851
1852[[nodiscard]] inline blas_int gebak(char job, char side, blas_int n, blas_int first, blas_int last, float* scale,
1853 blas_int vector_count, float* vectors, blas_int leading_dimension)
1854{
1855 blas_int info = 0;
1856 UNI20_EXTERNAL_API_CALL(LAPACK, sgebak_, job, side, n, first, last, scale, vector_count, vectors, leading_dimension);
1857 detail::sgebak_(&job, &side, &n, &first, &last, scale, &vector_count, vectors, &leading_dimension, &info);
1858 return info;
1859}
1860
1861[[nodiscard]] inline blas_int gebak(char job, char side, blas_int n, blas_int first, blas_int last, double* scale,
1862 blas_int vector_count, double* vectors, blas_int leading_dimension)
1863{
1864 blas_int info = 0;
1865 UNI20_EXTERNAL_API_CALL(LAPACK, dgebak_, job, side, n, first, last, scale, vector_count, vectors, leading_dimension);
1866 detail::dgebak_(&job, &side, &n, &first, &last, scale, &vector_count, vectors, &leading_dimension, &info);
1867 return info;
1868}
1869
1870[[nodiscard]] inline blas_int geev(char jobvl, char jobvr, blas_int n, uni20::complex<float>* a, blas_int lda,
1871 uni20::complex<float>* w, uni20::complex<float>* vl, blas_int ldvl,
1872 uni20::complex<float>* vr, blas_int ldvr, uni20::complex<float>* work,
1873 blas_int lwork, float* rwork)
1874{
1875 blas_int info = 0;
1876 UNI20_EXTERNAL_API_CALL(LAPACK, cgeev_, jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork);
1877 detail::cgeev_(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
1878 return info;
1879}
1880
1881[[nodiscard]] inline blas_int geev(char jobvl, char jobvr, blas_int n, uni20::complex<double>* a, blas_int lda,
1882 uni20::complex<double>* w, uni20::complex<double>* vl, blas_int ldvl,
1883 uni20::complex<double>* vr, blas_int ldvr, uni20::complex<double>* work,
1884 blas_int lwork, double* rwork)
1885{
1886 blas_int info = 0;
1887 UNI20_EXTERNAL_API_CALL(LAPACK, zgeev_, jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork);
1888 detail::zgeev_(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
1889 return info;
1890}
1891
1892[[nodiscard]] inline blas_int gees(char jobvs, char sort, blas_int n, float* a, blas_int lda,
1893 blas_int& selected_dimension, float* wr, float* wi, float* vs, blas_int ldvs,
1894 float* work, blas_int lwork, blas_int* bwork)
1895{
1896 blas_int info = 0;
1897 UNI20_EXTERNAL_API_CALL(LAPACK, sgees_, jobvs, sort, n, a, lda, selected_dimension, wr, wi, vs, ldvs, work, lwork,
1898 bwork);
1899 detail::sgees_(&jobvs, &sort, nullptr, &n, a, &lda, &selected_dimension, wr, wi, vs, &ldvs, work, &lwork, bwork,
1900 &info);
1901 return info;
1902}
1903
1904[[nodiscard]] inline blas_int gees(char jobvs, char sort, blas_int n, double* a, blas_int lda,
1905 blas_int& selected_dimension, double* wr, double* wi, double* vs, blas_int ldvs,
1906 double* work, blas_int lwork, blas_int* bwork)
1907{
1908 blas_int info = 0;
1909 UNI20_EXTERNAL_API_CALL(LAPACK, dgees_, jobvs, sort, n, a, lda, selected_dimension, wr, wi, vs, ldvs, work, lwork,
1910 bwork);
1911 detail::dgees_(&jobvs, &sort, nullptr, &n, a, &lda, &selected_dimension, wr, wi, vs, &ldvs, work, &lwork, bwork,
1912 &info);
1913 return info;
1914}
1915
1916[[nodiscard]] inline blas_int gees(char jobvs, char sort, blas_int n, uni20::complex<float>* a, blas_int lda,
1917 blas_int& selected_dimension, uni20::complex<float>* w, uni20::complex<float>* vs,
1918 blas_int ldvs, uni20::complex<float>* work, blas_int lwork, float* rwork,
1919 blas_int* bwork)
1920{
1921 blas_int info = 0;
1922 UNI20_EXTERNAL_API_CALL(LAPACK, cgees_, jobvs, sort, n, a, lda, selected_dimension, w, vs, ldvs, work, lwork, rwork,
1923 bwork);
1924 detail::cgees_(&jobvs, &sort, nullptr, &n, a, &lda, &selected_dimension, w, vs, &ldvs, work, &lwork, rwork, bwork,
1925 &info);
1926 return info;
1927}
1928
1929[[nodiscard]] inline blas_int gees(char jobvs, char sort, blas_int n, uni20::complex<double>* a, blas_int lda,
1930 blas_int& selected_dimension, uni20::complex<double>* w, uni20::complex<double>* vs,
1931 blas_int ldvs, uni20::complex<double>* work, blas_int lwork, double* rwork,
1932 blas_int* bwork)
1933{
1934 blas_int info = 0;
1935 UNI20_EXTERNAL_API_CALL(LAPACK, zgees_, jobvs, sort, n, a, lda, selected_dimension, w, vs, ldvs, work, lwork, rwork,
1936 bwork);
1937 detail::zgees_(&jobvs, &sort, nullptr, &n, a, &lda, &selected_dimension, w, vs, &ldvs, work, &lwork, rwork, bwork,
1938 &info);
1939 return info;
1940}
1941
1942[[nodiscard]] inline blas_int hseqr(char job, char compz, blas_int n, blas_int first, blas_int last, float* h,
1943 blas_int ldh, float* wr, float* wi, float* z, blas_int ldz, float* work,
1944 blas_int lwork)
1945{
1946 blas_int info = 0;
1947 UNI20_EXTERNAL_API_CALL(LAPACK, shseqr_, job, compz, n, first, last, h, ldh, wr, wi, z, ldz, work, lwork);
1948 detail::shseqr_(&job, &compz, &n, &first, &last, h, &ldh, wr, wi, z, &ldz, work, &lwork, &info);
1949 return info;
1950}
1951
1952[[nodiscard]] inline blas_int hseqr(char job, char compz, blas_int n, blas_int first, blas_int last, double* h,
1953 blas_int ldh, double* wr, double* wi, double* z, blas_int ldz, double* work,
1954 blas_int lwork)
1955{
1956 blas_int info = 0;
1957 UNI20_EXTERNAL_API_CALL(LAPACK, dhseqr_, job, compz, n, first, last, h, ldh, wr, wi, z, ldz, work, lwork);
1958 detail::dhseqr_(&job, &compz, &n, &first, &last, h, &ldh, wr, wi, z, &ldz, work, &lwork, &info);
1959 return info;
1960}
1961
1962[[nodiscard]] inline blas_int trexc(char compq, blas_int n, float* t, blas_int ldt, float* q, blas_int ldq,
1963 blas_int& first, blas_int& last, float* work)
1964{
1965 blas_int info = 0;
1966 UNI20_EXTERNAL_API_CALL(LAPACK, strexc_, compq, n, t, ldt, q, ldq, first, last, work);
1967 detail::strexc_(&compq, &n, t, &ldt, q, &ldq, &first, &last, work, &info);
1968 return info;
1969}
1970
1971[[nodiscard]] inline blas_int trexc(char compq, blas_int n, double* t, blas_int ldt, double* q, blas_int ldq,
1972 blas_int& first, blas_int& last, double* work)
1973{
1974 blas_int info = 0;
1975 UNI20_EXTERNAL_API_CALL(LAPACK, dtrexc_, compq, n, t, ldt, q, ldq, first, last, work);
1976 detail::dtrexc_(&compq, &n, t, &ldt, q, &ldq, &first, &last, work, &info);
1977 return info;
1978}
1979
1980[[nodiscard]] inline blas_int trexc(char compq, blas_int n, uni20::complex<float>* t, blas_int ldt,
1981 uni20::complex<float>* q, blas_int ldq, blas_int& first, blas_int& last)
1982{
1983 blas_int info = 0;
1984 UNI20_EXTERNAL_API_CALL(LAPACK, ctrexc_, compq, n, t, ldt, q, ldq, first, last);
1985 detail::ctrexc_(&compq, &n, t, &ldt, q, &ldq, &first, &last, &info);
1986 return info;
1987}
1988
1989[[nodiscard]] inline blas_int trexc(char compq, blas_int n, uni20::complex<double>* t, blas_int ldt,
1990 uni20::complex<double>* q, blas_int ldq, blas_int& first, blas_int& last)
1991{
1992 blas_int info = 0;
1993 UNI20_EXTERNAL_API_CALL(LAPACK, ztrexc_, compq, n, t, ldt, q, ldq, first, last);
1994 detail::ztrexc_(&compq, &n, t, &ldt, q, &ldq, &first, &last, &info);
1995 return info;
1996}
1997
1998[[nodiscard]] inline blas_int trsen(char job, char compq, blas_int* select, blas_int n, float* t, blas_int ldt,
1999 float* q, blas_int ldq, float* wr, float* wi, blas_int& selected_dimension,
2000 float& reciprocal_eigenvalue_cluster_condition,
2001 float& reciprocal_invariant_subspace_condition, float* work, blas_int lwork,
2002 blas_int* iwork, blas_int liwork)
2003{
2004 blas_int info = 0;
2005 UNI20_EXTERNAL_API_CALL(LAPACK, strsen_, job, compq, select, n, t, ldt, q, ldq, wr, wi, selected_dimension,
2006 reciprocal_eigenvalue_cluster_condition, reciprocal_invariant_subspace_condition, work, lwork,
2007 iwork, liwork);
2008 detail::strsen_(&job, &compq, select, &n, t, &ldt, q, &ldq, wr, wi, &selected_dimension,
2009 &reciprocal_eigenvalue_cluster_condition, &reciprocal_invariant_subspace_condition, work, &lwork,
2010 iwork, &liwork, &info);
2011 return info;
2012}
2013
2014[[nodiscard]] inline blas_int trsen(char job, char compq, blas_int* select, blas_int n, double* t, blas_int ldt,
2015 double* q, blas_int ldq, double* wr, double* wi, blas_int& selected_dimension,
2016 double& reciprocal_eigenvalue_cluster_condition,
2017 double& reciprocal_invariant_subspace_condition, double* work, blas_int lwork,
2018 blas_int* iwork, blas_int liwork)
2019{
2020 blas_int info = 0;
2021 UNI20_EXTERNAL_API_CALL(LAPACK, dtrsen_, job, compq, select, n, t, ldt, q, ldq, wr, wi, selected_dimension,
2022 reciprocal_eigenvalue_cluster_condition, reciprocal_invariant_subspace_condition, work, lwork,
2023 iwork, liwork);
2024 detail::dtrsen_(&job, &compq, select, &n, t, &ldt, q, &ldq, wr, wi, &selected_dimension,
2025 &reciprocal_eigenvalue_cluster_condition, &reciprocal_invariant_subspace_condition, work, &lwork,
2026 iwork, &liwork, &info);
2027 return info;
2028}
2029
2030[[nodiscard]] inline blas_int trevc(char side, char howmny, blas_int* select, blas_int n, float* t, blas_int ldt,
2031 float* vl, blas_int ldvl, float* vr, blas_int ldvr, blas_int mm,
2032 blas_int& computed_vectors, float* work)
2033{
2034 blas_int info = 0;
2035 UNI20_EXTERNAL_API_CALL(LAPACK, strevc_, side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, mm, computed_vectors,
2036 work);
2037 detail::strevc_(&side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &computed_vectors, work, &info);
2038 return info;
2039}
2040
2041[[nodiscard]] inline blas_int trevc(char side, char howmny, blas_int* select, blas_int n, double* t, blas_int ldt,
2042 double* vl, blas_int ldvl, double* vr, blas_int ldvr, blas_int mm,
2043 blas_int& computed_vectors, double* work)
2044{
2045 blas_int info = 0;
2046 UNI20_EXTERNAL_API_CALL(LAPACK, dtrevc_, side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, mm, computed_vectors,
2047 work);
2048 detail::dtrevc_(&side, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, &mm, &computed_vectors, work, &info);
2049 return info;
2050}
2051
2052[[nodiscard]] inline blas_int trsna(char job, char howmny, blas_int* select, blas_int n, float* t, blas_int ldt,
2053 float* vl, blas_int ldvl, float* vr, blas_int ldvr,
2054 float* reciprocal_eigenvalue_condition_numbers,
2055 float* reciprocal_eigenvector_condition_numbers, blas_int mm,
2056 blas_int& computed_estimates, float* work, blas_int ldwork, blas_int* iwork)
2057{
2058 blas_int info = 0;
2059 UNI20_EXTERNAL_API_CALL(LAPACK, strsna_, job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
2060 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, mm,
2061 computed_estimates, work, ldwork, iwork);
2062 detail::strsna_(&job, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, reciprocal_eigenvalue_condition_numbers,
2063 reciprocal_eigenvector_condition_numbers, &mm, &computed_estimates, work, &ldwork, iwork, &info);
2064 return info;
2065}
2066
2067[[nodiscard]] inline blas_int trsna(char job, char howmny, blas_int* select, blas_int n, double* t, blas_int ldt,
2068 double* vl, blas_int ldvl, double* vr, blas_int ldvr,
2069 double* reciprocal_eigenvalue_condition_numbers,
2070 double* reciprocal_eigenvector_condition_numbers, blas_int mm,
2071 blas_int& computed_estimates, double* work, blas_int ldwork, blas_int* iwork)
2072{
2073 blas_int info = 0;
2074 UNI20_EXTERNAL_API_CALL(LAPACK, dtrsna_, job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr,
2075 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, mm,
2076 computed_estimates, work, ldwork, iwork);
2077 detail::dtrsna_(&job, &howmny, select, &n, t, &ldt, vl, &ldvl, vr, &ldvr, reciprocal_eigenvalue_condition_numbers,
2078 reciprocal_eigenvector_condition_numbers, &mm, &computed_estimates, work, &ldwork, iwork, &info);
2079 return info;
2080}
2081
2082[[nodiscard]] inline blas_int ggev(char jobvl, char jobvr, blas_int n, float* a, blas_int lda, float* b, blas_int ldb,
2083 float* alphar, float* alphai, float* beta, float* vl, blas_int ldvl, float* vr,
2084 blas_int ldvr, float* work, blas_int lwork)
2085{
2086 blas_int info = 0;
2087 UNI20_EXTERNAL_API_CALL(LAPACK, sggev_, jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr,
2088 work, lwork);
2089 detail::sggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
2090 return info;
2091}
2092
2093[[nodiscard]] inline blas_int ggev(char jobvl, char jobvr, blas_int n, double* a, blas_int lda, double* b, blas_int ldb,
2094 double* alphar, double* alphai, double* beta, double* vl, blas_int ldvl, double* vr,
2095 blas_int ldvr, double* work, blas_int lwork)
2096{
2097 blas_int info = 0;
2098 UNI20_EXTERNAL_API_CALL(LAPACK, dggev_, jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, beta, vl, ldvl, vr, ldvr,
2099 work, lwork);
2100 detail::dggev_(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
2101 return info;
2102}
2103
2104[[nodiscard]] inline blas_int ggevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, float* a, blas_int lda,
2105 float* b, blas_int ldb, float* alphar, float* alphai, float* beta, float* vl,
2106 blas_int ldvl, float* vr, blas_int ldvr, blas_int& ilo, blas_int& ihi,
2107 float* lscale, float* rscale, float& abnrm, float& bbnrm, float* rconde,
2108 float* rcondv, float* work, blas_int lwork, blas_int* iwork, blas_int* bwork)
2109{
2110 blas_int info = 0;
2111 UNI20_EXTERNAL_API_CALL(LAPACK, sggevx_, balanc, jobvl, jobvr, sense, n, a, lda, b, ldb, alphar, alphai, beta, vl,
2112 ldvl, vr, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, lwork, iwork,
2113 bwork);
2114 detail::sggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr,
2115 &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rconde, rcondv, work, &lwork, iwork, bwork, &info);
2116 return info;
2117}
2118
2119[[nodiscard]] inline blas_int ggevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, double* a,
2120 blas_int lda, double* b, blas_int ldb, double* alphar, double* alphai, double* beta,
2121 double* vl, blas_int ldvl, double* vr, blas_int ldvr, blas_int& ilo, blas_int& ihi,
2122 double* lscale, double* rscale, double& abnrm, double& bbnrm, double* rconde,
2123 double* rcondv, double* work, blas_int lwork, blas_int* iwork, blas_int* bwork)
2124{
2125 blas_int info = 0;
2126 UNI20_EXTERNAL_API_CALL(LAPACK, dggevx_, balanc, jobvl, jobvr, sense, n, a, lda, b, ldb, alphar, alphai, beta, vl,
2127 ldvl, vr, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, lwork, iwork,
2128 bwork);
2129 detail::dggevx_(&balanc, &jobvl, &jobvr, &sense, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr,
2130 &ilo, &ihi, lscale, rscale, &abnrm, &bbnrm, rconde, rcondv, work, &lwork, iwork, bwork, &info);
2131 return info;
2132}
2133
2134[[nodiscard]] inline blas_int ggbal(char job, blas_int n, float* a, blas_int lda, float* b, blas_int ldb,
2135 blas_int& first, blas_int& last, float* lscale, float* rscale, float* work)
2136{
2137 blas_int info = 0;
2138 UNI20_EXTERNAL_API_CALL(LAPACK, sggbal_, job, n, a, lda, b, ldb, first, last, lscale, rscale, work);
2139 detail::sggbal_(&job, &n, a, &lda, b, &ldb, &first, &last, lscale, rscale, work, &info);
2140 return info;
2141}
2142
2143[[nodiscard]] inline blas_int ggbal(char job, blas_int n, double* a, blas_int lda, double* b, blas_int ldb,
2144 blas_int& first, blas_int& last, double* lscale, double* rscale, double* work)
2145{
2146 blas_int info = 0;
2147 UNI20_EXTERNAL_API_CALL(LAPACK, dggbal_, job, n, a, lda, b, ldb, first, last, lscale, rscale, work);
2148 detail::dggbal_(&job, &n, a, &lda, b, &ldb, &first, &last, lscale, rscale, work, &info);
2149 return info;
2150}
2151
2152[[nodiscard]] inline blas_int ggbak(char job, char side, blas_int n, blas_int first, blas_int last, float* lscale,
2153 float* rscale, blas_int vector_count, float* vectors, blas_int leading_dimension)
2154{
2155 blas_int info = 0;
2156 UNI20_EXTERNAL_API_CALL(LAPACK, sggbak_, job, side, n, first, last, lscale, rscale, vector_count, vectors,
2157 leading_dimension);
2158 detail::sggbak_(&job, &side, &n, &first, &last, lscale, rscale, &vector_count, vectors, &leading_dimension, &info);
2159 return info;
2160}
2161
2162[[nodiscard]] inline blas_int ggbak(char job, char side, blas_int n, blas_int first, blas_int last, double* lscale,
2163 double* rscale, blas_int vector_count, double* vectors, blas_int leading_dimension)
2164{
2165 blas_int info = 0;
2166 UNI20_EXTERNAL_API_CALL(LAPACK, dggbak_, job, side, n, first, last, lscale, rscale, vector_count, vectors,
2167 leading_dimension);
2168 detail::dggbak_(&job, &side, &n, &first, &last, lscale, rscale, &vector_count, vectors, &leading_dimension, &info);
2169 return info;
2170}
2171
2172[[nodiscard]] inline blas_int gges(char jobvsl, char jobvsr, char sort, blas_int n, float* a, blas_int lda, float* b,
2173 blas_int ldb, blas_int& selected_dimension, float* alphar, float* alphai,
2174 float* beta, float* vsl, blas_int ldvsl, float* vsr, blas_int ldvsr, float* work,
2175 blas_int lwork, blas_int* bwork)
2176{
2177 blas_int info = 0;
2178 UNI20_EXTERNAL_API_CALL(LAPACK, sgges_, jobvsl, jobvsr, sort, n, a, lda, b, ldb, selected_dimension, alphar, alphai,
2179 beta, vsl, ldvsl, vsr, ldvsr, work, lwork, bwork);
2180 detail::sgges_(&jobvsl, &jobvsr, &sort, nullptr, &n, a, &lda, b, &ldb, &selected_dimension, alphar, alphai, beta, vsl,
2181 &ldvsl, vsr, &ldvsr, work, &lwork, bwork, &info);
2182 return info;
2183}
2184
2185[[nodiscard]] inline blas_int gges(char jobvsl, char jobvsr, char sort, blas_int n, double* a, blas_int lda, double* b,
2186 blas_int ldb, blas_int& selected_dimension, double* alphar, double* alphai,
2187 double* beta, double* vsl, blas_int ldvsl, double* vsr, blas_int ldvsr, double* work,
2188 blas_int lwork, blas_int* bwork)
2189{
2190 blas_int info = 0;
2191 UNI20_EXTERNAL_API_CALL(LAPACK, dgges_, jobvsl, jobvsr, sort, n, a, lda, b, ldb, selected_dimension, alphar, alphai,
2192 beta, vsl, ldvsl, vsr, ldvsr, work, lwork, bwork);
2193 detail::dgges_(&jobvsl, &jobvsr, &sort, nullptr, &n, a, &lda, b, &ldb, &selected_dimension, alphar, alphai, beta, vsl,
2194 &ldvsl, vsr, &ldvsr, work, &lwork, bwork, &info);
2195 return info;
2196}
2197
2198[[nodiscard]] inline blas_int gghrd(char compq, char compz, blas_int n, blas_int first, blas_int last, float* a,
2199 blas_int lda, float* b, blas_int ldb, float* q, blas_int ldq, float* z,
2200 blas_int ldz)
2201{
2202 blas_int info = 0;
2203 UNI20_EXTERNAL_API_CALL(LAPACK, sgghrd_, compq, compz, n, first, last, a, lda, b, ldb, q, ldq, z, ldz);
2204 detail::sgghrd_(&compq, &compz, &n, &first, &last, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info);
2205 return info;
2206}
2207
2208[[nodiscard]] inline blas_int gghrd(char compq, char compz, blas_int n, blas_int first, blas_int last, double* a,
2209 blas_int lda, double* b, blas_int ldb, double* q, blas_int ldq, double* z,
2210 blas_int ldz)
2211{
2212 blas_int info = 0;
2213 UNI20_EXTERNAL_API_CALL(LAPACK, dgghrd_, compq, compz, n, first, last, a, lda, b, ldb, q, ldq, z, ldz);
2214 detail::dgghrd_(&compq, &compz, &n, &first, &last, a, &lda, b, &ldb, q, &ldq, z, &ldz, &info);
2215 return info;
2216}
2217
2218[[nodiscard]] inline blas_int hgeqz(char job, char compq, char compz, blas_int n, blas_int first, blas_int last,
2219 float* h, blas_int ldh, float* t, blas_int ldt, float* alphar, float* alphai,
2220 float* beta, float* q, blas_int ldq, float* z, blas_int ldz, float* work,
2221 blas_int lwork)
2222{
2223 blas_int info = 0;
2224 UNI20_EXTERNAL_API_CALL(LAPACK, shgeqz_, job, compq, compz, n, first, last, h, ldh, t, ldt, alphar, alphai, beta, q,
2225 ldq, z, ldz, work, lwork);
2226 detail::shgeqz_(&job, &compq, &compz, &n, &first, &last, h, &ldh, t, &ldt, alphar, alphai, beta, q, &ldq, z, &ldz,
2227 work, &lwork, &info);
2228 return info;
2229}
2230
2231[[nodiscard]] inline blas_int hgeqz(char job, char compq, char compz, blas_int n, blas_int first, blas_int last,
2232 double* h, blas_int ldh, double* t, blas_int ldt, double* alphar, double* alphai,
2233 double* beta, double* q, blas_int ldq, double* z, blas_int ldz, double* work,
2234 blas_int lwork)
2235{
2236 blas_int info = 0;
2237 UNI20_EXTERNAL_API_CALL(LAPACK, dhgeqz_, job, compq, compz, n, first, last, h, ldh, t, ldt, alphar, alphai, beta, q,
2238 ldq, z, ldz, work, lwork);
2239 detail::dhgeqz_(&job, &compq, &compz, &n, &first, &last, h, &ldh, t, &ldt, alphar, alphai, beta, q, &ldq, z, &ldz,
2240 work, &lwork, &info);
2241 return info;
2242}
2243
2244[[nodiscard]] inline blas_int tgexc(bool wantq, bool wantz, blas_int n, float* a, blas_int lda, float* b, blas_int ldb,
2245 float* q, blas_int ldq, float* z, blas_int ldz, blas_int& first, blas_int& last,
2246 float* work, blas_int lwork)
2247{
2248 blas_int info = 0;
2249 blas_int const fortran_wantq = wantq ? 1 : 0;
2250 blas_int const fortran_wantz = wantz ? 1 : 0;
2251 UNI20_EXTERNAL_API_CALL(LAPACK, stgexc_, wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, first, last, work, lwork);
2252 detail::stgexc_(&fortran_wantq, &fortran_wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &first, &last, work, &lwork,
2253 &info);
2254 return info;
2255}
2256
2257[[nodiscard]] inline blas_int tgexc(bool wantq, bool wantz, blas_int n, double* a, blas_int lda, double* b,
2258 blas_int ldb, double* q, blas_int ldq, double* z, blas_int ldz, blas_int& first,
2259 blas_int& last, double* work, blas_int lwork)
2260{
2261 blas_int info = 0;
2262 blas_int const fortran_wantq = wantq ? 1 : 0;
2263 blas_int const fortran_wantz = wantz ? 1 : 0;
2264 UNI20_EXTERNAL_API_CALL(LAPACK, dtgexc_, wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, first, last, work, lwork);
2265 detail::dtgexc_(&fortran_wantq, &fortran_wantz, &n, a, &lda, b, &ldb, q, &ldq, z, &ldz, &first, &last, work, &lwork,
2266 &info);
2267 return info;
2268}
2269
2270[[nodiscard]] inline blas_int tgsen(blas_int ijob, bool wantq, bool wantz, blas_int* select, blas_int n, float* a,
2271 blas_int lda, float* b, blas_int ldb, float* alphar, float* alphai, float* beta,
2272 float* q, blas_int ldq, float* z, blas_int ldz, blas_int& selected_dimension,
2273 float& pl, float& pr, float* dif, float* work, blas_int lwork, blas_int* iwork,
2274 blas_int liwork)
2275{
2276 blas_int info = 0;
2277 blas_int const fortran_wantq = wantq ? 1 : 0;
2278 blas_int const fortran_wantz = wantz ? 1 : 0;
2279 UNI20_EXTERNAL_API_CALL(LAPACK, stgsen_, ijob, wantq, wantz, select, n, a, lda, b, ldb, alphar, alphai, beta, q, ldq,
2280 z, ldz, selected_dimension, pl, pr, dif, work, lwork, iwork, liwork);
2281 detail::stgsen_(&ijob, &fortran_wantq, &fortran_wantz, select, &n, a, &lda, b, &ldb, alphar, alphai, beta, q, &ldq, z,
2282 &ldz, &selected_dimension, &pl, &pr, dif, work, &lwork, iwork, &liwork, &info);
2283 return info;
2284}
2285
2286[[nodiscard]] inline blas_int tgsen(blas_int ijob, bool wantq, bool wantz, blas_int* select, blas_int n, double* a,
2287 blas_int lda, double* b, blas_int ldb, double* alphar, double* alphai, double* beta,
2288 double* q, blas_int ldq, double* z, blas_int ldz, blas_int& selected_dimension,
2289 double& pl, double& pr, double* dif, double* work, blas_int lwork, blas_int* iwork,
2290 blas_int liwork)
2291{
2292 blas_int info = 0;
2293 blas_int const fortran_wantq = wantq ? 1 : 0;
2294 blas_int const fortran_wantz = wantz ? 1 : 0;
2295 UNI20_EXTERNAL_API_CALL(LAPACK, dtgsen_, ijob, wantq, wantz, select, n, a, lda, b, ldb, alphar, alphai, beta, q, ldq,
2296 z, ldz, selected_dimension, pl, pr, dif, work, lwork, iwork, liwork);
2297 detail::dtgsen_(&ijob, &fortran_wantq, &fortran_wantz, select, &n, a, &lda, b, &ldb, alphar, alphai, beta, q, &ldq, z,
2298 &ldz, &selected_dimension, &pl, &pr, dif, work, &lwork, iwork, &liwork, &info);
2299 return info;
2300}
2301
2302[[nodiscard]] inline blas_int tgevc(char side, char howmny, blas_int* select, blas_int n, float* s, blas_int lds,
2303 float* p, blas_int ldp, float* vl, blas_int ldvl, float* vr, blas_int ldvr,
2304 blas_int mm, blas_int& computed_vectors, float* work)
2305{
2306 blas_int info = 0;
2307 UNI20_EXTERNAL_API_CALL(LAPACK, stgevc_, side, howmny, select, n, s, lds, p, ldp, vl, ldvl, vr, ldvr, mm,
2308 computed_vectors, work);
2309 detail::stgevc_(&side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &computed_vectors, work,
2310 &info);
2311 return info;
2312}
2313
2314[[nodiscard]] inline blas_int tgevc(char side, char howmny, blas_int* select, blas_int n, double* s, blas_int lds,
2315 double* p, blas_int ldp, double* vl, blas_int ldvl, double* vr, blas_int ldvr,
2316 blas_int mm, blas_int& computed_vectors, double* work)
2317{
2318 blas_int info = 0;
2319 UNI20_EXTERNAL_API_CALL(LAPACK, dtgevc_, side, howmny, select, n, s, lds, p, ldp, vl, ldvl, vr, ldvr, mm,
2320 computed_vectors, work);
2321 detail::dtgevc_(&side, &howmny, select, &n, s, &lds, p, &ldp, vl, &ldvl, vr, &ldvr, &mm, &computed_vectors, work,
2322 &info);
2323 return info;
2324}
2325
2326[[nodiscard]] inline blas_int tgsna(char job, char howmny, blas_int* select, blas_int n, float* a, blas_int lda,
2327 float* b, blas_int ldb, float* vl, blas_int ldvl, float* vr, blas_int ldvr,
2328 float* reciprocal_eigenvalue_condition_numbers,
2329 float* reciprocal_eigenvector_condition_numbers, blas_int mm,
2330 blas_int& computed_estimates, float* work, blas_int lwork, blas_int* iwork)
2331{
2332 blas_int info = 0;
2333 UNI20_EXTERNAL_API_CALL(LAPACK, stgsna_, job, howmny, select, n, a, lda, b, ldb, vl, ldvl, vr, ldvr,
2334 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, mm,
2335 computed_estimates, work, lwork, iwork);
2336 detail::stgsna_(&job, &howmny, select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr,
2337 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, &mm,
2338 &computed_estimates, work, &lwork, iwork, &info);
2339 return info;
2340}
2341
2342[[nodiscard]] inline blas_int tgsna(char job, char howmny, blas_int* select, blas_int n, double* a, blas_int lda,
2343 double* b, blas_int ldb, double* vl, blas_int ldvl, double* vr, blas_int ldvr,
2344 double* reciprocal_eigenvalue_condition_numbers,
2345 double* reciprocal_eigenvector_condition_numbers, blas_int mm,
2346 blas_int& computed_estimates, double* work, blas_int lwork, blas_int* iwork)
2347{
2348 blas_int info = 0;
2349 UNI20_EXTERNAL_API_CALL(LAPACK, dtgsna_, job, howmny, select, n, a, lda, b, ldb, vl, ldvl, vr, ldvr,
2350 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, mm,
2351 computed_estimates, work, lwork, iwork);
2352 detail::dtgsna_(&job, &howmny, select, &n, a, &lda, b, &ldb, vl, &ldvl, vr, &ldvr,
2353 reciprocal_eigenvalue_condition_numbers, reciprocal_eigenvector_condition_numbers, &mm,
2354 &computed_estimates, work, &lwork, iwork, &info);
2355 return info;
2356}
2357
2358[[nodiscard]] inline blas_int orgbr(char vect, blas_int m, blas_int n, blas_int k, float* a, blas_int lda, float* tau,
2359 float* work, blas_int lwork)
2360{
2361 blas_int info = 0;
2362 UNI20_EXTERNAL_API_CALL(LAPACK, sorgbr_, vect, m, n, k, a, lda, tau, work, lwork);
2363 detail::sorgbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info);
2364 return info;
2365}
2366
2367[[nodiscard]] inline blas_int orgbr(char vect, blas_int m, blas_int n, blas_int k, double* a, blas_int lda, double* tau,
2368 double* work, blas_int lwork)
2369{
2370 blas_int info = 0;
2371 UNI20_EXTERNAL_API_CALL(LAPACK, dorgbr_, vect, m, n, k, a, lda, tau, work, lwork);
2372 detail::dorgbr_(&vect, &m, &n, &k, a, &lda, tau, work, &lwork, &info);
2373 return info;
2374}
2375
2376[[nodiscard]] inline blas_int orghr(blas_int n, blas_int first, blas_int last, float* a, blas_int lda, float const* tau,
2377 float* work, blas_int lwork)
2378{
2379 blas_int info = 0;
2380 UNI20_EXTERNAL_API_CALL(LAPACK, sorghr_, n, first, last, a, lda, tau, work, lwork);
2381 detail::sorghr_(&n, &first, &last, a, &lda, tau, work, &lwork, &info);
2382 return info;
2383}
2384
2385[[nodiscard]] inline blas_int orghr(blas_int n, blas_int first, blas_int last, double* a, blas_int lda,
2386 double const* tau, double* work, blas_int lwork)
2387{
2388 blas_int info = 0;
2389 UNI20_EXTERNAL_API_CALL(LAPACK, dorghr_, n, first, last, a, lda, tau, work, lwork);
2390 detail::dorghr_(&n, &first, &last, a, &lda, tau, work, &lwork, &info);
2391 return info;
2392}
2393
2394[[nodiscard]] inline blas_int orgtr(char uplo, blas_int n, float* a, blas_int lda, float const* tau, float* work,
2395 blas_int lwork)
2396{
2397 blas_int info = 0;
2398 UNI20_EXTERNAL_API_CALL(LAPACK, sorgtr_, uplo, n, a, lda, tau, work, lwork);
2399 detail::sorgtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info);
2400 return info;
2401}
2402
2403[[nodiscard]] inline blas_int orgtr(char uplo, blas_int n, double* a, blas_int lda, double const* tau, double* work,
2404 blas_int lwork)
2405{
2406 blas_int info = 0;
2407 UNI20_EXTERNAL_API_CALL(LAPACK, dorgtr_, uplo, n, a, lda, tau, work, lwork);
2408 detail::dorgtr_(&uplo, &n, a, &lda, tau, work, &lwork, &info);
2409 return info;
2410}
2411
2412[[nodiscard]] inline blas_int ormhr(char side, char trans, blas_int m, blas_int n, blas_int first, blas_int last,
2413 float* a, blas_int lda, float const* tau, float* c, blas_int ldc, float* work,
2414 blas_int lwork)
2415{
2416 blas_int info = 0;
2417 UNI20_EXTERNAL_API_CALL(LAPACK, sormhr_, side, trans, m, n, first, last, a, lda, tau, c, ldc, work, lwork);
2418 detail::sormhr_(&side, &trans, &m, &n, &first, &last, a, &lda, tau, c, &ldc, work, &lwork, &info);
2419 return info;
2420}
2421
2422[[nodiscard]] inline blas_int ormhr(char side, char trans, blas_int m, blas_int n, blas_int first, blas_int last,
2423 double* a, blas_int lda, double const* tau, double* c, blas_int ldc, double* work,
2424 blas_int lwork)
2425{
2426 blas_int info = 0;
2427 UNI20_EXTERNAL_API_CALL(LAPACK, dormhr_, side, trans, m, n, first, last, a, lda, tau, c, ldc, work, lwork);
2428 detail::dormhr_(&side, &trans, &m, &n, &first, &last, a, &lda, tau, c, &ldc, work, &lwork, &info);
2429 return info;
2430}
2431
2432[[nodiscard]] inline blas_int ormtr(char side, char uplo, char trans, blas_int m, blas_int n, float* a, blas_int lda,
2433 float const* tau, float* c, blas_int ldc, float* work, blas_int lwork)
2434{
2435 blas_int info = 0;
2436 UNI20_EXTERNAL_API_CALL(LAPACK, sormtr_, side, uplo, trans, m, n, a, lda, tau, c, ldc, work, lwork);
2437 detail::sormtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info);
2438 return info;
2439}
2440
2441[[nodiscard]] inline blas_int ormtr(char side, char uplo, char trans, blas_int m, blas_int n, double* a, blas_int lda,
2442 double const* tau, double* c, blas_int ldc, double* work, blas_int lwork)
2443{
2444 blas_int info = 0;
2445 UNI20_EXTERNAL_API_CALL(LAPACK, dormtr_, side, uplo, trans, m, n, a, lda, tau, c, ldc, work, lwork);
2446 detail::dormtr_(&side, &uplo, &trans, &m, &n, a, &lda, tau, c, &ldc, work, &lwork, &info);
2447 return info;
2448}
2449
2450[[nodiscard]] inline blas_int ormbr(char vect, char side, char trans, blas_int m, blas_int n, blas_int k, float* a,
2451 blas_int lda, float* tau, float* c, blas_int ldc, float* work, blas_int lwork)
2452{
2453 blas_int info = 0;
2454 UNI20_EXTERNAL_API_CALL(LAPACK, sormbr_, vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
2455 detail::sormbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
2456 return info;
2457}
2458
2459[[nodiscard]] inline blas_int ormbr(char vect, char side, char trans, blas_int m, blas_int n, blas_int k, double* a,
2460 blas_int lda, double* tau, double* c, blas_int ldc, double* work, blas_int lwork)
2461{
2462 blas_int info = 0;
2463 UNI20_EXTERNAL_API_CALL(LAPACK, dormbr_, vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork);
2464 detail::dormbr_(&vect, &side, &trans, &m, &n, &k, a, &lda, tau, c, &ldc, work, &lwork, &info);
2465 return info;
2466}
2467
2468[[nodiscard]] inline blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, float* a, blas_int lda, float* s,
2469 float* u, blas_int ldu, float* vt, blas_int ldvt, float* work, blas_int lwork)
2470{
2471 blas_int info = 0;
2472 UNI20_EXTERNAL_API_CALL(LAPACK, sgesvd_, jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork);
2473 detail::sgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info);
2474 return info;
2475}
2476
2477[[nodiscard]] inline blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, double* a, blas_int lda, double* s,
2478 double* u, blas_int ldu, double* vt, blas_int ldvt, double* work, blas_int lwork)
2479{
2480 blas_int info = 0;
2481 UNI20_EXTERNAL_API_CALL(LAPACK, dgesvd_, jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork);
2482 detail::dgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info);
2483 return info;
2484}
2485
2486[[nodiscard]] inline blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, uni20::complex<float>* a,
2487 blas_int lda, float* s, uni20::complex<float>* u, blas_int ldu,
2488 uni20::complex<float>* vt, blas_int ldvt, uni20::complex<float>* work,
2489 blas_int lwork, float* rwork)
2490{
2491 blas_int info = 0;
2492 UNI20_EXTERNAL_API_CALL(LAPACK, cgesvd_, jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork);
2493 detail::cgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info);
2494 return info;
2495}
2496
2497[[nodiscard]] inline blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, uni20::complex<double>* a,
2498 blas_int lda, double* s, uni20::complex<double>* u, blas_int ldu,
2499 uni20::complex<double>* vt, blas_int ldvt, uni20::complex<double>* work,
2500 blas_int lwork, double* rwork)
2501{
2502 blas_int info = 0;
2503 UNI20_EXTERNAL_API_CALL(LAPACK, zgesvd_, jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork);
2504 detail::zgesvd_(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info);
2505 return info;
2506}
2507
2508[[nodiscard]] inline blas_int gesdd(char jobz, blas_int m, blas_int n, float* a, blas_int lda, float* s, float* u,
2509 blas_int ldu, float* vt, blas_int ldvt, float* work, blas_int lwork,
2510 blas_int* iwork)
2511{
2512 blas_int info = 0;
2513 UNI20_EXTERNAL_API_CALL(LAPACK, sgesdd_, jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork);
2514 detail::sgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, iwork, &info);
2515 return info;
2516}
2517
2518[[nodiscard]] inline blas_int gesdd(char jobz, blas_int m, blas_int n, double* a, blas_int lda, double* s, double* u,
2519 blas_int ldu, double* vt, blas_int ldvt, double* work, blas_int lwork,
2520 blas_int* iwork)
2521{
2522 blas_int info = 0;
2523 UNI20_EXTERNAL_API_CALL(LAPACK, dgesdd_, jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork);
2524 detail::dgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, iwork, &info);
2525 return info;
2526}
2527
2528[[nodiscard]] inline blas_int gesdd(char jobz, blas_int m, blas_int n, uni20::complex<float>* a, blas_int lda, float* s,
2529 uni20::complex<float>* u, blas_int ldu, uni20::complex<float>* vt, blas_int ldvt,
2530 uni20::complex<float>* work, blas_int lwork, float* rwork, blas_int* iwork)
2531{
2532 blas_int info = 0;
2533 UNI20_EXTERNAL_API_CALL(LAPACK, cgesdd_, jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
2534 detail::cgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info);
2535 return info;
2536}
2537
2538[[nodiscard]] inline blas_int gesdd(char jobz, blas_int m, blas_int n, uni20::complex<double>* a, blas_int lda,
2539 double* s, uni20::complex<double>* u, blas_int ldu, uni20::complex<double>* vt,
2540 blas_int ldvt, uni20::complex<double>* work, blas_int lwork, double* rwork,
2541 blas_int* iwork)
2542{
2543 blas_int info = 0;
2544 UNI20_EXTERNAL_API_CALL(LAPACK, zgesdd_, jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
2545 detail::zgesdd_(&jobz, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info);
2546 return info;
2547}
2548
2549[[nodiscard]] inline blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n, float* a, blas_int lda,
2550 float vl, float vu, blas_int il, blas_int iu, blas_int& selected_count,
2551 float* singular_values, float* u, blas_int ldu, float* vt, blas_int ldvt,
2552 float* work, blas_int lwork, blas_int* iwork)
2553{
2554 blas_int info = 0;
2555 UNI20_EXTERNAL_API_CALL(LAPACK, sgesvdx_, jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
2556 singular_values, u, ldu, vt, ldvt, work, lwork, iwork);
2557 detail::sgesvdx_(&jobu, &jobvt, &range, &m, &n, a, &lda, &vl, &vu, &il, &iu, &selected_count, singular_values, u,
2558 &ldu, vt, &ldvt, work, &lwork, iwork, &info);
2559 return info;
2560}
2561
2562[[nodiscard]] inline blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n, double* a, blas_int lda,
2563 double vl, double vu, blas_int il, blas_int iu, blas_int& selected_count,
2564 double* singular_values, double* u, blas_int ldu, double* vt, blas_int ldvt,
2565 double* work, blas_int lwork, blas_int* iwork)
2566{
2567 blas_int info = 0;
2568 UNI20_EXTERNAL_API_CALL(LAPACK, dgesvdx_, jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
2569 singular_values, u, ldu, vt, ldvt, work, lwork, iwork);
2570 detail::dgesvdx_(&jobu, &jobvt, &range, &m, &n, a, &lda, &vl, &vu, &il, &iu, &selected_count, singular_values, u,
2571 &ldu, vt, &ldvt, work, &lwork, iwork, &info);
2572 return info;
2573}
2574
2575[[nodiscard]] inline blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n,
2576 uni20::complex<float>* a, blas_int lda, float vl, float vu, blas_int il,
2577 blas_int iu, blas_int& selected_count, float* singular_values,
2578 uni20::complex<float>* u, blas_int ldu, uni20::complex<float>* vt, blas_int ldvt,
2579 uni20::complex<float>* work, blas_int lwork, float* rwork, blas_int* iwork)
2580{
2581 blas_int info = 0;
2582 UNI20_EXTERNAL_API_CALL(LAPACK, cgesvdx_, jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
2583 singular_values, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
2584 detail::cgesvdx_(&jobu, &jobvt, &range, &m, &n, a, &lda, &vl, &vu, &il, &iu, &selected_count, singular_values, u,
2585 &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info);
2586 return info;
2587}
2588
2589[[nodiscard]] inline blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n,
2590 uni20::complex<double>* a, blas_int lda, double vl, double vu, blas_int il,
2591 blas_int iu, blas_int& selected_count, double* singular_values,
2592 uni20::complex<double>* u, blas_int ldu, uni20::complex<double>* vt, blas_int ldvt,
2593 uni20::complex<double>* work, blas_int lwork, double* rwork, blas_int* iwork)
2594{
2595 blas_int info = 0;
2596 UNI20_EXTERNAL_API_CALL(LAPACK, zgesvdx_, jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
2597 singular_values, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
2598 detail::zgesvdx_(&jobu, &jobvt, &range, &m, &n, a, &lda, &vl, &vu, &il, &iu, &selected_count, singular_values, u,
2599 &ldu, vt, &ldvt, work, &lwork, rwork, iwork, &info);
2600 return info;
2601}
2602
2603[[nodiscard]] inline blas_int bdsqr(char uplo, blas_int n, blas_int ncvt, blas_int nru, blas_int ncc, float* d,
2604 float* e, float* vt, blas_int ldvt, float* u, blas_int ldu, float* c, blas_int ldc,
2605 float* work)
2606{
2607 blas_int info = 0;
2608 UNI20_EXTERNAL_API_CALL(LAPACK, sbdsqr_, uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work);
2609 detail::sbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info);
2610 return info;
2611}
2612
2613[[nodiscard]] inline blas_int bdsqr(char uplo, blas_int n, blas_int ncvt, blas_int nru, blas_int ncc, double* d,
2614 double* e, double* vt, blas_int ldvt, double* u, blas_int ldu, double* c,
2615 blas_int ldc, double* work)
2616{
2617 blas_int info = 0;
2618 UNI20_EXTERNAL_API_CALL(LAPACK, dbdsqr_, uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work);
2619 detail::dbdsqr_(&uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info);
2620 return info;
2621}
2622
2623[[nodiscard]] inline blas_int bdsdc(char uplo, char compq, blas_int n, float* d, float* e, float* u, blas_int ldu,
2624 float* vt, blas_int ldvt, float* q, blas_int* iq, float* work, blas_int* iwork)
2625{
2626 blas_int info = 0;
2627 UNI20_EXTERNAL_API_CALL(LAPACK, sbdsdc_, uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork);
2628 detail::sbdsdc_(&uplo, &compq, &n, d, e, u, &ldu, vt, &ldvt, q, iq, work, iwork, &info);
2629 return info;
2630}
2631
2632[[nodiscard]] inline blas_int bdsdc(char uplo, char compq, blas_int n, double* d, double* e, double* u, blas_int ldu,
2633 double* vt, blas_int ldvt, double* q, blas_int* iq, double* work, blas_int* iwork)
2634{
2635 blas_int info = 0;
2636 UNI20_EXTERNAL_API_CALL(LAPACK, dbdsdc_, uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork);
2637 detail::dbdsdc_(&uplo, &compq, &n, d, e, u, &ldu, vt, &ldvt, q, iq, work, iwork, &info);
2638 return info;
2639}
2640
2641[[nodiscard]] inline blas_int bdsvdx(char uplo, char jobz, char range, blas_int n, float* d, float* e, float vl,
2642 float vu, blas_int il, blas_int iu, blas_int& selected_count,
2643 float* singular_values, float* z, blas_int ldz, float* work, blas_int* iwork)
2644{
2645 blas_int info = 0;
2646 UNI20_EXTERNAL_API_CALL(LAPACK, sbdsvdx_, uplo, jobz, range, n, d, e, vl, vu, il, iu, selected_count, singular_values,
2647 z, ldz, work, iwork);
2648 detail::sbdsvdx_(&uplo, &jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &selected_count, singular_values, z, &ldz, work,
2649 iwork, &info);
2650 return info;
2651}
2652
2653[[nodiscard]] inline blas_int bdsvdx(char uplo, char jobz, char range, blas_int n, double* d, double* e, double vl,
2654 double vu, blas_int il, blas_int iu, blas_int& selected_count,
2655 double* singular_values, double* z, blas_int ldz, double* work, blas_int* iwork)
2656{
2657 blas_int info = 0;
2658 UNI20_EXTERNAL_API_CALL(LAPACK, dbdsvdx_, uplo, jobz, range, n, d, e, vl, vu, il, iu, selected_count, singular_values,
2659 z, ldz, work, iwork);
2660 detail::dbdsvdx_(&uplo, &jobz, &range, &n, d, e, &vl, &vu, &il, &iu, &selected_count, singular_values, z, &ldz, work,
2661 iwork, &info);
2662 return info;
2663}
2664
2665[[nodiscard]] inline blas_int potrf(char uplo, blas_int n, float* a, blas_int lda)
2666{
2667 blas_int info = 0;
2668 UNI20_EXTERNAL_API_CALL(LAPACK, spotrf_, uplo, n, a, lda);
2669 detail::spotrf_(&uplo, &n, a, &lda, &info);
2670 return info;
2671}
2672
2673[[nodiscard]] inline blas_int potrf(char uplo, blas_int n, double* a, blas_int lda)
2674{
2675 blas_int info = 0;
2676 UNI20_EXTERNAL_API_CALL(LAPACK, dpotrf_, uplo, n, a, lda);
2677 detail::dpotrf_(&uplo, &n, a, &lda, &info);
2678 return info;
2679}
2680
2681[[nodiscard]] inline blas_int pstrf(char uplo, blas_int n, float* a, blas_int lda, blas_int* pivots, blas_int& rank,
2682 float tolerance, float* work)
2683{
2684 blas_int info = 0;
2685 UNI20_EXTERNAL_API_CALL(LAPACK, spstrf_, uplo, n, a, lda, pivots, rank, tolerance, work);
2686 detail::spstrf_(&uplo, &n, a, &lda, pivots, &rank, &tolerance, work, &info);
2687 return info;
2688}
2689
2690[[nodiscard]] inline blas_int pstrf(char uplo, blas_int n, double* a, blas_int lda, blas_int* pivots, blas_int& rank,
2691 double tolerance, double* work)
2692{
2693 blas_int info = 0;
2694 UNI20_EXTERNAL_API_CALL(LAPACK, dpstrf_, uplo, n, a, lda, pivots, rank, tolerance, work);
2695 detail::dpstrf_(&uplo, &n, a, &lda, pivots, &rank, &tolerance, work, &info);
2696 return info;
2697}
2698
2699[[nodiscard]] inline blas_int potri(char uplo, blas_int n, float* a, blas_int lda)
2700{
2701 blas_int info = 0;
2702 UNI20_EXTERNAL_API_CALL(LAPACK, spotri_, uplo, n, a, lda);
2703 detail::spotri_(&uplo, &n, a, &lda, &info);
2704 return info;
2705}
2706
2707[[nodiscard]] inline blas_int potri(char uplo, blas_int n, double* a, blas_int lda)
2708{
2709 blas_int info = 0;
2710 UNI20_EXTERNAL_API_CALL(LAPACK, dpotri_, uplo, n, a, lda);
2711 detail::dpotri_(&uplo, &n, a, &lda, &info);
2712 return info;
2713}
2714
2715[[nodiscard]] inline blas_int potrs(char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, float* b,
2716 blas_int ldb)
2717{
2718 blas_int info = 0;
2719 UNI20_EXTERNAL_API_CALL(LAPACK, spotrs_, uplo, n, nrhs, a, lda, b, ldb);
2720 detail::spotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info);
2721 return info;
2722}
2723
2724[[nodiscard]] inline blas_int potrs(char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda, double* b,
2725 blas_int ldb)
2726{
2727 blas_int info = 0;
2728 UNI20_EXTERNAL_API_CALL(LAPACK, dpotrs_, uplo, n, nrhs, a, lda, b, ldb);
2729 detail::dpotrs_(&uplo, &n, &nrhs, a, &lda, b, &ldb, &info);
2730 return info;
2731}
2732
2733[[nodiscard]] inline blas_int porfs(char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, float* factors,
2734 blas_int factor_lda, float* b, blas_int ldb, float* x, blas_int ldx,
2735 float* forward_error, float* backward_error, float* work, blas_int* iwork)
2736{
2737 blas_int info = 0;
2738 UNI20_EXTERNAL_API_CALL(LAPACK, sporfs_, uplo, n, nrhs, a, lda, factors, factor_lda, b, ldb, x, ldx, forward_error,
2739 backward_error, work, iwork);
2740 detail::sporfs_(&uplo, &n, &nrhs, a, &lda, factors, &factor_lda, b, &ldb, x, &ldx, forward_error, backward_error,
2741 work, iwork, &info);
2742 return info;
2743}
2744
2745[[nodiscard]] inline blas_int porfs(char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda, double* factors,
2746 blas_int factor_lda, double* b, blas_int ldb, double* x, blas_int ldx,
2747 double* forward_error, double* backward_error, double* work, blas_int* iwork)
2748{
2749 blas_int info = 0;
2750 UNI20_EXTERNAL_API_CALL(LAPACK, dporfs_, uplo, n, nrhs, a, lda, factors, factor_lda, b, ldb, x, ldx, forward_error,
2751 backward_error, work, iwork);
2752 detail::dporfs_(&uplo, &n, &nrhs, a, &lda, factors, &factor_lda, b, &ldb, x, &ldx, forward_error, backward_error,
2753 work, iwork, &info);
2754 return info;
2755}
2756
2757[[nodiscard]] inline blas_int posvx(char fact, char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, float* af,
2758 blas_int ldaf, char& equed, float* scale, float* b, blas_int ldb, float* x,
2759 blas_int ldx, float& rcond, float* forward_error, float* backward_error,
2760 float* work, blas_int* iwork)
2761{
2762 blas_int info = 0;
2763 UNI20_EXTERNAL_API_CALL(LAPACK, sposvx_, fact, uplo, n, nrhs, a, lda, af, ldaf, equed, scale, b, ldb, x, ldx, work,
2764 iwork);
2765 detail::sposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, scale, b, &ldb, x, &ldx, &rcond, forward_error,
2766 backward_error, work, iwork, &info);
2767 return info;
2768}
2769
2770[[nodiscard]] inline blas_int posvx(char fact, char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda,
2771 double* af, blas_int ldaf, char& equed, double* scale, double* b, blas_int ldb,
2772 double* x, blas_int ldx, double& rcond, double* forward_error,
2773 double* backward_error, double* work, blas_int* iwork)
2774{
2775 blas_int info = 0;
2776 UNI20_EXTERNAL_API_CALL(LAPACK, dposvx_, fact, uplo, n, nrhs, a, lda, af, ldaf, equed, scale, b, ldb, x, ldx, work,
2777 iwork);
2778 detail::dposvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, &equed, scale, b, &ldb, x, &ldx, &rcond, forward_error,
2779 backward_error, work, iwork, &info);
2780 return info;
2781}
2782
2783[[nodiscard]] inline blas_int poequ(blas_int n, float* a, blas_int lda, float* scale, float& scale_condition,
2784 float& max_abs)
2785{
2786 blas_int info = 0;
2787 UNI20_EXTERNAL_API_CALL(LAPACK, spoequ_, n, a, lda, scale);
2788 detail::spoequ_(&n, a, &lda, scale, &scale_condition, &max_abs, &info);
2789 return info;
2790}
2791
2792[[nodiscard]] inline blas_int poequ(blas_int n, double* a, blas_int lda, double* scale, double& scale_condition,
2793 double& max_abs)
2794{
2795 blas_int info = 0;
2796 UNI20_EXTERNAL_API_CALL(LAPACK, dpoequ_, n, a, lda, scale);
2797 detail::dpoequ_(&n, a, &lda, scale, &scale_condition, &max_abs, &info);
2798 return info;
2799}
2800
2801[[nodiscard]] inline blas_int pocon(char uplo, blas_int n, float* a, blas_int lda, float matrix_one_norm, float& rcond,
2802 float* work, blas_int* iwork)
2803{
2804 blas_int info = 0;
2805 UNI20_EXTERNAL_API_CALL(LAPACK, spocon_, uplo, n, a, lda, matrix_one_norm, work, iwork);
2806 detail::spocon_(&uplo, &n, a, &lda, &matrix_one_norm, &rcond, work, iwork, &info);
2807 return info;
2808}
2809
2810[[nodiscard]] inline blas_int pocon(char uplo, blas_int n, double* a, blas_int lda, double matrix_one_norm,
2811 double& rcond, double* work, blas_int* iwork)
2812{
2813 blas_int info = 0;
2814 UNI20_EXTERNAL_API_CALL(LAPACK, dpocon_, uplo, n, a, lda, matrix_one_norm, work, iwork);
2815 detail::dpocon_(&uplo, &n, a, &lda, &matrix_one_norm, &rcond, work, iwork, &info);
2816 return info;
2817}
2818
2819[[nodiscard]] inline blas_int sytrf(char uplo, blas_int n, float* a, blas_int lda, blas_int* ipiv, float* work,
2820 blas_int lwork)
2821{
2822 blas_int info = 0;
2823 UNI20_EXTERNAL_API_CALL(LAPACK, ssytrf_, uplo, n, a, lda, ipiv, work, lwork);
2824 detail::ssytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info);
2825 return info;
2826}
2827
2828[[nodiscard]] inline blas_int sytrf(char uplo, blas_int n, double* a, blas_int lda, blas_int* ipiv, double* work,
2829 blas_int lwork)
2830{
2831 blas_int info = 0;
2832 UNI20_EXTERNAL_API_CALL(LAPACK, dsytrf_, uplo, n, a, lda, ipiv, work, lwork);
2833 detail::dsytrf_(&uplo, &n, a, &lda, ipiv, work, &lwork, &info);
2834 return info;
2835}
2836
2837[[nodiscard]] inline blas_int sytrs(char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, blas_int const* ipiv,
2838 float* b, blas_int ldb)
2839{
2840 blas_int info = 0;
2841 UNI20_EXTERNAL_API_CALL(LAPACK, ssytrs_, uplo, n, nrhs, a, lda, ipiv, b, ldb);
2842 detail::ssytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
2843 return info;
2844}
2845
2846[[nodiscard]] inline blas_int sytrs(char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda, blas_int const* ipiv,
2847 double* b, blas_int ldb)
2848{
2849 blas_int info = 0;
2850 UNI20_EXTERNAL_API_CALL(LAPACK, dsytrs_, uplo, n, nrhs, a, lda, ipiv, b, ldb);
2851 detail::dsytrs_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
2852 return info;
2853}
2854
2855[[nodiscard]] inline blas_int sytri(char uplo, blas_int n, float* a, blas_int lda, blas_int const* ipiv, float* work)
2856{
2857 blas_int info = 0;
2858 UNI20_EXTERNAL_API_CALL(LAPACK, ssytri_, uplo, n, a, lda, ipiv, work);
2859 detail::ssytri_(&uplo, &n, a, &lda, ipiv, work, &info);
2860 return info;
2861}
2862
2863[[nodiscard]] inline blas_int sytri(char uplo, blas_int n, double* a, blas_int lda, blas_int const* ipiv, double* work)
2864{
2865 blas_int info = 0;
2866 UNI20_EXTERNAL_API_CALL(LAPACK, dsytri_, uplo, n, a, lda, ipiv, work);
2867 detail::dsytri_(&uplo, &n, a, &lda, ipiv, work, &info);
2868 return info;
2869}
2870
2871[[nodiscard]] inline blas_int syrfs(char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, float* factors,
2872 blas_int factor_lda, blas_int const* ipiv, float* b, blas_int ldb, float* x,
2873 blas_int ldx, float* forward_error, float* backward_error, float* work,
2874 blas_int* iwork)
2875{
2876 blas_int info = 0;
2877 UNI20_EXTERNAL_API_CALL(LAPACK, ssyrfs_, uplo, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
2878 forward_error, backward_error, work, iwork);
2879 detail::ssyrfs_(&uplo, &n, &nrhs, a, &lda, factors, &factor_lda, const_cast<blas_int*>(ipiv), b, &ldb, x, &ldx,
2880 forward_error, backward_error, work, iwork, &info);
2881 return info;
2882}
2883
2884[[nodiscard]] inline blas_int syrfs(char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda, double* factors,
2885 blas_int factor_lda, blas_int const* ipiv, double* b, blas_int ldb, double* x,
2886 blas_int ldx, double* forward_error, double* backward_error, double* work,
2887 blas_int* iwork)
2888{
2889 blas_int info = 0;
2890 UNI20_EXTERNAL_API_CALL(LAPACK, dsyrfs_, uplo, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
2891 forward_error, backward_error, work, iwork);
2892 detail::dsyrfs_(&uplo, &n, &nrhs, a, &lda, factors, &factor_lda, const_cast<blas_int*>(ipiv), b, &ldb, x, &ldx,
2893 forward_error, backward_error, work, iwork, &info);
2894 return info;
2895}
2896
2897[[nodiscard]] inline blas_int sysvx(char fact, char uplo, blas_int n, blas_int nrhs, float* a, blas_int lda, float* af,
2898 blas_int ldaf, blas_int* ipiv, float* b, blas_int ldb, float* x, blas_int ldx,
2899 float& rcond, float* forward_error, float* backward_error, float* work,
2900 blas_int lwork, blas_int* iwork)
2901{
2902 blas_int info = 0;
2903 UNI20_EXTERNAL_API_CALL(LAPACK, ssysvx_, fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, work, lwork,
2904 iwork);
2905 detail::ssysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, forward_error,
2906 backward_error, work, &lwork, iwork, &info);
2907 return info;
2908}
2909
2910[[nodiscard]] inline blas_int sysvx(char fact, char uplo, blas_int n, blas_int nrhs, double* a, blas_int lda,
2911 double* af, blas_int ldaf, blas_int* ipiv, double* b, blas_int ldb, double* x,
2912 blas_int ldx, double& rcond, double* forward_error, double* backward_error,
2913 double* work, blas_int lwork, blas_int* iwork)
2914{
2915 blas_int info = 0;
2916 UNI20_EXTERNAL_API_CALL(LAPACK, dsysvx_, fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, work, lwork,
2917 iwork);
2918 detail::dsysvx_(&fact, &uplo, &n, &nrhs, a, &lda, af, &ldaf, ipiv, b, &ldb, x, &ldx, &rcond, forward_error,
2919 backward_error, work, &lwork, iwork, &info);
2920 return info;
2921}
2922
2923[[nodiscard]] inline blas_int sycon(char uplo, blas_int n, float* a, blas_int lda, blas_int const* ipiv,
2924 float matrix_one_norm, float& rcond, float* work, blas_int* iwork)
2925{
2926 blas_int info = 0;
2927 UNI20_EXTERNAL_API_CALL(LAPACK, ssycon_, uplo, n, a, lda, ipiv, matrix_one_norm, work, iwork);
2928 detail::ssycon_(&uplo, &n, a, &lda, ipiv, &matrix_one_norm, &rcond, work, iwork, &info);
2929 return info;
2930}
2931
2932[[nodiscard]] inline blas_int sycon(char uplo, blas_int n, double* a, blas_int lda, blas_int const* ipiv,
2933 double matrix_one_norm, double& rcond, double* work, blas_int* iwork)
2934{
2935 blas_int info = 0;
2936 UNI20_EXTERNAL_API_CALL(LAPACK, dsycon_, uplo, n, a, lda, ipiv, matrix_one_norm, work, iwork);
2937 detail::dsycon_(&uplo, &n, a, &lda, ipiv, &matrix_one_norm, &rcond, work, iwork, &info);
2938 return info;
2939}
2940
2941[[nodiscard]] inline blas_int trtrs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, float* a, blas_int lda,
2942 float* b, blas_int ldb)
2943{
2944 blas_int info = 0;
2945 UNI20_EXTERNAL_API_CALL(LAPACK, strtrs_, uplo, trans, diag, n, nrhs, a, lda, b, ldb);
2946 detail::strtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info);
2947 return info;
2948}
2949
2950[[nodiscard]] inline blas_int trtrs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, double* a,
2951 blas_int lda, double* b, blas_int ldb)
2952{
2953 blas_int info = 0;
2954 UNI20_EXTERNAL_API_CALL(LAPACK, dtrtrs_, uplo, trans, diag, n, nrhs, a, lda, b, ldb);
2955 detail::dtrtrs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, &info);
2956 return info;
2957}
2958
2959[[nodiscard]] inline blas_int trrfs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, float* a, blas_int lda,
2960 float* b, blas_int ldb, float* x, blas_int ldx, float* forward_error,
2961 float* backward_error, float* work, blas_int* iwork)
2962{
2963 blas_int info = 0;
2964 UNI20_EXTERNAL_API_CALL(LAPACK, strrfs_, uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, forward_error,
2965 backward_error, work, iwork);
2966 detail::strrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, forward_error, backward_error, work,
2967 iwork, &info);
2968 return info;
2969}
2970
2971[[nodiscard]] inline blas_int trrfs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, double* a,
2972 blas_int lda, double* b, blas_int ldb, double* x, blas_int ldx,
2973 double* forward_error, double* backward_error, double* work, blas_int* iwork)
2974{
2975 blas_int info = 0;
2976 UNI20_EXTERNAL_API_CALL(LAPACK, dtrrfs_, uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, forward_error,
2977 backward_error, work, iwork);
2978 detail::dtrrfs_(&uplo, &trans, &diag, &n, &nrhs, a, &lda, b, &ldb, x, &ldx, forward_error, backward_error, work,
2979 iwork, &info);
2980 return info;
2981}
2982
2983[[nodiscard]] inline blas_int trtri(char uplo, char diag, blas_int n, float* a, blas_int lda)
2984{
2985 blas_int info = 0;
2986 UNI20_EXTERNAL_API_CALL(LAPACK, strtri_, uplo, diag, n, a, lda);
2987 detail::strtri_(&uplo, &diag, &n, a, &lda, &info);
2988 return info;
2989}
2990
2991[[nodiscard]] inline blas_int trtri(char uplo, char diag, blas_int n, double* a, blas_int lda)
2992{
2993 blas_int info = 0;
2994 UNI20_EXTERNAL_API_CALL(LAPACK, dtrtri_, uplo, diag, n, a, lda);
2995 detail::dtrtri_(&uplo, &diag, &n, a, &lda, &info);
2996 return info;
2997}
2998
2999[[nodiscard]] inline blas_int trcon(char norm, char uplo, char diag, blas_int n, float* a, blas_int lda, float& rcond,
3000 float* work, blas_int* iwork)
3001{
3002 blas_int info = 0;
3003 UNI20_EXTERNAL_API_CALL(LAPACK, strcon_, norm, uplo, diag, n, a, lda, work, iwork);
3004 detail::strcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, iwork, &info);
3005 return info;
3006}
3007
3008[[nodiscard]] inline blas_int trcon(char norm, char uplo, char diag, blas_int n, double* a, blas_int lda, double& rcond,
3009 double* work, blas_int* iwork)
3010{
3011 blas_int info = 0;
3012 UNI20_EXTERNAL_API_CALL(LAPACK, dtrcon_, norm, uplo, diag, n, a, lda, work, iwork);
3013 detail::dtrcon_(&norm, &uplo, &diag, &n, a, &lda, &rcond, work, iwork, &info);
3014 return info;
3015}
3016
3017[[nodiscard]] inline blas_int trsyl(char trans_a, char trans_b, blas_int sign, blas_int m, blas_int n, float* a,
3018 blas_int lda, float* b, blas_int ldb, float* c, blas_int ldc, float& scale)
3019{
3020 blas_int info = 0;
3021 UNI20_EXTERNAL_API_CALL(LAPACK, strsyl_, trans_a, trans_b, sign, m, n, a, lda, b, ldb, c, ldc);
3022 detail::strsyl_(&trans_a, &trans_b, &sign, &m, &n, a, &lda, b, &ldb, c, &ldc, &scale, &info);
3023 return info;
3024}
3025
3026[[nodiscard]] inline blas_int trsyl(char trans_a, char trans_b, blas_int sign, blas_int m, blas_int n, double* a,
3027 blas_int lda, double* b, blas_int ldb, double* c, blas_int ldc, double& scale)
3028{
3029 blas_int info = 0;
3030 UNI20_EXTERNAL_API_CALL(LAPACK, dtrsyl_, trans_a, trans_b, sign, m, n, a, lda, b, ldb, c, ldc);
3031 detail::dtrsyl_(&trans_a, &trans_b, &sign, &m, &n, a, &lda, b, &ldb, c, &ldc, &scale, &info);
3032 return info;
3033}
3034
3035} // 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
typename detail::complex_type< Real >::type complex
Project-level complex scalar spelling.
Definition types.hpp:66
Definition cli.cpp:6
Definition mplapack/band.hpp:25
blas_int trevc(char side, char howmny, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, uni20::float128 *work)
Definition mplapack/general.hpp:934
blas_int sygv(blas_int itype, char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *w, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:537
blas_int getri(blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:150
blas_int syevd(char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *w, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:492
blas_int gesdd(char jobz, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *s, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1371
blas_int gghrd(char compq, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz)
Definition mplapack/general.hpp:1120
blas_int tgexc(bool wantq, bool wantz, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, blas_int &first, blas_int &last, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1148
blas_int gges(char jobvsl, char jobvsr, char sort, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int &selected_dimension, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vsl, blas_int ldvsl, uni20::float128 *vsr, blas_int ldvsr, uni20::float128 *work, blas_int lwork, blas_int *bwork)
Definition mplapack/general.hpp:1089
blas_int hegv(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork)
Definition mplapack/general.hpp:653
blas_int sygvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *w, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:548
blas_int gebal(char job, blas_int n, uni20::float128 *a, blas_int lda, blas_int &first, blas_int &last, uni20::float128 *scale)
Definition mplapack/general.hpp:748
blas_int ormqr(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:391
blas_int orgrq(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:381
blas_int orghr(blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1289
blas_int orglq(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:350
blas_int gerqf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:319
blas_int potrs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1518
blas_int trsyl(char trans_a, char trans_b, blas_int sign, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *c, blas_int ldc, uni20::float128 &scale)
Definition mplapack/general.hpp:1708
blas_int getrf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv)
Definition mplapack/general.hpp:85
blas_int sygvx(blas_int itype, char jobz, char range, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int *ifail)
Definition mplapack/general.hpp:563
blas_int hegvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:664
blas_int orgtr(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1300
blas_int gebak(char job, char side, blas_int n, blas_int first, blas_int last, uni20::float128 *scale, blas_int vector_count, uni20::float128 *vectors, blas_int leading_dimension)
Definition mplapack/general.hpp:762
blas_int syevr(char jobz, char range, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::float128 *z, blas_int ldz, blas_int *isuppz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:506
blas_int hseqr(char job, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *h, blas_int ldh, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:854
blas_int sytri(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *work)
Definition mplapack/general.hpp:1604
blas_int ormrq(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:427
blas_int gesvx(char fact, char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, 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/general.hpp:53
blas_int geev(char jobvl, char jobvr, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:715
blas_int trrfs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, 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/general.hpp:1674
blas_int tgevc(char side, char howmny, blas_int *select, blas_int n, uni20::float128 *s, blas_int lds, uni20::float128 *p, blas_int ldp, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, uni20::float128 *work)
Definition mplapack/general.hpp:1205
blas_int syev(char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *w, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:482
blas_int poequ(blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *scale, uni20::float128 &scale_condition, uni20::float128 &max_abs)
Definition mplapack/general.hpp:1560
blas_int tgsna(char job, char howmny, blas_int *select, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *reciprocal_eigenvalue_condition_numbers, uni20::float128 *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1238
blas_int gelsy(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int *jpvt, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:251
blas_int trtri(char uplo, char diag, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1689
blas_int trsna(char job, char howmny, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *reciprocal_eigenvalue_condition_numbers, uni20::float128 *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, uni20::float128 *work, blas_int ldwork, blas_int *iwork)
Definition mplapack/general.hpp:966
blas_int gehrd(blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:450
blas_int gerfs(char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, 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/general.hpp:133
blas_int ggevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, uni20::float128 *lscale, uni20::float128 *rscale, uni20::float128 &abnrm, uni20::float128 &bbnrm, uni20::float128 *rconde, uni20::float128 *rcondv, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int *bwork)
Definition mplapack/general.hpp:1019
blas_int bdsvdx(char uplo, char jobz, char range, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, blas_int &selected_count, uni20::float128 *singular_values, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1470
blas_int sysvx(char fact, char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, blas_int *ipiv, 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 lwork, blas_int *iwork)
Definition mplapack/general.hpp:1632
blas_int ggbal(char job, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int &first, blas_int &last, uni20::float128 *lscale, uni20::float128 *rscale, uni20::float128 *work)
Definition mplapack/general.hpp:1061
blas_int sycon(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 matrix_one_norm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1651
blas_int trexc(char compq, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *q, blas_int ldq, blas_int &first, blas_int &last, uni20::float128 *work)
Definition mplapack/general.hpp:866
blas_int bdsqr(char uplo, blas_int n, blas_int ncvt, blas_int nru, blas_int ncc, uni20::float128 *d, uni20::float128 *e, uni20::float128 *vt, blas_int ldvt, uni20::float128 *u, blas_int ldu, uni20::float128 *c, blas_int ldc, uni20::float128 *work)
Definition mplapack/general.hpp:1442
blas_int gecon(char norm, blas_int n, uni20::float128 const *a, blas_int lda, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:172
blas_int gels(char trans, blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:195
blas_int ggev(char jobvl, char jobvr, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1005
blas_int heevr(char jobz, char range, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::complex< uni20::float128 > *z, blas_int ldz, blas_int *isuppz, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:620
blas_int orgql(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:371
blas_int ormbr(char vect, char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1334
blas_int gelss(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *s, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:206
blas_int potrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1488
blas_int hgeqz(char job, char compq, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *h, blas_int ldh, uni20::float128 *t, blas_int ldt, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1132
blas_int geqrf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:267
blas_int hegvx(blas_int itype, char jobz, char range, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::complex< uni20::float128 > *z, blas_int ldz, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int *iwork, blas_int *ifail)
Definition mplapack/general.hpp:682
blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, blas_int &selected_count, uni20::float128 *singular_values, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1399
blas_int sytrs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1593
blas_int gelsd(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *s, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:235
blas_int trcon(char norm, char uplo, char diag, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1697
blas_int potri(char uplo, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1510
blas_int pocon(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 matrix_one_norm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1569
blas_int geqp3(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, blas_int *jpvt, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:460
blas_int posvx(char fact, char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, 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/general.hpp:1543
blas_int ggbak(char job, char side, blas_int n, blas_int first, blas_int last, uni20::float128 *lscale, uni20::float128 *rscale, blas_int vector_count, uni20::float128 *vectors, blas_int leading_dimension)
Definition mplapack/general.hpp:1076
blas_int heevd(char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:605
blas_int sytrd(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *d, uni20::float128 *e, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:472
blas_int gees(char jobvs, char sort, blas_int n, uni20::float128 *a, blas_int lda, blas_int &selected_dimension, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vs, blas_int ldvs, uni20::float128 *work, blas_int lwork, blas_int *bwork)
Definition mplapack/general.hpp:787
blas_int orgqr(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:329
blas_int ormql(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:415
blas_int geqlf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:309
blas_int gelqf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:288
blas_int orgbr(char vect, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1279
blas_int heev(char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork)
Definition mplapack/general.hpp:594
blas_int geevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, uni20::float128 *scale, uni20::float128 &abnrm, uni20::float128 *rconde, uni20::float128 *rcondv, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:727
blas_int gesv(blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:29
blas_int trtrs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1664
blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *s, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1346
blas_int sytrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1581
blas_int tgsen(blas_int ijob, bool wantq, bool wantz, blas_int *select, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, blas_int &selected_dimension, uni20::float128 &pl, uni20::float128 &pr, uni20::float128 *dif, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:1165
blas_int ormhr(char side, char trans, blas_int m, blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1310
blas_int ormlq(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:403
blas_int bdsdc(char uplo, char compq, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *q, blas_int *iq, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1455
blas_int syrfs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, 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/general.hpp:1615
blas_int ormtr(char side, char uplo, char trans, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1322
blas_int pstrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int *pivots, blas_int &rank, uni20::float128 tolerance, uni20::float128 *work)
Definition mplapack/general.hpp:1496
blas_int getrs(char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:110
blas_int trsen(char job, char compq, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *q, blas_int ldq, uni20::float128 *wr, uni20::float128 *wi, blas_int &selected_dimension, uni20::float128 &reciprocal_eigenvalue_cluster_condition, uni20::float128 &reciprocal_invariant_subspace_condition, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:894
blas_int porfs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, 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/general.hpp:1528
blas_int gebrd(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *d, uni20::float128 *e, uni20::float128 *tauq, uni20::float128 *taup, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:439
blas_int geequ(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 &row_condition, uni20::float128 &column_condition, uni20::float128 &max_abs)
Definition mplapack/general.hpp:73
Definition data_table.cpp:8
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
mpreal beta(mpreal const &a, mpreal const &x)
Real Beta function; positive rational/integer pairs retain exact values.
Definition mpreal_special.hpp:164