10 #ifndef ITERATIVE_SOLVER_ITERATOR_H_
11 #define ITERATIVE_SOLVER_ITERATOR_H_
18 using namespace Eigen;
61 index_t max_iteration_limit=1000,
64 : m_max_iteration_limit(max_iteration_limit),
65 m_tolerence(absolute_tolerence+relative_tolerence*b.
norm()),
69 m_iter_info.iteration_count=0;
73 void begin(
const VectorXt& residual)
75 m_iter_info.residual_norm=residual.norm();
76 m_iter_info.iteration_count=0;
80 const bool end(
const VectorXt& residual)
82 m_iter_info.residual_norm=residual.norm();
84 m_success=m_iter_info.residual_norm < m_tolerence;
85 return m_success || m_iter_info.iteration_count >= m_max_iteration_limit;
97 m_iter_info.residual_norm=residual.norm();
99 m_success=m_iter_info.residual_norm < m_tolerence;
106 m_iter_info.iteration_count++;
114 const index_t m_max_iteration_limit;
125 #endif // HAVE_EIGEN3
126 #endif // ITERATIVE_SOLVER_ITERATOR_H_
double norm(double *v, double p, int n)
void begin(const VectorXt &residual)
struct shogun::_IterInfo IterInfo
struct that contains current state of the iteration for iterative linear solvers
const bool end(const VectorXt &residual)
template class that is used as an iterator for an iterative linear solver. In the iteration of solvin...
struct that contains current state of the iteration for iterative linear solvers
IterativeSolverIterator(const VectorXt &b, index_t max_iteration_limit=1000, float64_t relative_tolerence=1E-5, float64_t absolute_tolerence=1E-5)
const IterInfo get_iter_info() const
all of classes and functions are contained in the shogun namespace
const bool succeeded(const VectorXt &residual)
Matrix::Scalar max(Matrix m)