)]}'
{
  "commit": "7124c3474cd201134c3a3350b46aca468f1edafa",
  "tree": "75459f6bf82c80508e43cb88173ecf4e335d7909",
  "parents": [
    "54fc9423673886ac9ed3fe329a80f07544aeea70"
  ],
  "author": {
    "name": "Alex Stewart",
    "email": "alexs.mac@gmail.com",
    "time": "Thu Nov 07 16:10:02 2013 +0000"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sandwichmaker@gmail.com",
    "time": "Thu Nov 14 17:40:10 2013 +0000"
  },
  "message": "Fixes for some line search bugs \u0026 corner cases.\n\n- Increase precision of numeric values output in error messages to\n  allow for easier debugging.\n- Ensure termination after Wolfe search bracketing phase if bracket\n  width has been shrunk to below tolerance.\n- Cleaned up return value for BracketingPhase(), now false iff\n  optimisation should stop, true otherwise.\n- Fix bug whereby we would mark a step size as satisfying the Wolfe\n  conditions when it did not due to numerical issues in the cost\n  function.\n- Adding explanation of a subtlety in which a zoom could still be\n  acceptably invoked with bracket_low.f \u003e bracket_high.f.\n- Replacing hard check of a pre-condition of ZoomPhase() with a\n  conditional return if not satisfied to address issue whereby a\n  bracket could be incorrectly identified due to inconsistent values\n  \u0026 gradients returned from the cost function.\n- Adding missing check for step size validity in line search minimizer.\n- Adding ToDebugString() for FunctionSample.\n\nChange-Id: Iad98e635749877f80c079ebad126bf022d82232d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8323896915a5483ebe004f09e7ea0975060a8fa0",
      "old_mode": 33188,
      "old_path": "internal/ceres/line_search.cc",
      "new_id": "2601398ea97424b90741d85a840632165fc99877",
      "new_mode": 33188,
      "new_path": "internal/ceres/line_search.cc"
    },
    {
      "type": "modify",
      "old_id": "b7e96c865f231cf58aa60bb15866e5b323bdea30",
      "old_mode": 33188,
      "old_path": "internal/ceres/line_search_minimizer.cc",
      "new_id": "1093bad08b0e142e747b5784c8251639aab0aa0e",
      "new_mode": 33188,
      "new_path": "internal/ceres/line_search_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "3238b89670eb0b68f8e524abed96dbd9d40f1fdf",
      "old_mode": 33188,
      "old_path": "internal/ceres/polynomial.cc",
      "new_id": "feec884799fd8b72227a49bd67ff289b168a45ca",
      "new_mode": 33188,
      "new_path": "internal/ceres/polynomial.cc"
    },
    {
      "type": "modify",
      "old_id": "42ffdcb13c53747e2b06e4a8271c227e51dc574b",
      "old_mode": 33188,
      "old_path": "internal/ceres/polynomial.h",
      "new_id": "80ce77e6ae11879a3bdf4666603515631d15db2b",
      "new_mode": 33188,
      "new_path": "internal/ceres/polynomial.h"
    },
    {
      "type": "modify",
      "old_id": "0445cfb122180b9863b14bf227e1392b9dd11087",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver.cc",
      "new_id": "1420fd8a15e3a3fe6bab18838debec57fa0a9cfa",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver.cc"
    }
  ]
}
