56 #include "../../../../Eigen/src/Core/util/NonMPL2.h" 58 #ifndef EIGEN_ITERATION_CONTROLLER_H 59 #define EIGEN_ITERATION_CONTROLLER_H 78 double m_resminreach, m_resadd;
87 m_nit = 0; m_res = 0.0; m_written =
false;
88 m_resminreach = 1E50; m_resadd = 0.0;
95 void operator ++(
int) { m_nit++; m_written =
false; m_resadd +=
m_res; }
96 void operator ++() { (*this)++; }
98 bool first() {
return m_nit == 0; }
101 int noiseLevel()
const {
return m_noise; }
102 void setNoiseLevel(
int n) { m_noise = n; }
103 void reduceNoiseLevel() {
if (m_noise > 0) m_noise--; }
105 double maxResidual()
const {
return m_resmax; }
106 void setMaxResidual(
double r) { m_resmax = r; }
108 double residual()
const {
return m_res; }
116 size_t iteration()
const {
return m_nit; }
117 void setIteration(
size_t i) { m_nit = i; }
119 size_t maxIterarions()
const {
return m_maxiter; }
120 void setMaxIterations(
size_t i) { m_maxiter = i; }
122 double rhsNorm()
const {
return m_rhsn; }
123 void setRhsNorm(
double r) { m_rhsn = r; }
125 bool converged()
const {
return m_res <= m_rhsn *
m_resmax; }
126 bool converged(
double nr)
130 m_resminreach = (std::min)(m_resminreach, m_res);
133 template<
typename VectorType>
bool converged(
const VectorType &v)
134 {
return converged(v.squaredNorm()); }
136 bool finished(
double nr)
138 if (m_callback) m_callback(*
this);
139 if (m_noise > 0 && !m_written)
144 return (m_nit >= m_maxiter || converged(nr));
146 template <
typename VectorType>
154 #endif // EIGEN_ITERATION_CONTROLLER_H double m_rhsn
Right hand side norm.
Definition: IterationController.h:74
iterative scaling algorithm to equilibrate rows and column norms in matrices
Definition: TestIMU_Common.h:87
double m_resmax
maximum residual
Definition: IterationController.h:77
RealScalar squaredNorm() const
Definition: Dot.h:113
size_t m_maxiter
Max. number of iterations.
Definition: IterationController.h:75
int m_noise
if noise > 0 iterations are printed
Definition: IterationController.h:76
size_t m_nit
iteration number
Definition: IterationController.h:79
Controls the iterations of the iterative solvers.
Definition: IterationController.h:71
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
double m_res
last computed residual
Definition: IterationController.h:80