16#ifndef BASE_THIRD_PARTY_LAPACK_H_
17#define BASE_THIRD_PARTY_LAPACK_H_
45int ilaenv_(
const int* ispec,
const char* name,
const char* opts,
46 const int* n1,
const int* n2,
const int* n3,
const int* n4);
49void ssygvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
50 float* a,
const int* lda,
51 float* b,
const int* ldb,
53 float* work,
const int* lwork,
54 int* iwork,
const int* liwork,
57void dsygvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
58 double* a,
const int* lda,
59 double* b,
const int* ldb,
61 double* work,
const int* lwork,
62 int* iwork,
const int* liwork,
65void chegvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
66 std::complex<float>* a,
const int* lda,
67 std::complex<float>* b,
const int* ldb,
69 std::complex<float>* work,
const int* lwork,
70 float* rwork,
const int* lrwork,
71 int* iwork,
const int* liwork,
74void zhegvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
75 std::complex<double>* a,
const int* lda,
76 std::complex<double>* b,
const int* ldb,
78 std::complex<double>* work,
const int* lwork,
79 double* rwork,
const int* lrwork,
80 int* iwork,
const int* liwork,
84void ssygvx_(
const int* itype,
const char* jobz,
const char* range,
const char* uplo,
85 const int* n,
float* A,
const int* lda,
float* B,
const int* ldb,
86 const float* vl,
const float* vu,
const int* il,
const int* iu,
87 const float* abstol,
int* m,
float* w,
float* Z,
const int* ldz,
88 float* work,
const int* lwork,
int* iwork,
int* ifail,
int* info);
90void dsygvx_(
const int* itype,
const char* jobz,
const char* range,
const char* uplo,
91 const int* n,
double* A,
const int* lda,
double* B,
const int* ldb,
92 const double* vl,
const double* vu,
const int* il,
const int* iu,
93 const double* abstol,
int* m,
double* w,
double* Z,
const int* ldz,
94 double* work,
const int* lwork,
int* iwork,
int* ifail,
int* info);
96void chegvx_(
const int* itype,
const char* jobz,
const char* range,
const char* uplo,
97 const int* n, std::complex<float>* A,
const int* lda, std::complex<float>* B,
const int* ldb,
98 const float* vl,
const float* vu,
const int* il,
const int* iu,
99 const float* abstol,
int* m,
float* w, std::complex<float>* Z,
const int* ldz,
100 std::complex<float>* work,
const int* lwork,
float* rwork,
int* iwork,
int* ifail,
int* info);
102void zhegvx_(
const int* itype,
const char* jobz,
const char* range,
const char* uplo,
103 const int* n, std::complex<double>* A,
const int* lda, std::complex<double>* B,
const int* ldb,
104 const double* vl,
const double* vu,
const int* il,
const int* iu,
105 const double* abstol,
int* m,
double* w, std::complex<double>* Z,
const int* ldz,
106 std::complex<double>* work,
const int* lwork,
double* rwork,
int* iwork,
int* ifail,
int* info);
109void ssyevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
110 float* a,
const int* lda,
111 const float* vl,
const float* vu,
const int* il,
const int* iu,
112 const float* abstol,
int* m,
float* w,
float* z,
const int* ldz,
113 float* work,
const int* lwork,
int* iwork,
int* ifail,
int* info);
115void dsyevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
116 double* a,
const int* lda,
117 const double* vl,
const double* vu,
const int* il,
const int* iu,
118 const double* abstol,
int* m,
double* w,
double* z,
const int* ldz,
119 double* work,
const int* lwork,
int* iwork,
int* ifail,
int* info);
121void cheevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
122 std::complex<float>* a,
const int* lda,
123 const float* vl,
const float* vu,
const int* il,
const int* iu,
124 const float* abstol,
int* m,
float* w, std::complex<float>* z,
const int* ldz,
125 std::complex<float>* work,
const int* lwork,
float* rwork,
int* iwork,
int* ifail,
int* info);
127void zheevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
128 std::complex<double>* a,
const int* lda,
129 const double* vl,
const double* vu,
const int* il,
const int* iu,
130 const double* abstol,
int* m,
double* w, std::complex<double>* z,
const int* ldz,
131 std::complex<double>* work,
const int* lwork,
double* rwork,
int* iwork,
int* ifail,
int* info);
134void ssyevd_(
const char* jobz,
const char* uplo,
const int* n,
135 float* a,
const int* lda,
float* w,
136 float* work,
const int* lwork,
137 int* iwork,
const int* liwork,
int* info);
139void dsyevd_(
const char* jobz,
const char* uplo,
const int* n,
140 double* a,
const int* lda,
double* w,
141 double* work,
const int* lwork,
142 int* iwork,
const int* liwork,
int* info);
144void cheevd_(
const char* jobz,
const char* uplo,
const int* n,
145 std::complex<float>* a,
const int* lda,
float* w,
146 std::complex<float>* work,
const int* lwork,
float* rwork,
const int* lrwork,
147 int* iwork,
const int* liwork,
int* info);
149void zheevd_(
const char* jobz,
const char* uplo,
const int* n,
150 std::complex<double>* a,
const int* lda,
double* w,
151 std::complex<double>* work,
const int* lwork,
double* rwork,
const int* lrwork,
152 int* iwork,
const int* liwork,
int* info);
155void spotrf_(
const char* uplo,
const int* n,
float* A,
const int* lda,
int* info);
156void dpotrf_(
const char* uplo,
const int* n,
double* A,
const int* lda,
int* info);
157void cpotrf_(
const char* uplo,
const int* n, std::complex<float>* A,
const int* lda,
int* info);
158void zpotrf_(
const char* uplo,
const int* n, std::complex<double>* A,
const int* lda,
int* info);
161void spotri_(
const char* uplo,
const int* n,
float* A,
const int* lda,
int* info);
162void dpotri_(
const char* uplo,
const int* n,
double* A,
const int* lda,
int* info);
163void cpotri_(
const char* uplo,
const int* n, std::complex<float>* A,
const int* lda,
int* info);
164void zpotri_(
const char* uplo,
const int* n, std::complex<double>* A,
const int* lda,
int* info);
167void strtri_(
const char* uplo,
const char* diag,
const int* n,
float* a,
const int* lda,
int* info);
168void dtrtri_(
const char* uplo,
const char* diag,
const int* n,
double* a,
const int* lda,
int* info);
169void ctrtri_(
const char* uplo,
const char* diag,
const int* n, std::complex<float>* a,
const int* lda,
int* info);
170void ztrtri_(
const char* uplo,
const char* diag,
const int* n, std::complex<double>* a,
const int* lda,
int* info);
173void sgetrf_(
const int* m,
const int* n,
float* a,
const int* lda,
int* ipiv,
int* info);
174void dgetrf_(
const int* m,
const int* n,
double* a,
const int* lda,
int* ipiv,
int* info);
175void cgetrf_(
const int* m,
const int* n, std::complex<float>* a,
const int* lda,
int* ipiv,
int* info);
176void zgetrf_(
const int* m,
const int* n, std::complex<double>* a,
const int* lda,
int* ipiv,
int* info);
179void sgetri_(
const int* n,
float* A,
const int* lda,
const int* ipiv,
float* work,
const int* lwork,
int* info);
180void dgetri_(
const int* n,
double* A,
const int* lda,
const int* ipiv,
double* work,
const int* lwork,
int* info);
181void cgetri_(
const int* n, std::complex<float>* A,
const int* lda,
const int* ipiv, std::complex<float>* work,
const int* lwork,
int* info);
182void zgetri_(
const int* n, std::complex<double>* A,
const int* lda,
const int* ipiv, std::complex<double>* work,
const int* lwork,
int* info);
185void sgetrs_(
const char* trans,
const int* n,
const int* nrhs,
186 const float* A,
const int* lda,
const int* ipiv,
187 float* B,
const int* ldb,
int* info);
188void dgetrs_(
const char* trans,
const int* n,
const int* nrhs,
189 const double* A,
const int* lda,
const int* ipiv,
190 double* B,
const int* ldb,
int* info);
191void cgetrs_(
const char* trans,
const int* n,
const int* nrhs,
192 const std::complex<float>* A,
const int* lda,
const int* ipiv,
193 std::complex<float>* B,
const int* ldb,
int* info);
194void zgetrs_(
const char* trans,
const int* n,
const int* nrhs,
195 const std::complex<double>* A,
const int* lda,
const int* ipiv,
196 std::complex<double>* B,
const int* ldb,
int* info);
200void sgeqrf_(
const int* m,
const int* n,
float* A,
const int* lda,
float* tau,
float *work,
const int* lwork,
int* info);
201void dgeqrf_(
const int* m,
const int* n,
double* A,
const int* lda,
double* tau,
double *work,
const int* lwork,
int* info);
202void cgeqrf_(
const int* m,
const int* n, std::complex<float>* A,
const int* lda, std::complex<float>* tau, std::complex<float> *work,
const int* lwork,
int* info);
203void zgeqrf_(
const int* m,
const int* n, std::complex<double>* A,
const int* lda, std::complex<double>* tau, std::complex<double> *work,
const int* lwork,
int* info);
205void sorgqr_(
const int* m,
const int* n,
const int* k,
float* A,
const int* lda,
const float* tau,
float* work,
const int* lwork,
int* info);
206void dorgqr_(
const int* m,
const int* n,
const int* k,
double* A,
const int* lda,
const double* tau,
double* work,
const int* lwork,
int* info);
207void cungqr_(
const int* m,
const int* n,
const int* k, std::complex<float>* A,
const int* lda,
const std::complex<float>* tau, std::complex<float> *work,
const int* lwork,
int* info);
208void zungqr_(
const int* m,
const int* n,
const int* k, std::complex<double>* A,
const int* lda,
const std::complex<double>* tau, std::complex<double> *work,
const int* lwork,
int* info);
219int ilaenv(
int ispec,
const char *name,
const char *opts,
const int n1,
const int n2,
220 const int n3,
const int n4)
222 const int nb =
ilaenv_(&ispec, name, opts, &n1, &n2, &n3, &n4);
227void hegvd(
const int itype,
const char jobz,
const char uplo,
const int n,
228 float* a,
const int lda,
229 float* b,
const int ldb,
float* w,
230 float* work,
int lwork,
float* rwork,
int lrwork,
231 int* iwork,
int liwork,
int info)
234 ssygvd_(&itype, &jobz, &uplo, &n,
237 iwork, &liwork, &info);
241void hegvd(
const int itype,
const char jobz,
const char uplo,
const int n,
242 double* a,
const int lda,
243 double* b,
const int ldb,
double* w,
244 double* work,
int lwork,
double* rwork,
int lrwork,
245 int* iwork,
int liwork,
int info)
248 dsygvd_(&itype, &jobz, &uplo, &n,
251 iwork, &liwork, &info);
254void hegvd(
const int itype,
const char jobz,
const char uplo,
const int n,
255 std::complex<float>* a,
const int lda,
256 std::complex<float>* b,
const int ldb,
float* w,
257 std::complex<float>* work,
int lwork,
float* rwork,
int lrwork,
258 int* iwork,
int liwork,
int info)
261 chegvd_(&itype, &jobz, &uplo, &n,
263 work, &lwork, rwork, &lrwork,
264 iwork, &liwork, &info);
268void hegvd(
const int itype,
const char jobz,
const char uplo,
const int n,
269 std::complex<double>* a,
const int lda,
270 std::complex<double>* b,
const int ldb,
double* w,
271 std::complex<double>* work,
int lwork,
double* rwork,
int lrwork,
272 int* iwork,
int liwork,
int info)
275 zhegvd_(&itype, &jobz, &uplo, &n,
277 work, &lwork, rwork, &lrwork,
278 iwork, &liwork, &info);
287void hegvx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
288 float* a,
const int lda,
float* b,
const int ldb,
289 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
290 int m,
float* w,
float* z,
const int ldz,
291 float* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int& info)
293 ssygvx_(&itype, &jobz, &range, &uplo, &n,
296 &abstol, &m, w, z, &ldz,
297 work, &lwork, iwork, ifail, &info);
301void hegvx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
302 double* a,
const int lda,
double* b,
const int ldb,
303 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
304 int m,
double* w,
double* z,
const int ldz,
305 double* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int& info)
307 dsygvx_(&itype, &jobz, &range, &uplo, &n,
310 &abstol, &m, w, z, &ldz,
311 work, &lwork, iwork, ifail, &info);
315void hegvx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
316 std::complex<float>* a,
const int lda, std::complex<float>* b,
const int ldb,
317 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
318 int m,
float* w, std::complex<float>* z,
const int ldz,
319 std::complex<float>* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int& info)
321 chegvx_(&itype, &jobz, &range, &uplo, &n,
324 &abstol, &m, w, z, &ldz,
325 work, &lwork, rwork, iwork, ifail, &info);
329void hegvx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
330 std::complex<double>* a,
const int lda, std::complex<double>* b,
const int ldb,
331 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
332 int m,
double* w, std::complex<double>* z,
const int ldz,
333 std::complex<double>* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int& info)
335 zhegvx_(&itype, &jobz, &range, &uplo, &n,
338 &abstol, &m, w, z, &ldz,
339 work, &lwork, rwork, iwork, ifail, &info);
345void heevx(
const char jobz,
const char range,
const char uplo,
const int n,
346 float* a,
const int lda,
347 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
348 int m,
float* w,
float* z,
const int ldz,
349 float* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int info)
351 ssyevx_(&jobz, &range, &uplo, &n,
352 a, &lda, &vl, &vu, &il, &iu,
353 &abstol, &m, w, z, &ldz,
354 work, &lwork, iwork, ifail, &info);
358void heevx(
const char jobz,
const char range,
const char uplo,
const int n,
359 double* a,
const int lda,
360 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
361 int m,
double* w,
double* z,
const int ldz,
362 double* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int info)
364 dsyevx_(&jobz, &range, &uplo, &n,
365 a, &lda, &vl, &vu, &il, &iu,
366 &abstol, &m, w, z, &ldz,
367 work, &lwork, iwork, ifail, &info);
370void heevx(
const char jobz,
const char range,
const char uplo,
const int n,
371 std::complex<float>* a,
const int lda,
372 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
373 int m,
float* w, std::complex<float>* z,
const int ldz,
374 std::complex<float>* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int info)
376 cheevx_(&jobz, &range, &uplo, &n,
377 a, &lda, &vl, &vu, &il, &iu,
378 &abstol, &m, w, z, &ldz,
379 work, &lwork, rwork, iwork, ifail, &info);
383void heevx(
const char jobz,
const char range,
const char uplo,
const int n,
384 std::complex<double>* a,
const int lda,
385 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
386 int m,
double* w, std::complex<double>* z,
const int ldz,
387 std::complex<double>* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int info)
389 zheevx_(&jobz, &range, &uplo, &n,
390 a, &lda, &vl, &vu, &il, &iu,
391 &abstol, &m, w, z, &ldz,
392 work, &lwork, rwork, iwork, ifail, &info);
396void heevd(
const char jobz,
const char uplo,
const int n,
397 float* a,
const int lda,
float* w,
398 float* work,
int lwork,
float* rwork,
int lrwork,
399 int* iwork,
int liwork,
int& info)
405 iwork, &liwork, &info);
409void heevd(
const char jobz,
const char uplo,
const int n,
410 double* a,
const int lda,
double* w,
411 double* work,
int lwork,
double* rwork,
int lrwork,
412 int* iwork,
int liwork,
int& info)
418 iwork, &liwork, &info);
421void heevd(
const char jobz,
const char uplo,
const int n,
422 std::complex<float>* a,
const int lda,
float* w,
423 std::complex<float>* work,
int lwork,
float* rwork,
int lrwork,
424 int* iwork,
int liwork,
int& info)
429 work, &lwork, rwork, &lrwork,
430 iwork, &liwork, &info);
434void heevd(
const char jobz,
const char uplo,
const int n,
435 std::complex<double>* a,
const int lda,
double* w,
436 std::complex<double>* work,
int lwork,
double* rwork,
int lrwork,
437 int* iwork,
int liwork,
int& info)
442 work, &lwork, rwork, &lrwork,
443 iwork, &liwork, &info);
447void potrf(
const char &uplo,
const int &n,
float* A,
const int &lda,
int &info )
449 spotrf_(&uplo, &n, A, &lda, &info );
452void potrf(
const char &uplo,
const int &n,
double* A,
const int &lda,
int &info )
454 dpotrf_(&uplo, &n, A, &lda, &info );
457void potrf(
const char &uplo,
const int &n, std::complex<float>* A,
const int &lda,
int &info )
459 cpotrf_(&uplo, &n, A, &lda, &info );
462void potrf(
const char &uplo,
const int &n, std::complex<double>* A,
const int &lda,
int &info )
464 zpotrf_( &uplo, &n, A, &lda, &info );
468void trtri(
const char &uplo,
const char &diag,
const int &n,
float* A,
const int &lda,
int &info )
470 strtri_( &uplo, &diag, &n, A, &lda, &info);
473void trtri(
const char &uplo,
const char &diag,
const int &n,
double* A,
const int &lda,
int &info)
475 dtrtri_( &uplo, &diag, &n, A, &lda, &info);
478void trtri(
const char &uplo,
const char &diag,
const int &n, std::complex<float>* A,
const int &lda,
int &info )
480 ctrtri_( &uplo, &diag, &n, A, &lda, &info);
483void trtri(
const char &uplo,
const char &diag,
const int &n, std::complex<double>* A,
const int &lda,
int &info)
485 ztrtri_( &uplo, &diag, &n, A, &lda, &info);
489void getrf(
const int m,
const int n,
float* A,
const int lda,
int* ipiv,
int &info)
491 sgetrf_(&m, &n, A, &lda, ipiv, &info);
494void getrf(
const int m,
const int n,
double* A,
const int lda,
int* ipiv,
int &info)
496 dgetrf_(&m, &n, A, &lda, ipiv, &info);
499void getrf(
const int m,
const int n, std::complex<float>* A,
const int lda,
int* ipiv,
int &info)
501 cgetrf_(&m, &n, A, &lda, ipiv, &info);
504void getrf(
const int m,
const int n, std::complex<double>* A,
const int lda,
int* ipiv,
int &info)
506 zgetrf_(&m, &n, A, &lda, ipiv, &info);
510void getri(
const int n,
float* A,
const int lda,
const int* ipiv,
float* work,
const int lwork,
int& info)
512 sgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
515void getri(
const int n,
double* A,
const int lda,
const int* ipiv,
double* work,
const int lwork,
int& info)
517 dgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
520void getri(
const int n, std::complex<float>* A,
const int lda,
const int* ipiv, std::complex<float>* work,
const int lwork,
int& info)
522 cgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
525void getri(
const int n, std::complex<double>* A,
const int lda,
const int* ipiv, std::complex<double>* work,
const int lwork,
int& info)
527 zgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
531void getrs(
const char& trans,
const int n,
const int nrhs,
float* A,
const int lda,
const int* ipiv,
float* B,
const int ldb,
int& info)
533 sgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
536void getrs(
const char& trans,
const int n,
const int nrhs,
double* A,
const int lda,
const int* ipiv,
double* B,
const int ldb,
int& info)
538 dgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
541void getrs(
const char& trans,
const int n,
const int nrhs, std::complex<float>* A,
const int lda,
const int* ipiv, std::complex<float>* B,
const int ldb,
int& info)
543 cgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
546void getrs(
const char& trans,
const int n,
const int nrhs, std::complex<double>* A,
const int lda,
const int* ipiv, std::complex<double>* B,
const int ldb,
int& info)
548 zgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
553void geqrf(
const int m,
const int n,
float* A,
const int lda,
float* tau,
float* work,
const int lwork,
int& info)
555 sgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);
558void geqrf(
const int m,
const int n,
double* A,
const int lda,
double* tau,
double* work,
const int lwork,
int& info)
560 dgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);
563void geqrf(
const int m,
const int n, std::complex<float>* A,
const int lda, std::complex<float>* tau, std::complex<float>* work,
const int lwork,
int& info)
565 cgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);
568void geqrf(
const int m,
const int n, std::complex<double>* A,
const int lda, std::complex<double>* tau, std::complex<double>* work,
const int lwork,
int& info)
570 zgeqrf_(&m, &n, A, &lda, tau, work, &lwork, &info);
574void orgqr(
const int m,
const int n,
const int k,
float* A,
const int lda,
const float* tau,
float* work,
const int lwork,
int& info)
576 sorgqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info);
579void orgqr(
const int m,
const int n,
const int k,
double* A,
const int lda,
const double* tau,
double* work,
const int lwork,
int& info)
581 dorgqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info);
584void orgqr(
const int m,
const int n,
const int k, std::complex<float>* A,
const int lda,
const std::complex<float>* tau, std::complex<float>* work,
const int lwork,
int& info)
586 cungqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info);
589void orgqr(
const int m,
const int n,
const int k, std::complex<double>* A,
const int lda,
const std::complex<double>* tau, std::complex<double>* work,
const int lwork,
int& info)
591 zungqr_(&m, &n, &k, A, &lda, tau, work, &lwork, &info);
void ssygvd_(const int *itype, const char *jobz, const char *uplo, const int *n, float *a, const int *lda, float *b, const int *ldb, float *w, float *work, const int *lwork, int *iwork, const int *liwork, int *info)
void zgetrs_(const char *trans, const int *n, const int *nrhs, const std::complex< double > *A, const int *lda, const int *ipiv, std::complex< double > *B, const int *ldb, int *info)
void dgetrs_(const char *trans, const int *n, const int *nrhs, const double *A, const int *lda, const int *ipiv, double *B, const int *ldb, int *info)
void dgetrf_(const int *m, const int *n, double *a, const int *lda, int *ipiv, int *info)
void dgeqrf_(const int *m, const int *n, double *A, const int *lda, double *tau, double *work, const int *lwork, int *info)
void dgetri_(const int *n, double *A, const int *lda, const int *ipiv, double *work, const int *lwork, int *info)
void dsyevx_(const char *jobz, const char *range, const char *uplo, const int *n, double *a, const int *lda, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
void cgetrf_(const int *m, const int *n, std::complex< float > *a, const int *lda, int *ipiv, int *info)
void chegvx_(const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, std::complex< float > *A, const int *lda, std::complex< float > *B, const int *ldb, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, std::complex< float > *Z, const int *ldz, std::complex< float > *work, const int *lwork, float *rwork, int *iwork, int *ifail, int *info)
void cheevx_(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< float > *a, const int *lda, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, std::complex< float > *z, const int *ldz, std::complex< float > *work, const int *lwork, float *rwork, int *iwork, int *ifail, int *info)
void ztrtri_(const char *uplo, const char *diag, const int *n, std::complex< double > *a, const int *lda, int *info)
void spotri_(const char *uplo, const int *n, float *A, const int *lda, int *info)
void dorgqr_(const int *m, const int *n, const int *k, double *A, const int *lda, const double *tau, double *work, const int *lwork, int *info)
void dsygvd_(const int *itype, const char *jobz, const char *uplo, const int *n, double *a, const int *lda, double *b, const int *ldb, double *w, double *work, const int *lwork, int *iwork, const int *liwork, int *info)
void ssygvx_(const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *lda, float *B, const int *ldb, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *Z, const int *ldz, float *work, const int *lwork, int *iwork, int *ifail, int *info)
void cheevd_(const char *jobz, const char *uplo, const int *n, std::complex< float > *a, const int *lda, float *w, std::complex< float > *work, const int *lwork, float *rwork, const int *lrwork, int *iwork, const int *liwork, int *info)
void dsygvx_(const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *lda, double *B, const int *ldb, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *Z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
void sorgqr_(const int *m, const int *n, const int *k, float *A, const int *lda, const float *tau, float *work, const int *lwork, int *info)
void sgetrf_(const int *m, const int *n, float *a, const int *lda, int *ipiv, int *info)
void dsyevd_(const char *jobz, const char *uplo, const int *n, double *a, const int *lda, double *w, double *work, const int *lwork, int *iwork, const int *liwork, int *info)
void zgetrf_(const int *m, const int *n, std::complex< double > *a, const int *lda, int *ipiv, int *info)
void dtrtri_(const char *uplo, const char *diag, const int *n, double *a, const int *lda, int *info)
void zhegvd_(const int *itype, const char *jobz, const char *uplo, const int *n, std::complex< double > *a, const int *lda, std::complex< double > *b, const int *ldb, double *w, std::complex< double > *work, const int *lwork, double *rwork, const int *lrwork, int *iwork, const int *liwork, int *info)
void cpotrf_(const char *uplo, const int *n, std::complex< float > *A, const int *lda, int *info)
void ssyevd_(const char *jobz, const char *uplo, const int *n, float *a, const int *lda, float *w, float *work, const int *lwork, int *iwork, const int *liwork, int *info)
void cgetrs_(const char *trans, const int *n, const int *nrhs, const std::complex< float > *A, const int *lda, const int *ipiv, std::complex< float > *B, const int *ldb, int *info)
void cungqr_(const int *m, const int *n, const int *k, std::complex< float > *A, const int *lda, const std::complex< float > *tau, std::complex< float > *work, const int *lwork, int *info)
void ctrtri_(const char *uplo, const char *diag, const int *n, std::complex< float > *a, const int *lda, int *info)
void zheevx_(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *a, const int *lda, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, std::complex< double > *z, const int *ldz, std::complex< double > *work, const int *lwork, double *rwork, int *iwork, int *ifail, int *info)
void zungqr_(const int *m, const int *n, const int *k, std::complex< double > *A, const int *lda, const std::complex< double > *tau, std::complex< double > *work, const int *lwork, int *info)
void strtri_(const char *uplo, const char *diag, const int *n, float *a, const int *lda, int *info)
void ssyevx_(const char *jobz, const char *range, const char *uplo, const int *n, float *a, const int *lda, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, float *work, const int *lwork, int *iwork, int *ifail, int *info)
void zhegvx_(const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *lda, std::complex< double > *B, const int *ldb, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, std::complex< double > *Z, const int *ldz, std::complex< double > *work, const int *lwork, double *rwork, int *iwork, int *ifail, int *info)
void sgetri_(const int *n, float *A, const int *lda, const int *ipiv, float *work, const int *lwork, int *info)
void zgeqrf_(const int *m, const int *n, std::complex< double > *A, const int *lda, std::complex< double > *tau, std::complex< double > *work, const int *lwork, int *info)
void sgetrs_(const char *trans, const int *n, const int *nrhs, const float *A, const int *lda, const int *ipiv, float *B, const int *ldb, int *info)
void spotrf_(const char *uplo, const int *n, float *A, const int *lda, int *info)
void zheevd_(const char *jobz, const char *uplo, const int *n, std::complex< double > *a, const int *lda, double *w, std::complex< double > *work, const int *lwork, double *rwork, const int *lrwork, int *iwork, const int *liwork, int *info)
void cpotri_(const char *uplo, const int *n, std::complex< float > *A, const int *lda, int *info)
void zpotri_(const char *uplo, const int *n, std::complex< double > *A, const int *lda, int *info)
void sgeqrf_(const int *m, const int *n, float *A, const int *lda, float *tau, float *work, const int *lwork, int *info)
void cgeqrf_(const int *m, const int *n, std::complex< float > *A, const int *lda, std::complex< float > *tau, std::complex< float > *work, const int *lwork, int *info)
void cgetri_(const int *n, std::complex< float > *A, const int *lda, const int *ipiv, std::complex< float > *work, const int *lwork, int *info)
int ilaenv_(const int *ispec, const char *name, const char *opts, const int *n1, const int *n2, const int *n3, const int *n4)
void chegvd_(const int *itype, const char *jobz, const char *uplo, const int *n, std::complex< float > *a, const int *lda, std::complex< float > *b, const int *ldb, float *w, std::complex< float > *work, const int *lwork, float *rwork, const int *lrwork, int *iwork, const int *liwork, int *info)
void zpotrf_(const char *uplo, const int *n, std::complex< double > *A, const int *lda, int *info)
void dpotrf_(const char *uplo, const int *n, double *A, const int *lda, int *info)
void dpotri_(const char *uplo, const int *n, double *A, const int *lda, int *info)
void zgetri_(const int *n, std::complex< double > *A, const int *lda, const int *ipiv, std::complex< double > *work, const int *lwork, int *info)