)]}'
{
  "commit": "f7898fba1b92f0e996571b5bfa22a37f5e3644de",
  "tree": "27743595ecfa8990efb19ea5212c214b65d08e85",
  "parents": [
    "0a359d6198d257776a8831c3eb98f64ee91cf836"
  ],
  "author": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Sat May 05 20:55:08 2012 -0700"
  },
  "committer": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Sat May 05 20:55:08 2012 -0700"
  },
  "message": "Add a general sparse iterative solver: CGNR\n\nThis adds a new LinearOperator which implements symmetric\nproducts of a matrix, and a new CGNR solver to leverage\nCG to directly solve the normal equations. This also\nincludes a block diagonal preconditioner. In experiments\non problem-16, the non-preconditioned version is about\n1/5 the speed of SPARSE_SCHUR, and the preconditioned\nversion using block cholesky is about 20% slower than\nSPARSE_SCHUR.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bafdf25f49184665d8563a037536b0b4ce0ba5d4",
      "old_mode": 33188,
      "old_path": "examples/bundle_adjuster.cc",
      "new_id": "61cd41fe558ddf7eeabfeb1074f27a8aaa5ef5db",
      "new_mode": 33188,
      "new_path": "examples/bundle_adjuster.cc"
    },
    {
      "type": "modify",
      "old_id": "7891138e532b3bd3a88aab8282444b01b621c912",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "03d650aa645abe5ab7afa044fee86e12861e69b3",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0779a91ab1802fcc00bebdc605aea6ad82b3cb73",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_diagonal_preconditioner.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "561b0db1cdce2d849fa11cedc086829bc813af90",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_diagonal_preconditioner.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94767fb67b80712211aa896ae48927dcc774ce3b",
      "new_mode": 33188,
      "new_path": "internal/ceres/cgnr_linear_operator.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2c88e33ea20fa049ffddfa9886e09b0d3248f527",
      "new_mode": 33188,
      "new_path": "internal/ceres/cgnr_solver.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db49b0717cefa70ad04a041b957a7a822da7fbed",
      "new_mode": 33188,
      "new_path": "internal/ceres/cgnr_solver.h"
    },
    {
      "type": "modify",
      "old_id": "38c3fdb6d30f4377691c4a3f253d9e8b12d6a6fb",
      "old_mode": 33188,
      "old_path": "internal/ceres/evaluator.cc",
      "new_id": "7ceb7ac955b3b498863d8d1732711c038bf33a30",
      "new_mode": 33188,
      "new_path": "internal/ceres/evaluator.cc"
    },
    {
      "type": "modify",
      "old_id": "48d8453b5ceab80c4bdfd9a1966cb159e485e7ce",
      "old_mode": 33188,
      "old_path": "internal/ceres/iterative_schur_complement_solver.cc",
      "new_id": "4379ebdbf127dfcd68d231816d9cac596168596f",
      "new_mode": 33188,
      "new_path": "internal/ceres/iterative_schur_complement_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "e3912eb1808e37bcf836b503833dbf5329e1bd9f",
      "old_mode": 33188,
      "old_path": "internal/ceres/linear_solver.cc",
      "new_id": "fd40252962f3b8bc0b9fabb9176405bd8c3eaea9",
      "new_mode": 33188,
      "new_path": "internal/ceres/linear_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "d28781321ab92f4f873860abf86102dd062fa108",
      "old_mode": 33188,
      "old_path": "internal/ceres/linear_solver.h",
      "new_id": "5860ecc8a7746ebb74c39b85c62d41aa88b7df6c",
      "new_mode": 33188,
      "new_path": "internal/ceres/linear_solver.h"
    },
    {
      "type": "modify",
      "old_id": "c54668ea03cecf5751cdb125caa36e38523bf2d7",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver.cc",
      "new_id": "c45c55f70327d021bd8a0069bbd83a6b45b961ba",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver.cc"
    },
    {
      "type": "modify",
      "old_id": "ff2f5ea82c7e5eb05545db256445c79f557fe4da",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl.cc",
      "new_id": "ed07d9dc6d7ca53b9673bd6861648f047ccb30cb",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver_impl.cc"
    }
  ]
}
