From d87648a6bea315645b893c3815ca8c6bb00ec5d2 Mon Sep 17 00:00:00 2001 From: Jakub Lichman Date: Sun, 25 Apr 2021 20:58:56 +0000 Subject: Tests added and AVX512 bug fixed for pcmp_lt_or_nan --- test/packetmath.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'test/packetmath.cpp') diff --git a/test/packetmath.cpp b/test/packetmath.cpp index 79e91c819..0bb511d5a 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -279,6 +279,36 @@ void packetmath_boolean_mask_ops() { CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq); } +template +void packetmath_boolean_mask_ops_real() { + const int PacketSize = internal::unpacket_traits::size; + const int size = 2 * PacketSize; + EIGEN_ALIGN_MAX Scalar data1[size]; + EIGEN_ALIGN_MAX Scalar data2[size]; + EIGEN_ALIGN_MAX Scalar ref[size]; + + for (int i = 0; i < PacketSize; ++i) { + data1[i] = internal::random(); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + + CHECK_CWISE2_IF(true, internal::pcmp_lt_or_nan, internal::pcmp_lt_or_nan); + + //Test (-0) <=/< (0) for signed operations + for (int i = 0; i < PacketSize; ++i) { + data1[i] = Scalar(-0.0); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + CHECK_CWISE2_IF(true, internal::pcmp_lt_or_nan, internal::pcmp_lt_or_nan); + + //Test NaN + for (int i = 0; i < PacketSize; ++i) { + data1[i] = NumTraits::quiet_NaN(); + data1[i + PacketSize] = internal::random() ? data1[i] : Scalar(0); + } + CHECK_CWISE2_IF(true, internal::pcmp_lt_or_nan, internal::pcmp_lt_or_nan); +} + template void packetmath_boolean_mask_ops_notcomplex() { const int PacketSize = internal::unpacket_traits::size; @@ -609,6 +639,8 @@ void packetmath_real() { CHECK_CWISE1_EXACT_IF(PacketTraits::HasCeil, numext::ceil, internal::pceil); CHECK_CWISE1_EXACT_IF(PacketTraits::HasFloor, numext::floor, internal::pfloor); CHECK_CWISE1_EXACT_IF(PacketTraits::HasRint, numext::rint, internal::print); + + packetmath_boolean_mask_ops_real(); // Rounding edge cases. if (PacketTraits::HasRound || PacketTraits::HasCeil || PacketTraits::HasFloor || PacketTraits::HasRint) { -- cgit v1.2.3