Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-01-13 23:17:54 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-01-13 23:18:09 +0400
commitef67b9eec4edbeec8d21fa6db798cd6ef68ab344 (patch)
treedabfafbef283b8d8618633810ce69e847d66ebbf /extern/libmv
parentc48c62a8314c51608e7b34ac0df474ce3fca0b02 (diff)
Ceres: more warnings cleanup
Diffstat (limited to 'extern/libmv')
-rw-r--r--extern/libmv/third_party/ceres/ChangeLog21
-rw-r--r--extern/libmv/third_party/ceres/internal/ceres/line_search.cc4
-rw-r--r--extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc155
3 files changed, 89 insertions, 91 deletions
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index e80015534d6..9c6ec324a24 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,3 +1,13 @@
+commit 15bf0d5018dfe432ef67e726b248efcf3b58bc4f
+Author: Sergey Sharybin <sergey.vfx@gmail.com>
+Date: Mon Jan 13 20:38:28 2014 +0600
+
+ Code cleanup: fix no previous declaration warnings
+
+ Move internally used functions to an anonymous namespace,
+
+ Change-Id: I84c98facf901e64771d131b088e20e2c033cab70
+
commit 80a53eebfd28bfc032cedbf7852d5c56eb1d5af5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Jan 9 12:40:54 2014 -0800
@@ -675,14 +685,3 @@ Date: Tue Nov 5 13:47:30 2013 -0800
with miniglog.
Change-Id: Ia1d1d1483e03469c71fde029b62ca6d84e9b27e0
-
-commit b5be6b9c065a02158337ee7eacfdb8be811dec7f
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Tue Nov 5 13:10:27 2013 +0000
-
- Cleaning up messages output when SuiteSparse is not found.
-
- - Automatically generated failure message now provides more
- information as to which sub-modules are missing.
-
- Change-Id: I6eed94af49263540b8f87917b75c41b8f49658a0
diff --git a/extern/libmv/third_party/ceres/internal/ceres/line_search.cc b/extern/libmv/third_party/ceres/internal/ceres/line_search.cc
index 77d1369634b..c3f02134c6f 100644
--- a/extern/libmv/third_party/ceres/internal/ceres/line_search.cc
+++ b/extern/libmv/third_party/ceres/internal/ceres/line_search.cc
@@ -67,8 +67,6 @@ FunctionSample ValueAndGradientSample(const double x,
return sample;
};
-} // namespace
-
// Convenience stream operator for pushing FunctionSamples into log messages.
std::ostream& operator<<(std::ostream &os,
const FunctionSample& sample) {
@@ -76,6 +74,8 @@ std::ostream& operator<<(std::ostream &os,
return os;
}
+} // namespace
+
LineSearch::LineSearch(const LineSearch::Options& options)
: options_(options) {}
diff --git a/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc b/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
index cf0e2515ab6..1001a551d8c 100644
--- a/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
+++ b/extern/libmv/third_party/ceres/internal/ceres/solver_impl.cc
@@ -224,6 +224,83 @@ void SummarizeReducedProgram(const Program& program, Solver::Summary* summary) {
summary->num_residuals_reduced = program.NumResiduals();
}
+bool LineSearchOptionsAreValid(const Solver::Options& options,
+ string* message) {
+ // Validate values for configuration parameters supplied by user.
+ if ((options.line_search_direction_type == ceres::BFGS ||
+ options.line_search_direction_type == ceres::LBFGS) &&
+ options.line_search_type != ceres::WOLFE) {
+ *message =
+ string("Invalid configuration: require line_search_type == "
+ "ceres::WOLFE when using (L)BFGS to ensure that underlying "
+ "assumptions are guaranteed to be satisfied.");
+ return false;
+ }
+ if (options.max_lbfgs_rank <= 0) {
+ *message =
+ string("Invalid configuration: require max_lbfgs_rank > 0");
+ return false;
+ }
+ if (options.min_line_search_step_size <= 0.0) {
+ *message =
+ "Invalid configuration: require min_line_search_step_size > 0.0.";
+ return false;
+ }
+ if (options.line_search_sufficient_function_decrease <= 0.0) {
+ *message =
+ string("Invalid configuration: require ") +
+ string("line_search_sufficient_function_decrease > 0.0.");
+ return false;
+ }
+ if (options.max_line_search_step_contraction <= 0.0 ||
+ options.max_line_search_step_contraction >= 1.0) {
+ *message = string("Invalid configuration: require ") +
+ string("0.0 < max_line_search_step_contraction < 1.0.");
+ return false;
+ }
+ if (options.min_line_search_step_contraction <=
+ options.max_line_search_step_contraction ||
+ options.min_line_search_step_contraction > 1.0) {
+ *message = string("Invalid configuration: require ") +
+ string("max_line_search_step_contraction < ") +
+ string("min_line_search_step_contraction <= 1.0.");
+ return false;
+ }
+ // Warn user if they have requested BISECTION interpolation, but constraints
+ // on max/min step size change during line search prevent bisection scaling
+ // from occurring. Warn only, as this is likely a user mistake, but one which
+ // does not prevent us from continuing.
+ LOG_IF(WARNING,
+ (options.line_search_interpolation_type == ceres::BISECTION &&
+ (options.max_line_search_step_contraction > 0.5 ||
+ options.min_line_search_step_contraction < 0.5)))
+ << "Line search interpolation type is BISECTION, but specified "
+ << "max_line_search_step_contraction: "
+ << options.max_line_search_step_contraction << ", and "
+ << "min_line_search_step_contraction: "
+ << options.min_line_search_step_contraction
+ << ", prevent bisection (0.5) scaling, continuing with solve regardless.";
+ if (options.max_num_line_search_step_size_iterations <= 0) {
+ *message = string("Invalid configuration: require ") +
+ string("max_num_line_search_step_size_iterations > 0.");
+ return false;
+ }
+ if (options.line_search_sufficient_curvature_decrease <=
+ options.line_search_sufficient_function_decrease ||
+ options.line_search_sufficient_curvature_decrease > 1.0) {
+ *message = string("Invalid configuration: require ") +
+ string("line_search_sufficient_function_decrease < ") +
+ string("line_search_sufficient_curvature_decrease < 1.0.");
+ return false;
+ }
+ if (options.max_line_search_step_expansion <= 1.0) {
+ *message = string("Invalid configuration: require ") +
+ string("max_line_search_step_expansion > 1.0.");
+ return false;
+ }
+ return true;
+}
+
} // namespace
void SolverImpl::TrustRegionMinimize(
@@ -618,85 +695,7 @@ void SolverImpl::TrustRegionSolve(const Solver::Options& original_options,
event_logger.AddEvent("PostProcess");
}
-
#ifndef CERES_NO_LINE_SEARCH_MINIMIZER
-bool LineSearchOptionsAreValid(const Solver::Options& options,
- string* message) {
- // Validate values for configuration parameters supplied by user.
- if ((options.line_search_direction_type == ceres::BFGS ||
- options.line_search_direction_type == ceres::LBFGS) &&
- options.line_search_type != ceres::WOLFE) {
- *message =
- string("Invalid configuration: require line_search_type == "
- "ceres::WOLFE when using (L)BFGS to ensure that underlying "
- "assumptions are guaranteed to be satisfied.");
- return false;
- }
- if (options.max_lbfgs_rank <= 0) {
- *message =
- string("Invalid configuration: require max_lbfgs_rank > 0");
- return false;
- }
- if (options.min_line_search_step_size <= 0.0) {
- *message =
- "Invalid configuration: require min_line_search_step_size > 0.0.";
- return false;
- }
- if (options.line_search_sufficient_function_decrease <= 0.0) {
- *message =
- string("Invalid configuration: require ") +
- string("line_search_sufficient_function_decrease > 0.0.");
- return false;
- }
- if (options.max_line_search_step_contraction <= 0.0 ||
- options.max_line_search_step_contraction >= 1.0) {
- *message = string("Invalid configuration: require ") +
- string("0.0 < max_line_search_step_contraction < 1.0.");
- return false;
- }
- if (options.min_line_search_step_contraction <=
- options.max_line_search_step_contraction ||
- options.min_line_search_step_contraction > 1.0) {
- *message = string("Invalid configuration: require ") +
- string("max_line_search_step_contraction < ") +
- string("min_line_search_step_contraction <= 1.0.");
- return false;
- }
- // Warn user if they have requested BISECTION interpolation, but constraints
- // on max/min step size change during line search prevent bisection scaling
- // from occurring. Warn only, as this is likely a user mistake, but one which
- // does not prevent us from continuing.
- LOG_IF(WARNING,
- (options.line_search_interpolation_type == ceres::BISECTION &&
- (options.max_line_search_step_contraction > 0.5 ||
- options.min_line_search_step_contraction < 0.5)))
- << "Line search interpolation type is BISECTION, but specified "
- << "max_line_search_step_contraction: "
- << options.max_line_search_step_contraction << ", and "
- << "min_line_search_step_contraction: "
- << options.min_line_search_step_contraction
- << ", prevent bisection (0.5) scaling, continuing with solve regardless.";
- if (options.max_num_line_search_step_size_iterations <= 0) {
- *message = string("Invalid configuration: require ") +
- string("max_num_line_search_step_size_iterations > 0.");
- return false;
- }
- if (options.line_search_sufficient_curvature_decrease <=
- options.line_search_sufficient_function_decrease ||
- options.line_search_sufficient_curvature_decrease > 1.0) {
- *message = string("Invalid configuration: require ") +
- string("line_search_sufficient_function_decrease < ") +
- string("line_search_sufficient_curvature_decrease < 1.0.");
- return false;
- }
- if (options.max_line_search_step_expansion <= 1.0) {
- *message = string("Invalid configuration: require ") +
- string("max_line_search_step_expansion > 1.0.");
- return false;
- }
- return true;
-}
-
void SolverImpl::LineSearchSolve(const Solver::Options& original_options,
ProblemImpl* original_problem_impl,
Solver::Summary* summary) {