Check return status in nist evaluation.

Previously, the return status was ignored, which meant that e.g. a
numerical failure (which returns 0 final error) would be counted as
correct answer (as the final error is at least as good as the certified
error).

Change-Id: Ia627d5fadf9b20100e628519af794ce0c0b195f4
diff --git a/examples/nist.cc b/examples/nist.cc
index 2b7efad..440ab5c 100644
--- a/examples/nist.cc
+++ b/examples/nist.cc
@@ -85,6 +85,14 @@
   }
 }
 
+bool IsSuccessfulTermination(ceres::SolverTerminationType status) {
+  return
+      (status == ceres::FUNCTION_TOLERANCE) ||
+      (status == ceres::GRADIENT_TOLERANCE) ||
+      (status == ceres::PARAMETER_TOLERANCE) ||
+      (status == ceres::USER_SUCCESS);
+}
+
 class NISTProblem {
  public:
   explicit NISTProblem(const std::string& filename) {
@@ -368,7 +376,8 @@
     const ceres::Solver::Summary& summary = summaries[start];
 
     int num_matching_digits = 0;
-    if (summary.final_cost < certified_cost) {
+    if (IsSuccessfulTermination(summary.termination_type)
+        && summary.final_cost < certified_cost) {
       num_matching_digits = kMinNumMatchingDigits + 1;
     } else {
       num_matching_digits =