* Bye bye MultiplierBase, extend a bit AnyMatrixBase to allow =, +=, and -=

* This probably makes ReturnByValue needless
This commit is contained in:
Gael Guennebaud
2009-08-03 16:05:15 +02:00
parent ce1dc1ab16
commit 3cf5bb31f6
15 changed files with 126 additions and 113 deletions

View File

@@ -237,6 +237,15 @@ public :
spotrf_(&uplo, &N, C, &N, &info);
}
static inline void partial_lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
int N2 = N*N;
scopy_(&N2, X, &intone, C, &intone);
char uplo = 'L';
int info = 0;
int * ipiv = (int*)alloca(sizeof(int)*N);
sgetrf_(&N, &N, C, &N, ipiv, &info);
}
#ifdef HAS_LAPACK
static inline void lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
@@ -249,14 +258,7 @@ public :
sgetc2_(&N, C, &N, ipiv, jpiv, &info);
}
static inline void partial_lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
int N2 = N*N;
scopy_(&N2, X, &intone, C, &intone);
char uplo = 'L';
int info = 0;
int * ipiv = (int*)alloca(sizeof(int)*N);
sgetrf_(&N, &N, C, &N, ipiv, &info);
}
static inline void hessenberg(const gene_matrix & X, gene_matrix & C, int N){
#ifdef PUREBLAS

View File

@@ -24,7 +24,7 @@
#include "action_cholesky.hh"
#include "action_lu_decomp.hh"
// #include "action_partial_lu_decomp.hh"
#include "action_partial_lu.hh"
#include "action_trisolve_matrix.hh"
#ifdef HAS_LAPACK
@@ -52,10 +52,10 @@ int main()
bench<Action_trisolve_matrix<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_cholesky<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_partial_lu<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
#ifdef HAS_LAPACK
bench<Action_lu_decomp<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
// bench<Action_partial_lu_decomp<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_hessenberg<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_tridiagonalization<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
#endif

View File

@@ -190,10 +190,10 @@ public :
}
static inline void trisolve_lower_matrix(const gene_matrix & L, const gene_matrix& B, gene_matrix& X, int N){
// X = L.template triangularView<LowerTriangular>().solve(B);
X = B;
ei_triangular_solve_matrix<real,ColMajor,ColMajor,LowerTriangular>
::run(L.cols(), X.cols(), L.data(), L.stride(), X.data(), X.stride());
X = L.template triangularView<LowerTriangular>().solve(B);
//
// ei_triangular_solve_matrix<real,ColMajor,ColMajor,LowerTriangular>
// ::run(L.cols(), X.cols(), L.data(), L.stride(), X.data(), X.stride());
}
static inline void cholesky(const gene_matrix & X, gene_matrix & C, int N){

View File

@@ -23,7 +23,7 @@
#include "action_cholesky.hh"
#include "action_hessenberg.hh"
#include "action_lu_decomp.hh"
// #include "action_partial_lu_decomp.hh"
#include "action_partial_lu.hh"
BTL_MAIN;
@@ -33,7 +33,7 @@ int main()
bench<Action_trisolve_matrix<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_cholesky<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_lu_decomp<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
// bench<Action_partial_lu_decomp<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_partial_lu<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_hessenberg<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_tridiagonalization<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);