Fix max. linear solver iterations in ConjugateGradientsSolver Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f
diff --git a/internal/ceres/conjugate_gradients_solver.cc b/internal/ceres/conjugate_gradients_solver.cc index 56e7946..3071a09 100644 --- a/internal/ceres/conjugate_gradients_solver.cc +++ b/internal/ceres/conjugate_gradients_solver.cc
@@ -113,9 +113,8 @@ // Initial value of the quadratic model Q = x'Ax - 2 * b'x. double Q0 = -1.0 * xref.dot(bref + r); - for (summary.num_iterations = 1; - summary.num_iterations <= options_.max_num_iterations; - ++summary.num_iterations) { + for (summary.num_iterations = 1;; ++summary.num_iterations) { + // Apply preconditioner if (per_solve_options.preconditioner != NULL) { z.setZero(); @@ -227,6 +226,10 @@ StringPrintf("Convergence. |r| = %e <= %e.", norm_r, tol_r); break; } + + if (summary.num_iterations >= options_.max_num_iterations) { + break; + } } return summary;