mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-27 07:29:52 +08:00
Tests for pcmp_lt and pcmp_le added
This commit is contained in:
parent
3804ca0d90
commit
1115f5462e
@ -279,10 +279,45 @@ void packetmath_boolean_mask_ops() {
|
||||
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
|
||||
// (for some compilers) compute the bitwise and with 0x1 of the results to keep the value in [0,1].
|
||||
template<>
|
||||
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>
|
||||
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::HasMax, propagate_nan_max, internal::pmax<PropagateNaN>);
|
||||
}
|
||||
|
||||
packetmath_boolean_mask_ops_notcomplex<Scalar, Packet>();
|
||||
}
|
||||
|
||||
template <typename Scalar, typename Packet, bool ConjLhs, bool ConjRhs>
|
||||
|
Loading…
Reference in New Issue
Block a user