1#ifndef BASE_THIRD_PARTY_LAPACK_H_
2#define BASE_THIRD_PARTY_LAPACK_H_
25int ilaenv_(
int* ispec,
const char* name,
const char* opts,
26 const int* n1,
const int* n2,
const int* n3,
const int* n4);
31void ssygvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
32 float* a,
const int* lda,
33 const float* b,
const int* ldb,
float* w,
34 float* work,
int* lwork,
35 int* iwork,
int* liwork,
int* info);
37void dsygvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
38 double* a,
const int* lda,
39 const double* b,
const int* ldb,
double* w,
40 double* work,
int* lwork,
41 int* iwork,
int* liwork,
int* info);
43void chegvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
44 std::complex<float>* a,
const int* lda,
45 const std::complex<float>* b,
const int* ldb,
float* w,
46 std::complex<float>* work,
int* lwork,
float* rwork,
int* lrwork,
47 int* iwork,
int* liwork,
int* info);
49void zhegvd_(
const int* itype,
const char* jobz,
const char* uplo,
const int* n,
50 std::complex<double>* a,
const int* lda,
51 const std::complex<double>* b,
const int* ldb,
double* w,
52 std::complex<double>* work,
int* lwork,
double* rwork,
int* lrwork,
53 int* iwork,
int* liwork,
int* info);
55void ssyevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
56 float *a,
const int* lda,
57 const float* vl,
const float* vu,
const int* il,
const int* iu,
const float* abstol,
58 const int* m,
float* w,
float *z,
const int *ldz,
59 float *work,
const int* lwork,
float* rwork,
int* iwork,
int* ifail,
int* info);
60void dsyevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
61 double *a,
const int* lda,
62 const double* vl,
const double* vu,
const int* il,
const int* iu,
const double* abstol,
63 const int* m,
double* w,
double *z,
const int *ldz,
64 double *work,
const int* lwork,
double* rwork,
int* iwork,
int* ifail,
int* info);
65void cheevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
66 std::complex<float> *a,
const int* lda,
67 const float* vl,
const float* vu,
const int* il,
const int* iu,
const float* abstol,
68 const int* m,
float* w, std::complex<float> *z,
const int *ldz,
69 std::complex<float> *work,
const int* lwork,
float* rwork,
int* iwork,
int* ifail,
int* info);
70void zheevx_(
const char* jobz,
const char* range,
const char* uplo,
const int* n,
71 std::complex<double> *a,
const int* lda,
72 const double* vl,
const double* vu,
const int* il,
const int* iu,
const double* abstol,
73 const int* m,
double* w, std::complex<double> *z,
const int *ldz,
74 std::complex<double> *work,
const int* lwork,
double* rwork,
int* iwork,
int* ifail,
int* info);
76void ssyevd_(
const char *jobz,
const char *uplo,
const int *n,
77 float *a,
const int *lda,
float *w,
78 float *work,
int *lwork,
79 int *iwork,
int *liwork,
int *info);
80void dsyevd_(
const char *jobz,
const char *uplo,
const int *n,
81 double *a,
const int *lda,
double *w,
82 double *work,
int *lwork,
83 int *iwork,
int *liwork,
int *info);
84void cheevd_(
const char *jobz,
const char *uplo,
const int *n,
85 std::complex<float> *a,
const int *lda,
float *w,
86 std::complex<float> *work,
int *lwork,
float *rwork,
int *lrwork,
87 int *iwork,
int *liwork,
int *info);
88void zheevd_(
const char *jobz,
const char *uplo,
const int *n,
89 std::complex<double> *a,
const int *lda,
double *w,
90 std::complex<double> *work,
int *lwork,
double *rwork,
int *lrwork,
91 int *iwork,
int *liwork,
int *info);
93void spotrf_(
const char*
const uplo,
const int*
const n,
float*
const A,
const int*
const lda,
int*
const info);
94void dpotrf_(
const char*
const uplo,
const int*
const n,
double*
const A,
const int*
const lda,
int*
const info);
95void cpotrf_(
const char*
const uplo,
const int*
const n, std::complex<float>*
const A,
const int*
const lda,
int*
const info);
96void zpotrf_(
const char*
const uplo,
const int*
const n, std::complex<double>*
const A,
const int*
const lda,
int*
const info);
98void spotri_(
const char*
const uplo,
const int*
const n,
float*
const A,
const int*
const lda,
int*
const info);
99void dpotri_(
const char*
const uplo,
const int*
const n,
double*
const A,
const int*
const lda,
int*
const info);
100void cpotri_(
const char*
const uplo,
const int*
const n, std::complex<float>*
const A,
const int*
const lda,
int*
const info);
101void zpotri_(
const char*
const uplo,
const int*
const n, std::complex<double>*
const A,
const int*
const lda,
int*
const info);
103void strtri_(
const char* uplo,
const char* diag,
const int* n,
float* a,
const int* lda,
int* info);
104void dtrtri_(
const char* uplo,
const char* diag,
const int* n,
double* a,
const int* lda,
int* info);
105void ctrtri_(
const char* uplo,
const char* diag,
const int* n, std::complex<float>* a,
const int* lda,
int* info);
106void ztrtri_(
const char* uplo,
const char* diag,
const int* n, std::complex<double>* a,
const int* lda,
int* info);
108void sgetrf_(
const int* m,
const int* n,
float* a,
const int* lda,
int* ipiv,
int* info);
109void dgetrf_(
const int* m,
const int* n,
double* a,
const int* lda,
int* ipiv,
int* info);
110void cgetrf_(
const int* m,
const int* n, std::complex<float>* a,
const int* lda,
int* ipiv,
int* info);
111void zgetrf_(
const int* m,
const int* n, std::complex<double>* a,
const int* lda,
int* ipiv,
int* info);
113void sgetri_(
const int* n,
float* A,
const int* lda,
const int* ipiv,
float* work,
const int* lwork,
int* info);
114void dgetri_(
const int* n,
double* A,
const int* lda,
const int* ipiv,
double* work,
const int* lwork,
int* info);
115void cgetri_(
const int* n, std::complex<float>* A,
const int* lda,
const int* ipiv, std::complex<float>* work,
const int* lwork,
int* info);
116void zgetri_(
const int* n, std::complex<double>* A,
const int* lda,
const int* ipiv, std::complex<double>* work,
const int* lwork,
int* info);
118void 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);
119void 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);
120void 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);
121void 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);
128namespace lapackConnector
131int ilaenv(
int ispec,
const char *name,
const char *opts,
const int n1,
const int n2,
132 const int n3,
const int n4)
134 const int nb =
ilaenv_(&ispec, name, opts, &n1, &n2, &n3, &n4);
139void dngvd(
const int itype,
const char jobz,
const char uplo,
const int n,
140 float* a,
const int lda,
141 const float* b,
const int ldb,
float* w,
142 float* work,
int lwork,
float* rwork,
int lrwork,
143 int* iwork,
int liwork,
int info)
146 ssygvd_(&itype, &jobz, &uplo, &n,
149 iwork, &liwork, &info);
153void dngvd(
const int itype,
const char jobz,
const char uplo,
const int n,
154 double* a,
const int lda,
155 const double* b,
const int ldb,
double* w,
156 double* work,
int lwork,
double* rwork,
int lrwork,
157 int* iwork,
int liwork,
int info)
160 dsygvd_(&itype, &jobz, &uplo, &n,
163 iwork, &liwork, &info);
166void dngvd(
const int itype,
const char jobz,
const char uplo,
const int n,
167 std::complex<float>* a,
const int lda,
168 const std::complex<float>* b,
const int ldb,
float* w,
169 std::complex<float>* work,
int lwork,
float* rwork,
int lrwork,
170 int* iwork,
int liwork,
int info)
173 chegvd_(&itype, &jobz, &uplo, &n,
175 work, &lwork, rwork, &lrwork,
176 iwork, &liwork, &info);
180void dngvd(
const int itype,
const char jobz,
const char uplo,
const int n,
181 std::complex<double>* a,
const int lda,
182 const std::complex<double>* b,
const int ldb,
double* w,
183 std::complex<double>* work,
int lwork,
double* rwork,
int lrwork,
184 int* iwork,
int liwork,
int info)
187 zhegvd_(&itype, &jobz, &uplo, &n,
189 work, &lwork, rwork, &lrwork,
190 iwork, &liwork, &info);
195void dnevx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
196 float* a,
const int lda,
197 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
198 const int m,
float* w,
float* z,
const int ldz,
199 float* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int info)
201 ssyevx_(&jobz, &range, &uplo, &n,
202 a, &lda, &vl, &vu, &il, &iu,
203 &abstol, &m, w, z, &ldz,
204 work, &lwork, rwork, iwork, ifail, &info);
208void dnevx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
209 double* a,
const int lda,
210 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
211 const int m,
double* w,
double* z,
const int ldz,
212 double* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int info)
214 dsyevx_(&jobz, &range, &uplo, &n,
215 a, &lda, &vl, &vu, &il, &iu,
216 &abstol, &m, w, z, &ldz,
217 work, &lwork, rwork, iwork, ifail, &info);
220void dnevx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
221 std::complex<float>* a,
const int lda,
222 const float vl,
const float vu,
const int il,
const int iu,
const float abstol,
223 const int m,
float* w, std::complex<float>* z,
const int ldz,
224 std::complex<float>* work,
const int lwork,
float* rwork,
int* iwork,
int* ifail,
int info)
226 cheevx_(&jobz, &range, &uplo, &n,
227 a, &lda, &vl, &vu, &il, &iu,
228 &abstol, &m, w, z, &ldz,
229 work, &lwork, rwork, iwork, ifail, &info);
233void dnevx(
const int itype,
const char jobz,
const char range,
const char uplo,
const int n,
234 std::complex<double>* a,
const int lda,
235 const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
236 const int m,
double* w, std::complex<double>* z,
const int ldz,
237 std::complex<double>* work,
const int lwork,
double* rwork,
int* iwork,
int* ifail,
int info)
239 zheevx_(&jobz, &range, &uplo, &n,
240 a, &lda, &vl, &vu, &il, &iu,
241 &abstol, &m, w, z, &ldz,
242 work, &lwork, rwork, iwork, ifail, &info);
246void dnevd(
const char jobz,
const char uplo,
const int n,
247 float* a,
const int lda,
float* w,
248 float* work,
int lwork,
float* rwork,
int lrwork,
249 int* iwork,
int liwork,
int& info)
255 iwork, &liwork, &info);
259void dnevd(
const char jobz,
const char uplo,
const int n,
260 double* a,
const int lda,
double* w,
261 double* work,
int lwork,
double* rwork,
int lrwork,
262 int* iwork,
int liwork,
int& info)
268 iwork, &liwork, &info);
271void dnevd(
const char jobz,
const char uplo,
const int n,
272 std::complex<float>* a,
const int lda,
float* w,
273 std::complex<float>* work,
int lwork,
float* rwork,
int lrwork,
274 int* iwork,
int liwork,
int& info)
279 work, &lwork, rwork, &lrwork,
280 iwork, &liwork, &info);
284void dnevd(
const char jobz,
const char uplo,
const int n,
285 std::complex<double>* a,
const int lda,
double* w,
286 std::complex<double>* work,
int lwork,
double* rwork,
int lrwork,
287 int* iwork,
int liwork,
int& info)
292 work, &lwork, rwork, &lrwork,
293 iwork, &liwork, &info);
297void potrf(
const char &uplo,
const int &n,
float* A,
const int &lda,
int &info )
299 spotrf_(&uplo, &n, A, &lda, &info );
302void potrf(
const char &uplo,
const int &n,
double* A,
const int &lda,
int &info )
304 dpotrf_(&uplo, &n, A, &lda, &info );
307void potrf(
const char &uplo,
const int &n, std::complex<float>* A,
const int &lda,
int &info )
309 cpotrf_(&uplo, &n, A, &lda, &info );
312void potrf(
const char &uplo,
const int &n, std::complex<double>* A,
const int &lda,
int &info )
314 zpotrf_( &uplo, &n, A, &lda, &info );
318void trtri(
const char &uplo,
const char &diag,
const int &n,
float* A,
const int &lda,
int &info )
320 strtri_( &uplo, &diag, &n, A, &lda, &info);
323void trtri(
const char &uplo,
const char &diag,
const int &n,
double* A,
const int &lda,
int &info)
325 dtrtri_( &uplo, &diag, &n, A, &lda, &info);
328void trtri(
const char &uplo,
const char &diag,
const int &n, std::complex<float>* A,
const int &lda,
int &info )
330 ctrtri_( &uplo, &diag, &n, A, &lda, &info);
333void trtri(
const char &uplo,
const char &diag,
const int &n, std::complex<double>* A,
const int &lda,
int &info)
335 ztrtri_( &uplo, &diag, &n, A, &lda, &info);
339void getrf(
const int m,
const int n,
float* A,
const int lda,
int* ipiv,
int &info)
341 sgetrf_(&m, &n, A, &lda, ipiv, &info);
344void getrf(
const int m,
const int n,
double* A,
const int lda,
int* ipiv,
int &info)
346 dgetrf_(&m, &n, A, &lda, ipiv, &info);
349void getrf(
const int m,
const int n, std::complex<float>* A,
const int lda,
int* ipiv,
int &info)
351 cgetrf_(&m, &n, A, &lda, ipiv, &info);
354void getrf(
const int m,
const int n, std::complex<double>* A,
const int lda,
int* ipiv,
int &info)
356 zgetrf_(&m, &n, A, &lda, ipiv, &info);
360void getri(
const int n,
float* A,
const int lda,
const int* ipiv,
float* work,
const int lwork,
int& info)
362 sgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
365void getri(
const int n,
double* A,
const int lda,
const int* ipiv,
double* work,
const int lwork,
int& info)
367 dgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
370void getri(
const int n, std::complex<float>* A,
const int lda,
const int* ipiv, std::complex<float>* work,
const int lwork,
int& info)
372 cgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
375void getri(
const int n, std::complex<double>* A,
const int lda,
const int* ipiv, std::complex<double>* work,
const int lwork,
int& info)
377 zgetri_(&n, A, &lda, ipiv, work, &lwork, &info);
381void 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)
383 sgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
386void 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)
388 dgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
391void 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)
393 cgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
396void 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)
398 zgetrs_(&trans, &n, &nrhs, A, &lda, ipiv, B, &ldb, &info);
void ssygvd_(const int *itype, const char *jobz, const char *uplo, const int *n, float *a, const int *lda, const float *b, const int *ldb, float *w, float *work, int *lwork, int *iwork, int *liwork, int *info)
void dpotrf_(const char *const uplo, const int *const n, double *const A, const int *const lda, int *const 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 cpotri_(const char *const uplo, const int *const n, std::complex< float > *const A, const int *const lda, int *const info)
void spotrf_(const char *const uplo, const int *const n, float *const A, const int *const lda, int *const 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, const int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, double *rwork, 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, int *lwork, float *rwork, int *lrwork, int *iwork, int *liwork, 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, const int *m, float *w, float *z, const int *ldz, float *work, const int *lwork, float *rwork, int *iwork, int *ifail, int *info)
void zpotrf_(const char *const uplo, const int *const n, std::complex< double > *const A, const int *const lda, int *const info)
void dgetri_(const int *n, double *A, const int *lda, const int *ipiv, double *work, const int *lwork, int *info)
void cgetrf_(const int *m, const int *n, std::complex< float > *a, const int *lda, int *ipiv, int *info)
void zhegvd_(const int *itype, const char *jobz, const char *uplo, const int *n, std::complex< double > *a, const int *lda, const std::complex< double > *b, const int *ldb, double *w, std::complex< double > *work, int *lwork, double *rwork, int *lrwork, int *iwork, int *liwork, int *info)
void ztrtri_(const char *uplo, const char *diag, const int *n, std::complex< double > *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, const 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 dsygvd_(const int *itype, const char *jobz, const char *uplo, const int *n, double *a, const int *lda, const double *b, const int *ldb, double *w, double *work, int *lwork, int *iwork, int *liwork, int *info)
void chegvd_(const int *itype, const char *jobz, const char *uplo, const int *n, std::complex< float > *a, const int *lda, const std::complex< float > *b, const int *ldb, float *w, std::complex< float > *work, int *lwork, float *rwork, int *lrwork, int *iwork, int *liwork, 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, int *lwork, int *iwork, int *liwork, int *info)
void zpotri_(const char *const uplo, const int *const n, std::complex< double > *const A, const int *const lda, int *const 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 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 ctrtri_(const char *uplo, const char *diag, const int *n, std::complex< float > *a, const int *lda, int *info)
void strtri_(const char *uplo, const char *diag, const int *n, float *a, const int *lda, int *info)
void sgetri_(const int *n, float *A, const int *lda, const int *ipiv, float *work, const int *lwork, int *info)
void ssyevd_(const char *jobz, const char *uplo, const int *n, float *a, const int *lda, float *w, float *work, int *lwork, int *iwork, int *liwork, int *info)
void dpotri_(const char *const uplo, const int *const n, double *const A, const int *const lda, int *const 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, const 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 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)
int ilaenv_(int *ispec, const char *name, const char *opts, const int *n1, const int *n2, const int *n3, const int *n4)
void cpotrf_(const char *const uplo, const int *const n, std::complex< float > *const A, const int *const lda, int *const 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, int *lwork, double *rwork, int *lrwork, int *iwork, int *liwork, 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)
void spotri_(const char *const uplo, const int *const n, float *const A, const int *const lda, int *const 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)