)]}'
{
  "commit": "2f946a582ae4a9e7ee0492030ec12d9b1f3dbade",
  "tree": "40eee074730690ac2fd3e27cb9de3da72eb8ffee",
  "parents": [
    "3d1b494dce4c3eeb4ee493fca7a481c717d30000"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Mar 17 14:48:19 2026 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Sun Mar 22 12:06:15 2026 -0700"
  },
  "message": "[modernize] Modernize internal autodiff and numeric_diff logic\n\nRefactor the core automatic and numeric differentiation internal helpers\nto utilize C++17 features for improved readability and maintainability:\n\n- Added IntegerSequenceTraits to provide a uniform compile-time interface\n  for accessing head and tail of std::integer_sequence.\n- Eliminated recursive template meta-programming in autodiff.h, replacing\n  it with fold expressions and std::index_sequence.\n- Simplified core helper functions like Make1stOrderPerturbation into\n  unrolled loops.\n- Refactored EvaluateJacobianForParameterBlocks from a recursive struct\n  to a recursive function template using if constexpr.\n- Updated NumericDiffCostFunction and NumericDiffFirstOrderFunction\n  to use the modernized internal helper API.\n\nChange-Id: I934034f7434fc05a8855565b2b534d325f920584\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8e576016f0433c273510495c9f945477251e8c09",
      "old_mode": 33188,
      "old_path": "include/ceres/internal/autodiff.h",
      "new_id": "29a17d8dbadb2262cc26a175b055c36dd2c95864",
      "new_mode": 33188,
      "new_path": "include/ceres/internal/autodiff.h"
    },
    {
      "type": "modify",
      "old_id": "0fe4b8278f94c404a3cc72f9d86d6d9c50d15fe2",
      "old_mode": 33188,
      "old_path": "include/ceres/internal/numeric_diff.h",
      "new_id": "32d3ea27fc929f7d94f5629b0a5e85e573a6d07a",
      "new_mode": 33188,
      "new_path": "include/ceres/internal/numeric_diff.h"
    },
    {
      "type": "modify",
      "old_id": "182242267f8e6384ebf29bc5e5531dc311b87369",
      "old_mode": 33188,
      "old_path": "include/ceres/numeric_diff_cost_function.h",
      "new_id": "89ddda7e59628aac4b49c73c64de8ac5dc59a6f9",
      "new_mode": 33188,
      "new_path": "include/ceres/numeric_diff_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "f136e31a936ba1c04a3ca6dc2057e0f902133175",
      "old_mode": 33188,
      "old_path": "include/ceres/numeric_diff_first_order_function.h",
      "new_id": "b6f8c34ed6c841dd0813f5967251b9cd36b2d7ec",
      "new_mode": 33188,
      "new_path": "include/ceres/numeric_diff_first_order_function.h"
    }
  ]
}
