mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-11 23:51:49 +08:00
Tests for pcmp_lt and pcmp_le added
(cherry picked from commit 1115f5462ecaa84d3c60479f7e23a530a1a415d2)
This commit is contained in:
parent
baf601a0e3
commit
63abb10000
@ -279,10 +279,45 @@ void packetmath_boolean_mask_ops() {
|
|||||||
CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq);
|
CHECK_CWISE2_IF(true, internal::pcmp_eq, internal::pcmp_eq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Scalar, typename Packet>
|
||||||
|
void packetmath_boolean_mask_ops_notcomplex() {
|
||||||
|
const int PacketSize = internal::unpacket_traits<Packet>::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<Scalar>();
|
||||||
|
data1[i + PacketSize] = internal::random<bool>() ? data1[i] : Scalar(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_le, internal::pcmp_le);
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt);
|
||||||
|
|
||||||
|
//Test (-0) <=/< (0) for signed operations
|
||||||
|
for (int i = 0; i < PacketSize; ++i) {
|
||||||
|
data1[i] = Scalar(-0.0);
|
||||||
|
data1[i + PacketSize] = internal::random<bool>() ? data1[i] : Scalar(0);
|
||||||
|
}
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_le, internal::pcmp_le);
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt);
|
||||||
|
|
||||||
|
//Test NaN
|
||||||
|
for (int i = 0; i < PacketSize; ++i) {
|
||||||
|
data1[i] = NumTraits<Scalar>::quiet_NaN();
|
||||||
|
data1[i + PacketSize] = internal::random<bool>() ? data1[i] : Scalar(0);
|
||||||
|
}
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_le, internal::pcmp_le);
|
||||||
|
CHECK_CWISE2_IF(true, internal::pcmp_lt, internal::pcmp_lt);
|
||||||
|
}
|
||||||
|
|
||||||
// Packet16b representing bool does not support ptrue, pandnot or pcmp_eq, since the scalar path
|
// Packet16b representing bool does not support ptrue, pandnot or pcmp_eq, since the scalar path
|
||||||
// (for some compilers) compute the bitwise and with 0x1 of the results to keep the value in [0,1].
|
// (for some compilers) compute the bitwise and with 0x1 of the results to keep the value in [0,1].
|
||||||
template<>
|
template<>
|
||||||
void packetmath_boolean_mask_ops<bool, internal::packet_traits<bool>::type>() {}
|
void packetmath_boolean_mask_ops<bool, internal::packet_traits<bool>::type>() {}
|
||||||
|
template<>
|
||||||
|
void packetmath_boolean_mask_ops_notcomplex<bool, internal::packet_traits<bool>::type>() {}
|
||||||
|
|
||||||
template <typename Scalar, typename Packet>
|
template <typename Scalar, typename Packet>
|
||||||
void packetmath_minus_zero_add() {
|
void packetmath_minus_zero_add() {
|
||||||
@ -1020,6 +1055,8 @@ void packetmath_notcomplex() {
|
|||||||
CHECK_CWISE2_IF(PacketTraits::HasMin, propagate_nan_min, (internal::pmin<PropagateNaN>));
|
CHECK_CWISE2_IF(PacketTraits::HasMin, propagate_nan_min, (internal::pmin<PropagateNaN>));
|
||||||
CHECK_CWISE2_IF(PacketTraits::HasMax, propagate_nan_max, internal::pmax<PropagateNaN>);
|
CHECK_CWISE2_IF(PacketTraits::HasMax, propagate_nan_max, internal::pmax<PropagateNaN>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
packetmath_boolean_mask_ops_notcomplex<Scalar, Packet>();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Scalar, typename Packet, bool ConjLhs, bool ConjRhs>
|
template <typename Scalar, typename Packet, bool ConjLhs, bool ConjRhs>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user