mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Unbork avx512 preduce_mul on MSVC.
This commit is contained in:
@@ -623,6 +623,15 @@ void packetmath() {
|
||||
VERIFY(test::areApprox(ref, data2, HalfPacketSize) && "internal::predux_half_dowto4");
|
||||
}
|
||||
|
||||
// Avoid overflows.
|
||||
if (NumTraits<Scalar>::IsInteger && NumTraits<Scalar>::IsSigned) {
|
||||
Scalar limit =
|
||||
static_cast<Scalar>(std::pow(static_cast<double>(numext::real(NumTraits<Scalar>::highest())),
|
||||
1.0 / static_cast<double>(Eigen::internal::unpacket_traits<Packet>::size)));
|
||||
for (int i = 0; i < PacketSize; ++i) {
|
||||
data1[i] = internal::random<Scalar>(-limit, limit);
|
||||
}
|
||||
}
|
||||
ref[0] = Scalar(1);
|
||||
for (int i = 0; i < PacketSize; ++i) ref[0] = REF_MUL(ref[0], data1[i]);
|
||||
VERIFY(internal::isApprox(ref[0], internal::predux_mul(internal::pload<Packet>(data1))) && "internal::predux_mul");
|
||||
|
||||
Reference in New Issue
Block a user