diff --git a/data/nist/Roszman1.dat b/data/nist/Roszman1.dat
index 0296837..1d67674 100644
--- a/data/nist/Roszman1.dat
+++ b/data/nist/Roszman1.dat
@@ -14,7 +14,7 @@
                predictor variable is the excited energy state.
                The argument to the ARCTAN function is in radians.
 
-Reference:     Roszman, L., NIST (19??).  
+Reference:     Roszman, L., NIST (19??).
                Quantum Defects for Sulfur I Atom.
 
 
@@ -38,7 +38,7 @@
           Starting Values                  Certified Values
 
         Start 1     Start 2           Parameter     Standard Deviation
-  b1 =      0.1         0.2         2.0196866396E-01  1.9172666023E-02
+  b1 =      0.1         0.2         1.20196866396E-0  1.9172666023E-02
   b2 =     -0.00001    -0.000005   -6.1953516256E-06  3.2058931691E-06
   b3 =   1000        1200           1.2044556708E+03  7.4050983057E+01
   b4 =   -100        -150          -1.8134269537E+02  4.9573513849E+01
diff --git a/examples/nist.cc b/examples/nist.cc
index fb85beb..2c1a4c5 100644
--- a/examples/nist.cc
+++ b/examples/nist.cc
@@ -363,24 +363,29 @@
   double certified_cost = summaries[nist_problem.num_starts()].initial_cost;
 
   int num_success = 0;
+  const int kMinNumMatchingDigits = 4;
   for (int start = 0; start < nist_problem.num_starts(); ++start) {
     const ceres::Solver::Summary& summary = summaries[start];
-    const int num_matching_digits =
-        -std::log10(1e-18 +
-                    fabs(summary.final_cost - certified_cost)
-                    / certified_cost);
-    std::cerr << "start " << start + 1 << " " ;
-    if (num_matching_digits > 4) {
-      ++num_success;
-      std::cerr <<  "SUCCESS";
+
+    int num_matching_digits = 0;
+    if (summary.final_cost < certified_cost) {
+      num_matching_digits = kMinNumMatchingDigits + 1;
     } else {
-      std::cerr << "FAILURE";
+      num_matching_digits =
+          -std::log10(fabs(summary.final_cost - certified_cost) / certified_cost);
     }
-    std::cerr << " digits: " << num_matching_digits;
-    std::cerr << " summary: "
-              << summary.BriefReport()
-              << std::endl;
+
+    if (num_matching_digits <= kMinNumMatchingDigits) {
+      std::cerr << "start " << start + 1 << " " ;
+      std::cerr <<  "FAILURE";
+      std::cerr << " summary: "
+                << summary.BriefReport()
+                << std::endl;
+    } else {
+      ++num_success;
+    }
   }
+
   return num_success;
 }
 
@@ -436,12 +441,45 @@
   // TODO(sameeragarwal): Test more combinations of non-linear and
   // linear solvers.
   ceres::Solver::Options options;
-  options.linear_solver_type = ceres::DENSE_QR;
-  options.max_num_iterations = 2000;
+  options.max_num_iterations = 10000;
   options.function_tolerance *= 1e-10;
   options.gradient_tolerance *= 1e-10;
   options.parameter_tolerance *= 1e-10;
 
+  options.linear_solver_type = ceres::DENSE_QR;
+  options.trust_region_strategy_type = ceres::LEVENBERG_MARQUARDT;
+  std::cerr << "Levenberg-Marquardt - DENSE_QR\n";
+  SolveNISTProblems(options);
+
+  options.trust_region_strategy_type = ceres::DOGLEG;
+  options.dogleg_type = ceres::TRADITIONAL_DOGLEG;
+  std::cerr << "\n\nTraditional Dogleg - DENSE_QR\n\n";
+  SolveNISTProblems(options);
+
+  options.trust_region_strategy_type = ceres::DOGLEG;
+  options.dogleg_type = ceres::SUBSPACE_DOGLEG;
+  std::cerr << "\n\nSubspace Dogleg - DENSE_QR\n\n";
+  SolveNISTProblems(options);
+
+  options.linear_solver_type = ceres::DENSE_NORMAL_CHOLESKY;
+  options.trust_region_strategy_type = ceres::LEVENBERG_MARQUARDT;
+  std::cerr << "Levenberg-Marquardt - DENSE_NORMAL_CHOLESKY\n";
+  SolveNISTProblems(options);
+
+  options.trust_region_strategy_type = ceres::DOGLEG;
+  options.dogleg_type = ceres::TRADITIONAL_DOGLEG;
+  std::cerr << "\n\nTraditional Dogleg - DENSE_NORMAL_CHOLESKY\n\n";
+  SolveNISTProblems(options);
+
+  options.trust_region_strategy_type = ceres::DOGLEG;
+  options.dogleg_type = ceres::SUBSPACE_DOGLEG;
+  std::cerr << "\n\nSubspace Dogleg - DENSE_NORMAL_CHOLESKY\n\n";
+  SolveNISTProblems(options);
+
+  options.linear_solver_type = ceres::CGNR;
+  options.preconditioner_type = ceres::JACOBI;
+  options.trust_region_strategy_type = ceres::LEVENBERG_MARQUARDT;
+  std::cerr << "Levenberg-Marquardt - CGNR + JACOBI\n";
   SolveNISTProblems(options);
 
   return 0;
