Fix broken packetmath test for logistic on Arm.

This commit is contained in:
Rasmus Munk Larsen 2020-06-04 16:24:47 -07:00
parent 537e2b322f
commit c2ab36f47a
2 changed files with 8 additions and 5 deletions

View File

@ -524,7 +524,8 @@ template<typename Packet> EIGEN_DEVICE_FUNC inline bool predux_any(const Packet&
// - bits full of ones (NaN for floats),
// - or first bit equals to 1 (1 for ints, smallest denormal for floats).
// For all these cases, taking the sum is just fine, and this boils down to a no-op for scalars.
return bool(numext::not_equal_strict(predux(a), pzero(a)));
typedef typename unpacket_traits<Packet>::type Scalar;
return numext::not_equal_strict(predux(a), Scalar(0));
}
/** \internal \returns the reversed elements of \a a*/

View File

@ -447,18 +447,20 @@ template<typename Scalar,typename Packet> void packetmath_real()
VERIFY((numext::isnan)(data2[0]));
}
{
if (PacketTraits::HasExp) {
internal::scalar_logistic_op<Scalar> logistic;
for (int i=0; i<size; ++i)
{
data1[i] = internal::random<Scalar>(-20,20);
}
internal::pstore(data2, logistic.packetOp(internal::pload<Packet>(data1)));
test::packet_helper<PacketTraits::HasExp,Packet> h;
h.store(data2, logistic.packetOp(h.load(data1)));
for (int i=0; i<PacketSize; ++i) {
VERIFY_IS_APPROX(data2[i],logistic(data1[i]));
#ifdef EIGEN_VECTORIZE // don't check for exactness when using the i387 FPU
#ifdef EIGEN_VECTORIZE // don't check for exactness when using the i387 FPU
VERIFY_IS_EQUAL(data2[i],logistic(data1[i]));
#endif
#endif
}
}