)]}'
{
  "commit": "1f374a9fe53e362ab76fb36e1dc53f6609991009",
  "tree": "8ca1ef5f89d6afd7ea5f83fa7eb0ad1d121632bf",
  "parents": [
    "06e68dbc5a0895ba18da8dc8123a845648108e33"
  ],
  "author": {
    "name": "Sergiu Deitsch",
    "email": "sergiu.deitsch@gmail.com",
    "time": "Sun Nov 21 15:26:45 2021 +0100"
  },
  "committer": {
    "name": "Sergiu Deitsch",
    "email": "sergiu.deitsch@gmail.com",
    "time": "Mon Nov 29 21:33:28 2021 +0100"
  },
  "message": "Support promotion in comparison between Jet and scalars\n\nPreviously, Jet did not allow comparison between its value and a scalar\nof another type. Specifically, the comparison was limited to scalars of\nthe same type effectively disabling standard promotion rules. Instead,\nusers would be required either to cast values to target Jet arithmetic\ntype or explicitly construct a Jet instance that can be eventually used\nfor comparison purposes.\n\nHowever, such a behavior is not intuitive and causes problems with types\nthat rely on standard promotion rules (e.g., std::complex in some\nimplementations).\n\nThis changeset extends the comparison operators by enabling logical\ncomparisons between a Jet and values compatible to the underlying scalar\ntype (e.g., int). To be as generic as possible, the types allowed to be\npassed to comparison operators are constrained using SFINAE. This in\nturn allows a recursive expansion of jets and therefore the comparison\nof a nested jets with a scalar.\n\nThe changes alleviate problems described in #414 and also allow the use\nof special functions from Boost.Math, e.g., for computing the reciprocal\nusing boost::math::pow\u003c-1\u003e(...).\n\nChange-Id: I3625791e6c8c2c0bfbffbbdb09e179a32e57f306\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b3c65fa809166f9eeca8e4f6d22e7fd6572f18bd",
      "old_mode": 33188,
      "old_path": "include/ceres/jet.h",
      "new_id": "9a6631752e819dae29afbee7793271e4106c2bed",
      "new_mode": 33188,
      "new_path": "include/ceres/jet.h"
    },
    {
      "type": "modify",
      "old_id": "4680fd0e2169b7e2cf82caa2e401a2f3e85c5fb4",
      "old_mode": 33188,
      "old_path": "internal/ceres/jet_test.cc",
      "new_id": "54834d1f0d51b724e7de29a8ffa7e39948abcf1f",
      "new_mode": 33188,
      "new_path": "internal/ceres/jet_test.cc"
    }
  ]
}
