)]}'
{
  "commit": "9d02b76dce7af9036fc7980b8adc9e55bba4686c",
  "tree": "4a1bbd11ff6516e30a060e91e21e2e5e4aea81f6",
  "parents": [
    "ff8a13d4a52a70818c4f7951a8dbf099cccc546e"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Feb 19 17:47:00 2018 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Wed Feb 21 13:58:45 2018 -0800"
  },
  "message": "An implementation of SubsetPreconditioner.\n\nThe key idea being, use some subset of the rows of the Jacobian\nas the preconditioner.\n\nThis CL only implements the preconditioner assuming that the row\nselection has already been done. How the rows are selected will be\nleft to the user based on their knowledge of the problem.\n\nA follow up CL will hook this preconditioner into the rest of the\nsolver.\n\nChange-Id: I3e18dc57811116534e9ddf35d7b154bcce496d3b\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a82d2cf6f21508065043325049b303f9b03a9273",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "504a23e4afc019eac0a537a66a2b362e6526d186",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "833c9372802027be1d34ff707b3150d7a9952370",
      "old_mode": 33188,
      "old_path": "bazel/ceres.bzl",
      "new_id": "d9d75025dfa3c8c717931949d0aad1c0a1ea03dc",
      "new_mode": 33188,
      "new_path": "bazel/ceres.bzl"
    },
    {
      "type": "modify",
      "old_id": "884fd577f956f6fa90e6ca25d31fbaf84e670232",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "91ffc11be5b3d6039525f3b6258ac420338411c2",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "214daef777669516eac3dd97b9c26c5175b7faeb",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_sparse_matrix.cc",
      "new_id": "c814a72dd21fdecb1ccaf45e304a859d21d49779",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_sparse_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "17491bf99f829080306c2290f4bc4f37c079023b",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_sparse_matrix.h",
      "new_id": "abde2a6aef3ccf0de0dd117ee911d437d618e905",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_sparse_matrix.h"
    },
    {
      "type": "modify",
      "old_id": "a248eae060d8e085fded6a1d33bcdf4a52f7b6cb",
      "old_mode": 33188,
      "old_path": "internal/ceres/preconditioner.h",
      "new_id": "5d293b814107fdf28a4ecd87a876b24e7b4be7fc",
      "new_mode": 33188,
      "new_path": "internal/ceres/preconditioner.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e970b91026708d76b1c46cfaa1664389a4d843fc",
      "new_mode": 33188,
      "new_path": "internal/ceres/subset_preconditioner.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "062253b844455a6944a25256da2f030bfeac874a",
      "new_mode": 33188,
      "new_path": "internal/ceres/subset_preconditioner.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "63dbbaf6635a1817afd2d45b26cfa0f9091c5ff3",
      "new_mode": 33188,
      "new_path": "internal/ceres/subset_preconditioner_test.cc"
    },
    {
      "type": "modify",
      "old_id": "8dbb5939833975a49c24986fb4930874153e1d8e",
      "old_mode": 33188,
      "old_path": "jni/Android.mk",
      "new_id": "4ddcdf8f351fbcab2082ac4fdaf456f611ba19a0",
      "new_mode": 33188,
      "new_path": "jni/Android.mk"
    }
  ]
}
