Minor corrections based on Jim Roseborough's comments

Change-Id: I4a8c7a454ddf038a3ed2567c101f9aee582044bf
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) {