46 #ifdef HAVE_TEUCHOSCORE_QUADMATH 48 #endif // HAVE_TEUCHOSCORE_QUADMATH 58 #if defined (INTEL_CXML) 59 #define CHAR_MACRO(char_var) &char_var, one 61 #define CHAR_MACRO(char_var) &char_var 66 #if defined (INTEL_CXML) 76 const int* ispec,
const char* name,
unsigned int name_length,
77 const char* opts,
unsigned int opts_length,
78 const int* N1,
const int* N2,
const int* N3,
const int* N4 )
80 #if defined (INTEL_CXML) 81 return ILAENV_F77(ispec, name, name_length, opts, opts_length, N1, N2, N3, N4 );
83 return ILAENV_F77(ispec, name, opts, N1, N2, N3, N4, name_length, opts_length );
94 typedef int (*gees_nullfptr_t)(
double*,
double*);
105 { SPTTRF_F77(&n,d,e,info); }
109 { SPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
113 { SPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
116 void LAPACK<int, float>::POTRS(
const char UPLO,
const int n,
const int nrhs,
const float* A,
const int lda,
float* B,
const int ldb,
int* info)
const 117 { SPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
121 { SPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
124 void LAPACK<int, float>::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 125 { SPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
128 void LAPACK<int, float>::POSV(
const char UPLO,
const int n,
const int nrhs,
float* A,
const int lda,
float* B,
const int ldb,
int* info)
const 129 { SPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
133 { SPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
136 void LAPACK<int, float>::PORFS(
const char UPLO,
const int n,
const int nrhs,
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 137 { SPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
140 void LAPACK<int, float>::POSVX(
const char FACT,
const char UPLO,
const int n,
const int nrhs,
float* A,
const int lda,
float* AF,
const int ldaf,
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 141 { SPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
144 void LAPACK<int,float>::GELS(
const char TRANS,
const int m,
const int n,
const int nrhs,
float* A,
const int lda,
float* B,
const int ldb,
float* WORK,
const int lwork,
int* info)
const 145 { SGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
147 void LAPACK<int,float>::GELSS (
const int m,
const int n,
const int nrhs,
float* A,
const int lda,
float* B,
const int ldb,
float* S,
const float rcond,
int* rank,
float* WORK,
const int lwork,
float* rwork,
int* info)
const 150 SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
153 void LAPACK<int,float>::GELSS(
const int m,
const int n,
const int nrhs,
float* A,
const int lda,
float* B,
const int ldb,
float* S,
const float rcond,
int* rank,
float* WORK,
const int lwork,
int* info)
const 154 { SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
157 void LAPACK<int,float>::GGLSE(
const int m,
const int n,
const int p,
float* A,
const int lda,
float* B,
const int ldb,
float* C,
float* D,
float* X,
float* WORK,
const int lwork,
int* info)
const 158 { SGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
161 void LAPACK<int,float>::GEQRF(
const int m,
const int n,
float* A,
const int lda,
float* TAU,
float* WORK,
const int lwork,
int* info)
const 162 { SGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
164 void LAPACK<int,float>::GEQR2 (
const int m,
const int n,
float A[],
const int lda,
float TAU[],
float WORK[],
int*
const info)
const 166 SGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
170 { SGETRF_F77(&m, &n, A, &lda, IPIV, info); }
173 void LAPACK<int,float>::GETRS(
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)
const 174 { SGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
177 void LAPACK<int,float>::LASCL(
const char TYPE,
const int kl,
const int ku,
const float cfrom,
const float cto,
const int m,
const int n,
float* A,
const int lda,
int* info)
const 178 { SLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
194 SGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
204 const int INCX)
const 206 SLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
209 void LAPACK<int,float>::GBTRF(
const int m,
const int n,
const int kl,
const int ku,
float* A,
const int lda,
int* IPIV,
int* info)
const 210 { SGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
213 void LAPACK<int,float>::GBTRS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const float* A,
const int lda,
const int* IPIV,
float* B,
const int ldb,
int* info)
const 214 { SGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
218 { SGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
221 void LAPACK<int,float>::GTTRS(
const char TRANS,
const int n,
const int nrhs,
const float* dl,
const float* d,
const float* du,
const float* du2,
const int* IPIV,
float* B,
const int ldb,
int* info)
const 222 { SGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
225 void LAPACK<int,float>::GETRI(
const int n,
float* A,
const int lda,
const int* IPIV,
float* WORK,
const int lwork,
int* info)
const 226 { SGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
241 SLATRS_F77(CHAR_MACRO(UPLO),
255 void LAPACK<int,float>::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 256 { SGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
259 void LAPACK<int,float>::GBCON(
const char NORM,
const int n,
const int kl,
const int ku,
const float* A,
const int lda,
int* IPIV,
const float anorm,
float* rcond,
float* WORK,
int* IWORK,
int* info)
const 260 { SGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
263 float LAPACK<int,float>::LANGB(
const char NORM,
const int n,
const int kl,
const int ku,
const float* A,
const int lda,
float* WORK)
const 264 {
return( SLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
267 void LAPACK<int,float>::GESV(
const int n,
const int nrhs,
float* A,
const int lda,
int* IPIV,
float* B,
const int ldb,
int* info)
const 268 { SGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
271 void LAPACK<int,float>::GEEQU(
const int m,
const int n,
const float* A,
const int lda,
float* R,
float* C,
float* rowcond,
float* colcond,
float* amax,
int* info)
const 272 { SGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
275 void LAPACK<int,float>::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 276 { SGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
279 void LAPACK<int,float>::GBEQU(
const int m,
const int n,
const int kl,
const int ku,
const float* A,
const int lda,
float* R,
float* C,
float* rowcond,
float* colcond,
float* amax,
int* info)
const 280 { SGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
283 void LAPACK<int,float>::GBRFS(
const char TRANS,
const int n,
const int kl,
const int ku,
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 284 { SGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
287 void LAPACK<int,float>::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,
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 288 { 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, FERR, BERR, WORK, IWORK, info); }
291 void LAPACK<int,float>::SYTRD(
const char UPLO,
const int n,
float* A,
const int lda,
float* D,
float* E,
float* TAU,
float* WORK,
const int lwork,
int* info)
const 292 { SSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
295 void LAPACK<int,float>::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 296 { SGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
299 void LAPACK<int,float>::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 300 { STRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
304 { STRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
307 void LAPACK<int,float>::SPEV(
const char JOBZ,
const char UPLO,
const int n,
float* AP,
float* W,
float* Z,
const int ldz,
float* WORK,
int* info)
const 308 { SSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
311 void LAPACK<int,float>::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 312 { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
315 void LAPACK<int,float>::SYGV(
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* info)
const 316 { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
319 void LAPACK<int,float>::HEEV(
const char JOBZ,
const char UPLO,
const int n,
float* A,
const int lda,
float* W,
float* WORK,
const int lwork,
float* RWORK,
int* info)
const 320 { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
323 void LAPACK<int,float>::HEGV(
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,
float *RWORK,
int* info)
const 324 { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
327 void LAPACK<int,float>::STEQR(
const char COMPZ,
const int n,
float* D,
float* E,
float* Z,
const int ldz,
float* WORK,
int* info)
const 328 { SSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
331 void LAPACK<int, float>::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 332 { SHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info); }
335 void LAPACK<int, float>::GEES(
const char JOBVS,
const char SORT,
int (*ptr2func)(
float*,
float*),
const int n,
float* A,
const int lda,
int* sdim,
float* WR,
float* WI,
float* VS,
const int ldvs,
float* WORK,
const int lwork,
int* BWORK,
int* info)
const 336 { SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info); }
339 void LAPACK<int, float>::GEES(
const char JOBVS,
const int n,
float* A,
const int lda,
int* sdim,
float* WR,
float* WI,
float* VS,
const int ldvs,
float* WORK,
const int lwork,
float* RWORK,
int* BWORK,
int* info)
const 341 int (*nullfptr)(
float*,
float*) = NULL;
342 const char sort =
'N';
343 SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
347 void LAPACK<int, float>::GEEV(
const char JOBVL,
const char JOBVR,
const int n,
float* A,
const int lda,
float* WR,
float* WI,
float* VL,
const int ldvl,
float* VR,
const int ldvr,
float* WORK,
const int lwork,
int* info)
const 348 { SGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
350 void LAPACK<int, float>::GEEV(
const char JOBVL,
const char JOBVR,
const int n,
float* A,
const int lda,
float* WR,
float* WI,
float* VL,
const int ldvl,
float* VR,
const int ldvr,
float* WORK,
const int lwork,
float* ,
int* info)
const 352 GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
356 void LAPACK<int, float>::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* V,
const int ldv,
float* WORK,
const int lwork,
float* RWORK,
int* info)
const 357 { SGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info); }
360 void LAPACK<int,float>::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,
const int ldvl,
float* VR,
const int ldvr,
int* ilo,
int* ihi,
float* SCALE,
float* abnrm,
float* RCONDE,
float* RCONDV,
float* WORK,
const int lwork,
int* IWORK,
int* info)
const 361 { SGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, info); }
364 void LAPACK<int,float>::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n,
float* A,
const int lda,
float* B,
const int ldb,
float* ALPHAR,
float* ALPHAI,
float* BETA,
float* VL,
const int ldvl,
float* VR,
const int ldvr,
int* ilo,
int* ihi,
float* lscale,
float* rscale,
float* abnrm,
float* bbnrm,
float* RCONDE,
float* RCONDV,
float* WORK,
const int lwork,
int* IWORK,
int* BWORK,
int* info)
const 365 { SGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, BWORK, info); }
367 void LAPACK<int,float>::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n,
float* A,
const int lda,
float* B,
const int ldb,
float* ALPHAR,
float* ALPHAI,
float* BETA,
float* VL,
const int ldvl,
float* VR,
const int ldvr,
int* ilo,
int* ihi,
float* lscale,
float* rscale,
float* abnrm,
float* bbnrm,
float* RCONDE,
float* RCONDV,
float* WORK,
const int lwork,
float* ,
int* IWORK,
int* BWORK,
int* info)
const 369 GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, ALPHAR, ALPHAI, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, IWORK, BWORK, info);
372 void LAPACK<int, float>::GGEV(
const char JOBVL,
const char JOBVR,
const int n,
float *A,
const int lda,
float *B,
const int ldb,
float *ALPHAR,
float *ALPHAI,
float *BETA,
float *VL,
const int ldvl,
float *VR,
const int ldvr,
float *WORK,
const int lwork,
int *info)
const 373 { SGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
376 void LAPACK<int, float>::TRSEN(
const char JOB,
const char COMPQ,
const int *SELECT,
const int n,
float *T,
const int ldt,
float *Q,
const int ldq,
float *WR,
float *WI,
int *M,
float *S,
float *SEP,
float *WORK,
const int lwork,
int *IWORK,
const int liwork,
int *info )
const 377 { STRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
380 void LAPACK<int, float>::TGSEN(
const int ijob,
const int wantq,
const int wantz,
const int *SELECT,
const int n,
float *A,
const int lda,
float *B,
const int ldb,
float *ALPHAR,
float *ALPHAI,
float *BETA,
float *Q,
const int ldq,
float *Z,
const int ldz,
int *M,
float *PL,
float *PR,
float *DIF,
float *WORK,
const int lwork,
int *IWORK,
const int liwork,
int *info )
const 381 { STGSEN_F77(&ijob, &wantq, &wantz, SELECT, &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, Q, &ldq, Z, &ldz, M, PL, PR, DIF, WORK, &lwork, IWORK, &liwork, info); }
384 void LAPACK<int, float>::GGES(
const char JOBVL,
const char JOBVR,
const char SORT,
int (*ptr2func)(
float *,
float *,
float *),
const int n,
float *A,
const int lda,
float *B,
const int ldb,
int *sdim,
float *ALPHAR,
float *ALPHAI,
float *BETA,
float *VL,
const int ldvl,
float *VR,
const int ldvr,
float *WORK,
const int lwork,
int *BWORK,
int *info )
const 385 { SGGES_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, B, &ldb, sdim, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, BWORK, info); }
388 void LAPACK<int, float>::ORMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
float* A,
const int lda,
const float* TAU,
float* C,
const int ldc,
float* WORK,
const int lwork,
int* info)
const 389 { SORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
392 void LAPACK<int, float>::ORM2R(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
const float A[],
const int lda,
const float TAU[],
float C[],
const int ldc,
float WORK[],
int*
const info)
const 393 { SORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info); }
396 void LAPACK<int, float>::UNMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
float* A,
const int lda,
const float* TAU,
float* C,
const int ldc,
float* WORK,
const int lwork,
int* info)
const 401 ORMQR (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
404 void LAPACK<int, float>::UNM2R (
const char SIDE,
const char TRANS,
const int M,
const int N,
const int K,
const float A[],
const int LDA,
const float TAU[],
float C[],
const int LDC,
float WORK[],
int*
const INFO)
const 409 ORM2R (SIDE,
TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
413 void LAPACK<int, float>::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)
const 414 { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
417 void LAPACK<int, float>::UNGQR(
const int m,
const int n,
const int k,
float* A,
const int lda,
const float* TAU,
float* WORK,
const int lwork,
int* info)
const 418 { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
421 void LAPACK<int, float>::ORGHR(
const int n,
const int ilo,
const int ihi,
float* A,
const int lda,
const float* TAU,
float* WORK,
const int lwork,
int* info)
const 422 { SORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
425 void LAPACK<int, float>::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 426 { SORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
429 void LAPACK<int, float>::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 430 { STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info); }
433 void LAPACK<int, float>::TREVC(
const char SIDE,
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,
float* RWORK,
int* info)
const 435 std::vector<int> select(1);
436 const char whch =
'A';
437 STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
441 void LAPACK<int, float>::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 442 { STREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, WORK, info); }
445 void LAPACK<int, float>::TGEVC(
const char SIDE,
const char HOWMNY,
const int *SELECT,
const int n,
float *S,
const int lds,
float *P,
const int ldp,
float *VL,
const int ldvl,
float *VR,
const int ldvr,
const int mm,
int *M,
float *WORK,
int *info)
const 446 { STGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
450 { SLARTG_F77(&f, &g, c, s, r); }
454 { SLARFG_F77(&n, alpha, x, &incx, tau); }
458 { SGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo, &ihi, scale, info); }
461 void LAPACK<int, float>::GEBAK(
const char JOBZ,
const char SIDE,
const int n,
const int ilo,
const int ihi,
const float* scale,
const int m,
float* V,
const int ldv,
int* info)
const 462 { SGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info); }
464 #ifdef HAVE_TEUCHOS_LAPACKLARND 466 {
return(SLARND_F77(&idist, seed)); }
470 { SLARNV_F77(&idist, seed, &n, v); }
474 {
return(SLAMCH_F77(CHAR_MACRO(CMACH))); }
477 int LAPACK<int, float>::ILAENV(
const int ispec,
const std::string& NAME,
const std::string& OPTS,
const int N1,
const int N2,
const int N3,
const int N4 )
const 479 unsigned int opts_length = OPTS.length();
481 std::string temp_NAME =
"s" + NAME;
482 if (temp_NAME.substr(1,2) ==
"he") {
483 temp_NAME.replace(1,2,
"sy");
485 unsigned int name_length = temp_NAME.length();
486 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
492 #if defined(HAVE_TEUCHOS_BLASFLOAT) 493 return SLAPY2_F77(&x, &y);
496 const float xabs = ST::magnitude(x);
497 const float yabs = ST::magnitude(y);
498 const float w = TEUCHOS_MAX(xabs, yabs);
499 const float z = TEUCHOS_MIN(xabs, yabs);
503 const float z_over_w = z/w;
504 return w*ST::squareroot( 1.0+(z_over_w*z_over_w));
515 { DPTTRF_F77(&n,d,e,info); }
518 void LAPACK<int, double>::PTTRS(
const int n,
const int nrhs,
const double* d,
const double* e,
double* B,
const int ldb,
int* info)
const 519 { DPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
523 { DPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
526 void LAPACK<int, double>::POTRS(
const char UPLO,
const int n,
const int nrhs,
const double* A,
const int lda,
double* B,
const int ldb,
int* info)
const 527 { DPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
531 { DPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
534 void LAPACK<int, double>::POCON(
const char UPLO,
const int n,
const double* A,
const int lda,
const double anorm,
double* rcond,
double* WORK,
int* IWORK,
int* info)
const 535 { DPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
538 void LAPACK<int, double>::POSV(
const char UPLO,
const int n,
const int nrhs,
double* A,
const int lda,
double* B,
const int ldb,
int* info)
const 539 { DPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
542 void LAPACK<int, double>::POEQU(
const int n,
const double* A,
const int lda,
double* S,
double* scond,
double* amax,
int* info)
const 543 { DPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
546 void LAPACK<int, double>::PORFS(
const char UPLO,
const int n,
const int nrhs,
double* A,
const int lda,
const double* AF,
const int ldaf,
const double* B,
const int ldb,
double* X,
const int ldx,
double* FERR,
double* BERR,
double* WORK,
int* IWORK,
int* info)
const 547 { DPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
550 void LAPACK<int, double>::POSVX(
const char FACT,
const char UPLO,
const int n,
const int nrhs,
double* A,
const int lda,
double* AF,
const int ldaf,
char EQUED,
double* S,
double* B,
const int ldb,
double* X,
const int ldx,
double* rcond,
double* FERR,
double* BERR,
double* WORK,
int* IWORK,
int* info)
const 551 { DPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
554 void LAPACK<int,double>::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 555 { DGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
558 void LAPACK<int,double>::GELSS(
const int m,
const int n,
const int nrhs,
double* A,
const int lda,
double* B,
const int ldb,
double* S,
const double rcond,
int* rank,
double* WORK,
const int lwork,
double* rwork,
int* info)
const 561 DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
565 void LAPACK<int,double>::GELSS(
const int m,
const int n,
const int nrhs,
double* A,
const int lda,
double* B,
const int ldb,
double* S,
const double rcond,
int* rank,
double* WORK,
const int lwork,
int* info)
const 566 { DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
569 void LAPACK<int,double>::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 570 { DGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
573 void LAPACK<int,double>::GEQRF(
const int m,
const int n,
double* A,
const int lda,
double* TAU,
double* WORK,
const int lwork,
int* info)
const 574 { DGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
576 void LAPACK<int,double>::GEQR2 (
const int m,
const int n,
double A[],
const int lda,
double TAU[],
double WORK[],
int*
const info)
const 578 DGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
582 { DGETRF_F77(&m, &n, A, &lda, IPIV, info); }
585 void LAPACK<int,double>::GETRS(
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)
const 586 { DGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
589 void LAPACK<int,double>::LASCL(
const char TYPE,
const int kl,
const int ku,
const double cfrom,
const double cto,
const int m,
const int n,
double* A,
const int lda,
int* info)
const 590 { DLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
592 void LAPACK<int,double>::GEQP3(
const int m,
const int n,
double* A,
const int lda,
int *jpvt,
double* TAU,
double* WORK,
const int lwork,
double* RWORK,
int* info )
const 595 DGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
605 const int INCX)
const 607 DLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
610 void LAPACK<int,double>::GBTRF(
const int m,
const int n,
const int kl,
const int ku,
double* A,
const int lda,
int* IPIV,
int* info)
const 611 { DGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
614 void LAPACK<int,double>::GBTRS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const double* A,
const int lda,
const int* IPIV,
double* B,
const int ldb,
int* info)
const 615 { DGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
619 { DGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
622 void LAPACK<int,double>::GTTRS(
const char TRANS,
const int n,
const int nrhs,
const double* dl,
const double* d,
const double* du,
const double* du2,
const int* IPIV,
double* B,
const int ldb,
int* info)
const 623 { DGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
626 void LAPACK<int,double>::GETRI(
const int n,
double* A,
const int lda,
const int* IPIV,
double* WORK,
const int lwork,
int* info)
const 627 { DGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
642 DLATRS_F77(CHAR_MACRO(UPLO),
655 void LAPACK<int,double>::GECON(
const char NORM,
const int n,
const double* A,
const int lda,
const double anorm,
double* rcond,
double* WORK,
int* IWORK,
int* info)
const 656 { DGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
659 void LAPACK<int,double>::GBCON(
const char NORM,
const int n,
const int kl,
const int ku,
const double* A,
const int lda,
int* IPIV,
const double anorm,
double* rcond,
double* WORK,
int* IWORK,
int* info)
const 660 { DGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
663 double LAPACK<int,double>::LANGB(
const char NORM,
const int n,
const int kl,
const int ku,
const double* A,
const int lda,
double* WORK)
const 664 {
return( DLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
667 void LAPACK<int,double>::GESV(
const int n,
const int nrhs,
double* A,
const int lda,
int* IPIV,
double* B,
const int ldb,
int* info)
const 668 { DGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
671 void LAPACK<int,double>::GEEQU(
const int m,
const int n,
const double* A,
const int lda,
double* R,
double* C,
double* rowcond,
double* colcond,
double* amax,
int* info)
const 672 { DGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
675 void LAPACK<int,double>::GERFS(
const char TRANS,
const int n,
const int nrhs,
const double* A,
const int lda,
const double* AF,
const int ldaf,
const int* IPIV,
const double* B,
const int ldb,
double* X,
const int ldx,
double* FERR,
double* BERR,
double* WORK,
int* IWORK,
int* info)
const 676 { DGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
679 void LAPACK<int,double>::GBEQU(
const int m,
const int n,
const int kl,
const int ku,
const double* A,
const int lda,
double* R,
double* C,
double* rowcond,
double* colcond,
double* amax,
int* info)
const 680 { DGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
683 void LAPACK<int,double>::GBRFS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const double* A,
const int lda,
const double* AF,
const int ldaf,
const int* IPIV,
const double* B,
const int ldb,
double* X,
const int ldx,
double* FERR,
double* BERR,
double* WORK,
int* IWORK,
int* info)
const 684 { DGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
687 void LAPACK<int,double>::GESVX(
const char FACT,
const char TRANS,
const int n,
const int nrhs,
double* A,
const int lda,
double* AF,
const int ldaf,
int* IPIV,
char EQUED,
double* R,
double* C,
double* B,
const int ldb,
double* X,
const int ldx,
double* rcond,
double* FERR,
double* BERR,
double* WORK,
int* IWORK,
int* info)
const 688 { 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, FERR, BERR, WORK, IWORK, info); }
691 void LAPACK<int,double>::SYTRD(
const char UPLO,
const int n,
double* A,
const int lda,
double* D,
double* E,
double* TAU,
double* WORK,
const int lwork,
int* info)
const 692 { DSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
695 void LAPACK<int, double>::GEHRD(
const int n,
const int ilo,
const int ihi,
double* A,
const int lda,
double* TAU,
double* WORK,
const int lwork,
int* info)
const 696 { DGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
699 void LAPACK<int,double>::TRTRS(
const char UPLO,
const char TRANS,
const char DIAG,
const int n,
const int nrhs,
const double* A,
const int lda,
double* B,
const int ldb,
int* info)
const 700 { DTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
703 void LAPACK<int,double>::TRTRI(
const char UPLO,
const char DIAG,
const int n,
const double* A,
const int lda,
int* info)
const 704 { DTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
707 void LAPACK<int,double>::SPEV(
const char JOBZ,
const char UPLO,
const int n,
double* AP,
double* W,
double* Z,
const int ldz,
double* WORK,
int* info)
const 708 { DSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
711 void LAPACK<int,double>::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 713 DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
717 void LAPACK<int,double>::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 719 DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
723 void LAPACK<int,double>::HEEV(
const char JOBZ,
const char UPLO,
const int n,
double* A,
const int lda,
double* W,
double* WORK,
const int lwork,
double* RWORK,
int* info)
const 725 DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
729 void LAPACK<int,double>::HEGV(
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,
double *RWORK,
int* info)
const 731 DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
735 void LAPACK<int,double>::STEQR(
const char COMPZ,
const int n,
double* D,
double* E,
double* Z,
const int ldz,
double* WORK,
int* info)
const 737 DSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
741 void LAPACK<int, double>::HSEQR(
const char JOB,
const char COMPZ,
const int n,
const int ilo,
const int ihi,
double* H,
const int ldh,
double* WR,
double* WI,
double* Z,
const int ldz,
double* WORK,
const int lwork,
int* info)
const 743 DHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info);
747 void LAPACK<int, double>::GEES(
const char JOBVS,
const char SORT,
int (*ptr2func)(
double*,
double*),
const int n,
double* A,
const int lda,
int* sdim,
double* WR,
double* WI,
double* VS,
const int ldvs,
double* WORK,
const int lwork,
int* BWORK,
int* info)
const 749 DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
753 void LAPACK<int, double>::GEES(
const char JOBVS,
const int n,
double* A,
const int lda,
int* sdim,
double* WR,
double* WI,
double* VS,
const int ldvs,
double* WORK,
const int lwork,
double* RWORK,
int* BWORK,
int* info)
const 756 gees_nullfptr_t nullfptr = 0;
757 const char sort =
'N';
758 DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
762 void LAPACK<int, double>::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 764 DGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
767 void LAPACK<int, double>::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,
double* ,
int* info)
const 769 GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
773 void LAPACK<int, double>::GESVD(
const char JOBU,
const char JOBVT,
const int m,
const int n,
double* A,
const int lda,
double* S,
double* U,
const int ldu,
double* V,
const int ldv,
double* WORK,
const int lwork,
double* RWORK,
int* info)
const {
774 DGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info);
778 void LAPACK<int,double>::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 780 DGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, info);
784 void LAPACK<int, double>::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
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,
int* ilo,
int* ihi,
double* lscale,
double* rscale,
double* abnrm,
double* bbnrm,
double* RCONDE,
double* RCONDV,
double* WORK,
const int lwork,
int* IWORK,
int* BWORK,
int* info)
const 786 DGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, IWORK, BWORK, info);
789 void LAPACK<int, double>::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
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,
int* ilo,
int* ihi,
double* lscale,
double* rscale,
double* abnrm,
double* bbnrm,
double* RCONDE,
double* RCONDV,
double* WORK,
const int lwork,
double* ,
int* IWORK,
int* BWORK,
int* info)
const 791 GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, ALPHAR, ALPHAI, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, IWORK, BWORK, info);
794 void LAPACK<int, double>::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 796 DGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
799 void LAPACK<int, double>::TRSEN(
const char JOB,
const char COMPQ,
const int *SELECT,
const int n,
double *T,
const int ldt,
double *Q,
const int ldq,
double *WR,
double *WI,
int *M,
double *S,
double *SEP,
double *WORK,
const int lwork,
int *IWORK,
const int liwork,
int *info )
const 800 { DTRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
803 void LAPACK<int, double>::TGSEN(
const int ijob,
const int wantq,
const int wantz,
const int *SELECT,
const int n,
double *A,
const int lda,
double *B,
const int ldb,
double *ALPHAR,
double *ALPHAI,
double *BETA,
double *Q,
const int ldq,
double *Z,
const int ldz,
int *M,
double *PL,
double *PR,
double *DIF,
double *WORK,
const int lwork,
int *IWORK,
const int liwork,
int *info )
const 804 { DTGSEN_F77(&ijob, &wantq, &wantz, SELECT, &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, Q, &ldq, Z, &ldz, M, PL, PR, DIF, WORK, &lwork, IWORK, &liwork, info); }
807 void LAPACK<int, double>::GGES(
const char JOBVL,
const char JOBVR,
const char SORT,
int (*ptr2func)(
double *,
double *,
double *),
const int n,
double *A,
const int lda,
double *B,
const int ldb,
int *sdim,
double *ALPHAR,
double *ALPHAI,
double *BETA,
double *VL,
const int ldvl,
double *VR,
const int ldvr,
double *WORK,
const int lwork,
int *BWORK,
int *info )
const 808 { DGGES_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, B, &ldb, sdim, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, BWORK, info); }
811 void LAPACK<int, double>::ORMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
double* A,
const int lda,
const double* TAU,
double* C,
const int ldc,
double* WORK,
const int lwork,
int* info)
const 813 DORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
816 void LAPACK<int, double>::ORM2R(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
const double A[],
const int lda,
const double TAU[],
double C[],
const int ldc,
double WORK[],
int*
const info)
const 818 DORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info);
821 void LAPACK<int, double>::UNMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
double* A,
const int lda,
const double* TAU,
double* C,
const int ldc,
double* WORK,
const int lwork,
int* info)
const 826 ORMQR (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
829 void LAPACK<int, double>::UNM2R (
const char SIDE,
const char TRANS,
const int M,
const int N,
const int K,
const double A[],
const int LDA,
const double TAU[],
double C[],
const int LDC,
double WORK[],
int*
const INFO)
const 834 ORM2R (SIDE,
TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
837 void LAPACK<int, double>::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)
const 839 DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
843 void LAPACK<int, double>::UNGQR(
const int m,
const int n,
const int k,
double* A,
const int lda,
const double* TAU,
double* WORK,
const int lwork,
int* info)
const 845 DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
849 void LAPACK<int, double>::ORGHR(
const int n,
const int ilo,
const int ihi,
double* A,
const int lda,
const double* TAU,
double* WORK,
const int lwork,
int* info)
const 851 DORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
855 void LAPACK<int, double>::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,
const double* TAU,
double* C,
const int ldc,
double* WORK,
const int lwork,
int* info)
const 857 DORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
861 void LAPACK<int, double>::TREVC(
const char SIDE,
const char HOWMNY,
int* select,
const int n,
const double* T,
const int ldt,
double* VL,
const int ldvl,
double* VR,
const int ldvr,
const int mm,
int* m,
double* WORK,
int* info)
const 863 DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
867 void LAPACK<int, double>::TREVC(
const char SIDE,
const int n,
const double* T,
const int ldt,
double* VL,
const int ldvl,
double* VR,
const int ldvr,
const int mm,
int* m,
double* WORK,
double* RWORK,
int* info)
const 869 std::vector<int> select(1);
870 const char whch =
'A';
871 DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
875 void LAPACK<int, double>::TREXC(
const char COMPQ,
const int n,
double* T,
const int ldt,
double* Q,
const int ldq,
int ifst,
int ilst,
double* WORK,
int* info)
const 877 DTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, WORK, info);
881 void LAPACK<int, double>::TGEVC(
const char SIDE,
const char HOWMNY,
const int *SELECT,
const int n,
double *S,
const int lds,
double *P,
const int ldp,
double *VL,
const int ldvl,
double *VR,
const int ldvr,
const int mm,
int *M,
double *WORK,
int *info)
const 882 { DTGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
887 DLARTG_F77(&f, &g, c, s, r);
893 DLARFG_F77(&n, alpha, x, &incx, tau);
897 void LAPACK<int, double>::GEBAL(
const char JOBZ,
const int n,
double* A,
const int lda,
int ilo,
int ihi,
double* scale,
int* info)
const 899 DGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo, &ihi, scale, info);
903 void LAPACK<int, double>::GEBAK(
const char JOBZ,
const char SIDE,
const int n,
const int ilo,
const int ihi,
const double* scale,
const int m,
double* V,
const int ldv,
int* info)
const 905 DGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
909 #ifdef HAVE_TEUCHOS_LAPACKLARND 912 return(DLARND_F77(&idist, seed));
918 DLARNV_F77(&idist, seed, &n, v);
924 return(DLAMCH_F77(CHAR_MACRO(CMACH)));
928 int LAPACK<int, double>::ILAENV(
const int ispec,
const std::string& NAME,
const std::string& OPTS,
const int N1,
const int N2,
const int N3,
const int N4 )
const 930 unsigned int opts_length = OPTS.length();
932 std::string temp_NAME =
"d" + NAME;
933 if (temp_NAME.substr(1,2) ==
"he") {
934 temp_NAME.replace(1,2,
"sy");
936 unsigned int name_length = temp_NAME.length();
937 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
943 return DLAPY2_F77(&x, &y);
948 #ifdef HAVE_TEUCHOS_COMPLEX 953 void LAPACK<int, std::complex<float> >::PTTRF(
const int n, std::complex<float>* d, std::complex<float>* e,
int* info)
const 955 CPTTRF_F77(&n,d,e,info);
959 void LAPACK<int, std::complex<float> >::PTTRS(
const int n,
const int nrhs,
const std::complex<float>* d,
const std::complex<float>* e, std::complex<float>* B,
const int ldb,
int* info)
const 961 CPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
965 void LAPACK<int, std::complex<float> >::POTRF(
const char UPLO,
const int n, std::complex<float>* A,
const int lda,
int* info)
const 967 CPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
971 void LAPACK<int, std::complex<float> >::POTRS(
const char UPLO,
const int n,
const int nrhs,
const std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb,
int* info)
const 973 CPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
977 void LAPACK<int, std::complex<float> >::POTRI(
const char UPLO,
const int n, std::complex<float>* A,
const int lda,
int* info)
const 979 CPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
983 void LAPACK<int, std::complex<float> >::POCON(
const char UPLO,
const int n,
const std::complex<float>* A,
const int lda,
const float anorm,
float* rcond, std::complex<float>* WORK,
float* RWORK,
int* info)
const 985 CPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
989 void LAPACK<int, std::complex<float> >::POSV(
const char UPLO,
const int n,
const int nrhs, std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb,
int* info)
const 991 CPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
995 void LAPACK<int, std::complex<float> >::POEQU(
const int n,
const std::complex<float>* A,
const int lda,
float* S,
float* scond,
float* amax,
int* info)
const 997 CPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1001 void LAPACK<int, std::complex<float> >::PORFS(
const char UPLO,
const int n,
const int nrhs, std::complex<float>* A,
const int lda,
const std::complex<float>* AF,
const int ldaf,
const std::complex<float>* B,
const int ldb, std::complex<float>* X,
const int ldx,
float* FERR,
float* BERR, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1003 CPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1007 void LAPACK<int, std::complex<float> >::POSVX(
const char FACT,
const char UPLO,
const int n,
const int nrhs, std::complex<float>* A,
const int lda, std::complex<float>* AF,
const int ldaf,
char EQUED,
float* S, std::complex<float>* B,
const int ldb, std::complex<float>* X,
const int ldx,
float* rcond,
float* FERR,
float* BERR, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1009 CPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1013 void LAPACK<int,std::complex<float> >::GELS(
const char TRANS,
const int m,
const int n,
const int nrhs, std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb, std::complex<float>* WORK,
const int lwork,
int* info)
const 1015 CGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1018 void LAPACK<int, std::complex<float> >::GELSS(
const int m,
const int n,
const int nrhs, std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb,
float* S,
const float rcond,
int* rank, std::complex<float>* WORK,
const int lwork,
float* rwork,
int* info)
const 1020 CGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1023 void LAPACK<int,std::complex<float> >::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)
const 1025 CGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1028 void LAPACK<int,std::complex<float> >::GEQR2 (
const int m,
const int n, std::complex<float> A[],
const int lda, std::complex<float> TAU[], std::complex<float> WORK[],
int*
const info)
const 1030 CGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1033 void LAPACK<int,std::complex<float> >::UNGQR(
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)
const 1035 CUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1038 void LAPACK<int,std::complex<float> >::UNMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k, std::complex<float>* A,
const int lda,
const std::complex<float>* TAU, std::complex<float>* C,
const int ldc, std::complex<float>* WORK,
const int lwork,
int* info)
const 1040 CUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1043 void LAPACK<int,std::complex<float> >::UNM2R (
const char SIDE,
const char TRANS,
const int M,
const int N,
const int K,
const std::complex<float> A[],
const int LDA,
const std::complex<float> TAU[], std::complex<float> C[],
const int LDC, std::complex<float> WORK[],
int*
const INFO)
const 1045 CUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1048 void LAPACK<int,std::complex<float> >::GETRF(
const int m,
const int n, std::complex<float>* A,
const int lda,
int* IPIV,
int* info)
const 1050 CGETRF_F77(&m, &n, A, &lda, IPIV, info);
1053 void LAPACK<int,std::complex<float> >::GETRS(
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)
const 1055 CGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1058 void LAPACK<int,std::complex<float> >::LASCL(
const char TYPE,
const int kl,
const int ku,
const float cfrom,
const float cto,
const int m,
const int n, std::complex<float>* A,
const int lda,
int* info)
const 1059 { CLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1061 void LAPACK<int,std::complex<float> >::GEQP3(
const int m,
const int n, std::complex<float>* A,
const int lda,
int *jpvt, std::complex<float>* TAU, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* info )
const 1063 CGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1066 void LAPACK<int, std::complex<float> >::
1068 std::complex<float> A[],
1073 const int INCX)
const 1075 CLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1078 void LAPACK<int,std::complex<float> >::GBTRF(
const int m,
const int n,
const int kl,
const int ku, std::complex<float>* A,
const int lda,
int* IPIV,
int* info)
const 1080 CGBTRF_F77(&m, &kl, &ku, &n, A, &lda, IPIV, info);
1084 void LAPACK<int,std::complex<float> >::GBTRS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const std::complex<float>* A,
const int lda,
const int* IPIV, std::complex<float>* B ,
const int ldb,
int* info)
const 1086 CGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1090 void LAPACK<int,std::complex<float> >::GTTRF(
const int n, std::complex<float>* dl, std::complex<float>* d, std::complex<float>* du, std::complex<float>* du2,
int* IPIV,
int* info)
const 1092 CGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1096 void LAPACK<int,std::complex<float> >::GTTRS(
const char TRANS,
const int n,
const int nrhs,
const std::complex<float>* dl,
const std::complex<float>* d,
const std::complex<float>* du,
const std::complex<float>* du2,
const int* IPIV, std::complex<float>* B,
const int ldb,
int* info)
const 1098 CGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1102 void LAPACK<int,std::complex<float> >::GETRI(
const int n, std::complex<float>* A,
const int lda,
const int* IPIV, std::complex<float>* WORK,
const int lwork,
int* info)
const 1104 CGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1109 LAPACK<int, std::complex<float> >::LATRS (
const char UPLO,
1114 std::complex<float>* A,
1116 std::complex<float>* X,
1121 CLATRS_F77(CHAR_MACRO(UPLO),
1135 void LAPACK<int,std::complex<float> >::GECON(
const char NORM,
const int n,
const std::complex<float>* A,
const int lda,
const float anorm,
float* rcond, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1137 CGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1141 void LAPACK<int,std::complex<float> >::GBCON(
const char NORM,
const int n,
const int kl,
const int ku,
const std::complex<float>* A,
const int lda,
int* IPIV,
const float anorm,
float* rcond, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1143 CGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1147 float LAPACK<int,std::complex<float> >::LANGB(
const char NORM,
const int n,
const int kl,
const int ku,
const std::complex<float>* A,
const int lda,
float* WORK)
const 1149 return( CLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1153 void LAPACK<int,std::complex<float> >::GESV(
const int n,
const int nrhs, std::complex<float>* A,
const int lda,
int* IPIV, std::complex<float>* B,
const int ldb,
int* info)
const 1155 CGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1159 void LAPACK<int,std::complex<float> >::GEEQU(
const int m,
const int n,
const std::complex<float>* A,
const int lda,
float* R,
float* C,
float* rowcond,
float* colcond,
float* amax,
int* info)
const 1161 CGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1165 void LAPACK<int,std::complex<float> >::GERFS(
const char TRANS,
const int n,
const int nrhs,
const std::complex<float>* A,
const int lda,
const std::complex<float>* AF,
const int ldaf,
const int* IPIV,
const std::complex<float>* B,
const int ldb, std::complex<float>* X,
const int ldx,
float* FERR,
float* BERR, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1167 CGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1171 void LAPACK<int,std::complex<float> >::GBEQU(
const int m,
const int n,
const int kl,
const int ku,
const std::complex<float>* A,
const int lda,
float* R,
float* C,
float* rowcond,
float* colcond,
float* amax,
int* info)
const 1173 CGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1177 void LAPACK<int,std::complex<float> >::GBRFS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const std::complex<float>* A,
const int lda,
const std::complex<float>* AF,
const int ldaf,
const int* IPIV,
const std::complex<float>* B,
const int ldb, std::complex<float>* X,
const int ldx,
float* FERR,
float* BERR, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1179 CGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1183 void LAPACK<int,std::complex<float> >::GESVX(
const char FACT,
const char TRANS,
const int n,
const int nrhs, std::complex<float>* A,
const int lda, std::complex<float>* AF,
const int ldaf,
int* IPIV,
char EQUED,
float* R,
float* C, std::complex<float>* B,
const int ldb, std::complex<float>* X,
const int ldx,
float* rcond,
float* FERR,
float* BERR, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1185 CGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1189 void LAPACK<int,std::complex<float> >::GEHRD(
const int n,
const int ilo,
const int ihi, std::complex<float>* A,
const int lda, std::complex<float>* TAU, std::complex<float>* WORK,
const int lwork,
int* info)
const 1191 CGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1195 void LAPACK<int,std::complex<float> >::TRTRS(
const char UPLO,
const char TRANS,
const char DIAG,
const int n,
const int nrhs,
const std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb,
int* info)
const 1197 CTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1201 void LAPACK<int,std::complex<float> >::TRTRI(
const char UPLO,
const char DIAG,
const int n,
const std::complex<float>* A,
const int lda,
int* info)
const 1203 CTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1207 void LAPACK<int,std::complex<float> >::STEQR(
const char COMPZ,
const int n,
float* D,
float* E, std::complex<float>* Z,
const int ldz,
float* WORK,
int* info)
const 1209 CSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1213 void LAPACK<int,std::complex<float> >::HEEV(
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,
int* info)
const 1215 CHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1219 void LAPACK<int,std::complex<float> >::HEGV(
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,
int* info)
const 1221 CHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1225 void LAPACK<int, std::complex<float> >::HSEQR(
const char JOB,
const char COMPZ,
const int n,
const int ilo,
const int ihi, std::complex<float>* H,
const int ldh, std::complex<float>* W, std::complex<float>* Z,
const int ldz, std::complex<float>* WORK,
const int lwork,
int* info)
const 1227 CHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1231 void LAPACK<int, std::complex<float> >::GEES(
const char JOBVS,
const char SORT,
int (*ptr2func)(std::complex<float>*),
const int n, std::complex<float>* A,
const int lda,
int* sdim, std::complex<float>* W, std::complex<float>* VS,
const int ldvs, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* BWORK,
int* info)
const 1233 CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1237 void LAPACK<int, std::complex<float> >::GEES(
const char JOBVS,
const int n, std::complex<float>* A,
const int lda,
int* sdim,
float* WR,
float* WI, std::complex<float>* VS,
const int ldvs, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* BWORK,
int* info)
const 1239 int (*nullfptr)(std::complex<float>*) = NULL;
1240 std::vector< std::complex<float> > W(n);
1241 const char sort =
'N';
1242 CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1243 for (
int i=0; i<n; i++) {
1244 WR[i] = W[i].real();
1245 WI[i] = W[i].imag();
1250 void LAPACK<int, std::complex<float> >::GEEV(
const char JOBVL,
const char JOBVR,
const int n, std::complex<float>* A,
const int lda, std::complex<float>* W, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* info)
const 1252 CGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1255 void LAPACK<int, std::complex<float> >::GEEV(
const char JOBVL,
const char JOBVR,
const int n, std::complex<float>* A,
const int lda,
float* WR,
float* WI, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* info)
const 1257 std::vector<std::complex<float> > w (n);
1258 std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1259 GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1263 for (
int k = 0; k < n; ++k) {
1264 WR[k] = w[k].real ();
1265 WI[k] = w[k].imag ();
1270 void LAPACK<int, std::complex<float> >::GESVD(
const char JOBU,
const char JOBVT,
const int m,
const int n, std::complex<float> * A,
const int lda,
float* S, std::complex<float> * U,
const int ldu, std::complex<float> * V,
const int ldv, std::complex<float> * WORK,
const int lwork,
float* RWORK,
int* info)
const {
1271 CGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1275 void LAPACK<int, std::complex<float> >::GEEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<float>* A,
const int lda, std::complex<float>* W, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr,
int* ilo,
int* ihi,
float* SCALE,
float* abnrm,
float* RCONDE,
float* RCONDV, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* info)
const 1277 CGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, info);
1281 void LAPACK<int, std::complex<float> >::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb, std::complex<float>* ALPHA, std::complex<float>* BETA, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr,
int* ilo,
int* ihi,
float* lscale,
float* rscale,
float* abnrm,
float* bbnrm,
float* RCONDE,
float* RCONDV, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* IWORK,
int* BWORK,
int* info)
const 1283 CGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHA, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, IWORK, BWORK, info);
1286 void LAPACK<int, std::complex<float> >::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<float>* A,
const int lda, std::complex<float>* B,
const int ldb,
float* ALPHAR,
float* ALPHAI, std::complex<float>* BETA, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr,
int* ilo,
int* ihi,
float* lscale,
float* rscale,
float* abnrm,
float* bbnrm,
float* RCONDE,
float* RCONDV, std::complex<float>* WORK,
const int lwork,
float* RWORK,
int* IWORK,
int* BWORK,
int* info)
const 1288 std::vector<std::complex<float> > w (n);
1289 std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1290 GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, w_rawPtr, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, RWORK, IWORK, BWORK, info);
1294 for (
int k = 0; k < n; ++k) {
1295 ALPHAR[k] = w[k].real ();
1296 ALPHAI[k] = w[k].imag ();
1302 void LAPACK<int, std::complex<float> >::TREVC(
const char SIDE,
const char HOWMNY,
int* select,
const int n,
const std::complex<float>* T,
const int ldt, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr,
const int mm,
int* m, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1304 CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1308 void LAPACK<int, std::complex<float> >::TREVC(
const char SIDE,
const int n,
const std::complex<float>* T,
const int ldt, std::complex<float>* VL,
const int ldvl, std::complex<float>* VR,
const int ldvr,
const int mm,
int* m, std::complex<float>* WORK,
float* RWORK,
int* info)
const 1310 std::vector<int> select(1);
1311 const char whch =
'A';
1312 CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1316 void LAPACK<int, std::complex<float> >::TREXC(
const char COMPQ,
const int n, std::complex<float>* T,
const int ldt, std::complex<float>* Q,
const int ldq,
int ifst,
int ilst, std::complex<float>* WORK,
int* info)
const 1318 CTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, info);
1322 void LAPACK<int, std::complex<float> >::LARTG(
const std::complex<float> f,
const std::complex<float> g,
float* c, std::complex<float>* s, std::complex<float>* r )
const 1324 CLARTG_F77(&f, &g, c, s, r);
1328 void LAPACK<int, std::complex<float> >::LARFG(
const int n, std::complex<float>* alpha, std::complex<float>* x,
const int incx, std::complex<float>* tau )
const 1330 CLARFG_F77(&n, alpha, x, &incx, tau);
1334 void LAPACK<int, std::complex<float> >::GEBAL(
const char JOBZ,
const int n, std::complex<float>* A,
const int lda,
int ilo,
int ihi,
float* scale,
int* info)
const 1336 CGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo, &ihi, scale, info);
1340 void LAPACK<int, std::complex<float> >::GEBAK(
const char JOBZ,
const char SIDE,
const int n,
const int ilo,
const int ihi,
const float* scale,
const int m, std::complex<float>* V,
const int ldv,
int* info)
const 1342 CGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1346 #ifdef HAVE_TEUCHOS_LAPACKLARND 1347 std::complex<float> LAPACK<int, std::complex<float> >::LARND(
const int idist,
int* seed )
const 1349 return(CLARND_F77(&idist, seed));
1353 void LAPACK<int, std::complex<float> >::LARNV(
const int idist,
int* seed,
const int n, std::complex<float>* v )
const 1355 CLARNV_F77(&idist, seed, &n, v);
1359 int LAPACK<int, std::complex<float> >::ILAENV(
const int ispec,
const std::string& NAME,
const std::string& OPTS,
const int N1,
const int N2,
const int N3,
const int N4 )
const 1361 unsigned int opts_length = OPTS.length();
1362 std::string temp_NAME =
"c" + NAME;
1363 unsigned int name_length = temp_NAME.length();
1364 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1372 void LAPACK<int, std::complex<double> >::PTTRF(
const int n, std::complex<double>* d, std::complex<double>* e,
int* info)
const 1374 ZPTTRF_F77(&n,d,e,info);
1378 void LAPACK<int, std::complex<double> >::PTTRS(
const int n,
const int nrhs,
const std::complex<double>* d,
const std::complex<double>* e, std::complex<double>* B,
const int ldb,
int* info)
const 1380 ZPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
1384 void LAPACK<int, std::complex<double> >::POTRF(
const char UPLO,
const int n, std::complex<double>* A,
const int lda,
int* info)
const 1386 ZPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1390 void LAPACK<int, std::complex<double> >::POTRS(
const char UPLO,
const int n,
const int nrhs,
const std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb,
int* info)
const 1392 ZPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1396 void LAPACK<int, std::complex<double> >::POTRI(
const char UPLO,
const int n, std::complex<double>* A,
const int lda,
int* info)
const 1398 ZPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1402 void LAPACK<int, std::complex<double> >::POCON(
const char UPLO,
const int n,
const std::complex<double>* A,
const int lda,
const double anorm,
double* rcond, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1404 ZPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1408 void LAPACK<int, std::complex<double> >::POSV(
const char UPLO,
const int n,
const int nrhs, std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb,
int* info)
const 1410 ZPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1414 void LAPACK<int, std::complex<double> >::POEQU(
const int n,
const std::complex<double>* A,
const int lda,
double* S,
double* scond,
double* amax,
int* info)
const 1416 ZPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1420 void LAPACK<int, std::complex<double> >::PORFS(
const char UPLO,
const int n,
const int nrhs, std::complex<double>* A,
const int lda,
const std::complex<double>* AF,
const int ldaf,
const std::complex<double>* B,
const int ldb, std::complex<double>* X,
const int ldx,
double* FERR,
double* BERR, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1422 ZPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1426 void LAPACK<int, std::complex<double> >::POSVX(
const char FACT,
const char UPLO,
const int n,
const int nrhs, std::complex<double>* A,
const int lda, std::complex<double>* AF,
const int ldaf,
char EQUED,
double* S, std::complex<double>* B,
const int ldb, std::complex<double>* X,
const int ldx,
double* rcond,
double* FERR,
double* BERR, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1428 ZPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1432 void LAPACK<int,std::complex<double> >::GELS(
const char TRANS,
const int m,
const int n,
const int nrhs, std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb, std::complex<double>* WORK,
const int lwork,
int* info)
const 1434 ZGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1438 void LAPACK<int, std::complex<double> >::GELSS(
const int m,
const int n,
const int nrhs, std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb,
double* S,
const double rcond,
int* rank, std::complex<double>* WORK,
const int lwork,
double* rwork,
int* info)
const 1440 ZGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1444 void LAPACK<int,std::complex<double> >::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)
const 1446 ZGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1449 void LAPACK<int,std::complex<double> >::GEQR2 (
const int m,
const int n, std::complex<double> A[],
const int lda, std::complex<double> TAU[], std::complex<double> WORK[],
int*
const info)
const 1451 ZGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1454 void LAPACK<int,std::complex<double> >::UNGQR(
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)
const 1456 ZUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1460 void LAPACK<int,std::complex<double> >::UNMQR(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k, std::complex<double>* A,
const int lda,
const std::complex<double>* TAU, std::complex<double>* C,
const int ldc, std::complex<double>* WORK,
const int lwork,
int* info)
const 1462 ZUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1465 void LAPACK<int,std::complex<double> >::UNM2R (
const char SIDE,
const char TRANS,
const int M,
const int N,
const int K,
const std::complex<double> A[],
const int LDA,
const std::complex<double> TAU[], std::complex<double> C[],
const int LDC, std::complex<double> WORK[],
int*
const INFO)
const 1467 ZUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1470 void LAPACK<int,std::complex<double> >::GETRF(
const int m,
const int n, std::complex<double>* A,
const int lda,
int* IPIV,
int* info)
const 1472 ZGETRF_F77(&m, &n, A, &lda, IPIV, info);
1476 void LAPACK<int,std::complex<double> >::GETRS(
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)
const 1478 ZGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1482 void LAPACK<int,std::complex<double> >::LASCL(
const char TYPE,
const int kl,
const int ku,
const double cfrom,
const double cto,
const int m,
const int n, std::complex<double>* A,
const int lda,
int* info)
const 1483 { ZLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1485 void LAPACK<int,std::complex<double> >::GEQP3(
const int m,
const int n, std::complex<double>* A,
const int lda,
int *jpvt, std::complex<double>* TAU, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* info )
const 1487 ZGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1490 void LAPACK<int, std::complex<double> >::
1492 std::complex<double> A[],
1497 const int INCX)
const 1499 ZLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1502 void LAPACK<int,std::complex<double> >::GBTRF(
const int m,
const int n,
const int kl,
const int ku, std::complex<double>* A,
const int lda,
int* IPIV,
int* info)
const 1504 ZGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info);
1508 void LAPACK<int,std::complex<double> >::GBTRS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const std::complex<double>* A,
const int lda,
const int* IPIV, std::complex<double>* B,
const int ldb,
int* info)
const 1510 ZGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1514 void LAPACK<int,std::complex<double> >::GTTRF(
const int n, std::complex<double>* dl, std::complex<double>* d, std::complex<double>* du, std::complex<double>* du2,
int* IPIV,
int* info)
const 1516 ZGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1520 void LAPACK<int,std::complex<double> >::GTTRS(
const char TRANS,
const int n,
const int nrhs,
const std::complex<double>* dl,
const std::complex<double>* d,
const std::complex<double>* du,
const std::complex<double>* du2,
const int* IPIV, std::complex<double>* B,
const int ldb,
int* info)
const 1522 ZGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1526 void LAPACK<int,std::complex<double> >::GETRI(
const int n, std::complex<double>* A,
const int lda,
const int* IPIV, std::complex<double>* WORK,
const int lwork,
int* info)
const 1528 ZGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1532 LAPACK<int, std::complex<double> >::LATRS (
const char UPLO,
1537 std::complex<double>* A,
1539 std::complex<double>* X,
1544 ZLATRS_F77(CHAR_MACRO(UPLO),
1557 void LAPACK<int,std::complex<double> >::GECON(
const char NORM,
const int n,
const std::complex<double>* A,
const int lda,
const double anorm,
double* rcond, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1559 ZGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1563 void LAPACK<int,std::complex<double> >::GBCON(
const char NORM,
const int n,
const int kl,
const int ku,
const std::complex<double>* A,
const int lda,
int* IPIV,
const double anorm,
double* rcond, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1565 ZGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1569 double LAPACK<int,std::complex<double> >::LANGB(
const char NORM,
const int n,
const int kl,
const int ku,
const std::complex<double>* A,
const int lda,
double* WORK)
const 1571 return( ZLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1575 void LAPACK<int,std::complex<double> >::GESV(
const int n,
const int nrhs, std::complex<double>* A,
const int lda,
int* IPIV, std::complex<double>* B,
const int ldb,
int* info)
const 1577 ZGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1581 void LAPACK<int,std::complex<double> >::GEEQU(
const int m,
const int n,
const std::complex<double>* A,
const int lda,
double* R,
double* C,
double* rowcond,
double* colcond,
double* amax,
int* info)
const 1583 ZGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1587 void LAPACK<int,std::complex<double> >::GERFS(
const char TRANS,
const int n,
const int nrhs,
const std::complex<double>* A,
const int lda,
const std::complex<double>* AF,
const int ldaf,
const int* IPIV,
const std::complex<double>* B,
const int ldb, std::complex<double>* X,
const int ldx,
double* FERR,
double* BERR, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1589 ZGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1593 void LAPACK<int,std::complex<double> >::GBEQU(
const int m,
const int n,
const int kl,
const int ku,
const std::complex<double>* A,
const int lda,
double* R,
double* C,
double* rowcond,
double* colcond,
double* amax,
int* info)
const 1595 ZGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1599 void LAPACK<int,std::complex<double> >::GBRFS(
const char TRANS,
const int n,
const int kl,
const int ku,
const int nrhs,
const std::complex<double>* A,
const int lda,
const std::complex<double>* AF,
const int ldaf,
const int* IPIV,
const std::complex<double>* B,
const int ldb, std::complex<double>* X,
const int ldx,
double* FERR,
double* BERR, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1601 ZGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1605 void LAPACK<int,std::complex<double> >::GESVX(
const char FACT,
const char TRANS,
const int n,
const int nrhs, std::complex<double>* A,
const int lda, std::complex<double>* AF,
const int ldaf,
int* IPIV,
char EQUED,
double* R,
double* C, std::complex<double>* B,
const int ldb, std::complex<double>* X,
const int ldx,
double* rcond,
double* FERR,
double* BERR, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1607 ZGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1611 void LAPACK<int,std::complex<double> >::GEHRD(
const int n,
const int ilo,
const int ihi, std::complex<double>* A,
const int lda, std::complex<double>* TAU, std::complex<double>* WORK,
const int lwork,
int* info)
const 1613 ZGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1617 void LAPACK<int,std::complex<double> >::TRTRS(
const char UPLO,
const char TRANS,
const char DIAG,
const int n,
const int nrhs,
const std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb,
int* info)
const 1619 ZTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1623 void LAPACK<int,std::complex<double> >::TRTRI(
const char UPLO,
const char DIAG,
const int n,
const std::complex<double>* A,
const int lda,
int* info)
const 1625 ZTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1629 void LAPACK<int,std::complex<double> >::STEQR(
const char COMPZ,
const int n,
double* D,
double* E, std::complex<double>* Z,
const int ldz,
double* WORK,
int* info)
const 1631 ZSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1635 void LAPACK<int,std::complex<double> >::HEEV(
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,
int* info)
const 1637 ZHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1641 void LAPACK<int,std::complex<double> >::HEGV(
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,
int* info)
const 1643 ZHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1647 void LAPACK<int, std::complex<double> >::HSEQR(
const char JOB,
const char COMPZ,
const int n,
const int ilo,
const int ihi, std::complex<double>* H,
const int ldh, std::complex<double>* W, std::complex<double>* Z,
const int ldz, std::complex<double>* WORK,
const int lwork,
int* info)
const 1649 ZHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1653 void LAPACK<int, std::complex<double> >::GEES(
const char JOBVS,
const char SORT,
int (*ptr2func)(std::complex<double>*),
const int n, std::complex<double>* A,
const int lda,
int* sdim, std::complex<double>* W, std::complex<double>* VS,
const int ldvs, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* BWORK,
int* info)
const 1655 ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1659 void LAPACK<int, std::complex<double> >::GEES(
const char JOBVS,
const int n, std::complex<double>* A,
const int lda,
int* sdim,
double* WR,
double* WI, std::complex<double>* VS,
const int ldvs, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* BWORK,
int* info)
const 1661 int (*nullfptr)(std::complex<double>*) = NULL;
1662 std::vector< std::complex<double> > W(n);
1663 const char sort =
'N';
1664 ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1665 for (
int i=0; i<n; i++) {
1666 WR[i] = W[i].real();
1667 WI[i] = W[i].imag();
1672 void LAPACK<int, std::complex<double> >::GEEV(
const char JOBVL,
const char JOBVR,
const int n, std::complex<double>* A,
const int lda, std::complex<double>* W, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* info)
const 1674 ZGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1678 void LAPACK<int, std::complex<double> >::GEEV(
const char JOBVL,
const char JOBVR,
const int n, std::complex<double>* A,
const int lda,
double* WR,
double* WI, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* info)
const 1680 std::vector<std::complex<double> > w (n);
1681 std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1682 GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1686 for (
int k = 0; k < n; ++k) {
1687 WR[k] = w[k].real ();
1688 WI[k] = w[k].imag ();
1694 void LAPACK<int, std::complex<double> >::GESVD(
const char JOBU,
const char JOBVT,
const int m,
const int n, std::complex<double> * A,
const int lda,
double* S, std::complex<double> * U,
const int ldu, std::complex<double> * V,
const int ldv, std::complex<double> * WORK,
const int lwork,
double* RWORK,
int* info)
const {
1695 ZGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1698 void LAPACK<int, std::complex<double> >::GEEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<double>* A,
const int lda, std::complex<double>* W, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr,
int* ilo,
int* ihi,
double* SCALE,
double* abnrm,
double* RCONDE,
double* RCONDV, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* info)
const 1700 ZGEEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, ilo, ihi, SCALE, abnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, info);
1703 void LAPACK<int, std::complex<double> >::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb, std::complex<double>* ALPHA, std::complex<double>* BETA, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr,
int* ilo,
int* ihi,
double* lscale,
double* rscale,
double* abnrm,
double* bbnrm,
double* RCONDE,
double* RCONDV, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* IWORK,
int* BWORK,
int* info)
const 1705 ZGGEVX_F77(CHAR_MACRO(BALANC), CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), CHAR_MACRO(SENSE), &n, A, &lda, B, &ldb, ALPHA, BETA, VL, &ldvl, VR, &ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, &lwork, RWORK, IWORK, BWORK, info);
1708 void LAPACK<int, std::complex<double> >::GGEVX(
const char BALANC,
const char JOBVL,
const char JOBVR,
const char SENSE,
const int n, std::complex<double>* A,
const int lda, std::complex<double>* B,
const int ldb,
double* ALPHAR,
double* ALPHAI, std::complex<double>* BETA, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr,
int* ilo,
int* ihi,
double* lscale,
double* rscale,
double* abnrm,
double* bbnrm,
double* RCONDE,
double* RCONDV, std::complex<double>* WORK,
const int lwork,
double* RWORK,
int* IWORK,
int* BWORK,
int* info)
const 1710 std::vector<std::complex<double> > w (n);
1711 std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1712 GGEVX(BALANC, JOBVL, JOBVR, SENSE, n, A, lda, B, ldb, w_rawPtr, BETA, VL, ldvl, VR, ldvr, ilo, ihi, lscale, rscale, abnrm, bbnrm, RCONDE, RCONDV, WORK, lwork, RWORK, IWORK, BWORK, info);
1716 for (
int k = 0; k < n; ++k) {
1717 ALPHAR[k] = w[k].real ();
1718 ALPHAI[k] = w[k].imag ();
1723 void LAPACK<int, std::complex<double> >::TREVC(
const char SIDE,
const char HOWMNY,
int* select,
const int n,
const std::complex<double>* T,
const int ldt, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr,
const int mm,
int* m, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1725 ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1729 void LAPACK<int, std::complex<double> >::TREVC(
const char SIDE,
const int n,
const std::complex<double>* T,
const int ldt, std::complex<double>* VL,
const int ldvl, std::complex<double>* VR,
const int ldvr,
const int mm,
int* m, std::complex<double>* WORK,
double* RWORK,
int* info)
const 1731 std::vector<int> select(1);
1732 const char whch =
'A';
1733 ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1737 void LAPACK<int, std::complex<double> >::TREXC(
const char COMPQ,
const int n, std::complex<double>* T,
const int ldt, std::complex<double>* Q,
const int ldq,
int ifst,
int ilst, std::complex<double>* WORK,
int* info)
const 1739 ZTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, info);
1743 void LAPACK<int, std::complex<double> >::LARTG(
const std::complex<double> f,
const std::complex<double> g,
double* c, std::complex<double>* s, std::complex<double>* r )
const 1745 ZLARTG_F77(&f, &g, c, s, r);
1749 void LAPACK<int, std::complex<double> >::LARFG(
const int n, std::complex<double>* alpha, std::complex<double>* x,
const int incx, std::complex<double>* tau )
const 1751 ZLARFG_F77(&n, alpha, x, &incx, tau);
1755 void LAPACK<int, std::complex<double> >::GEBAL(
const char JOBZ,
const int n, std::complex<double>* A,
const int lda,
int ilo,
int ihi,
double* scale,
int* info)
const 1757 ZGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo, &ihi, scale, info);
1761 void LAPACK<int, std::complex<double> >::GEBAK(
const char JOBZ,
const char SIDE,
const int n,
const int ilo,
const int ihi,
const double* scale,
const int m, std::complex<double>* V,
const int ldv,
int* info)
const 1763 ZGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1767 #ifdef HAVE_TEUCHOS_LAPACKLARND 1768 std::complex<double> LAPACK<int, std::complex<double> >::LARND(
const int idist,
int* seed )
const 1770 return(ZLARND_F77(&idist, seed));
1774 void LAPACK<int, std::complex<double> >::LARNV(
const int idist,
int* seed,
const int n, std::complex<double>* v )
const 1776 ZLARNV_F77(&idist, seed, &n, v);
1780 int LAPACK<int, std::complex<double> >::ILAENV(
const int ispec,
const std::string& NAME,
const std::string& OPTS,
const int N1,
const int N2,
const int N3,
const int N4 )
const 1782 unsigned int opts_length = OPTS.length();
1783 std::string temp_NAME =
"z" + NAME;
1784 unsigned int name_length = temp_NAME.length();
1785 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1790 #endif // HAVE_TEUCHOS_COMPLEX 1793 #ifdef HAVE_TEUCHOSCORE_QUADMATH 1798 GEQRF(
const int m,
const int n, __float128* A,
const int lda, __float128* TAU, __float128* WORK,
const int lwork,
int* info)
const 1800 Teuchos::Details::Lapack128 lapack;
1801 lapack.GEQRF (m, n, A, lda, TAU, WORK, lwork, info);
1805 GEQR2(
const int m,
const int n, __float128 A[],
const int lda, __float128 TAU[], __float128 WORK[],
int*
const info)
const 1807 Teuchos::Details::Lapack128 lapack;
1808 lapack.GEQR2 (m, n, A, lda, TAU, WORK, info);
1812 GETRF(
const int m,
const int n, __float128* A,
const int lda,
int* IPIV,
int* info)
const 1814 Teuchos::Details::Lapack128 lapack;
1815 lapack.GETRF (m, n, A, lda, IPIV, info);
1819 GETRS(
const char TRANS,
const int n,
const int nrhs,
const __float128* A,
const int lda,
const int* IPIV, __float128* B,
const int ldb,
int* info)
const 1821 Teuchos::Details::Lapack128 lapack;
1822 lapack.GETRS (
TRANS, n, nrhs, A, lda, IPIV, B, ldb, info);
1826 GETRI (
const int n, __float128* A,
const int lda,
const int* IPIV, __float128* WORK,
const int lwork,
int* info)
const 1828 Teuchos::Details::Lapack128 lapack;
1829 lapack.GETRI (n, A, lda, const_cast<int*> (IPIV), WORK, lwork, info);
1833 LASWP (
const int N, __float128 A[],
const int LDA,
const int K1,
const int K2,
const int IPIV[],
const int INCX)
const 1835 Teuchos::Details::Lapack128 lapack;
1836 lapack.LASWP (N, A, LDA, K1, K2, IPIV, INCX);
1840 ORM2R(
const char SIDE,
const char TRANS,
const int m,
const int n,
const int k,
const __float128 A[],
const int lda,
const __float128 TAU[], __float128 C[],
const int ldc, __float128 WORK[],
int*
const info)
const 1842 Teuchos::Details::Lapack128 lapack;
1843 lapack.ORM2R (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, info);
1847 ORGQR(
const int m,
const int n,
const int k, __float128* A,
const int lda,
const __float128* TAU, __float128* WORK,
const int lwork,
int* info)
const 1849 Teuchos::Details::Lapack128 lapack;
1850 lapack.ORGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1854 UNGQR(
const int m,
const int n,
const int k, __float128* A,
const int lda,
const __float128* TAU, __float128* WORK,
const int lwork,
int* info)
const 1856 Teuchos::Details::Lapack128 lapack;
1857 lapack.UNGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1861 LARFG(
const int n, __float128* alpha, __float128* x,
const int incx, __float128* tau )
const 1863 Teuchos::Details::Lapack128 lapack;
1864 lapack.LARFG (n, alpha, x, incx, tau);
1868 LAPY2 (
const __float128 x,
const __float128 y)
const 1870 Teuchos::Details::Lapack128 lapack;
1871 return lapack.LAPY2 (x, y);
1875 GBTRF (
const int m,
const int n,
const int kl,
const int ku,
1876 __float128* A,
const int lda,
int* IPIV,
int* info)
const 1878 Teuchos::Details::Lapack128 lapack;
1879 return lapack.GBTRF (m, n, kl, ku, A, lda, IPIV, info);
1883 GBTRS (
const char TRANS,
const int n,
const int kl,
const int ku,
1884 const int nrhs,
const __float128* A,
const int lda,
const int* IPIV,
1885 __float128* B,
const int ldb,
int* info)
const 1887 Teuchos::Details::Lapack128 lapack;
1888 return lapack.GBTRS (
TRANS, n, kl, ku, nrhs, A, lda, IPIV, B, ldb, info);
1892 LASCL (
const char TYPE,
const int kl,
const int ku,
const __float128 cfrom,
1893 const __float128 cto,
const int m,
const int n, __float128* A,
1894 const int lda,
int* info)
const 1896 Teuchos::Details::Lapack128 lapack;
1897 return lapack.LASCL (TYPE, kl, ku, cfrom, cto, m, n, A, lda, info);
1902 #endif // HAVE_TEUCHOSCORE_QUADMATH void GEBAL(const char JOBZ, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType ilo, OrdinalType ihi, MagnitudeType *scale, OrdinalType *info) const
Balances a general matrix A, through similarity transformations to make the rows and columns as close...
void GEEQU(const OrdinalType m, const OrdinalType n, const ScalarType *A, const OrdinalType lda, ScalarType *R, ScalarType *C, ScalarType *rowcond, ScalarType *colcond, ScalarType *amax, OrdinalType *info) const
Computes row and column scalings intended to equilibrate an m by n matrix A and reduce its condition ...
void GETRI(const OrdinalType n, ScalarType *A, const OrdinalType lda, const OrdinalType *IPIV, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Computes the inverse of a matrix A using the LU factorization computed by GETRF.
void GESV(const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, OrdinalType *IPIV, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Computes the solution to a real system of linear equations A*X=B, where A is factored through GETRF a...
void GBCON(const char NORM, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, const ScalarType *A, const OrdinalType lda, OrdinalType *IPIV, const ScalarType anorm, ScalarType *rcond, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Estimates the reciprocal of the condition number of a general banded real matrix A, in either the 1-norm or the infinity-norm, using the LU factorization computed by GETRF.
void POTRI(const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *info) const
Computes the inverse of a real symmetric positive definite matrix A using the Cholesky factorization ...
ScalarType LAPY2(const ScalarType x, const ScalarType y) const
Computes x^2 + y^2 safely, to avoid overflow.
void GESVX(const char FACT, const char TRANS, const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, ScalarType *AF, const OrdinalType ldaf, OrdinalType *IPIV, char EQUED, ScalarType *R, ScalarType *C, ScalarType *B, const OrdinalType ldb, ScalarType *X, const OrdinalType ldx, ScalarType *rcond, ScalarType *FERR, ScalarType *BERR, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Uses the LU factorization to compute the solution to a real system of linear equations A*X=B...
void SYGV(const OrdinalType itype, const char JOBZ, const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, ScalarType *W, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Computes all the eigenvalues and, optionally, eigenvectors of a symmetric n by n matrix pencil {A...
void GBEQU(const OrdinalType m, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, const ScalarType *A, const OrdinalType lda, MagnitudeType *R, MagnitudeType *C, MagnitudeType *rowcond, MagnitudeType *colcond, MagnitudeType *amax, OrdinalType *info) const
Computes row and column scalings intended to equilibrate an m by n banded matrix A and reduce its con...
Declaration and definition of Teuchos::Details::Lapack128, a partial implementation of Teuchos::LAPAC...
void ORMQR(const char SIDE, const char TRANS, const OrdinalType m, const OrdinalType n, const OrdinalType k, ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *C, const OrdinalType ldc, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
void UNGQR(const OrdinalType m, const OrdinalType n, const OrdinalType k, ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Compute explicit QR factor from QR factorization (GEQRF) (complex case).
void TGEVC(const char SIDE, const char HOWMNY, const OrdinalType *SELECT, const OrdinalType n, ScalarType *S, const OrdinalType lds, ScalarType *P, const OrdinalType ldp, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, const OrdinalType mm, OrdinalType *M, ScalarType *WORK, OrdinalType *info) const
void GGLSE(const OrdinalType m, const OrdinalType n, const OrdinalType p, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, ScalarType *C, ScalarType *D, ScalarType *X, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Solves the linear equality-constrained least squares (LSE) problem where A is an m by n matrix...
void PTTRS(const OrdinalType n, const OrdinalType nrhs, const ScalarType *d, const ScalarType *e, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a tridiagonal system A*X=B using the *D*L' factorization of A computed by PTTRF.
void TRSEN(const char JOB, const char COMPQ, const OrdinalType *SELECT, const OrdinalType n, ScalarType *T, const OrdinalType ldt, ScalarType *Q, const OrdinalType ldq, MagnitudeType *WR, MagnitudeType *WI, OrdinalType *M, ScalarType *S, MagnitudeType *SEP, ScalarType *WORK, const OrdinalType lwork, OrdinalType *IWORK, const OrdinalType liwork, OrdinalType *info) const
void GEQR2(const OrdinalType m, const OrdinalType n, ScalarType A[], const OrdinalType lda, ScalarType TAU[], ScalarType WORK[], OrdinalType *const info) const
BLAS 2 version of GEQRF, with known workspace size.
OrdinalType ILAENV(const OrdinalType ispec, const std::string &NAME, const std::string &OPTS, const OrdinalType N1=-1, const OrdinalType N2=-1, const OrdinalType N3=-1, const OrdinalType N4=-1) const
Chooses problem-dependent parameters for the local environment.
void LASCL(const char TYPE, const OrdinalType kl, const OrdinalType ku, const MagnitudeType cfrom, const MagnitudeType cto, const OrdinalType m, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *info) const
Multiplies the m by n matrix A by the real scalar cto/cfrom.
void GGEVX(const char BALANC, const char JOBVL, const char JOBVR, const char SENSE, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, MagnitudeType *ALPHAR, MagnitudeType *ALPHAI, ScalarType *BETA, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, OrdinalType *ilo, OrdinalType *ihi, MagnitudeType *lscale, MagnitudeType *rscale, MagnitudeType *abnrm, MagnitudeType *bbnrm, MagnitudeType *RCONDE, MagnitudeType *RCONDV, ScalarType *WORK, const OrdinalType lwork, OrdinalType *IWORK, OrdinalType *BWORK, OrdinalType *info) const
void GEHRD(const OrdinalType n, const OrdinalType ilo, const OrdinalType ihi, ScalarType *A, const OrdinalType lda, ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Reduces a real general matrix A to upper Hessenberg form by orthogonal similarity transformations...
void GETRF(const OrdinalType m, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *IPIV, OrdinalType *info) const
Computes an LU factorization of a general m by n matrix A using partial pivoting with row interchange...
Teuchos header file which uses auto-configuration information to include necessary C++ headers...
void PORFS(const char UPLO, const OrdinalType n, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, const ScalarType *AF, const OrdinalType ldaf, const ScalarType *B, const OrdinalType ldb, ScalarType *X, const OrdinalType ldx, ScalarType *FERR, ScalarType *BERR, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Improves the computed solution to a system of linear equations when the coefficient matrix is symmetr...
void TRTRS(const char UPLO, const char TRANS, const char DIAG, const OrdinalType n, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a triangular linear system of the form A*X=B or A**T*X=B, where A is a triangular matrix...
void SYEV(const char JOBZ, const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *W, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Computes all the eigenvalues and, optionally, eigenvectors of a symmetric n by n matrix A...
void ORGQR(const OrdinalType m, const OrdinalType n, const OrdinalType k, ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Compute explicit Q factor from QR factorization (GEQRF) (real case).
ScalarTraits< ScalarType >::magnitudeType LANGB(const char NORM, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, const ScalarType *A, const OrdinalType lda, MagnitudeType *WORK) const
Returns the value of the one norm, or the Frobenius norm, or the infinity norm, or the element of lar...
void GEBAK(const char JOBZ, const char SIDE, const OrdinalType n, const OrdinalType ilo, const OrdinalType ihi, const MagnitudeType *scale, const OrdinalType m, ScalarType *V, const OrdinalType ldv, OrdinalType *info) const
Forms the left or right eigenvectors of a general matrix that has been balanced by GEBAL by backward ...
The Templated LAPACK wrappers.
This structure defines some basic traits for a scalar field type.
void POEQU(const OrdinalType n, const ScalarType *A, const OrdinalType lda, MagnitudeType *S, MagnitudeType *scond, MagnitudeType *amax, OrdinalType *info) const
Computes row and column scalings intended to equilibrate a symmetric positive definite matrix A and r...
void TREXC(const char COMPQ, const OrdinalType n, ScalarType *T, const OrdinalType ldt, ScalarType *Q, const OrdinalType ldq, OrdinalType ifst, OrdinalType ilst, ScalarType *WORK, OrdinalType *info) const
void GEQRF(const OrdinalType m, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Computes a QR factorization of a general m by n matrix A.
void GEES(const char JOBVS, const char SORT, OrdinalType(*ptr2func)(ScalarType *, ScalarType *), const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *sdim, ScalarType *WR, ScalarType *WI, ScalarType *VS, const OrdinalType ldvs, ScalarType *WORK, const OrdinalType lwork, OrdinalType *BWORK, OrdinalType *info) const
void GEQP3(const OrdinalType m, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *jpvt, ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Computes a QR factorization with column pivoting of a matrix A: A*P = Q*R using Level 3 BLAS...
Templated interface class to LAPACK routines.
void GECON(const char NORM, const OrdinalType n, const ScalarType *A, const OrdinalType lda, const ScalarType anorm, ScalarType *rcond, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Estimates the reciprocal of the condition number of a general real matrix A, in either the 1-norm or ...
void HEEV(const char JOBZ, const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, MagnitudeType *W, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Computes all the eigenvalues and, optionally, eigenvectors of a Hermitian n by n matrix A...
void GBTRS(const char TRANS, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, const OrdinalType *IPIV, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a system of linear equations A*X=B or A'*X=B with a general banded n by n matrix A using the L...
void POSVX(const char FACT, const char UPLO, const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, ScalarType *AF, const OrdinalType ldaf, char EQUED, ScalarType *S, ScalarType *B, const OrdinalType ldb, ScalarType *X, const OrdinalType ldx, ScalarType *rcond, ScalarType *FERR, ScalarType *BERR, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Uses the Cholesky factorization to compute the solution to a real system of linear equations A*X=B...
ScalarType LAMCH(const char CMACH) const
Determines machine parameters for floating point characteristics.
void ORGHR(const OrdinalType n, const OrdinalType ilo, const OrdinalType ihi, ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Generates a real orthogonal matrix Q which is the product of ihi-ilo elementary reflectors of order n...
void UNM2R(const char SIDE, const char TRANS, const OrdinalType M, const OrdinalType N, const OrdinalType K, const ScalarType A[], const OrdinalType LDA, const ScalarType TAU[], ScalarType C[], const OrdinalType LDC, ScalarType WORK[], OrdinalType *const INFO) const
BLAS 2 version of UNMQR; known workspace size.
void LARNV(const OrdinalType idist, OrdinalType *seed, const OrdinalType n, ScalarType *v) const
Returns a vector of random numbers from a chosen distribution.
void GETRS(const char TRANS, const OrdinalType n, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, const OrdinalType *IPIV, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a system of linear equations A*X=B or A'*X=B with a general n by n matrix A using the LU facto...
void GBRFS(const char TRANS, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, const ScalarType *AF, const OrdinalType ldaf, const OrdinalType *IPIV, const ScalarType *B, const OrdinalType ldb, ScalarType *X, const OrdinalType ldx, ScalarType *FERR, ScalarType *BERR, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Improves the computed solution to a banded system of linear equations and provides error bounds and b...
void GGES(const char JOBVL, const char JOBVR, const char SORT, OrdinalType(*ptr2func)(ScalarType *, ScalarType *, ScalarType *), const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, OrdinalType *sdim, MagnitudeType *ALPHAR, MagnitudeType *ALPHAI, MagnitudeType *BETA, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, ScalarType *WORK, const OrdinalType lwork, OrdinalType *BWORK, OrdinalType *info) const
void GEEV(const char JOBVL, const char JOBVR, const OrdinalType n, ScalarType *A, const OrdinalType lda, MagnitudeType *WR, MagnitudeType *WI, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Computes for an n by n real nonsymmetric matrix A, the eigenvalues and, optionally, the left and/or right eigenvectors.
void STEQR(const char COMPZ, const OrdinalType n, ScalarType *D, ScalarType *E, ScalarType *Z, const OrdinalType ldz, ScalarType *WORK, OrdinalType *info) const
Computes the eigenvalues and, optionally, eigenvectors of a symmetric tridiagonal n by n matrix A usi...
void LARTG(const ScalarType f, const ScalarType g, MagnitudeType *c, ScalarType *s, ScalarType *r) const
Gnerates a plane rotation that zeros out the second component of the input vector.
void HSEQR(const char JOB, const char COMPZ, const OrdinalType n, const OrdinalType ilo, const OrdinalType ihi, ScalarType *H, const OrdinalType ldh, ScalarType *WR, ScalarType *WI, ScalarType *Z, const OrdinalType ldz, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Computes the eigenvalues of a real upper Hessenberg matrix H and, optionally, the matrices T and Z fr...
void GELS(const char TRANS, const OrdinalType m, const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Solves an over/underdetermined real m by n linear system A using QR or LQ factorization of A...
void POCON(const char UPLO, const OrdinalType n, const ScalarType *A, const OrdinalType lda, const ScalarType anorm, ScalarType *rcond, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Estimates the reciprocal of the condition number (1-norm) of a real symmetric positive definite matri...
void PTTRF(const OrdinalType n, ScalarType *d, ScalarType *e, OrdinalType *info) const
Computes the L*D*L' factorization of a Hermitian/symmetric positive definite tridiagonal matrix A...
void GEEVX(const char BALANC, const char JOBVL, const char JOBVR, const char SENSE, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *WR, ScalarType *WI, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, OrdinalType *ilo, OrdinalType *ihi, MagnitudeType *SCALE, MagnitudeType *abnrm, MagnitudeType *RCONDE, MagnitudeType *RCONDV, ScalarType *WORK, const OrdinalType lwork, OrdinalType *IWORK, OrdinalType *info) const
void TRTRI(const char UPLO, const char DIAG, const OrdinalType n, const ScalarType *A, const OrdinalType lda, OrdinalType *info) const
Computes the inverse of an upper or lower triangular matrix A.
void GESVD(const char JOBU, const char JOBVT, const OrdinalType m, const OrdinalType n, ScalarType *A, const OrdinalType lda, MagnitudeType *S, ScalarType *U, const OrdinalType ldu, ScalarType *V, const OrdinalType ldv, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Computes the singular values (and optionally, vectors) of a real matrix A.
void LASWP(const OrdinalType N, ScalarType A[], const OrdinalType LDA, const OrdinalType K1, const OrdinalType K2, const OrdinalType IPIV[], const OrdinalType INCX) const
Apply a series of row interchanges to the matrix A.
void UNMQR(const char SIDE, const char TRANS, const OrdinalType m, const OrdinalType n, const OrdinalType k, ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *C, const OrdinalType ldc, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Apply Householder reflectors (complex case).
void ORM2R(const char SIDE, const char TRANS, const OrdinalType m, const OrdinalType n, const OrdinalType k, const ScalarType A[], const OrdinalType lda, const ScalarType TAU[], ScalarType C[], const OrdinalType ldc, ScalarType WORK[], OrdinalType *const info) const
BLAS 2 version of ORMQR; known workspace size.
void GELSS(const OrdinalType m, const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, MagnitudeType *S, const MagnitudeType rcond, OrdinalType *rank, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Use the SVD to solve a possibly rank-deficient linear least-squares problem.
void LATRS(const char UPLO, const char TRANS, const char DIAG, const char NORMIN, const OrdinalType N, ScalarType *A, const OrdinalType LDA, ScalarType *X, MagnitudeType *SCALE, MagnitudeType *CNORM, OrdinalType *INFO) const
Robustly solve a possibly singular triangular linear system.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
void TGSEN(const OrdinalType ijob, const OrdinalType wantq, const OrdinalType wantz, const OrdinalType *SELECT, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, MagnitudeType *ALPHAR, MagnitudeType *ALPHAI, MagnitudeType *BETA, ScalarType *Q, const OrdinalType ldq, ScalarType *Z, const OrdinalType ldz, OrdinalType *M, MagnitudeType *PL, MagnitudeType *PR, MagnitudeType *DIF, ScalarType *WORK, const OrdinalType lwork, OrdinalType *IWORK, const OrdinalType liwork, OrdinalType *info) const
void GERFS(const char TRANS, const OrdinalType n, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, const ScalarType *AF, const OrdinalType ldaf, const OrdinalType *IPIV, const ScalarType *B, const OrdinalType ldb, ScalarType *X, const OrdinalType ldx, ScalarType *FERR, ScalarType *BERR, ScalarType *WORK, OrdinalType *IWORK, OrdinalType *info) const
Improves the computed solution to a system of linear equations and provides error bounds and backward...
void TREVC(const char SIDE, const char HOWMNY, OrdinalType *select, const OrdinalType n, const ScalarType *T, const OrdinalType ldt, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, const OrdinalType mm, OrdinalType *m, ScalarType *WORK, OrdinalType *info) const
void POTRS(const char UPLO, const OrdinalType n, const OrdinalType nrhs, const ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a system of linear equations A*X=B, where A is a symmetric positive definite matrix factored b...
Defines basic traits for the scalar field type.
void GBTRF(const OrdinalType m, const OrdinalType n, const OrdinalType kl, const OrdinalType ku, ScalarType *A, const OrdinalType lda, OrdinalType *IPIV, OrdinalType *info) const
Computes an LU factorization of a general banded m by n matrix A using partial pivoting with row inte...
void GTTRS(const char TRANS, const OrdinalType n, const OrdinalType nrhs, const ScalarType *dl, const ScalarType *d, const ScalarType *du, const ScalarType *du2, const OrdinalType *IPIV, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Solves a system of linear equations A*X=B or A'*X=B or A^H*X=B with a tridiagonal matrix A using the ...
void SYTRD(const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *D, ScalarType *E, ScalarType *TAU, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Reduces a real symmetric matrix A to tridiagonal form by orthogonal similarity transformations.
void HEGV(const OrdinalType itype, const char JOBZ, const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, MagnitudeType *W, ScalarType *WORK, const OrdinalType lwork, MagnitudeType *RWORK, OrdinalType *info) const
Computes all the eigenvalues and, optionally, eigenvectors of a generalized Hermitian-definite n by n...
void ORMHR(const char SIDE, const char TRANS, const OrdinalType m, const OrdinalType n, const OrdinalType ilo, const OrdinalType ihi, const ScalarType *A, const OrdinalType lda, const ScalarType *TAU, ScalarType *C, const OrdinalType ldc, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
Overwrites the general real m by n matrix C with the product of C and Q, which is a product of ihi-il...
void POSV(const char UPLO, const OrdinalType n, const OrdinalType nrhs, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, OrdinalType *info) const
Computes the solution to a real system of linear equations A*X=B, where A is a symmetric positive def...
void GTTRF(const OrdinalType n, ScalarType *dl, ScalarType *d, ScalarType *du, ScalarType *du2, OrdinalType *IPIV, OrdinalType *info) const
Computes an LU factorization of a n by n tridiagonal matrix A using partial pivoting with row interch...
void POTRF(const char UPLO, const OrdinalType n, ScalarType *A, const OrdinalType lda, OrdinalType *info) const
Computes Cholesky factorization of a real symmetric positive definite matrix A.
void LARFG(const OrdinalType n, ScalarType *alpha, ScalarType *x, const OrdinalType incx, ScalarType *tau) const
Generates an elementary reflector of order n that zeros out the last n-1 components of the input vect...
ScalarType LARND(const OrdinalType idist, OrdinalType *seed) const
Returns a random number from a uniform or normal distribution.
void GGEV(const char JOBVL, const char JOBVR, const OrdinalType n, ScalarType *A, const OrdinalType lda, ScalarType *B, const OrdinalType ldb, MagnitudeType *ALPHAR, MagnitudeType *ALPHAI, ScalarType *BETA, ScalarType *VL, const OrdinalType ldvl, ScalarType *VR, const OrdinalType ldvr, ScalarType *WORK, const OrdinalType lwork, OrdinalType *info) const
void SPEV(const char JOBZ, const char UPLO, const OrdinalType n, ScalarType *AP, ScalarType *W, ScalarType *Z, const OrdinalType ldz, ScalarType *WORK, OrdinalType *info) const
Computes the eigenvalues and, optionally, eigenvectors of a symmetric n by n matrix A in packed stora...