)]}'
{
  "commit": "5ca10480b0756e40b0723d90adeba8506291fc7c",
  "tree": "56a2a8f4bddead832bbc60977c7675580fbdac1b",
  "parents": [
    "f584bd9b308b4e62787aed370bd829474510e598"
  ],
  "author": {
    "name": "Francesco Mazzoli",
    "email": "f@mazzo.li",
    "time": "Mon Jan 13 15:11:22 2020 +0100"
  },
  "committer": {
    "name": "Gael Guennebaud",
    "email": "g.gael@free.fr",
    "time": "Fri Feb 07 18:16:16 2020 +0100"
  },
  "message": "avoid selecting half-packets when unnecessary\n\nSee\n\u003chttps://stackoverflow.com/questions/59709148/ensuring-that-eigen-uses-avx-vectorization-for-a-certain-operation\u003e\nfor an explanation of the problem this solves.\n\nIn short, for some reason, before this commit the half-packet is\nselected when the array / matrix size is not a multiple of\n`unpacket_traits\u003cPacketType\u003e::size`, where `PacketType` starts out\nbeing the full Packet.\n\nFor example, for some data of 100 `float`s, `Packet4f` will be\nselected rather than `Packet8f`, because 100 is not a multiple of 8,\nthe size of `Packet8f`.\n\nThis commit switches to selecting the half-packet if the size is\nless than the packet size, which seems to make more sense.\n\nAs I stated in the SO post I\u0027m not sure that I\u0027m understanding the\nissue correctly, but this fix resolves the issue in my program. Moreover,\n`make check` passes, with the exception of line 614 and 616 in\n`test/packetmath.cpp`, which however also fail on master on my machine:\n\n    CHECK_CWISE1_IF(PacketTraits::HasBessel, numext::bessel_i0, internal::pbessel_i0);\n    ...\n    CHECK_CWISE1_IF(PacketTraits::HasBessel, numext::bessel_i1, internal::pbessel_i1);\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fd2db56a40da46e6d5eaff372958d5b299b2ad84",
      "old_mode": 33188,
      "old_path": "Eigen/src/Core/util/XprHelper.h",
      "new_id": "26aa609fe18a247cfc45e4d8a80dfd2933106793",
      "new_mode": 33188,
      "new_path": "Eigen/src/Core/util/XprHelper.h"
    }
  ]
}
