Minor corrections based on Jim Roseborough's comments Change-Id: I4a8c7a454ddf038a3ed2567c101f9aee582044bf
diff --git a/include/ceres/types.h b/include/ceres/types.h index 9798314..edf404a 100644 --- a/include/ceres/types.h +++ b/include/ceres/types.h
@@ -165,7 +165,7 @@ // functions. The generalization can be performed in a number of // different ways, resulting in a variety of search directions. The // precise choice of the non-linear conjugate gradient algorithm - // used is determined by NonlineConjuateGradientType. + // used is determined by NonlinerConjuateGradientType. NONLINEAR_CONJUGATE_GRADIENT, // A limited memory approximation to the inverse Hessian is
diff --git a/internal/ceres/line_search_minimizer.cc b/internal/ceres/line_search_minimizer.cc index 3392194..636289f 100644 --- a/internal/ceres/line_search_minimizer.cc +++ b/internal/ceres/line_search_minimizer.cc
@@ -63,7 +63,10 @@ namespace internal { namespace { // Small constant for various floating point issues. +// TODO(sameeragarwal): Change to a better name if this has only one +// use. const double kEpsilon = 1e-12; + bool Evaluate(Evaluator* evaluator, const Vector& x, LineSearchMinimizer::State* state) {
diff --git a/internal/ceres/polynomial.cc b/internal/ceres/polynomial.cc index 2134d6e..3238b89 100644 --- a/internal/ceres/polynomial.cc +++ b/internal/ceres/polynomial.cc
@@ -185,6 +185,14 @@ Vector DifferentiatePolynomial(const Vector& polynomial) { const int degree = polynomial.rows() - 1; CHECK_GE(degree, 0); + + // Degree zero polynomials are constants, and their derivative does + // not result in a smaller degree polynomial, just a degree zero + // polynomial with value zero. + if (degree == 0) { + return Eigen::VectorXd::Zero(1); + } + Vector derivative(degree); for (int i = 0; i < degree; ++i) { derivative(i) = (degree - i) * polynomial(i);
diff --git a/internal/ceres/polynomial_test.cc b/internal/ceres/polynomial_test.cc index f56352f..7c992fa 100644 --- a/internal/ceres/polynomial_test.cc +++ b/internal/ceres/polynomial_test.cc
@@ -225,7 +225,8 @@ Vector polynomial(1); polynomial(0) = 1.0; const Vector derivative = DifferentiatePolynomial(polynomial); - EXPECT_EQ(derivative.rows(), 0); + EXPECT_EQ(derivative.rows(), 1); + EXPECT_EQ(derivative(0), 0); } TEST(Polynomial, DifferentiateQuadraticPolynomial) {