46 #if defined (INTEL_CXML)
47 #define CHAR_MACRO(char_var) &char_var, 1
49 #define CHAR_MACRO(char_var) &char_var
68 float * X,
const int LDX,
int * INFO)
const {
73 double * X,
const int LDX,
int * INFO)
const {
86 float * RCOND,
float * WORK,
int * IWORK,
92 double * RCOND,
double * WORK,
int * IWORK,
98 float * X,
const int LDX,
int * INFO)
const {
103 double * X,
const int LDX,
int * INFO)
const {
108 float * AMAX,
int * INFO)
const {
109 SPOEQU_F77(&N, A, &LDA, S, SCOND, AMAX, INFO);
113 double * AMAX,
int * INFO)
const {
114 DPOEQU_F77(&N, A, &LDA, S, SCOND, AMAX, INFO);
117 void Epetra_LAPACK::PORFS(
const char UPLO,
const int N,
const int NRHS,
const float *
A,
const int LDA,
const float * AF,
const int LDAF,
118 const float *
B,
const int LDB,
float * X,
const int LDX,
119 float * FERR,
float * BERR,
float * WORK,
int * IWORK,
int * INFO)
const {
120 SPORFS_F77(
CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, AF, &LDAF, B, &LDB, X, &LDX,
121 FERR, BERR, WORK, IWORK, INFO);
124 void Epetra_LAPACK::PORFS(
const char UPLO,
const int N,
const int NRHS,
const double *
A,
const int LDA,
const double * AF,
const int LDAF,
125 const double *
B,
const int LDB,
double * X,
const int LDX,
126 double * FERR,
double * BERR,
double * WORK,
int * IWORK,
int * INFO)
const {
127 DPORFS_F77(
CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, AF, &LDAF,B, &LDB, X, &LDX,
128 FERR, BERR, WORK, IWORK, INFO);
131 void Epetra_LAPACK::POSVX(
const char FACT,
const char UPLO,
const int N,
const int NRHS,
float *
A,
const int LDA,
float * AF,
const int LDAF,
132 const char EQUED,
float * S,
float *
B,
const int LDB,
float * X,
const int LDX,
float * RCOND,
133 float * FERR,
float * BERR,
float * WORK,
int * IWORK,
int * INFO)
const {
134 SPOSVX_F77(
CHAR_MACRO(FACT),
CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, AF, &LDAF,
CHAR_MACRO(EQUED), S, B, &LDB, X, &LDX,
135 RCOND, FERR, BERR, WORK, IWORK, INFO);
138 void Epetra_LAPACK::POSVX(
const char FACT,
const char UPLO,
const int N,
const int NRHS,
double *
A,
const int LDA,
double * AF,
const int LDAF,
139 const char EQUED,
double * S,
double *
B,
const int LDB,
double * X,
const int LDX,
double * RCOND,
140 double * FERR,
double * BERR,
double * WORK,
int * IWORK,
int * INFO)
const {
141 DPOSVX_F77(
CHAR_MACRO(FACT),
CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, AF, &LDAF,
CHAR_MACRO(EQUED), S, B, &LDB, X, &LDX, RCOND,
142 FERR, BERR, WORK, IWORK, INFO);
148 double*
A,
const int LDA,
double*
B,
const int LDB,
double* WORK,
const int LWORK,
150 DGELS_F77 (
CHAR_MACRO(TRANS), &M, &N, &NRHS, A, &LDA, B, &LDB, WORK, &LWORK, INFO );
162 void Epetra_LAPACK::GEQRF(
const int M,
const int N,
float *
A,
const int LDA,
float * TAU,
float * WORK,
const int LWORK,
int * INFO)
const {
163 SGEQRF_F77(&M, &N, A, &LDA, TAU, WORK, &LWORK, INFO);
166 void Epetra_LAPACK::GEQRF(
const int M,
const int N,
double *
A,
const int LDA,
double * TAU,
double * WORK,
const int LWORK,
int * INFO)
const {
167 DGEQRF_F77(&M, &N, A, &LDA, TAU, WORK, &LWORK, INFO);
171 const int LDA,
float * S,
float * U,
172 const int LDU,
float * VT,
const int LDVT,
float * WORK,
173 const int * LWORK,
int * INFO)
const {
175 VT, &LDVT, WORK, LWORK, INFO);
179 const int LDA,
double * S,
double * U,
180 const int LDU,
double * VT,
const int LDVT,
double * WORK,
181 const int * LWORK,
int * INFO)
const {
183 VT, &LDVT, WORK, LWORK, INFO);
187 const int * IPIV,
float * X,
const int LDX,
int * INFO)
const {
192 const int * IPIV,
double * X,
const int LDX,
int * INFO)
const {
197 float * WORK,
const int * LWORK,
int * INFO)
const {
198 SGETRI_F77(&N, A, &LDA, IPIV, WORK, LWORK, INFO);
202 double * WORK,
const int * LWORK,
int * INFO)
const {
203 DGETRI_F77(&N, A, &LDA, IPIV, WORK, LWORK, INFO);
207 float * RCOND,
float * WORK,
int * IWORK,
213 double * RCOND,
double * WORK,
int * IWORK,
219 float * X,
const int LDX,
int * INFO)
const {
220 SGESV_F77(&N, &NRHS, A, &LDA, IPIV, X, &LDX, INFO);
224 double * X,
const int LDX,
int * INFO)
const {
225 DGESV_F77(&N, &NRHS, A, &LDA, IPIV, X, &LDX, INFO);
229 float * ROWCND,
float * COLCND,
float * AMAX,
int * INFO)
const {
230 SGEEQU_F77(&M, &N, A, &LDA, R, C, ROWCND, COLCND, AMAX, INFO);
234 double * ROWCND,
double * COLCND,
double * AMAX,
int * INFO)
const {
235 DGEEQU_F77(&M, &N, A, &LDA, R, C, ROWCND, COLCND, AMAX, INFO);
238 void Epetra_LAPACK::GERFS(
const char TRANS,
const int N,
const int NRHS,
const float *
A,
const int LDA,
const float * AF,
const int LDAF,
239 const int * IPIV,
const float *
B,
const int LDB,
float * X,
const int LDX,
240 float * FERR,
float * BERR,
float * WORK,
int * IWORK,
int * INFO)
const {
241 SGERFS_F77(
CHAR_MACRO(TRANS), &N, &NRHS, A, &LDA, AF, &LDAF, IPIV, B, &LDB, X, &LDX,
242 FERR, BERR, WORK, IWORK, INFO);
245 void Epetra_LAPACK::GERFS(
const char TRANS,
const int N,
const int NRHS,
const double *
A,
const int LDA,
const double * AF,
const int LDAF,
246 const int * IPIV,
const double *
B,
const int LDB,
double * X,
const int LDX,
247 double * FERR,
double * BERR,
double * WORK,
int * IWORK,
int * INFO)
const {
248 DGERFS_F77(
CHAR_MACRO(TRANS), &N, &NRHS, A, &LDA, AF, &LDAF, IPIV, B, &LDB, X, &LDX,
249 FERR, BERR, WORK, IWORK, INFO);
252 void Epetra_LAPACK::GESVX(
const char FACT,
const char TRANS,
const int N,
const int NRHS,
float *
A,
const int LDA,
float * AF,
const int LDAF,
253 int * IPIV,
const char EQUED,
float * R,
float *
C,
float *
B,
const int LDB,
float * X,
const int LDX,
float * RCOND,
254 float * FERR,
float * BERR,
float * WORK,
int * IWORK,
int * INFO)
const {
255 SGESVX_F77(
CHAR_MACRO(FACT),
CHAR_MACRO(TRANS), &N, &NRHS, A, &LDA, AF, &LDAF, IPIV,
CHAR_MACRO(EQUED), R, C, B, &LDB, X, &LDX, RCOND,
256 FERR, BERR, WORK, IWORK, INFO);
259 void Epetra_LAPACK::GESVX(
const char FACT,
const char TRANS,
const int N,
const int NRHS,
double *
A,
const int LDA,
double * AF,
const int LDAF,
260 int * IPIV,
const char EQUED,
double * R,
double *
C,
double *
B,
const int LDB,
double * X,
const int LDX,
double * RCOND,
261 double * FERR,
double * BERR,
double * WORK,
int * IWORK,
int * INFO)
const {
262 DGESVX_F77(
CHAR_MACRO(FACT),
CHAR_MACRO(TRANS), &N, &NRHS, A, &LDA, AF, &LDAF, IPIV,
CHAR_MACRO(EQUED), R, C, B, &LDB, X, &LDX, RCOND,
263 FERR, BERR, WORK, IWORK, INFO);
271 float * WORK,
const int LWORK,
int * INFO)
const {
272 SGEHRD_F77(&N, &ILO, &IHI, A, &LDA, TAU, WORK, &LWORK, INFO);
276 double * WORK,
const int LWORK,
int * INFO)
const {
277 DGEHRD_F77(&N, &ILO, &IHI, A, &LDA, TAU, WORK, &LWORK, INFO);
280 void Epetra_LAPACK::HSEQR(
const char JOB,
const char COMPZ,
const int N,
const int ILO,
const int IHI,
float * H,
const int LDH,
281 float * WR,
float * WI,
float * Z,
const int LDZ,
float * WORK,
const int LWORK,
283 SHSEQR_F77(
CHAR_MACRO(JOB),
CHAR_MACRO(COMPZ), &N, &ILO, &IHI, H, &LDH, WR, WI, Z, &LDZ, WORK, &LWORK, INFO);
286 void Epetra_LAPACK::HSEQR(
const char JOB,
const char COMPZ,
const int N,
const int ILO,
const int IHI,
double * H,
const int LDH,
287 double * WR,
double * WI,
double * Z,
const int LDZ,
double * WORK,
const int LWORK,
289 DHSEQR_F77(
CHAR_MACRO(JOB),
CHAR_MACRO(COMPZ), &N, &ILO, &IHI, H, &LDH, WR, WI, Z, &LDZ, WORK, &LWORK, INFO);
293 float * WORK,
const int LWORK,
int * INFO)
const {
294 SORGQR_F77( &M, &N, &K, A, &LDA, TAU, WORK, &LWORK, INFO);
298 double * WORK,
const int LWORK,
int * INFO)
const {
299 DORGQR_F77( &M, &N, &K, A, &LDA, TAU, WORK, &LWORK, INFO);
303 float * WORK,
const int LWORK,
int * INFO)
const {
304 SORGHR_F77( &N, &ILO, &IHI, A, &LDA, TAU, WORK, &LWORK, INFO);
308 double * WORK,
const int LWORK,
int * INFO)
const {
309 DORGHR_F77( &N, &ILO, &IHI, A, &LDA, TAU, WORK, &LWORK, INFO);
312 void Epetra_LAPACK::ORMHR(
const char SIDE,
const char TRANS,
const int M,
const int N,
const int ILO,
const int IHI,
const float *
A,
const int LDA,
313 const float * TAU,
float *
C,
const int LDC,
float * WORK,
const int LWORK,
int * INFO)
const {
314 SORMHR_F77(
CHAR_MACRO(SIDE),
CHAR_MACRO(TRANS), &M, &N, &ILO, &IHI, A, &LDA, TAU, C, &LDC, WORK, &LWORK, INFO);
317 void Epetra_LAPACK::ORMHR(
const char SIDE,
const char TRANS,
const int M,
const int N,
const int ILO,
const int IHI,
const double *
A,
const int LDA,
318 const double * TAU,
double *
C,
const int LDC,
double * WORK,
const int LWORK,
int * INFO)
const {
319 DORMHR_F77(
CHAR_MACRO(SIDE),
CHAR_MACRO(TRANS), &M, &N, &ILO, &IHI, A, &LDA, TAU, C, &LDC, WORK, &LWORK, INFO);
322 void Epetra_LAPACK::LARFT(
const char DIRECT,
const char STOREV,
const int N,
const int K,
float * V,
const int LDV,
float * TAU,
float * T,
const int LDT)
const {
326 void Epetra_LAPACK::LARFT(
const char DIRECT,
const char STOREV,
const int N,
const int K,
double * V,
const int LDV,
double * TAU,
double * T,
const int LDT)
const {
330 void Epetra_LAPACK::TREVC(
const char SIDE,
const char HOWMNY,
int * SELECT,
const int N,
const float * T,
const int LDT,
float *VL,
const int LDVL,
331 float * VR,
const int LDVR,
const int MM,
int * M,
float * WORK,
int * INFO)
const {
333 if (HOWMNY==
'S') *INFO = -3;
335 else STREVC_F77(
CHAR_MACRO(SIDE),
CHAR_MACRO(HOWMNY), SELECT, &N, T, &LDT, VL, &LDVL, VR, &LDVR, &MM, M, WORK, INFO);
338 void Epetra_LAPACK::TREVC(
const char SIDE,
const char HOWMNY,
int * SELECT,
const int N,
const double * T,
const int LDT,
double *VL,
const int LDVL,
339 double * VR,
const int LDVR,
const int MM,
int * M,
double * WORK,
int * INFO)
const {
341 if (HOWMNY==
'S') *INFO = -3;
343 else DTREVC_F77(
CHAR_MACRO(SIDE),
CHAR_MACRO(HOWMNY), SELECT, &N, T, &LDT, VL, &LDVL, VR, &LDVR, &MM, M, WORK, INFO);
346 void Epetra_LAPACK::TREXC(
const char COMPQ,
const int N,
float * T,
const int LDT,
float * Q,
const int LDQ,
int IFST,
int ILST,
347 float * WORK,
int * INFO)
const {
351 void Epetra_LAPACK::TREXC(
const char COMPQ,
const int N,
double * T,
const int LDT,
double * Q,
const int LDQ,
int IFST,
int ILST,
352 double * WORK,
int * INFO)
const {
364 void Epetra_LAPACK::GGSVD(
const char JOBU,
const char JOBV,
const char JOBQ,
const int M,
const int N,
const int P,
int * K,
int * L,
365 double*
A,
const int LDA,
double*
B,
const int LDB,
366 double* ALPHA,
double* BETA,
double* U,
const int LDU,
double* V,
const int LDV,
double* Q,
const int LDQ,
double* WORK,
367 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
370 int* IWORK,
int* INFO)
const {
371 DGGSVD_F77(
CHAR_MACRO(JOBU),
CHAR_MACRO(JOBV),
CHAR_MACRO(JOBQ), &M, &N, &P, K, L, A, &LDA, B, &LDB,
372 ALPHA, BETA, U, &LDU, V, &LDV, Q, &LDQ, WORK,
373 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
380 void Epetra_LAPACK::GGSVD(
const char JOBU,
const char JOBV,
const char JOBQ,
const int M,
const int N,
const int P,
int * K,
int * L,
381 float*
A,
const int LDA,
float*
B,
const int LDB,
382 float* ALPHA,
float* BETA,
float* U,
const int LDU,
float* V,
const int LDV,
float* Q,
const int LDQ,
float* WORK,
383 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
386 int* IWORK,
int* INFO)
const {
387 SGGSVD_F77(
CHAR_MACRO(JOBU),
CHAR_MACRO(JOBV),
CHAR_MACRO(JOBQ), &M, &N, &P, K, L, A, &LDA, B, &LDB,
388 ALPHA, BETA, U, &LDU, V, &LDV, Q, &LDQ, WORK,
389 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
396 void Epetra_LAPACK::GEEV(
const char JOBVL,
const char JOBVR,
const int N,
double*
A,
const int LDA,
double* WR,
double* WI,
397 double* VL,
const int LDVL,
double* VR,
const int LDVR,
double* WORK,
const int LWORK,
int* INFO)
const {
399 DGEEV_F77(
CHAR_MACRO(JOBVL),
CHAR_MACRO(JOBVR), &N, A, &LDA, WR, WI, VL, &LDVL, VR, &LDVR,
403 void Epetra_LAPACK::GEEV(
const char JOBVL,
const char JOBVR,
const int N,
float*
A,
const int LDA,
float* WR,
float* WI,
404 float* VL,
const int LDVL,
float* VR,
const int LDVR,
float* WORK,
const int LWORK,
int* INFO)
const {
406 SGEEV_F77(
CHAR_MACRO(JOBVL),
CHAR_MACRO(JOBVR), &N, A, &LDA, WR, WI, VL, &LDVL, VR, &LDVR,
410 void Epetra_LAPACK::SPEV(
const char JOBZ,
const char UPLO,
const int N,
double* AP,
double* W,
double* Z,
int LDZ,
double* WORK,
int* INFO)
const {
415 void Epetra_LAPACK::SPEV(
const char JOBZ,
const char UPLO,
const int N,
float* AP,
float* W,
float* Z,
int LDZ,
float* WORK,
int* INFO)
const {
420 void Epetra_LAPACK::SPGV(
const int ITYPE,
const char JOBZ,
const char UPLO,
const int N,
double* AP,
double* BP,
double* W,
double* Z,
const int LDZ,
double* WORK,
int* INFO)
const {
422 DSPGV_F77(&ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, AP, BP, W, Z, &LDZ, WORK, INFO);
425 void Epetra_LAPACK::SPGV(
const int ITYPE,
const char JOBZ,
const char UPLO,
const int N,
float* AP,
float* BP,
float* W,
float* Z,
const int LDZ,
float* WORK,
int* INFO)
const {
427 SSPGV_F77(&ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, AP, BP, W, Z, &LDZ, WORK, INFO);
430 void Epetra_LAPACK::SYEV(
const char JOBZ,
const char UPLO,
const int N,
double*
A,
const int LDA,
double* W,
double* WORK,
const int LWORK,
int* INFO)
const{
436 void Epetra_LAPACK::SYEV(
const char JOBZ,
const char UPLO,
const int N,
float*
A,
const int LDA,
float* W,
float* WORK,
const int LWORK,
int* INFO)
const{
442 void Epetra_LAPACK::SYEVD(
const char JOBZ,
const char UPLO,
const int N,
double*
A,
const int LDA,
double* W,
double* WORK,
443 const int LWORK,
int* IWORK,
const int LIWORK,
int* INFO)
const {
445 DSYEVD_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, A, &LDA, W, WORK, &LWORK, IWORK, &LIWORK, INFO);
448 void Epetra_LAPACK::SYEVD(
const char JOBZ,
const char UPLO,
const int N,
float*
A,
const int LDA,
float* W,
float* WORK,
449 const int LWORK,
int* IWORK,
const int LIWORK,
int* INFO)
const {
451 SSYEVD_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, A, &LDA, W, WORK, &LWORK, IWORK, &LIWORK, INFO);
454 void Epetra_LAPACK::SYEVX(
const char JOBZ,
const char RANGE,
const char UPLO,
const int N,
double*
A,
const int LDA,
455 const double* VL,
const double* VU,
const int* IL,
const int* IU,
456 const double ABSTOL,
int * M,
double* W,
double* Z,
const int LDZ,
double* WORK,
457 const int LWORK,
int* IWORK,
int* IFAIL,
460 DSYEVX_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N, A, &LDA, VL, VU, IL, IU,
461 &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK, IFAIL, INFO);
465 const float* VL,
const float* VU,
const int* IL,
const int* IU,
466 const float ABSTOL,
int * M,
float* W,
float* Z,
const int LDZ,
float* WORK,
467 const int LWORK,
int* IWORK,
int* IFAIL,
470 SSYEVX_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N, A, &LDA, VL, VU, IL, IU,
471 &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK, IFAIL, INFO);
475 const int LDA,
double*
B,
const int LDB,
double* W,
double* WORK,
const int LWORK,
int* INFO)
const{
477 DSYGV_F77(&ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, A, &LDA, B, &LDB, W, WORK, &LWORK, INFO);
481 const int LDA,
float*
B,
const int LDB,
float* W,
float* WORK,
const int LWORK,
int* INFO)
const{
483 SSYGV_F77(&ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(UPLO), &N, A, &LDA, B, &LDB, W, WORK, &LWORK, INFO);
487 double* ,
const int ,
double* ,
const int ,
const double* ,
const double* ,
488 const int* ,
const int* ,
const double ,
int* ,
double* ,
double* ,
489 const int ,
double* ,
const int ,
int* ,
490 int* ,
int* )
const {
492 #ifdef EPETRA_LAPACK3
493 DSYGVX_F77(&
ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N,
A, &LDA,
B, &LDB, VL, VU,
494 IL, IU, &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK,
499 obj.
ReportError(
"SYGVX requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
504 float* ,
const int ,
float* ,
const int ,
const float* ,
const float* ,
505 const int* ,
const int* ,
const float ,
int* ,
float* ,
float* ,
506 const int ,
float* ,
const int ,
int* ,
507 int* ,
int* )
const {
509 #ifdef EPETRA_LAPACK3
510 SSYGVX_F77(&
ITYPE,
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N,
A, &LDA,
B, &LDB, VL, VU,
511 IL, IU, &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK,
516 obj.
ReportError(
"SYGVX requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
521 const double* ,
const double* ,
const int *,
const int *,
522 const double ,
int* ,
double* ,
double* ,
const int ,
int* ,
double* ,
const int ,
int* ,
523 const int ,
int* )
const {
525 #ifdef EPETRA_LAPACK3
526 DSYEVR_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N,
A, &LDA, VL, VU, IL, IU,
527 &ABSTOL, M, W, Z, &LDZ, ISUPPZ, WORK, &LWORK, IWORK,
531 obj.
ReportError(
"SYEVR requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
536 const float* ,
const float* ,
const int *,
const int *,
537 const float ,
int* ,
float* ,
float* ,
const int ,
int* ,
float* ,
const int ,
int* ,
538 const int ,
int* )
const {
540 #ifdef EPETRA_LAPACK3
541 SSYEVR_F77(
CHAR_MACRO(JOBZ),
CHAR_MACRO(RANGE),
CHAR_MACRO(UPLO), &N,
A, &LDA, VL, VU, IL, IU,
542 &ABSTOL, M, W, Z, &LDZ, ISUPPZ, WORK, &LWORK, IWORK,
546 obj.
ReportError(
"SYEVR requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
550 void Epetra_LAPACK::GEEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int N,
double*
A,
const int LDA,
double* WR,
double* WI,
double* VL,
551 const int LDVL,
double* VR,
const int LDVR,
int* ILO,
int* IHI,
double* SCALE,
double* ABNRM,
double* RCONDE,
552 double* RCONDV,
double* WORK,
const int LWORK,
int* IWORK,
int* INFO)
const{
554 DGEEVX_F77(
CHAR_MACRO(BALANC),
CHAR_MACRO(JOBVL),
CHAR_MACRO(JOBVR),
CHAR_MACRO(SENSE), &N, A, &LDA, WR, WI, VL,
555 &LDVL, VR, &LDVR, ILO, IHI, SCALE, ABNRM, RCONDE,
556 RCONDV, WORK, &LWORK, IWORK, INFO);
559 void Epetra_LAPACK::GEEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int N,
float*
A,
const int LDA,
float* WR,
float* WI,
float* VL,
560 const int LDVL,
float* VR,
const int LDVR,
int* ILO,
int* IHI,
float* SCALE,
float* ABNRM,
float* RCONDE,
561 float* RCONDV,
float* WORK,
const int LWORK,
int* IWORK,
int* INFO)
const{
563 SGEEVX_F77(
CHAR_MACRO(BALANC),
CHAR_MACRO(JOBVL),
CHAR_MACRO(JOBVR),
CHAR_MACRO(SENSE), &N, A, &LDA, WR, WI, VL,
564 &LDVL, VR, &LDVR, ILO, IHI, SCALE, ABNRM, RCONDE,
565 RCONDV, WORK, &LWORK, IWORK, INFO);
569 double* ,
const int ,
double* ,
const int ,
double* ,
570 const int ,
int* ,
int* )
const{
572 #ifdef EPETRA_LAPACK3
573 DGESDD_F77(
CHAR_MACRO(JOBZ), &M, &N,
A, &LDA, S, U, &LDU, VT, &LDVT, WORK,
574 &LWORK, IWORK, INFO);
577 obj.
ReportError(
"GESDD requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
582 float* ,
const int ,
float* ,
const int ,
float* ,
583 const int ,
int* ,
int* )
const{
585 #ifdef EPETRA_LAPACK3
586 SGESDD_F77(
CHAR_MACRO(JOBZ), &M, &N,
A, &LDA, S, U, &LDU, VT, &LDVT, WORK,
587 &LWORK, IWORK, INFO);
590 obj.
ReportError(
"GESDD requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
595 const int ,
double* ,
const int ,
double* ,
double* ,
596 double* ,
double* ,
const int ,
double* ,
const int
597 ,
double* ,
const int ,
int* )
const{
599 #ifdef EPETRA_LAPACK3
601 BETA, VL, &LDVL, VR, &LDVR, WORK, &LWORK, INFO);
604 obj.
ReportError(
"GGEV requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
609 const int ,
float* ,
const int ,
float* ,
float* ,
610 float* ,
float* ,
const int ,
float* ,
const int
611 ,
float* ,
const int ,
int* )
const {
613 #ifdef EPETRA_LAPACK3
615 BETA, VL, &LDVL, VR, &LDVR, WORK, &LWORK, INFO);
618 obj.
ReportError(
"GGEV requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1);
623 double*
C,
double*
D,
double* X,
double* WORK,
const int LWORK,
int* INFO)
const{
624 DGGLSE_F77(&M, &N, &P, A, &LDA, B, &LDB, C, D, X, WORK, &LWORK, INFO);
628 float*
C,
float*
D,
float* X,
float* WORK,
const int LWORK,
int* INFO)
const{
629 SGGLSE_F77(&M, &N, &P, A, &LDA, B, &LDB, C, D, X, WORK, &LWORK, INFO);
632 void Epetra_LAPACK::TRTRS(
const char UPLO,
const char TRANS,
const char DIAG,
const int N,
const int NRHS,
const float *
A,
633 const int LDA,
float *
B,
const int LDB,
int *INFO)
const{
637 void Epetra_LAPACK::TRTRS(
const char UPLO,
const char TRANS,
const char DIAG,
const int N,
const int NRHS,
const double *
A,
638 const int LDA,
double *
B,
const int LDB,
int *INFO)
const{
void GGEV(const char JOBVL, const char JOBVR, const int N, double *A, const int LDA, double *B, const int LDB, double *ALPHAR, double *ALPHAI, double *BETA, double *VL, const int LDVL, double *VR, const int LDVR, double *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper to compute for a pair of N-by-N real nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.
void PREFIX DSYGVX_F77(const int *itype, Epetra_fcd, Epetra_fcd, Epetra_fcd, 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 SYEVX(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) const
Epetra_LAPACK wrapper to compute selected eigenvalues and, optionally, eigenvectors of a real symmetr...
void PREFIX SLARFT_F77(Epetra_fcd direct, Epetra_fcd storev, const int *n, const int *k, float *v, const int *ldv, float *tau, float *t, const int *ldt)
void PREFIX SSPGV_F77(const int *itype, Epetra_fcd, Epetra_fcd, const int *n, float *ap, float *bp, float *w, float *z, const int *ldz, float *work, int *info)
void HSEQR(const char JOB, const char COMPZ, const int N, const int ILO, const int IHI, float *H, const int LDH, float *WR, float *WI, float *Z, const int LDZ, float *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper for computing the eigenvalues of a real upper Hessenberg matrix (SHSEQR) ...
void GESV(const int N, const int NRHS, float *A, const int LDA, int *IPIV, float *X, const int LDX, int *INFO) const
Epetra_LAPACK factor and solve for general matrix (SGESV)
void GESVD(const char JOBU, const char JOBVT, const int M, const int N, float *A, const int LDA, float *S, float *U, const int LDU, float *VT, const int LDVT, float *WORK, const int *LWORK, int *INFO) const
Epetra_LAPACK wrapper for computing the singular value decomposition (SGESVD)
void SYGV(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 *INFO) const
Epetra_LAPACK wrapper to compute all the eigenvalues, and optionally, the eigenvectors of a real gene...
void GEQRF(const int M, const int N, float *A, const int LDA, float *TAU, float *WORK, const int lwork, int *INFO) const
Epetra_LAPACK QR factorization for general matrix (SGEQRF)
void PREFIX DGGSVD_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, const int *m, const int *n, const int *p, int *k, int *l, double *a, const int *lda, double *b, const int *ldb, double *alpha, double *beta, double *u, const int *ldu, double *v, const int *ldv, double *q, const int *ldq, double *work, int *iwork, int *info)
void SPGV(const int ITYPE, const char JOBZ, const char UPLO, const int N, double *AP, double *BP, double *W, double *Z, const int LDZ, double *WORK, int *INFO) const
Epetra_LAPACK wrapper to compute all the eigenvalues and, optionally, the eigenvectors of a real gene...
void GESDD(const char JOBZ, const int M, const int N, double *A, const int LDA, double *S, double *U, const int LDU, double *VT, const int LDVT, double *WORK, const int LWORK, int *IWORK, int *INFO) const
Epetra_LAPACK wrapper to compute the singular value decomposition (SVD) of a real M-by-N matrix A...
void POCON(const char UPLO, const int N, const float *A, const int LDA, const float ANORM, float *RCOND, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK condition number estimator for positive definite matrix (SPOCON)
void ORMHR(const char SIDE, const char TRANS, const int M, const int N, const int ILO, const int IHI, const float *A, const int LDA, const float *TAU, float *C, const int LDC, float *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper for applying an orthogonal matrix in-place (SORMHR)
void PREFIX SSYGVX_F77(const int *itype, Epetra_fcd, Epetra_fcd, Epetra_fcd, 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 GETRF(const int M, const int N, float *A, const int LDA, int *IPIV, int *INFO) const
Epetra_LAPACK factorization for general matrix (SGETRF)
void PREFIX DSYEVD_F77(Epetra_fcd, Epetra_fcd, const int *n, double *a, const int *lda, double *w, double *work, const int *lwork, int *iwork, const int *liwork, int *info)
void GESVX(const char FACT, const char TRANS, const int N, const int NRHS, float *A, const int LDA, float *AF, const int LDAF, int *IPIV, const char EQUED, float *R, float *C, float *B, const int LDB, float *X, const int LDX, float *RCOND, float *FERR, float *BERR, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK solve driver for general matrix (SGESVX)
#define CHAR_MACRO(char_var)
void PREFIX DSYEVR_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, 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, int *isuppz, double *work, const int *lwork, int *iwork, const int *liwork, int *info)
void GECON(const char NORM, const int N, const float *A, const int LDA, const float ANORM, float *RCOND, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK condition number estimator for general matrix (SGECON)
void GGLSE(const int M, const int N, const int P, double *A, const int LDA, double *B, const int LDB, double *C, double *D, double *X, double *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper to solve the linear equality-constrained least squares (LSE) problem...
Epetra_Object: The base Epetra class.
void SPEV(const char JOBZ, const char UPLO, const int N, double *AP, double *W, double *Z, int LDZ, double *WORK, int *INFO) const
Epetra_LAPACK wrapper to compute all the eigenvalues and, optionally, eigenvectors of a real symmetri...
void PREFIX DSYEVX_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, 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 SYEVR(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, int *ISUPPZ, double *WORK, const int LWORK, int *IWORK, const int LIWORK, int *INFO) const
Epetra_LAPACK wrapper to compute selected eigenvalues and, optionally, eigenvectors of a real symmetr...
void POEQU(const int N, const float *A, const int LDA, float *S, float *SCOND, float *AMAX, int *INFO) const
Epetra_LAPACK equilibration for positive definite matrix (SPOEQU)
void PREFIX SGESDD_F77(Epetra_fcd, const int *m, const int *n, float *a, const int *lda, float *s, float *u, const int *ldu, float *vt, const int *ldvt, float *work, const int *lwork, int *iwork, int *info)
void SYGVX(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) const
Epetra_LAPACK wrapper to compute selected eigenvalues, and optionally, eigenvectors of a real general...
void LARFT(const char DIRECT, const char STOREV, const int N, const int K, double *V, const int LDV, double *TAU, double *T, const int LDT) const
Epetra_LAPACK for forming the triangular factor of a product of elementary Householder reflectors (SL...
void PREFIX DLARFT_F77(Epetra_fcd direct, Epetra_fcd storev, const int *n, const int *k, double *v, const int *ldv, double *tau, double *t, const int *ldt)
void ORGHR(const int N, const int ILO, const int IHI, float *A, const int LDA, float *TAU, float *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper for generating a real orthogonal matrix Q defined by elementary reflectors...
void GETRS(const char TRANS, const int N, const int NRHS, const float *A, const int LDA, const int *IPIV, float *X, const int LDX, int *INFO) const
Epetra_LAPACK solve (after factorization) for general matrix (SGETRS)
void TREVC(const char SIDE, const char HOWMNY, int *SELECT, const int N, const float *T, const int LDT, float *VL, const int LDVL, float *VR, const int LDVR, const int MM, int *M, float *WORK, int *INFO) const
Epetra_LAPACK wrapper for computing eigenvectors of a quasi-triangular/triagnular matrix (STREVC) ...
void GETRI(const int N, float *A, const int LDA, int *IPIV, float *WORK, const int *LWORK, int *INFO) const
Epetra_LAPACK inversion for general matrix (SGETRI)
void TRTRS(const char UPLO, const char TRANS, const char DIAG, const int N, const int NRHS, const float *A, const int LDA, float *B, const int LDB, int *INFO) const
Epetra_LAPACK wrapper for TRTRS routine.
void PREFIX SGGSVD_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, const int *m, const int *n, const int *p, int *k, int *l, float *a, const int *lda, float *b, const int *ldb, float *alpha, float *beta, float *u, const int *ldu, float *v, const int *ldv, float *q, const int *ldq, float *work, int *iwork, int *info)
void GEEQU(const int M, const int N, const float *A, const int LDA, float *R, float *C, float *ROWCND, float *COLCND, float *AMAX, int *INFO) const
Epetra_LAPACK equilibration for general matrix (SGEEQU)
void PREFIX DSPGV_F77(const int *itype, Epetra_fcd, Epetra_fcd, const int *n, double *ap, double *bp, double *w, double *z, const int *ldz, double *work, int *info)
void GEHRD(const int N, const int ILO, const int IHI, float *A, const int LDA, float *TAU, float *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper for reduction to Hessenberg form (SGEHRD)
void POSV(const char UPLO, const int N, const int NRHS, float *A, const int LDA, float *X, const int LDX, int *INFO) const
Epetra_LAPACK factor and solve for positive definite matrix (SPOSV)
void GELS(const char TRANS, const int M, const int N, const int NRHS, double *A, const int LDA, double *B, const int LDB, double *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK simple driver to solve least-squares systems.
void SYEVD(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) const
Epetra_LAPACK wrapper to compute all eigenvalues and, optionally, eigenvectors of a real symmetric ma...
void POTRF(const char UPLO, const int N, float *A, const int LDA, int *INFO) const
Epetra_LAPACK factorization for positive definite matrix (SPOTRF)
void POSVX(const char FACT, const char UPLO, const int N, const int NRHS, float *A, const int LDA, float *AF, const int LDAF, const char EQUED, float *S, float *B, const int LDB, float *X, const int LDX, float *RCOND, float *FERR, float *BERR, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK solve driver for positive definite matrix (SPOSVX)
void PORFS(const char UPLO, const int N, const int NRHS, const float *A, const int LDA, const float *AF, const int LDAF, const float *B, const int LDB, float *X, const int LDX, float *FERR, float *BERR, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK solve driver for positive definite matrix (SPOSVX)
void GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int *K, int *L, double *A, const int LDA, double *B, const int LDB, double *ALPHA, double *BETA, double *U, const int LDU, double *V, const int LDV, double *Q, const int LDQ, double *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK wrapper to compute the generalized singular value decomposition (GSVD) of an M-by-N rea...
void POTRS(const char UPLO, const int N, const int NRHS, const float *A, const int LDA, float *X, const int LDX, int *INFO) const
Epetra_LAPACK solve (after factorization) for positive definite matrix (SPOTRS)
void PREFIX SSYEVR_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, 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, int *isuppz, float *work, const int *lwork, int *iwork, const int *liwork, int *info)
void PREFIX SSYEVD_F77(Epetra_fcd, Epetra_fcd, const int *n, float *a, const int *lda, float *w, float *work, const int *lwork, int *iwork, const int *liwork, int *info)
void GEEV(const char JOBVL, const char JOBVR, const int N, double *A, const int LDA, double *WR, double *WI, double *VL, const int LDVL, double *VR, const int LDVR, double *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper to compute for an N-by-N real nonsymmetric matrix A, the eigenvalues and...
virtual int ReportError(const std::string Message, int ErrorCode) const
Error reporting method.
void GEEVX(const char BALANC, const char JOBVL, const char JOBVR, const char SENSE, const int N, double *A, const int LDA, double *WR, double *WI, double *VL, const int LDVL, double *VR, const int LDVR, int *ILO, int *IHI, double *SCALE, double *ABNRM, double *RCONDE, double *RCONDV, double *WORK, const int LWORK, int *IWORK, int *INFO) const
Epetra_LAPACK wrapper to compute for an N-by-N real nonsymmetric matrix A, the eigenvalues and...
void GERFS(const char TRANS, const int N, const int NRHS, const float *A, const int LDA, const float *AF, const int LDAF, const int *IPIV, const float *B, const int LDB, float *X, const int LDX, float *FERR, float *BERR, float *WORK, int *IWORK, int *INFO) const
Epetra_LAPACK Refine solution (GERFS)
void SYEV(const char JOBZ, const char UPLO, const int N, double *A, const int LDA, double *W, double *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper to compute all eigenvalues and, optionally, eigenvectors of a real symmetric ma...
void POTRI(const char UPLO, const int N, float *A, const int LDA, int *INFO) const
Epetra_LAPACK inversion for positive definite matrix (SPOTRI)
void PREFIX SSYEVX_F77(Epetra_fcd, Epetra_fcd, Epetra_fcd, 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 ORGQR(const int M, const int N, const int K, float *A, const int LDA, float *TAU, float *WORK, const int LWORK, int *INFO) const
Epetra_LAPACK wrapper for generating a m x n real matrix Q with orthonormal columns, defined as the product of k elementary reflectors. (SORGQR)
void LAMCH(const char CMACH, float &T) const
Epetra_LAPACK wrapper for DLAMCH routine. On out, T holds machine double precision floating point cha...
void PREFIX DGESDD_F77(Epetra_fcd, const int *m, const int *n, double *a, const int *lda, double *s, double *u, const int *ldu, double *vt, const int *ldvt, double *work, const int *lwork, int *iwork, int *info)
void TREXC(const char COMPQ, const int N, float *T, const int LDT, float *Q, const int LDQ, int IFST, int ILST, float *WORK, int *INFO) const
Epetra_LAPACK wrapper for reordering the real-Schur/Schur factorization of a matrix (STREXC) ...