diff --git a/internal/ceres/lapack.cc b/internal/ceres/lapack.cc
index 04a87e8..e124d75 100644
--- a/internal/ceres/lapack.cc
+++ b/internal/ceres/lapack.cc
@@ -94,7 +94,7 @@
     *message =
         StringPrintf(
             "LAPACK::dpotrf numerical failure. "
-             "The leading minor of order %d  is not positive definite.", info);
+             "The leading minor of order %d is not positive definite.", info);
     return LINEAR_SOLVER_FAILURE;
   }
 
diff --git a/internal/ceres/line_search_minimizer.cc b/internal/ceres/line_search_minimizer.cc
index 4590afe..67c2648 100644
--- a/internal/ceres/line_search_minimizer.cc
+++ b/internal/ceres/line_search_minimizer.cc
@@ -252,7 +252,7 @@
       // have already reached our specified maximum number of restarts,
       // terminate optimization.
       summary->error =
-          StringPrintf("Termination: Line search direction failure: specified "
+          StringPrintf("Terminating: Line search direction failure: specified "
                        "max_num_line_search_direction_restarts: %d reached.",
                        options.max_num_line_search_direction_restarts);
       summary->termination_type = NUMERICAL_FAILURE;
diff --git a/internal/ceres/suitesparse.cc b/internal/ceres/suitesparse.cc
index 3cafe07..8079bc1 100644
--- a/internal/ceres/suitesparse.cc
+++ b/internal/ceres/suitesparse.cc
@@ -138,7 +138,7 @@
 
   if (cc_.status != CHOLMOD_OK) {
     *message = StringPrintf("cholmod_analyze failed. error code: %d",
-                           cc_.status);
+                            cc_.status);
     return NULL;
   }
 
@@ -173,7 +173,7 @@
   }
   if (cc_.status != CHOLMOD_OK) {
     *message = StringPrintf("cholmod_analyze failed. error code: %d",
-                           cc_.status);
+                            cc_.status);
     return NULL;
   }
 
@@ -193,7 +193,7 @@
   }
   if (cc_.status != CHOLMOD_OK) {
     *message = StringPrintf("cholmod_analyze failed. error code: %d",
-                           cc_.status);
+                            cc_.status);
     return NULL;
   }
 
@@ -292,8 +292,8 @@
       }
 
       *message = "CHOLMOD failure: cholmod_factorize returned false "
-                "but cholmod_common::status is CHOLMOD_OK."
-                "Please report this to ceres-solver@googlegroups.com.";
+          "but cholmod_common::status is CHOLMOD_OK."
+          "Please report this to ceres-solver@googlegroups.com.";
       return LINEAR_SOLVER_FATAL_ERROR;
     default:
       *message =
diff --git a/internal/ceres/trust_region_minimizer.cc b/internal/ceres/trust_region_minimizer.cc
index 802f0bf..8c5800e 100644
--- a/internal/ceres/trust_region_minimizer.cc
+++ b/internal/ceres/trust_region_minimizer.cc
@@ -155,10 +155,10 @@
 
   if (iteration_summary.gradient_max_norm <= absolute_gradient_tolerance) {
     summary->error = StringPrintf("Terminating: Gradient tolerance reached. "
-                                    "Relative gradient max norm: %e <= %e",
-                                    (iteration_summary.gradient_max_norm /
-                                     initial_gradient_max_norm),
-                                    options_.gradient_tolerance);
+                                  "Relative gradient max norm: %e <= %e",
+                                  (iteration_summary.gradient_max_norm /
+                                   initial_gradient_max_norm),
+                                  options_.gradient_tolerance);
     summary->termination_type = GRADIENT_TOLERANCE;
     VLOG_IF(1, is_not_silent) << summary->error;
     return;
diff --git a/internal/ceres/unsymmetric_linear_solver_test.cc b/internal/ceres/unsymmetric_linear_solver_test.cc
index 9784b46..949fdd1 100644
--- a/internal/ceres/unsymmetric_linear_solver_test.cc
+++ b/internal/ceres/unsymmetric_linear_solver_test.cc
@@ -99,13 +99,15 @@
                       per_solve_options,
                       x_regularized.data());
 
-    EXPECT_EQ(unregularized_solve_summary.termination_type, LINEAR_SOLVER_SUCCESS);
+    EXPECT_EQ(unregularized_solve_summary.termination_type,
+              LINEAR_SOLVER_SUCCESS);
 
     for (int i = 0; i < A_->num_cols(); ++i) {
       EXPECT_NEAR(sol_unregularized_[i], x_unregularized[i], 1e-8);
     }
 
-    EXPECT_EQ(regularized_solve_summary.termination_type, LINEAR_SOLVER_SUCCESS);
+    EXPECT_EQ(regularized_solve_summary.termination_type,
+              LINEAR_SOLVER_SUCCESS);
     for (int i = 0; i < A_->num_cols(); ++i) {
       EXPECT_NEAR(sol_regularized_[i], x_regularized[i], 1e-8);
     }
