Conditionally log evaluation failure warnings. Logging was happening unconditionally and that is rather jarring in certain circumstances, e.g., when ceres is being called inside a RANSAC loop. Thanks to Bryan Klingner for reporting this. Change-Id: I97a0b6c48df51f5f7362eb9d46654712ef044a00
diff --git a/internal/ceres/trust_region_minimizer.cc b/internal/ceres/trust_region_minimizer.cc index 7352ac2..c41b189 100644 --- a/internal/ceres/trust_region_minimizer.cc +++ b/internal/ceres/trust_region_minimizer.cc
@@ -410,13 +410,15 @@ NULL, NULL, NULL)) { - LOG(WARNING) << "Step failed to evaluate. " - << "Treating it as a step with infinite cost"; + LOG_IF(WARNING, is_not_silent) + << "Step failed to evaluate. " + << "Treating it as a step with infinite cost"; new_cost = numeric_limits<double>::max(); } } else { - LOG(WARNING) << "x_plus_delta = Plus(x, delta) failed. " - << "Treating it as a step with infinite cost"; + LOG_IF(WARNING, is_not_silent) + << "x_plus_delta = Plus(x, delta) failed. " + << "Treating it as a step with infinite cost"; } if (new_cost < std::numeric_limits<double>::max()) {