//============================================================================= void Epetra_LAPACK::GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L, float* A, const int LDA, float* B, const int LDB, float* ALPHA, float* BETA, float* U, const int LDU, float* V, const int LDV, float* Q, const int LDQ, float* WORK, int* IWORK, int* INFO) const { SGGSVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBV), CHAR_MACRO(JOBQ), &M, &N, &P, K, L, A, &LDA, B, &LDB, ALPHA, BETA, U, &LDU, V, &LDV, Q, &LDQ, WORK, IWORK, INFO); }
//============================================================================= void Epetra_LAPACK::TREVC( const char SIDE, const char HOWMNY, int * SELECT, const int N, const double * T, const int LDT, double *VL, const int LDVL, double * VR, const int LDVR, const int MM, int * M, double * WORK, int * INFO) const { if (HOWMNY=='S') *INFO = -3; // We do not support 'S' since it requires a logical array (yuck!) else DTREVC_F77(CHAR_MACRO(SIDE), CHAR_MACRO(HOWMNY), SELECT, &N, T, &LDT, VL, &LDVL, VR, &LDVR, &MM, M, WORK, INFO); }
//============================================================================= void Epetra_BLAS::TRMM(const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N, const double ALPHA, const double * A, const int LDA, double * B, const int LDB) const { DTRMM_F77(CHAR_MACRO(SIDE), CHAR_MACRO(UPLO), CHAR_MACRO(TRANSA), CHAR_MACRO(DIAG), &M, &N, &ALPHA, A, &LDA, B, &LDB); }
//============================================================================= void Epetra_LAPACK::GESVD(const char JOBU, const char JOBVT, const int M, const int N, float * A, const int LDA, float * S, float * U, const int LDU, float * VT, const int LDVT, float * WORK, const int * LWORK, int * INFO) const { SGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &M, &N, A, &LDA, S, U, &LDU, VT, &LDVT, WORK, LWORK, INFO); }
//============================================================================= void Epetra_LAPACK::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 * VT, const int LDVT, double * WORK, const int * LWORK, int * INFO) const { DGESVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBVT), &M, &N, A, &LDA, S, U, &LDU, VT, &LDVT, WORK, LWORK, INFO); }
//============================================================================= void Epetra_BLAS::SYMM(const char SIDE, const char UPLO, const int M, const int N, const float ALPHA, const float * A, const int LDA, const float * B, const int LDB, const float BETA, float * C, const int LDC) const { SSYMM_F77(CHAR_MACRO(SIDE), CHAR_MACRO(UPLO), &M, &N, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC); }
//============================================================================= void Epetra_BLAS::SYMM(const char SIDE, const char UPLO, const int M, const int N, const double ALPHA, const double * A, const int LDA, const double * B, const int LDB, const double BETA, double * C, const int LDC) const { DSYMM_F77(CHAR_MACRO(SIDE), CHAR_MACRO(UPLO), &M, &N, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC); }
//============================================================================= void Epetra_BLAS::GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K, const float ALPHA, const float * A, const int LDA, const float * B, const int LDB, const float BETA, float * C, const int LDC) const { SGEMM_F77(CHAR_MACRO(TRANSA), CHAR_MACRO(TRANSB), &M, &N, &K, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC); }
//============================================================================= void Epetra_BLAS::GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K, const double ALPHA, const double * A, const int LDA, const double * B, const int LDB, const double BETA, double * C, const int LDC) const { DGEMM_F77(CHAR_MACRO(TRANSA), CHAR_MACRO(TRANSB), &M, &N, &K, &ALPHA, A, &LDA, B, &LDB, &BETA, C, &LDC); }
//============================================================================= void Epetra_LAPACK::GEEVX(const char BALANC, const char JOBVL, const char JOBVR, const char SENSE, const int N, float* A, const int LDA, float* WR, float* WI, float* VL, 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{ 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); }
//============================================================================= void Epetra_LAPACK::SYEVX(const char JOBZ, const char RANGE, const char UPLO, const int N, float* A, const int LDA, const float* VL, const float* VU, const int* IL, const int* IU, const float ABSTOL, int * M, float* W, float* Z, const int LDZ, float* WORK, const int LWORK, int* IWORK, int* IFAIL, int* INFO) const { SSYEVX_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(RANGE), CHAR_MACRO(UPLO), &N, A, &LDA, VL, VU, IL, IU, &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK, IFAIL, INFO); }
//============================================================================= void Epetra_LAPACK::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 { #ifdef EPETRA_LAPACK3 SGGEV_F77(CHAR_MACRO(JOBVL), CHAR_MACRO(JOBVR), &N, A, &LDA, B, &LDB, ALPHAR, ALPHAI, BETA, VL, &LDVL, VR, &LDVR, WORK, &LWORK, INFO); #else Epetra_Object obj; obj.ReportError("GGEV requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1); #endif }
//============================================================================= void Epetra_LAPACK::SYEVR(const char JOBZ, const char RANGE, const char UPLO, const int N, float* A, const int LDA, const float* VL, const float* VU, const int *IL, const int *IU, const float ABSTOL, int* M, float* W, float* Z, const int LDZ, int* ISUPPZ, float* WORK, const int LWORK, int* IWORK, const int LIWORK, int* INFO) const { #ifdef EPETRA_LAPACK3 SSYEVR_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(RANGE), CHAR_MACRO(UPLO), &N, A, &LDA, VL, VU, IL, IU, &ABSTOL, M, W, Z, &LDZ, ISUPPZ, WORK, &LWORK, IWORK, &LIWORK, INFO); #else Epetra_Object obj; obj.ReportError("SYEVR requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1); #endif }
//============================================================================= void Epetra_LAPACK::SYGVX(const int ITYPE, const char JOBZ, const char RANGE, const char UPLO, const int N, double* A, const int LDA, double* B, const int LDB, const double* VL, const double* VU, const int* IL, const int* IU, const double ABSTOL, int* M, double* W, double* Z, const int LDZ, double* WORK, const int LWORK, int* IWORK, int* IFAIL, int* INFO) const { #ifdef EPETRA_LAPACK3 DSYGVX_F77(&ITYPE, CHAR_MACRO(JOBZ), CHAR_MACRO(RANGE), CHAR_MACRO(UPLO), &N, A, &LDA, B, &LDB, VL, VU, IL, IU, &ABSTOL, M, W, Z, &LDZ, WORK, &LWORK, IWORK, IFAIL, INFO); #else Epetra_Object obj; obj.ReportError("SYGVX requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1); #endif }
//============================================================================= void Epetra_LAPACK::GESDD(const char JOBZ, const int M, const int N, float* A, const int LDA, float* S, float* U, const int LDU, float* VT, const int LDVT, float* WORK, const int LWORK, int* IWORK, int* INFO) const{ #ifdef EPETRA_LAPACK3 SGESDD_F77(CHAR_MACRO(JOBZ), &M, &N, A, &LDA, S, U, &LDU, VT, &LDVT, WORK, &LWORK, IWORK, INFO); #else Epetra_Object obj; obj.ReportError("GESDD requires LAPACK Version 3. Compile Epetra with -DEPETRA_LAPACK3 and link with LAPACK 3 library", -1); #endif }
//============================================================================= void Epetra_BLAS::GEMV(const char TRANS, const int M, const int N, const double ALPHA, const double * A, const int LDA, const double * X, const double BETA, double * Y, const int INCX, const int INCY) const { DGEMV_F77(CHAR_MACRO(TRANS), &M, &N, &ALPHA, A, &LDA, X, &INCX, &BETA, Y, &INCY); }
//============================================================================= void Epetra_BLAS::GEMV(const char TRANS, const int M, const int N, const float ALPHA, const float * A, const int LDA, const float * X, const float BETA, float * Y, const int INCX, const int INCY) const { SGEMV_F77(CHAR_MACRO(TRANS), &M, &N, &ALPHA, A, &LDA, X, &INCX, &BETA, Y, &INCY); }
//============================================================================= void Epetra_LAPACK::POSV( const char UPLO, const int N, const int NRHS, float * A, const int LDA, float * X, const int LDX, int * INFO) const { SPOSV_F77(CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, X, &LDX, INFO); }
//============================================================================= void Epetra_LAPACK::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 { DPOCON_F77(CHAR_MACRO(UPLO), &N, A, &LDA, &ANORM, RCOND, WORK, IWORK, INFO); }
//============================================================================= void Epetra_LAPACK::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 { SPOCON_F77(CHAR_MACRO(UPLO), &N, A, &LDA, &ANORM, RCOND, WORK, IWORK, INFO); }
//============================================================================= void Epetra_LAPACK::POTRI( const char UPLO, const int N, double * A, const int LDA, int * INFO) const { DPOTRI_F77(CHAR_MACRO(UPLO), &N, A, &LDA, INFO); }
//============================================================================= void Epetra_BLAS::SYRK(const char UPLO, const char TRANS, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float BETA, float *C, const int LDC) const{ SSYRK_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), &N, &K, &ALPHA, A, &LDA, &BETA, C, &LDC); }
//============================================================================= void Epetra_LAPACK::POTRF( const char UPLO, const int N, float * A, const int LDA, int * INFO) const { SPOTRF_F77(CHAR_MACRO(UPLO), &N, A, &LDA, INFO); }
//============================================================================= void Epetra_LAPACK::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{ SSYGV_F77(&ITYPE, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &N, A, &LDA, B, &LDB, W, WORK, &LWORK, INFO); }
//============================================================================= void Epetra_LAPACK::SYEV(const char JOBZ, const char UPLO, const int N, double* A, const int LDA, double* W, double* WORK, const int LWORK, int* INFO) const{ DSYEV_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &N, A, &LDA, W, WORK, &LWORK, INFO); }
//============================================================================= void Epetra_LAPACK::SYEVD(const char JOBZ, const char UPLO, const int N, float* A, const int LDA, float* W, float* WORK, const int LWORK, int* IWORK, const int LIWORK, int* INFO) const { SSYEVD_F77(CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &N, A, &LDA, W, WORK, &LWORK, IWORK, &LIWORK, INFO); }
//============================================================================= void Epetra_LAPACK::POTRS( const char UPLO, const int N, const int NRHS, const double * A, const int LDA, double * X, const int LDX, int * INFO) const { DPOTRS_F77(CHAR_MACRO(UPLO), &N, &NRHS, A, &LDA, X, &LDX, INFO); }
//============================================================================= void Epetra_LAPACK::SPGV(const int ITYPE, const char JOBZ, const char UPLO, const int N, float* AP, float* BP, float* W, float* Z, const int LDZ, float* WORK, int* INFO) const { SSPGV_F77(&ITYPE, CHAR_MACRO(JOBZ), CHAR_MACRO(UPLO), &N, AP, BP, W, Z, &LDZ, WORK, INFO); }
//============================================================================= void Epetra_BLAS::SYRK(const char UPLO, const char TRANS, const int N, const int K, const double ALPHA, const double *A, const int LDA, const double BETA, double *C, const int LDC) const{ DSYRK_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), &N, &K, &ALPHA, A, &LDA, &BETA, C, &LDC); }
//============================================================================= void Epetra_LAPACK::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{ DTRTRS_F77(CHAR_MACRO(UPLO), CHAR_MACRO(TRANS), CHAR_MACRO(DIAG), &N, &NRHS, A, &LDA, B, &LDB, INFO); }