)]}'
{
  "commit": "038c54d341bb9abcd4d1f1be5bb6895f32cb45b7",
  "tree": "f454242fe1d3a9b7b5f2cacdc88b163200ce4dae",
  "parents": [
    "68a7e6212203c4891a2669adecbcbf75d6851ab4"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Fri Oct 09 17:22:31 2026 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Wed Oct 21 15:18:40 2026 -0700"
  },
  "message": "Unify cost function differentiation benchmarks\n\nReplace internal/ceres/autodiff_benchmarks/ with\ninternal/ceres/benchmark_cost_functions.h and\ninternal/ceres/cost_function_differentiation_benchmark.cc:\n- Consolidate the benchmark cost functors into\n  internal/ceres/benchmark_cost_functions.h as self-contained structs\n  inheriting from BenchmarkCostFunctor\u003ckNumResiduals, Ns...\u003e with\n  default constructors and MakeParameters(), and remove the\n  internal/ceres/autodiff_benchmarks/ subdirectory.\n- Add nine real-world camera projection, epipolar, and SLAM cost\n  functors (OpenCV, FullOpenCV, Rig, Sampson, Fisheye, and Spherical\n  from COLMAP; Brown-Conrady and Nuke InvertIntrinsics from Blender\n  libmv; and PoseGraph3dError from Ceres).\n- Benchmark AutoDiffCostFunction (static and dynamic residuals),\n  DynamicAutoDiffCostFunction, NumericDiffCostFunction, and\n  DynamicNumericDiffCostFunction (FORWARD, CENTRAL, RIDDERS) using a\n  single BM_CostFunction\u003cCostFunctor, kDiffType, kEvalType\u003e template and\n  CostFunctionFactory in cost_function_differentiation_benchmark.cc.\n- Add CostFunctionToFunctor and DynamicCostFunctionToFunctor benchmarks.\n- Fix ConstantCostFunction to pass kParameterBlockSize instead of 1 and\n  remove redundant AnalyticConstantCostFunction.\n- Move -mllvm -inlinehint-threshold\u003d1000000 into\n  add_dependencies_to_benchmark in internal/ceres/CMakeLists.txt.\n\nChange-Id: Ic02f4d29a15b5faa606a5af033c19d0bfd1bba91\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a2d07a0bd66ec03b1cedce1356d4c9c3e2fc5429",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "ac8ff91f21788a77249c732ee9c6271359ac6caa",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "286f353ef1b1a69f6baf2741529d85d6c15ddc2d",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "f85d0d62f60f7c5ee26b3b7cec881657b3a70efa",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "delete",
      "old_id": "99af15268413119d2a86cc4bb28eacd0ae7c8f05",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/CMakeLists.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "87e00676d34348b063ae42993df2dae50eba5b3c",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/autodiff_benchmarks.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "41cfcfa212c9690e76068ab7882b7bdd6d487cb1",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/brdf_cost_function.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "2bbe4cbf0d155cfde1c4fc33135c6f39e4605b5d",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/constant_cost_function.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "2f2552f3ea1f50f6ae7b501cb7ecbbfa74c79596",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/linear_cost_functions.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6572267d24de04876fe8488dee7d3864ce5cabec",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/photometric_error.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "a54a92f093cd5207437f5ce579c558608fdde2f6",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/relative_pose_error.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "439ee9bf1cbb57b223dcd274e863efa563db626c",
      "old_mode": 33188,
      "old_path": "internal/ceres/autodiff_benchmarks/snavely_reprojection_error.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "464ab143b0101e2f72f3392071912943da8397b0",
      "new_mode": 33188,
      "new_path": "internal/ceres/benchmark_cost_functions.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f96f39dedab78fda5a33d1821a91b44f5701637",
      "new_mode": 33188,
      "new_path": "internal/ceres/cost_function_differentiation_benchmark.cc"
    }
  ]
}
