mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fix three flaky tests: packetmath, array_cwise, polynomialsolver
libeigen/eigen!2267 Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
@@ -1221,7 +1221,17 @@ std::enable_if_t<Cond, void> run_ieee_cases(const FunctorT& fun) {
|
||||
const Scalar norm_max = (std::numeric_limits<Scalar>::max)();
|
||||
const Scalar inf = (std::numeric_limits<Scalar>::infinity)();
|
||||
const Scalar nan = (std::numeric_limits<Scalar>::quiet_NaN)();
|
||||
std::vector<Scalar> values{norm_min, Scalar(0), Scalar(1), norm_max, inf, nan};
|
||||
std::vector<Scalar> values{Scalar(0), Scalar(1), norm_max, inf, nan};
|
||||
// On ARM, NEON flush-to-zero mode can flush intermediate subnormal results to zero,
|
||||
// causing functions like sin(norm_min) to return 0 instead of norm_min. Skip norm_min
|
||||
// in that case, along with truly subnormal values.
|
||||
if (!SkipDenorms) {
|
||||
values.push_back(norm_min);
|
||||
if (std::numeric_limits<Scalar>::has_denorm == std::denorm_present) {
|
||||
values.push_back(std::numeric_limits<Scalar>::denorm_min());
|
||||
values.push_back(norm_min / Scalar(2));
|
||||
}
|
||||
}
|
||||
|
||||
constexpr int size = PacketSize * 2;
|
||||
EIGEN_ALIGN_MAX Scalar data1[size];
|
||||
@@ -1231,11 +1241,6 @@ std::enable_if_t<Cond, void> run_ieee_cases(const FunctorT& fun) {
|
||||
data1[i] = data2[i] = ref[i] = Scalar(0);
|
||||
}
|
||||
|
||||
if (Cond && !SkipDenorms && std::numeric_limits<Scalar>::has_denorm == std::denorm_present) {
|
||||
values.push_back(std::numeric_limits<Scalar>::denorm_min());
|
||||
values.push_back(norm_min / Scalar(2));
|
||||
}
|
||||
|
||||
for (Scalar abs_value : values) {
|
||||
data1[0] = abs_value;
|
||||
data1[1] = -data1[0];
|
||||
|
||||
Reference in New Issue
Block a user