mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-30 00:50:37 +08:00
Fix MSVC compilation errors
Disable the definition of `min`/`max` macros by defining `NOMINMAX` and prevent macro substitution in the public interface. Also, quiet floating-point comparisons are defined as template functions by the MSVC STL which causes compilation errors due to ambiguities in resolving the template parameter types. Fixes #668 Fixes #716 Fixes #718 Change-Id: I5fe7832a6a3a7ad0421a2557527528c34b88e9c7
This commit is contained in:
@@ -121,7 +121,7 @@ struct NumericDiff {
|
||||
// thus ridders_relative_initial_step_size is used.
|
||||
if (kMethod == RIDDERS) {
|
||||
min_step_size =
|
||||
std::max(min_step_size, options.ridders_relative_initial_step_size);
|
||||
(std::max)(min_step_size, options.ridders_relative_initial_step_size);
|
||||
}
|
||||
|
||||
// For each parameter in the parameter block, use finite differences to
|
||||
@@ -132,7 +132,7 @@ struct NumericDiff {
|
||||
num_residuals_internal);
|
||||
|
||||
for (int j = 0; j < parameter_block_size_internal; ++j) {
|
||||
const double delta = std::max(min_step_size, step_size(j));
|
||||
const double delta = (std::max)(min_step_size, step_size(j));
|
||||
|
||||
if (kMethod == RIDDERS) {
|
||||
if (!EvaluateRiddersJacobianColumn(functor,
|
||||
@@ -296,7 +296,7 @@ struct NumericDiff {
|
||||
// norm_error is supposed to decrease as the finite difference tableau
|
||||
// generation progresses, serving both as an estimate for differentiation
|
||||
// error and as a measure of differentiation numerical stability.
|
||||
double norm_error = std::numeric_limits<double>::max();
|
||||
double norm_error = (std::numeric_limits<double>::max)();
|
||||
|
||||
// Loop over decreasing step sizes until:
|
||||
// 1. Error is smaller than a given value (ridders_epsilon),
|
||||
@@ -342,7 +342,7 @@ struct NumericDiff {
|
||||
options.ridders_step_shrink_factor;
|
||||
|
||||
// Compute the difference between the previous value and the current.
|
||||
double candidate_error = std::max(
|
||||
double candidate_error = (std::max)(
|
||||
(current_candidates->col(k) - current_candidates->col(k - 1))
|
||||
.norm(),
|
||||
(current_candidates->col(k) - previous_candidates->col(k - 1))
|
||||
|
||||
Reference in New Issue
Block a user