)]}'
{
  "commit": "32cb9e4a12f19a10c6987e6f9769030f0f2c824c",
  "tree": "b94ab487606ee5a9d3a5794a143b770d151c3088",
  "parents": [
    "2dd82fb8a010227bdb534853f4d37f43e1031df0"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Sat Jul 07 17:11:38 2018 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Jul 09 23:48:45 2018 -0700"
  },
  "message": "Respect bounds when using Solver::Options::check_gradients\n\nWhen Solver::Options::check_gradients is true, Ceres internally\ncreates a new ProblemImpl object which wraps each CostFunction\nin the user\u0027s problem with a GradientCheckingCostFunction.\n\nDoing this also requires creating new ParameterBlock objects,\nand when support for upper and lower bounds was added to Ceres,\nCreateGradientCheckingProblemImpl should also have been updated\nto create a problem with the same parameter bounds. As a result,\nif check_gradients is enabled for a bounded problem, it constructs\nan unconstrained problem and solves it.\n\nThis CL fixes this, by introducing Problem::GetParameterLowerBound,\nand Problem::GetParameterUpperBound and using them to create a bounded\nproblem when checking gradients.\n\nThanks to @pbeeson for not only reporting this problem, but also\nproviding a small standalone reproduction which made debugging this\npossible.\n\nhttps://github.com/ceres-solver/ceres-solver/issues/379\n\nChange-Id: Id18eb858a7009bf4fa452a21b925922d13f3249f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1aee32d3c3f9ffb7902337350a42f0bd151d7d5c",
      "old_mode": 33188,
      "old_path": "docs/source/nnls_modeling.rst",
      "new_id": "f451b48568fce511a4da88f74943a196d64d0104",
      "new_mode": 33188,
      "new_path": "docs/source/nnls_modeling.rst"
    },
    {
      "type": "modify",
      "old_id": "e7b60f02b23b9a2041675e7c0e4b65389bd9413c",
      "old_mode": 33188,
      "old_path": "include/ceres/problem.h",
      "new_id": "43b27c89dd43b54e1ebcab3c3eea4f5020eeaf7c",
      "new_mode": 33188,
      "new_path": "include/ceres/problem.h"
    },
    {
      "type": "modify",
      "old_id": "2336ffe9ef8a3af3d81f6f90d1ea19e92f8dad98",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checking_cost_function.cc",
      "new_id": "6e2a82cdbad21f4a27d0777bc33270ba02e7f487",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checking_cost_function.cc"
    },
    {
      "type": "modify",
      "old_id": "6ae77f62faab6398aea1153e4cc71f08c8cc4864",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checking_cost_function_test.cc",
      "new_id": "fc8e071976b92e7c4dd1e54c4eec1891ab859895",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checking_cost_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "9149a5488ca6a9dc38b6e7c13cf1067626c8f737",
      "old_mode": 33188,
      "old_path": "internal/ceres/parameter_block.h",
      "new_id": "c07edef0c2d7303a93dcf52585ceaa17b77472c9",
      "new_mode": 33188,
      "new_path": "internal/ceres/parameter_block.h"
    },
    {
      "type": "modify",
      "old_id": "730ce642036fbe0ccca76eb230bccc3225e96862",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem.cc",
      "new_id": "956afa1edf541a28c60b70ce1c5600fb61011da5",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem.cc"
    },
    {
      "type": "modify",
      "old_id": "3fdbfedf235f487d383fbebce93fa2c934723435",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.cc",
      "new_id": "f627659f26467f8229805572a225a2bb12e7f212",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "88df82cc91e314b3fb7c2d35b831680e49c4c245",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.h",
      "new_id": "ff89e947cc2a8d0fc89a791f606f5c63a8321f8e",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.h"
    },
    {
      "type": "modify",
      "old_id": "3473c59a8f6103ec43569c662b968f4a1b265bc6",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_test.cc",
      "new_id": "80125834fab6345c20d627e1e88cfec201a84043",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_test.cc"
    },
    {
      "type": "modify",
      "old_id": "d38982a0d7999f06950ee3b81cc90c6c1e29ca8a",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver.cc",
      "new_id": "7ac60ac99a2ffb7c057da2d65d66ee8da87850d4",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver.cc"
    }
  ]
}
