19#ifndef ACTION_TRISOLVE
20#define ACTION_TRISOLVE
22#include "STL_interface.hh"
30template<
class Interface>
39 MESSAGE(
"Action_trisolve Ctor");
42 init_matrix<pseudo_random>(L_stl,_size);
43 init_vector<pseudo_random>(B_stl,_size);
44 init_vector<null_function>(X_stl,_size);
45 for (
int j=0;
j<_size; ++
j)
47 for (
int i=0;
i<
j; ++
i)
52 init_vector<null_function>(resu_stl,_size);
55 Interface::matrix_from_stl(L,L_stl);
56 Interface::vector_from_stl(X,X_stl);
57 Interface::vector_from_stl(
B,B_stl);
60 for (
int j=0;
j<_size; ++
j)
70 INFOS(
"illegal call to Action_trisolve Copy Ctor");
78 MESSAGE(
"Action_trisolve Dtor");
81 Interface::free_matrix(L,_size);
82 Interface::free_vector(
B);
83 Interface::free_vector(X);
88 static inline std::string
name(
void )
90 return "trisolve_vector_"+Interface::name();
102 Interface::trisolve_lower(L,
B,X,_size);
106 if (_size>128)
return;
108 Interface::vector_to_stl(X,resu_stl);
110 STL_interface<typename Interface::real_type>::trisolve_lower(L_stl,B_stl,X_stl,_size);
112 typename Interface::real_type error=
113 STL_interface<typename Interface::real_type>::norm_diff(X_stl,resu_stl);
116 INFOS(
"WRONG CALCULATION...residual=" << error);
124 typename Interface::stl_matrix L_stl;
125 typename Interface::stl_vector X_stl;
126 typename Interface::stl_vector B_stl;
127 typename Interface::stl_vector resu_stl;
129 typename Interface::gene_matrix L;
130 typename Interface::gene_vector X;
131 typename Interface::gene_vector
B;
int i
Definition BiCGSTAB_step_by_step.cpp:9
Scalar Scalar int size
Definition benchVecAdd.cpp:17
Definition action_trisolve.hh:31
Action_trisolve(int size)
Definition action_trisolve.hh:37
Action_trisolve(const Action_trisolve &)
Definition action_trisolve.hh:68
void calculate(void)
Definition action_trisolve.hh:101
~Action_trisolve(void)
Definition action_trisolve.hh:76
double nb_op_base(void)
Definition action_trisolve.hh:93
void initialize(void)
Definition action_trisolve.hh:97
void check_result()
Definition action_trisolve.hh:105
static std::string name(void)
Definition action_trisolve.hh:88
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2
#define INFOS(chain)
Definition utilities.h:22
#define MESSAGE(chain)
Definition utilities.h:76