6 #ifndef _LA_FACTORIZE_MAT_DOUBLE_H 7 #define _LA_FACTORIZE_MAT_DOUBLE_H 12 #include LA_GEN_MAT_DOUBLE_H 13 #include LA_GEN_FACT_DOUBLE_H 14 #include LA_BAND_MAT_DOUBLE_H 15 #include LA_BAND_FACT_DOUBLE_H 16 #include LA_TRIDIAG_MAT_DOUBLE_H 17 #include LA_TRIDIAG_FACT_DOUBLE_H 18 #include LA_SPD_MAT_DOUBLE_H 19 #include LA_SYMM_MAT_DOUBLE_H 20 #include LA_SYMM_FACT_DOUBLE_H 21 #include LA_SYMM_TRIDIAG_MAT_DOUBLE_H 22 #include LA_SYMM_BAND_MAT_DOUBLE_H 28 integer m = GM.size(0), n = GM.size(1), lda = GM.gdim(0);
39 integer n = A.size(1), lda = A.gdim(0), nrhs = 1,
40 ldb = b.size(), info = 0;
49 integer n = A.size(1), m = n, LDA = A.gdim(0);
50 integer KL = A.subdiags(), KU = A.superdiags(), info=0;
57 inline void LaBandMatSolve(LaBandMatDouble &AB, LaVectorDouble &b,
61 integer n = AB.size(1), ldab = AB.gdim(0), nrhs = 1, ldb = b.size();
62 integer kl = AB.subdiags(), ku = AB.superdiags(), info=0;
64 F77NAME(
dgbtrs)(&trans, &n, &kl, &ku, &nrhs, &AB(0,0), &ldab, &piv(0),
72 integer N = TD.size(), info = 0;
73 double *DL = & TD.diag(-1)(0), *D = &TD.diag(0)(0),
74 *DU = &TD.diag(1)(0), *DU2 = &TD.diag(2)(0);
80 inline void LaTridiagMatSolve(LaTridiagMatDouble &TD, LaVectorDouble &b,
84 integer N = TD.size(), nrhs = 1, ldb = b.size(), info = 0;
85 double *DL = &TD.diag(-1)(0), *D = &TD.diag(0)(0),
86 *DU = &TD.diag(1)(0), *DU2 = &TD.diag(2)(0);
96 integer N = SPD.size(0), LDSPD = SPD.gdim(0), info = 0;
102 inline void LaSpdMatSolve(LaSpdMatDouble &SPD, LaVectorDouble &b)
105 integer N = SPD.size(0), nrhs = 1, ldspd = SPD.gdim(0), ldb = b.size(),
116 integer N = A.size(0), LDA = A.gdim(0), info = 0;
118 int NB =
F77NAME(get_nb)(&N,&M);
121 double *WORK =
new double[LWORK];
130 inline void LaSymmMatSolve(LaSymmMatDouble &A, LaVectorDouble &b,
131 LaVectorLongInt &piv)
134 integer N = A.size(1), nrhs = 1, lda = A.gdim(0),
135 ldb = b.size(), info = 0;
138 &piv(0), &b(0), &ldb, &info);
145 integer N = AB.size(0), KD = AB.subdiags(), LDAB = AB.gdim(0),
153 inline void LaSymmBandMatSolve(LaSymmBandMatDouble &AB, LaVectorDouble &b)
156 integer N = AB.size(0), KD = AB.subdiags(), LDAB = AB.gdim(0),
157 info = 0, nrhs = 1, ldb = b.size();
159 F77NAME(
dpbtrs)(&UPLO, &N, &KD, &nrhs, &AB(0,0), &LDAB, &b(0),
164 inline int LaSymmTridiagMatFactorize(LaSymmTridiagMatDouble &STD)
166 integer N = STD.size(), info = 0;
167 double *D = (
double*) STD.diag(0), *E = (
double*) STD.diag(-1);
174 inline void LaSymmTridiagMatSolve(LaSymmTridiagMatDouble &STD,
177 integer N = STD.size(), nrhs = 1, ldb = b.size(), info = 0;
178 double *D = (
double*) STD.diag(0), *E = (
double*) STD.diag(-1);
184 inline void LaSwap(LaGenMatDouble &A, LaVectorLongInt &ipiv)
186 integer lda = A.gdim(0), n = A.size(1);
187 integer k1 = ipiv.start(), k2 = ipiv.end(), incx = ipiv.inc();
193 inline void LaSwap_Trans(LaGenMatDouble &A, LaVectorLongInt &ipiv)
195 integer lda = A.gdim(0), n = A.size(1);
196 integer k1 = ipiv.start(), k2 = ipiv.end(), incx = -(ipiv.inc());
202 inline int LaLUFactorDoubleUnblocked(LaGenMatDouble &A,
LaGenFactDouble &F)
204 integer m = A.size(0), n=A.size(1), lda = A.gdim(0);
212 inline double LaDopla(
char *subname,
int m,
int n,
int kl,
int ku,
int nb)
void F77NAME() dgttrs(char *trans, integer *N, integer *nrhs, doublereal *DL, doublereal *D, doublereal *DU, doublereal *DU2, integer *ipiv, doublereal *b, integer *ldb, integer *info)
void LaTridiagMatFactorize(LaTridiagMatDouble &A, LaTridiagFactDouble &AF)
LaVectorLongInt & pivot()
void F77NAME() dpttrs(integer *N, integer *nrhs, doublereal *D, doublereal *E, doublereal *b, integer *ldb, integer *info)
void F77NAME() dsytrs(char *uplo, integer *N, integer *nrhs, doublereal *A, integer *lda, integer *ipiv, doublereal *b, integer *ldb, integer *info)
void F77NAME() dpotrf(char *UPLO, integer *N, doublereal *SM, integer *LDSM, integer *info)
LaVectorLongInt & pivot()
LaVectorLongInt & pivot()
void LaGenMatSolve(LaGenMatDouble &A, LaVectorDouble &b, LaVectorLongInt &piv)
LaVectorLongInt & pivot()
void LaSymmBandMatFactorize(const LaSymmBandMatDouble &A, LaSymmBandFactDouble &AF)
void LaGenMatFactorize(LaGenMatDouble &GM, LaGenFactDouble &GF)
void F77NAME() dpotrs(char *UPLO, integer *N, integer *nrhs, doublereal *A, integer *LDA, doublereal *b, integer *ldb, integer *info)
void F77NAME() dgetrs(char *trans, integer *N, integer *nrhs, doublereal *A, integer *lda, integer *ipiv, doublereal *b, integer *ldb, integer *info)
void F77NAME() dgbtrs(char *trans, integer *N, integer *kl, integer *ku, integer *nrhs, doublereal *AB, integer *ldab, integer *ipiv, doublereal *b, integer *ldb, integer *info)
void LaBandMatFactorize(LaBandMatDouble &A, LaBandFactDouble &AF)
void F77NAME() dpbtrf(char *UPLO, integer *N, integer *KD, doublereal *SBM, integer *LDSM, integer *info)
void LaSpdMatFactorize(LaSpdMatDouble &A, LaSpdFactDouble &AF)
void F77NAME() dlaswp(integer *n, doublereal *A, integer *lda, integer *k1, integer *k2, integer *ipiv, integer *incx)
void F77NAME() dgetrf(integer *m, integer *n, doublereal *A, integer *lda, integer *ipiv, integer *info)
void F77NAME() dgetf2(integer *m, integer *n, doublereal *A, integer *lda, integer *ipiv, integer *info)
doublereal F77NAME() dopla(char *subname, integer *m, integer *n, integer *kl, integer *ku, integer *nb)
void F77NAME() dgttrf(integer *N, doublereal *DL, doublereal *D, doublereal *DU, doublereal *DU2, integer *ipiv, integer *info)
void F77NAME() dsytrf(char *UPLO, integer *N, doublereal *SM, integer *LDSM, integer *ipiv, doublereal *WORK, integer *LWORK, integer *info)
void F77NAME() dgbtrf(integer *m, integer *n, integer *KL, integer *KU, doublereal *BM, integer *LDBM, integer *ipiv, integer *info)
void F77NAME() dpbtrs(char *UPLO, integer *N, integer *KD, integer *nrhs, doublereal *AB, integer *LDAB, doublereal *b, integer *ldb, integer *info)
void F77NAME() dpttrf(integer *N, doublereal *D, doublereal *E, integer *info)