diff --git a/internal/ceres/system_test.cc b/internal/ceres/system_test.cc
index 3f635d0..429973f 100644
--- a/internal/ceres/system_test.cc
+++ b/internal/ceres/system_test.cc
@@ -64,10 +64,10 @@
 class PowellsFunction {
  public:
   PowellsFunction() {
-    x_[0] =  3.0;
+    x_[0] = 3.0;
     x_[1] = -1.0;
-    x_[2] =  0.0;
-    x_[3] =  1.0;
+    x_[2] = 0.0;
+    x_[3] = 1.0;
 
     problem_.AddResidualBlock(
         new AutoDiffCostFunction<F1, 1, 1, 1>(new F1), NULL, &x_[0], &x_[1]);
@@ -94,9 +94,8 @@
   // functions.
   class F1 {
    public:
-    template <typename T> bool operator()(const T* const x1,
-                                          const T* const x2,
-                                          T* residual) const {
+    template <typename T>
+    bool operator()(const T* const x1, const T* const x2, T* residual) const {
       // f1 = x1 + 10 * x2;
       *residual = *x1 + 10.0 * *x2;
       return true;
@@ -105,9 +104,8 @@
 
   class F2 {
    public:
-    template <typename T> bool operator()(const T* const x3,
-                                          const T* const x4,
-                                          T* residual) const {
+    template <typename T>
+    bool operator()(const T* const x3, const T* const x4, T* residual) const {
       // f2 = sqrt(5) (x3 - x4)
       *residual = sqrt(5.0) * (*x3 - *x4);
       return true;
@@ -116,9 +114,8 @@
 
   class F3 {
    public:
-    template <typename T> bool operator()(const T* const x2,
-                                          const T* const x4,
-                                          T* residual) const {
+    template <typename T>
+    bool operator()(const T* const x2, const T* const x4, T* residual) const {
       // f3 = (x2 - 2 x3)^2
       residual[0] = (x2[0] - 2.0 * x4[0]) * (x2[0] - 2.0 * x4[0]);
       return true;
@@ -127,9 +124,8 @@
 
   class F4 {
    public:
-    template <typename T> bool operator()(const T* const x1,
-                                          const T* const x4,
-                                          T* residual) const {
+    template <typename T>
+    bool operator()(const T* const x1, const T* const x4, T* residual) const {
       // f4 = sqrt(10) (x1 - x4)^2
       residual[0] = sqrt(10.0) * (x1[0] - x4[0]) * (x1[0] - x4[0]);
       return true;
