20 #ifndef ACTION_LU_SOLVE
21 #define ACTION_LU_SOLVE
22 #include "utilities.h"
31 template<
class Interface>
37 static inline std::string
name(
void )
51 typename Interface::stl_matrix A_stl;
52 typename Interface::stl_vector B_stl;
53 typename Interface::stl_vector X_stl;
55 init_matrix<pseudo_random>(A_stl,
size);
56 init_vector<pseudo_random>(B_stl,
size);
57 init_vector<null_function>(X_stl,
size);
61 typename Interface::gene_matrix
A;
62 typename Interface::gene_vector
B;
63 typename Interface::gene_vector
X;
65 typename Interface::gene_matrix LU;
67 Interface::matrix_from_stl(
A,A_stl);
68 Interface::vector_from_stl(
B,B_stl);
69 Interface::vector_from_stl(
X,X_stl);
70 Interface::matrix_from_stl(LU,A_stl);
74 typename Interface::Pivot_Vector pivot;
75 Interface::new_Pivot_Vector(pivot,
size);
85 for (
int ii=0;ii<nb_calc;ii++){
89 Interface::LU_factor(LU,pivot,
size);
93 Interface::LU_solve(LU,pivot,
B,
X,
size);
105 typename Interface::stl_vector B_new_stl(
size);
106 Interface::vector_to_stl(
X,X_stl);
110 typename Interface::real_type
error=
114 INFOS(
"WRONG CALCULATION...residual=" <<
error);
122 Interface::free_matrix(
A,
size);
123 Interface::free_vector(
B);
124 Interface::free_vector(
X);
125 Interface::free_Pivot_Vector(pivot);