Prevent predux_half for DoublePacket from accidentally catching complex Packets of size >= 16 libeigen/eigen!2125
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index 7238fcd..c2a4eab 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h
@@ -650,7 +650,9 @@ template <typename Packet> DoublePacket<typename unpacket_traits<Packet>::half> predux_half( - const DoublePacket<Packet>& a, std::enable_if_t<unpacket_traits<Packet>::size == 16>* = 0) { + const DoublePacket<Packet>& a, + std::enable_if_t<unpacket_traits<Packet>::size >= 16 && + !NumTraits<typename unpacket_traits<Packet>::type>::IsComplex>* = 0) { // yes, that's pretty hackish :( DoublePacket<typename unpacket_traits<Packet>::half> res; typedef std::complex<typename unpacket_traits<Packet>::type> Cplx;