diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 8bebf9b..390bb0a 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -716,6 +716,8 @@
 
     LineSearchDirectionType line_search_direction_type;
     LineSearchType line_search_type;
+    LineSearchInterpolationType line_search_interpolation_type;
+    NonlinearConjugateGradient nonlinear_conjugate_gradient_type;
 
     int max_lbfgs_rank;
   };
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc
index 9ff2d15..426a270 100644
--- a/internal/ceres/solver.cc
+++ b/internal/ceres/solver.cc
@@ -152,6 +152,7 @@
 };
 
 using internal::StringAppendF;
+using internal::StringPrintf;
 
 string Solver::Summary::FullReport() const {
   string report =
@@ -224,9 +225,6 @@
       StringAppendF(&report, "Preconditioner      %25s%25s\n",
                     PreconditionerTypeToString(preconditioner_type),
                     PreconditionerTypeToString(preconditioner_type));
-    } else {
-      StringAppendF(&report, "Preconditioner      %25s%25s\n",
-                    "N/A", "N/A");
     }
 
     StringAppendF(&report, "Threads             % 25d% 25d\n",
@@ -266,18 +264,29 @@
   } else {
     // LINE_SEARCH HEADER
     StringAppendF(&report, "\nMinimizer                 %19s\n", "LINE_SEARCH");
-    if (line_search_direction_type == LBFGS) {
-      StringAppendF(&report, "Line search direction     %19s(%d)\n",
-                    LineSearchDirectionTypeToString(line_search_direction_type),
-                    max_lbfgs_rank);
-    } else {
-      StringAppendF(&report, "Line search direction     %19s\n",
-                    LineSearchDirectionTypeToString(
-                        line_search_direction_type));
-    }
-    StringAppendF(&report, "Line search type          %19s\n",
-                  LineSearchTypeToString(line_search_type));
 
+
+    string line_search_direction_string;
+    if (line_search_direction_type == LBFGS) {
+      line_search_direction_string = StringPrintf("LBFGS (%d)", max_lbfgs_rank);
+    } else if (line_search_direction_type == NONLINEAR_CONJUGATE_GRADIENT) {
+      line_search_direction_string =
+          NonlinearConjugateGradientTypeToString(
+              nonlinear_conjugate_gradient_type);
+    } else {
+      line_search_direction_string =
+          LineSearchDirectionTypeToString(line_search_direction_type);
+    }
+
+    StringAppendF(&report, "Line search direction     %19s\n",
+                  line_search_direction_string.c_str());
+
+    const string line_search_type_string =
+        StringPrintf("%s %s",
+                     LineSearchInterpolationTypeToString(line_search_interpolation_type),
+                     LineSearchTypeToString(line_search_type));
+    StringAppendF(&report, "Line search type          %19s\n",
+                  line_search_type_string.c_str());
     StringAppendF(&report, "\n");
 
     StringAppendF(&report, "%45s    %21s\n", "Given",  "Used");
@@ -307,10 +316,16 @@
 
   StringAppendF(&report, "\nMinimizer iterations         % 16d\n",
                 num_successful_steps + num_unsuccessful_steps);
-  StringAppendF(&report, "Successful steps               % 14d\n",
-                num_successful_steps);
-  StringAppendF(&report, "Unsuccessful steps             % 14d\n",
-                num_unsuccessful_steps);
+
+  // Successful/Unsuccessful steps only matter in the case of the
+  // trust region solver. Line search terminates when it encounters
+  // the first unsuccessful step.
+  if (minimizer_type == TRUST_REGION) {
+    StringAppendF(&report, "Successful steps               % 14d\n",
+                  num_successful_steps);
+    StringAppendF(&report, "Unsuccessful steps             % 14d\n",
+                  num_unsuccessful_steps);
+  }
   if (inner_iterations_used) {
     StringAppendF(&report, "Steps with inner iterations    % 14d\n",
                   num_inner_iteration_steps);
diff --git a/internal/ceres/solver_impl.cc b/internal/ceres/solver_impl.cc
index 1696e3a..b5d6fcb 100644
--- a/internal/ceres/solver_impl.cc
+++ b/internal/ceres/solver_impl.cc
@@ -624,6 +624,11 @@
       original_options.line_search_direction_type;
   summary->max_lbfgs_rank = original_options.max_lbfgs_rank;
   summary->line_search_type = original_options.line_search_type;
+  summary->line_search_interpolation_type =
+      original_options.line_search_interpolation_type;
+  summary->nonlinear_conjugate_gradient_type =
+      original_options.nonlinear_conjugate_gradient_type;
+
   summary->num_parameter_blocks = original_program->NumParameterBlocks();
   summary->num_parameters = original_program->NumParameters();
   summary->num_residual_blocks = original_program->NumResidualBlocks();
