)]}'
{
  "commit": "f44907f702d1d53724064f72d18e177a4f2fbfeb",
  "tree": "0d76efae8610343c8259a44b33004a0b1abd8015",
  "parents": [
    "9d5fea19f130750a93eb14dbda9992ea7db59311"
  ],
  "author": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Fri Jul 06 13:52:32 2012 -0700"
  },
  "committer": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Wed Jul 11 09:44:45 2012 -0700"
  },
  "message": "Compute the gradient if requested in the evaluator\n\nThis extends the Evaluator interface to support evaluating the\ngradient in addition to the residuals and jacobian, if requested.\n\n   bool Evaluate(const double* state,\n                 double* cost,\n                 double* residuals,\n                 double* gradient,  \u003c----------- NEW\n                 SparseMatrix* jacobian) \u003d 0;\n\nThe ProgramEvaluator is extended to support the new gradient\nevaluation. This required some gymnastics around the block\nevaluate preparer, which now contains a scratch evaluate preparer\nfor the case that no jacobian is requested but the gradient is.\n\nGradient evaluation is a prerequisite for the planned suite of\nfirst order methods, including nonlinear conjugate gradient,\nCG_DESCENT, L-BFGS, trust region with line search, and more.\n\nThis also considerably refactors the evaluator_test to make it\nshorter and check the results for all combinations of the optional\nparameters [residuals, gradient, jacobian].\n\nChange-Id: Ic7d0fec028dc5ffebc08ee079ad04eeaf6e02582\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "05e63eb560b1e717faf019737631c21941090e8b",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_evaluate_preparer.cc",
      "new_id": "9edc4fa23bd8e69d0b4d99998ed49885a331214d",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_evaluate_preparer.cc"
    },
    {
      "type": "modify",
      "old_id": "a7869311e6e2c5afef7252093dc250bd364049aa",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_evaluate_preparer.h",
      "new_id": "354acc031f4fc934197e3425142ee01c1bd95b20",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_evaluate_preparer.h"
    },
    {
      "type": "modify",
      "old_id": "52a58bb43a6abd43e44448f918a2f0d7e77ff60c",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_jacobian_writer.cc",
      "new_id": "f90c350cc80a4813094d09336c87263e6c7a0bad",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_jacobian_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "adefdd266609376a8bea031686aea8f40e081a56",
      "old_mode": 33188,
      "old_path": "internal/ceres/evaluator.h",
      "new_id": "e80efa1c5ea67d3d467c3718d6d1a75c9b968a7b",
      "new_mode": 33188,
      "new_path": "internal/ceres/evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "b7381a447b5925faf83fc072c8cbb2285de2fd6f",
      "old_mode": 33188,
      "old_path": "internal/ceres/evaluator_test.cc",
      "new_id": "6fbb759e8aac12deb8417b0f8527042bb8a6623e",
      "new_mode": 33188,
      "new_path": "internal/ceres/evaluator_test.cc"
    },
    {
      "type": "modify",
      "old_id": "3d62272ec5c0bbadbd35c668fa36640b1c14fa9f",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.cc",
      "new_id": "f6704e44afa42f5dde53db0862cf90e2e8dbceb5",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.cc"
    },
    {
      "type": "modify",
      "old_id": "1386d3c6cb0e8a4f6436bc4abe1dcd4e67006958",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.h",
      "new_id": "61fa06b6c8d046f4316a4fa98b2ad8e2ce48bb68",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.h"
    },
    {
      "type": "modify",
      "old_id": "b309aadfb447c11351d889100dad2328419ebf92",
      "old_mode": 33188,
      "old_path": "internal/ceres/program_evaluator.h",
      "new_id": "6c48e7d76439063835c69814cfca5274cfbdcd78",
      "new_mode": 33188,
      "new_path": "internal/ceres/program_evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "c47569043c5ce5ec194c6c11d379e9caa140ee89",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer.cc",
      "new_id": "f990b8016e26191838b682e0919480572271833a",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "03297c0e05b1ebd4bd4fbfd3c574dfd0b15adb68",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer_test.cc",
      "new_id": "414567a73b4cd3cdb806a1140787fb81b338910e",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer_test.cc"
    }
  ]
}
