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) {