mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-17 20:03:17 +08:00
compilation fixes in BTL
This commit is contained in:
parent
7ed7ec64b5
commit
de8b795895
@ -110,19 +110,17 @@ public :
|
||||
void check_result( void ){
|
||||
|
||||
// calculation check
|
||||
|
||||
Interface::matrix_to_stl(X,resu_stl);
|
||||
|
||||
STL_interface<typename Interface::real_type>::matrix_matrix_product(A_stl,B_stl,X_stl,_size);
|
||||
|
||||
typename Interface::real_type error=
|
||||
STL_interface<typename Interface::real_type>::norm_diff(X_stl,resu_stl);
|
||||
|
||||
if (error>1.e-6){
|
||||
INFOS("WRONG CALCULATION...residual=" << error);
|
||||
// exit(1);
|
||||
if (_size<200)
|
||||
{
|
||||
Interface::matrix_to_stl(X,resu_stl);
|
||||
STL_interface<typename Interface::real_type>::matrix_matrix_product(A_stl,B_stl,X_stl,_size);
|
||||
typename Interface::real_type error=
|
||||
STL_interface<typename Interface::real_type>::norm_diff(X_stl,resu_stl);
|
||||
if (error>1.e-6){
|
||||
INFOS("WRONG CALCULATION...residual=" << error);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private :
|
||||
|
@ -133,6 +133,7 @@ static char notrans = 'N';
|
||||
static char trans = 'T';
|
||||
static char nonunit = 'N';
|
||||
static char lower = 'L';
|
||||
static char right = 'R';
|
||||
static int intone = 1;
|
||||
|
||||
template<>
|
||||
@ -312,7 +313,7 @@ public :
|
||||
static inline void trisolve_lower_matrix(const gene_matrix & L, const gene_matrix& B, gene_matrix & X, int N){
|
||||
#ifdef PUREBLAS
|
||||
scopy_(&N, B, &intone, X, &intone);
|
||||
strsv_(&lower, ¬rans, &nonunit, &N, L, &N, X, &intone);
|
||||
strsm_(&right, &lower, ¬rans, &nonunit, &N, &N, &fone, L, &N, X, &N);
|
||||
#else
|
||||
cblas_scopy(N, B, 1, X, 1);
|
||||
cblas_strsm(CblasColMajor, CblasRight, CblasLower, CblasNoTrans, CblasNonUnit, N, N, 1, L, N, X, N);
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
#include "action_cholesky.hh"
|
||||
#include "action_lu_decomp.hh"
|
||||
#include "action_partial_lu_decomp.hh"
|
||||
// #include "action_partial_lu_decomp.hh"
|
||||
#include "action_trisolve_matrix.hh"
|
||||
|
||||
#ifdef HAS_LAPACK
|
||||
@ -55,7 +55,7 @@ int main()
|
||||
|
||||
#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_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
|
||||
|
@ -109,7 +109,7 @@ public :
|
||||
|
||||
static inline void symv(const gene_matrix & A, const gene_vector & B, gene_vector & X, int N){
|
||||
//X = (A.template marked<SelfAdjoint|LowerTriangular>() * B)/*.lazy()*/;
|
||||
ei_product_selfadjoint_vector<real,0,LowerTriangularBit>(N,A.data(),N, B.data(), X.data());
|
||||
ei_product_selfadjoint_vector<real,0,LowerTriangularBit,false,false>(N,A.data(),N, B.data(), 1, X.data(), 1);
|
||||
}
|
||||
|
||||
template<typename Dest, typename Src> static void triassign(Dest& dst, const Src& src)
|
||||
@ -186,11 +186,14 @@ public :
|
||||
}
|
||||
|
||||
static inline void trisolve_lower(const gene_matrix & L, const gene_vector& B, gene_vector& X, int N){
|
||||
X = L.template marked<LowerTriangular>().solveTriangular(B);
|
||||
X = L.template triangularView<LowerTriangular>().solve(B);
|
||||
}
|
||||
|
||||
static inline void trisolve_lower_matrix(const gene_matrix & L, const gene_matrix& B, gene_matrix& X, int N){
|
||||
X = L.template marked<LowerTriangular>().solveTriangular(B);
|
||||
// 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());
|
||||
}
|
||||
|
||||
static inline void cholesky(const gene_matrix & X, gene_matrix & C, int N){
|
||||
|
@ -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_decomp.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_decomp<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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user