Adding Wolfe line search algorithm and full BFGS search direction options.

Change-Id: I9d3fb117805bdfa5bc33613368f45ae8f10e0d79
diff --git a/internal/ceres/low_rank_inverse_hessian.h b/internal/ceres/low_rank_inverse_hessian.h
index 6f3fc0c..7d293d0 100644
--- a/internal/ceres/low_rank_inverse_hessian.h
+++ b/internal/ceres/low_rank_inverse_hessian.h
@@ -61,10 +61,16 @@
  public:
   // num_parameters is the row/column size of the Hessian.
   // max_num_corrections is the rank of the Hessian approximation.
+  // use_approximate_eigenvalue_scaling controls whether the initial
+  // inverse Hessian used during Right/LeftMultiply() is scaled by
+  // the approximate eigenvalue of the true inverse Hessian at the
+  // current operating point.
   // The approximation uses:
   // 2 * max_num_corrections * num_parameters + max_num_corrections
   // doubles.
-  LowRankInverseHessian(int num_parameters, int max_num_corrections);
+  LowRankInverseHessian(int num_parameters,
+                        int max_num_corrections,
+                        bool use_approximate_eigenvalue_scaling);
   virtual ~LowRankInverseHessian() {}
 
   // Update the low rank approximation. delta_x is the change in the
@@ -86,8 +92,9 @@
  private:
   const int num_parameters_;
   const int max_num_corrections_;
+  const bool use_approximate_eigenvalue_scaling_;
   int num_corrections_;
-  double diagonal_;
+  double approximate_eigenvalue_scale_;
   Matrix delta_x_history_;
   Matrix delta_gradient_history_;
   Vector delta_x_dot_delta_gradient_;