47 #ifdef HAVE_TEUCHOSCORE_QUADMATH
49 #endif // HAVE_TEUCHOSCORE_QUADMATH
59 #if defined (INTEL_CXML)
60 #define CHAR_MACRO(char_var) &char_var, one
62 #define CHAR_MACRO(char_var) &char_var
68 #if defined (INTEL_CXML)
69 #define CHARPTR_MACRO(charptr_var) charptr_var, one
71 #define CHARPTR_MACRO(charptr_var) charptr_var
76 #if defined (INTEL_CXML)
86 const int* ispec,
const char* name,
const unsigned int& name_length,
87 const char* opts,
const unsigned int& opts_length,
88 const int* N1,
const int* N2,
const int* N3,
const int* N4 )
90 #if defined (INTEL_CXML)
91 return ILAENV_F77(ispec, name, name_length, opts, opts_length, N1, N2, N3, N4 );
93 return ILAENV_F77(ispec, name, opts, N1, N2, N3, N4, name_length, opts_length );
104 typedef int (*gees_nullfptr_t)(
double*,
double*);
115 { SPTTRF_F77(&n,d,e,info); }
118 void LAPACK<int, float>::PTTRS(
const int& n,
const int& nrhs,
const float* d,
const float* e,
float* B,
const int& ldb,
int* info)
const
119 { SPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
123 { SPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
126 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
127 { SPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
131 { SPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
134 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
135 { SPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
138 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
139 { SPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
143 { SPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
146 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
147 { SPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
150 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,
const char& EQUED,
float* S,
float* B,
const int& ldb,
float* X,
const int& ldx,
float* rcond,
float* FERR,
float* BERR,
float* WORK,
int* IWORK,
int* info)
const
152 char EQUED_copy = EQUED;
153 SPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED_copy), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info);
155 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
156 { SPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
159 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
160 { SGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
162 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
165 SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
168 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
169 { SGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
172 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
173 { SGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
176 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
177 { SGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
179 void LAPACK<int,float>::GEQR2 (
const int& m,
const int& n,
float A[],
const int& lda,
float TAU[],
float WORK[],
int*
const info)
const
181 SGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
185 { SGETRF_F77(&m, &n, A, &lda, IPIV, info); }
188 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
189 { SGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
192 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
193 { SLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
209 SGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
219 const int& INCX)
const
221 SLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
224 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
225 { SGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
228 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
229 { SGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
233 { SGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
236 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
237 { SGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
240 void LAPACK<int,float>::GETRI(
const int& n,
float* A,
const int& lda,
const int* IPIV,
float* WORK,
const int& lwork,
int* info)
const
241 { SGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
256 SLATRS_F77(CHAR_MACRO(UPLO),
270 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
271 { SGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
274 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
275 { SGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
278 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
279 {
return( SLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
282 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
283 { SGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
286 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
287 { SGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
290 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
291 { SGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
294 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
295 { SGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
298 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
299 { SGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
302 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,
const char& EQUED,
float* R,
float* C,
float* B,
const int& ldb,
float* X,
const int& ldx,
float* rcond,
float* FERR,
float* BERR,
float* WORK,
int* IWORK,
int* info)
const
304 char EQUED_copy = EQUED;
305 SGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED_copy), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info);
307 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
308 { SGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
311 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
312 { SSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
315 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
316 { SGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
319 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
320 { STRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
324 { STRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
327 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
328 { SSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
331 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
332 { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
335 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
336 { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
339 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
340 { SSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info); }
343 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
344 { SSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info); }
347 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
348 { SSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info); }
351 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
352 { SHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info); }
355 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
356 { SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info); }
359 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
361 int (*nullfptr)(
float*,
float*) = NULL;
362 const char sort =
'N';
363 SGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
367 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
368 { SGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
370 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
372 GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
376 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
377 { SGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info); }
380 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
381 { 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); }
384 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
385 { 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); }
387 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
389 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);
392 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
393 { SGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info); }
396 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
397 { STRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
400 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
401 { 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); }
404 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
405 { 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); }
408 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
409 { SORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
412 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
413 { SORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info); }
416 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
421 ORMQR (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
424 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
429 ORM2R (SIDE,
TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
433 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
434 { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
437 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
438 { SORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info); }
441 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
442 { SORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
445 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
446 { SORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info); }
449 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
450 { STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info); }
453 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
455 std::vector<int> select(1);
456 const char whch =
'A';
457 STREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
461 void LAPACK<int, float>::TREXC(
const char& COMPQ,
const int& n,
float* T,
const int& ldt,
float* Q,
const int& ldq,
const int& ifst,
const int& ilst,
float* WORK,
int* info)
const
463 int ifst_copy = ifst;
464 int ilst_copy = ilst;
465 STREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst_copy, &ilst_copy, WORK, info);
467 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
468 { STREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, WORK, info); }
471 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
472 { STGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
476 { SLARTG_F77(&f, &g, c, s, r); }
480 { SLARFG_F77(&n, alpha, x, &incx, tau); }
483 void LAPACK<int, float>::GEBAL(
const char& JOBZ,
const int& n,
float* A,
const int& lda,
const int& ilo,
const int& ihi,
float* scale,
int* info)
const
487 SGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo_copy, &ihi_copy, scale, info);
489 void LAPACK<int, float>::GEBAL(
const char& JOBZ,
const int& n,
float* A,
const int& lda,
int* ilo,
int* ihi,
float* scale,
int* info)
const
490 { SGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info); }
493 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
494 { SGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info); }
496 #ifdef HAVE_TEUCHOS_LAPACKLARND
498 {
return(SLARND_F77(&idist, seed)); }
502 { SLARNV_F77(&idist, seed, &n, v); }
506 {
return(SLAMCH_F77(CHAR_MACRO(CMACH))); }
509 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
511 unsigned int opts_length = OPTS.length();
513 std::string temp_NAME =
"s" + NAME;
514 if (temp_NAME.substr(1,2) ==
"he") {
515 temp_NAME.replace(1,2,
"sy");
517 unsigned int name_length = temp_NAME.length();
518 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
524 #if defined(HAVE_TEUCHOS_BLASFLOAT)
525 return SLAPY2_F77(&x, &y);
528 const float xabs = ST::magnitude(x);
529 const float yabs = ST::magnitude(y);
530 const float w = TEUCHOS_MAX(xabs, yabs);
531 const float z = TEUCHOS_MIN(xabs, yabs);
535 const float z_over_w = z/w;
536 return w*ST::squareroot( 1.0+(z_over_w*z_over_w));
547 { DPTTRF_F77(&n,d,e,info); }
550 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
551 { DPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info); }
555 { DPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
558 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
559 { DPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
563 { DPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info); }
566 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
567 { DPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
570 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
571 { DPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info); }
574 void LAPACK<int, double>::POEQU(
const int& n,
const double* A,
const int& lda,
double* S,
double* scond,
double* amax,
int* info)
const
575 { DPOEQU_F77(&n, A, &lda, S, scond, amax, info); }
578 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
579 { DPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
582 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,
const 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
584 char EQUED_copy = EQUED;
585 DPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED_copy), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
586 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
587 { DPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
590 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
591 { DGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info); }
594 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
597 DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info);
601 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
602 { DGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, info); }
605 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
606 { DGGLSE_F77(&m, &n, &p, A, &lda, B, &ldb, C, D, X, WORK, &lwork, info); }
609 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
610 { DGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info); }
612 void LAPACK<int,double>::GEQR2 (
const int& m,
const int& n,
double A[],
const int& lda,
double TAU[],
double WORK[],
int*
const info)
const
614 DGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
618 { DGETRF_F77(&m, &n, A, &lda, IPIV, info); }
621 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
622 { DGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
625 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
626 { DLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
628 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
631 DGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, info);
641 const int& INCX)
const
643 DLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
646 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
647 { DGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info); }
650 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
651 { DGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info); }
655 { DGTTRF_F77(&n, dl, d, du, du2, IPIV, info); }
658 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
659 { DGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info); }
662 void LAPACK<int,double>::GETRI(
const int& n,
double* A,
const int& lda,
const int* IPIV,
double* WORK,
const int& lwork,
int* info)
const
663 { DGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info); }
678 DLATRS_F77(CHAR_MACRO(UPLO),
691 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
692 { DGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, IWORK, info); }
695 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
696 { DGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, IWORK, info); }
699 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
700 {
return( DLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) ); }
703 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
704 { DGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info); }
707 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
708 { DGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info); }
711 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
712 { DGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
715 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
716 { DGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info); }
719 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
720 { DGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, IWORK, info); }
723 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,
const 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
725 char EQUED_copy = EQUED;
726 DGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED_copy), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
727 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
728 { DGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, IWORK, info); }
731 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
732 { DSYTRD_F77(CHAR_MACRO(UPLO), &n, A, &lda, D, E, TAU, WORK, &lwork, info); }
735 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
736 { DGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info); }
739 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
740 { DTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info); }
743 void LAPACK<int,double>::TRTRI(
const char& UPLO,
const char& DIAG,
const int& n,
const double* A,
const int& lda,
int* info)
const
744 { DTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info); }
747 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
748 { DSPEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, AP, W, Z, &ldz, WORK, info); }
751 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
753 DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
757 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
759 DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
763 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
765 DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, info);
769 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
771 DSYGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, info);
775 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
777 DSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
781 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
783 DHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, WR, WI, Z, &ldz, WORK, &lwork, info);
787 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
789 DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
793 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
796 gees_nullfptr_t nullfptr = 0;
797 const char sort =
'N';
798 DGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, WR, WI, VS, &ldvs, WORK, &lwork, BWORK, info);
802 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
804 DGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
807 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
809 GEEV (JOBVL, JOBVR, n, A, lda, WR, WI, VL, ldvl, VR, ldvr, WORK, lwork, info);
813 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 {
814 DGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, info);
818 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
820 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);
824 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
826 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);
829 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
831 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);
834 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
836 DGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL, &ldvl, VR, &ldvr, WORK, &lwork, info);
839 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
840 { DTRSEN_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPQ), SELECT, &n, T, &ldt, Q, &ldq, WR, WI, M, S, SEP, WORK, &lwork, IWORK, &liwork, info); }
843 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
844 { 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); }
847 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
848 { 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); }
851 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
853 DORMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
856 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
858 DORM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, info);
861 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
866 ORMQR (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, lwork, info);
869 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
874 ORM2R (SIDE,
TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO);
877 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
879 DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
883 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
885 DORGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
889 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
891 DORGHR_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
895 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
897 DORMHR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &ilo, &ihi, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
901 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
903 DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
907 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
909 std::vector<int> select(1);
910 const char whch =
'A';
911 DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, info);
915 void LAPACK<int, double>::TREXC(
const char& COMPQ,
const int& n,
double* T,
const int& ldt,
double* Q,
const int& ldq,
const int& ifst,
const int& ilst,
double* WORK,
int* info)
const
917 int ifst_copy = ifst;
918 int ilst_copy = ilst;
919 DTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst_copy, &ilst_copy, WORK, info);
921 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
923 DTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, WORK, info);
927 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
928 { DTGEVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &n, S, &lds, P, &ldp, VL, &ldvl, VR, &ldvr, &mm, M, WORK, info); }
933 DLARTG_F77(&f, &g, c, s, r);
939 DLARFG_F77(&n, alpha, x, &incx, tau);
943 void LAPACK<int, double>::GEBAL(
const char& JOBZ,
const int& n,
double* A,
const int& lda,
const int& ilo,
const int& ihi,
double* scale,
int* info)
const
947 DGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo_copy, &ihi_copy, scale, info);
949 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
951 DGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
955 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
957 DGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
961 #ifdef HAVE_TEUCHOS_LAPACKLARND
964 return(DLARND_F77(&idist, seed));
970 DLARNV_F77(&idist, seed, &n, v);
976 return(DLAMCH_F77(CHAR_MACRO(CMACH)));
980 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
982 unsigned int opts_length = OPTS.length();
984 std::string temp_NAME =
"d" + NAME;
985 if (temp_NAME.substr(1,2) ==
"he") {
986 temp_NAME.replace(1,2,
"sy");
988 unsigned int name_length = temp_NAME.length();
989 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
995 return DLAPY2_F77(&x, &y);
1000 #ifdef HAVE_TEUCHOS_COMPLEX
1005 void LAPACK<int, std::complex<float> >::PTTRF(
const int& n, std::complex<float>* d, std::complex<float>* e,
int* info)
const
1007 CPTTRF_F77(&n,d,e,info);
1011 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
1013 CPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
1017 void LAPACK<int, std::complex<float> >::POTRF(
const char& UPLO,
const int& n, std::complex<float>* A,
const int& lda,
int* info)
const
1019 CPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1023 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
1025 CPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1029 void LAPACK<int, std::complex<float> >::POTRI(
const char& UPLO,
const int& n, std::complex<float>* A,
const int& lda,
int* info)
const
1031 CPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1035 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
1037 CPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1041 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
1043 CPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1047 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
1049 CPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1053 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
1055 CPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1059 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,
const 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
1061 char EQUED_copy = EQUED;
1062 CPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED_copy), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1064 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
1066 CPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1070 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
1072 CGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1075 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
1077 CGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1080 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
1082 CGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1085 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
1087 CGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1090 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
1092 CUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1095 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
1097 CUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1100 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
1102 CUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1105 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
1107 CGETRF_F77(&m, &n, A, &lda, IPIV, info);
1110 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
1112 CGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1115 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
1116 { CLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1118 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
1120 CGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1123 void LAPACK<int, std::complex<float> >::
1124 LASWP (
const int& N,
1125 std::complex<float> A[],
1130 const int& INCX)
const
1132 CLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1135 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
1137 CGBTRF_F77(&m, &kl, &ku, &n, A, &lda, IPIV, info);
1141 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
1143 CGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1147 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
1149 CGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1153 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
1155 CGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1159 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
1161 CGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1166 LAPACK<int, std::complex<float> >::LATRS (
const char& UPLO,
1171 std::complex<float>* A,
1173 std::complex<float>* X,
1178 CLATRS_F77(CHAR_MACRO(UPLO),
1192 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
1194 CGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1198 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
1200 CGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1204 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
1206 return( CLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1210 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
1212 CGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1216 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
1218 CGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1222 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
1224 CGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1228 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
1230 CGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1234 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
1236 CGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1240 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,
const 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
1242 char EQUED_copy = EQUED;
1243 CGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED_copy), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1245 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
1247 CGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1251 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
1253 CGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1257 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
1259 CTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1263 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
1265 CTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1269 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
1271 CSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1275 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
1277 CHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1281 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
1283 CHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1287 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
1289 CHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1293 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
1295 CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1299 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
1301 int (*nullfptr)(std::complex<float>*) = NULL;
1302 std::vector< std::complex<float> > W(n);
1303 const char sort =
'N';
1304 CGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1305 for (
int i=0; i<n; i++) {
1306 WR[i] = W[i].real();
1307 WI[i] = W[i].imag();
1312 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
1314 CGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1317 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
1319 std::vector<std::complex<float> > w (n);
1320 std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1321 GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1325 for (
int k = 0; k < n; ++k) {
1326 WR[k] = w[k].real ();
1327 WI[k] = w[k].imag ();
1332 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 {
1333 CGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1337 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
1339 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);
1343 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
1345 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);
1348 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
1350 std::vector<std::complex<float> > w (n);
1351 std::complex<float>* w_rawPtr = (n == 0) ? NULL : &w[0];
1352 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);
1356 for (
int k = 0; k < n; ++k) {
1357 ALPHAR[k] = w[k].real ();
1358 ALPHAI[k] = w[k].imag ();
1364 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
1366 CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1370 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
1372 std::vector<int> select(1);
1373 const char& whch =
'A';
1374 CTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1378 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,
const int& ifst,
const int& ilst, std::complex<float>* WORK,
int* info)
const
1380 CTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, info);
1383 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
1385 CTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, info);
1389 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
1391 CLARTG_F77(&f, &g, c, s, r);
1395 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
1397 CLARFG_F77(&n, alpha, x, &incx, tau);
1401 void LAPACK<int, std::complex<float> >::GEBAL(
const char& JOBZ,
const int& n, std::complex<float>* A,
const int& lda,
const int& ilo,
const int& ihi,
float* scale,
int* info)
const
1405 CGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo_copy, &ihi_copy, scale, info);
1407 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
1409 CGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
1413 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
1415 CGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1419 #ifdef HAVE_TEUCHOS_LAPACKLARND
1420 std::complex<float> LAPACK<int, std::complex<float> >::LARND(
const int& idist,
int* seed )
const
1422 return(CLARND_F77(&idist, seed));
1426 void LAPACK<int, std::complex<float> >::LARNV(
const int& idist,
int* seed,
const int& n, std::complex<float>* v )
const
1428 CLARNV_F77(&idist, seed, &n, v);
1432 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
1434 unsigned int opts_length = OPTS.length();
1435 std::string temp_NAME =
"c" + NAME;
1436 unsigned int name_length = temp_NAME.length();
1437 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1445 void LAPACK<int, std::complex<double> >::PTTRF(
const int& n, std::complex<double>* d, std::complex<double>* e,
int* info)
const
1447 ZPTTRF_F77(&n,d,e,info);
1451 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
1453 ZPTTRS_F77(&n,&nrhs,d,e,B,&ldb,info);
1457 void LAPACK<int, std::complex<double> >::POTRF(
const char& UPLO,
const int& n, std::complex<double>* A,
const int& lda,
int* info)
const
1459 ZPOTRF_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1463 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
1465 ZPOTRS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1469 void LAPACK<int, std::complex<double> >::POTRI(
const char& UPLO,
const int& n, std::complex<double>* A,
const int& lda,
int* info)
const
1471 ZPOTRI_F77(CHAR_MACRO(UPLO), &n, A, &lda, info);
1475 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
1477 ZPOCON_F77(CHAR_MACRO(UPLO), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1481 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
1483 ZPOSV_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, B, &ldb, info);
1487 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
1489 ZPOEQU_F77(&n, A, &lda, S, scond, amax, info);
1493 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
1495 ZPORFS_F77(CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1499 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,
const 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
1501 char EQUED_copy = EQUED;
1502 ZPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHAR_MACRO(EQUED_copy), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1504 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
1506 ZPOSVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(UPLO), &n, &nrhs, A, &lda, AF, &ldaf, CHARPTR_MACRO(EQUED), S, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1510 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
1512 ZGELS_F77(CHAR_MACRO(
TRANS), &m, &n, &nrhs, A, &lda, B, &ldb, WORK, &lwork, info);
1516 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
1518 ZGELSS_F77(&m, &n, &nrhs, A, &lda, B, &ldb, S, &rcond, rank, WORK, &lwork, rwork, info);
1522 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
1524 ZGEQRF_F77(&m, &n, A, &lda, TAU, WORK, &lwork, info);
1527 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
1529 ZGEQR2_F77(&m, &n, A, &lda, TAU, WORK, info);
1532 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
1534 ZUNGQR_F77( &m, &n, &k, A, &lda, TAU, WORK, &lwork, info);
1538 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
1540 ZUNMQR_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &m, &n, &k, A, &lda, TAU, C, &ldc, WORK, &lwork, info);
1543 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
1545 ZUNM2R_F77(CHAR_MACRO(SIDE), CHAR_MACRO(
TRANS), &M, &N, &K, A, &LDA, TAU, C, &LDC, WORK, INFO);
1548 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
1550 ZGETRF_F77(&m, &n, A, &lda, IPIV, info);
1554 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
1556 ZGETRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1560 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
1561 { ZLASCL_F77(CHAR_MACRO(TYPE), &kl, &ku, &cfrom, &cto, &m, &n, A, &lda, info); }
1563 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
1565 ZGEQP3_F77(&m, &n, A, &lda, jpvt, TAU, WORK, &lwork, RWORK, info);
1568 void LAPACK<int, std::complex<double> >::
1569 LASWP (
const int& N,
1570 std::complex<double> A[],
1575 const int& INCX)
const
1577 ZLASWP_F77(&N, A, &LDA, &K1, &K2, IPIV, &INCX);
1580 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
1582 ZGBTRF_F77(&m, &n, &kl, &ku, A, &lda, IPIV, info);
1586 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
1588 ZGBTRS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, IPIV, B, &ldb, info);
1592 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
1594 ZGTTRF_F77(&n, dl, d, du, du2, IPIV, info);
1598 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
1600 ZGTTRS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, dl, d, du, du2, IPIV, B, &ldb, info);
1604 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
1606 ZGETRI_F77(&n, A, &lda, IPIV, WORK, &lwork, info);
1610 LAPACK<int, std::complex<double> >::LATRS (
const char& UPLO,
1615 std::complex<double>* A,
1617 std::complex<double>* X,
1622 ZLATRS_F77(CHAR_MACRO(UPLO),
1635 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
1637 ZGECON_F77(CHAR_MACRO(NORM), &n, A, &lda, &anorm, rcond, WORK, RWORK, info);
1641 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
1643 ZGBCON_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, IPIV, &anorm, rcond, WORK, RWORK, info);
1647 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
1649 return( ZLANGB_F77(CHAR_MACRO(NORM), &n, &kl, &ku, A, &lda, WORK) );
1653 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
1655 ZGESV_F77(&n, &nrhs, A, &lda, IPIV, B, &ldb, info);
1659 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
1661 ZGEEQU_F77(&m, &n, A, &lda, R, C, rowcond, colcond, amax, info);
1665 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
1667 ZGERFS_F77(CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1671 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
1673 ZGBEQU_F77(&m, &n, &kl, &ku, A, &lda, R, C, rowcond, colcond, amax, info);
1677 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
1679 ZGBRFS_F77(CHAR_MACRO(
TRANS), &n, &kl, &ku, &nrhs, A, &lda, AF, &ldaf, IPIV, B, &ldb, X, &ldx, FERR, BERR, WORK, RWORK, info);
1683 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,
const 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
1685 char EQUED_copy = EQUED;
1686 ZGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHAR_MACRO(EQUED_copy), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1688 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
1690 ZGESVX_F77(CHAR_MACRO(FACT), CHAR_MACRO(
TRANS), &n, &nrhs, A, &lda, AF, &ldaf, IPIV, CHARPTR_MACRO(EQUED), R, C, B, &ldb, X, &ldx, rcond, FERR, BERR, WORK, RWORK, info);
1694 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
1696 ZGEHRD_F77(&n, &ilo, &ihi, A, &lda, TAU, WORK, &lwork, info);
1700 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
1702 ZTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(
TRANS), CHAR_MACRO(DIAG), &n, &nrhs, A, &lda, B, &ldb, info);
1706 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
1708 ZTRTRI_F77(CHAR_MACRO(UPLO), CHAR_MACRO(DIAG), &n, A, &lda, info);
1712 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
1714 ZSTEQR_F77(CHAR_MACRO(COMPZ), &n, D, E, Z, &ldz, WORK, info);
1718 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
1720 ZHEEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, W, WORK, &lwork, RWORK, info);
1724 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
1726 ZHEGV_F77(&itype, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &n, A, &lda, B, &ldb, W, WORK, &lwork, RWORK, info);
1730 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
1732 ZHSEQR_F77(CHAR_MACRO(JOB), CHAR_MACRO(COMPZ), &n, &ilo, &ihi, H, &ldh, W, Z, &ldz, WORK, &lwork, info);
1736 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
1738 ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(SORT), ptr2func, &n, A, &lda, sdim, W, VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1742 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
1744 int (*nullfptr)(std::complex<double>*) = NULL;
1745 std::vector< std::complex<double> > W(n);
1746 const char sort =
'N';
1747 ZGEES_F77(CHAR_MACRO(JOBVS), CHAR_MACRO(sort), nullfptr, &n, A, &lda, sdim, &W[0], VS, &ldvs, WORK, &lwork, RWORK, BWORK, info);
1748 for (
int i=0; i<n; i++) {
1749 WR[i] = W[i].real();
1750 WI[i] = W[i].imag();
1755 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
1757 ZGEEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &n, A, &lda, W, VL, &ldvl, VR, &ldvr, WORK, &lwork, RWORK, info);
1761 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
1763 std::vector<std::complex<double> > w (n);
1764 std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1765 GEEV (JOBVL, JOBVR, n, A, lda, w_rawPtr, VL, ldvl, VR, ldvr, WORK, lwork, RWORK, info);
1769 for (
int k = 0; k < n; ++k) {
1770 WR[k] = w[k].real ();
1771 WI[k] = w[k].imag ();
1777 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 {
1778 ZGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &m, &n, A, &lda, S, U, &ldu, V, &ldv, WORK, &lwork, RWORK, info);
1781 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
1783 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);
1786 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
1788 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);
1791 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
1793 std::vector<std::complex<double> > w (n);
1794 std::complex<double>* w_rawPtr = (n == 0) ? NULL : &w[0];
1795 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);
1799 for (
int k = 0; k < n; ++k) {
1800 ALPHAR[k] = w[k].real ();
1801 ALPHAI[k] = w[k].imag ();
1806 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
1808 ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), select, &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1812 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
1814 std::vector<int> select(1);
1815 const char& whch =
'A';
1816 ZTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(whch), &select[0], &n, T, &ldt, VL, &ldvl, VR, &ldvr, &mm, m, WORK, RWORK, info);
1820 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,
const int& ifst,
const int& ilst, std::complex<double>* WORK,
int* info)
const
1822 ZTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, &ifst, &ilst, info);
1825 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
1827 ZTREXC_F77(CHAR_MACRO(COMPQ), &n, T, &ldt, Q, &ldq, ifst, ilst, info);
1830 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
1832 ZLARTG_F77(&f, &g, c, s, r);
1836 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
1838 ZLARFG_F77(&n, alpha, x, &incx, tau);
1842 void LAPACK<int, std::complex<double> >::GEBAL(
const char& JOBZ,
const int& n, std::complex<double>* A,
const int& lda,
const int& ilo,
const int& ihi,
double* scale,
int* info)
const
1846 ZGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, &ilo_copy, &ihi_copy, scale, info);
1848 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
1850 ZGEBAL_F77(CHAR_MACRO(JOBZ),&n, A, &lda, ilo, ihi, scale, info);
1854 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
1856 ZGEBAK_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(SIDE), &n, &ilo, &ihi, scale, &m, V, &ldv, info);
1860 #ifdef HAVE_TEUCHOS_LAPACKLARND
1861 std::complex<double> LAPACK<int, std::complex<double> >::LARND(
const int& idist,
int* seed )
const
1863 return(ZLARND_F77(&idist, seed));
1867 void LAPACK<int, std::complex<double> >::LARNV(
const int& idist,
int* seed,
const int& n, std::complex<double>* v )
const
1869 ZLARNV_F77(&idist, seed, &n, v);
1873 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
1875 unsigned int opts_length = OPTS.length();
1876 std::string temp_NAME =
"z" + NAME;
1877 unsigned int name_length = temp_NAME.length();
1878 return ilaenv_wrapper(&ispec, &temp_NAME[0], name_length, &OPTS[0], opts_length, &N1, &N2, &N3, &N4);
1883 #endif // HAVE_TEUCHOS_COMPLEX
1886 #ifdef HAVE_TEUCHOSCORE_QUADMATH
1891 GEQRF(
const int& m,
const int& n, __float128* A,
const int& lda, __float128* TAU, __float128* WORK,
const int& lwork,
int* info)
const
1893 Teuchos::Details::Lapack128 lapack;
1894 lapack.GEQRF (m, n, A, lda, TAU, WORK, lwork, info);
1898 GEQR2(
const int& m,
const int& n, __float128 A[],
const int& lda, __float128 TAU[], __float128 WORK[],
int*
const info)
const
1900 Teuchos::Details::Lapack128 lapack;
1901 lapack.GEQR2 (m, n, A, lda, TAU, WORK, info);
1905 GETRF(
const int& m,
const int& n, __float128* A,
const int& lda,
int* IPIV,
int* info)
const
1907 Teuchos::Details::Lapack128 lapack;
1908 lapack.GETRF (m, n, A, lda, IPIV, info);
1912 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
1914 Teuchos::Details::Lapack128 lapack;
1915 lapack.GETRS (
TRANS, n, nrhs, A, lda, IPIV, B, ldb, info);
1919 GETRI (
const int& n, __float128* A,
const int& lda,
const int* IPIV, __float128* WORK,
const int& lwork,
int* info)
const
1921 Teuchos::Details::Lapack128 lapack;
1922 lapack.GETRI (n, A, lda, const_cast<int*> (IPIV), WORK, lwork, info);
1926 LASWP (
const int& N, __float128 A[],
const int& LDA,
const int& K1,
const int& K2,
const int IPIV[],
const int& INCX)
const
1928 Teuchos::Details::Lapack128 lapack;
1929 lapack.LASWP (N, A, LDA, K1, K2, IPIV, INCX);
1933 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
1935 Teuchos::Details::Lapack128 lapack;
1936 lapack.ORM2R (SIDE,
TRANS, m, n, k, A, lda, TAU, C, ldc, WORK, info);
1940 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
1942 Teuchos::Details::Lapack128 lapack;
1943 lapack.ORGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1947 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
1949 Teuchos::Details::Lapack128 lapack;
1950 lapack.UNGQR (m, n, k, A, lda, TAU, WORK, lwork, info);
1954 LARFG(
const int& n, __float128* alpha, __float128* x,
const int& incx, __float128* tau )
const
1956 Teuchos::Details::Lapack128 lapack;
1957 lapack.LARFG (n, alpha, x, incx, tau);
1961 LAPY2 (
const __float128 x,
const __float128 y)
const
1963 Teuchos::Details::Lapack128 lapack;
1964 return lapack.LAPY2 (x, y);
1968 GBTRF (
const int& m,
const int& n,
const int& kl,
const int& ku,
1969 __float128* A,
const int& lda,
int* IPIV,
int* info)
const
1971 Teuchos::Details::Lapack128 lapack;
1972 return lapack.GBTRF (m, n, kl, ku, A, lda, IPIV, info);
1976 GBTRS (
const char&
TRANS,
const int& n,
const int& kl,
const int& ku,
1977 const int& nrhs,
const __float128* A,
const int& lda,
const int* IPIV,
1978 __float128* B,
const int& ldb,
int* info)
const
1980 Teuchos::Details::Lapack128 lapack;
1981 return lapack.GBTRS (
TRANS, n, kl, ku, nrhs, A, lda, IPIV, B, ldb, info);
1985 LASCL (
const char& TYPE,
const int& kl,
const int& ku,
const __float128 cfrom,
1986 const __float128 cto,
const int& m,
const int& n, __float128* A,
1987 const int& lda,
int* info)
const
1989 Teuchos::Details::Lapack128 lapack;
1990 return lapack.LASCL (TYPE, kl, ku, cfrom, cto, m, n, A, lda, info);
1995 #endif // HAVE_TEUCHOSCORE_QUADMATH