Fix flaky tests: add iteration guards, yield in busy-waits, cap thread count

libeigen/eigen!2208

Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
Rasmus Munk Larsen
2026-02-24 18:29:07 -08:00
parent 28d090a49c
commit 34092d2788
10 changed files with 92 additions and 61 deletions

View File

@@ -52,13 +52,11 @@ void stable_norm(const MatrixType& m) {
Index rows = m.rows();
Index cols = m.cols();
// get a non-zero random factor
Scalar factor = internal::random<Scalar>();
while (numext::abs2(factor) < RealScalar(1e-4)) factor = internal::random<Scalar>();
// Get a random factor bounded away from zero: |factor| >= 0.1.
Scalar factor = internal::random<Scalar>(Scalar(RealScalar(0.1)), Scalar(RealScalar(1)));
Scalar big = factor * ((std::numeric_limits<RealScalar>::max)() * RealScalar(1e-4));
factor = internal::random<Scalar>();
while (numext::abs2(factor) < RealScalar(1e-4)) factor = internal::random<Scalar>();
factor = internal::random<Scalar>(Scalar(RealScalar(0.1)), Scalar(RealScalar(1)));
Scalar small = factor * ((std::numeric_limits<RealScalar>::min)() * RealScalar(1e4));
Scalar one(1);
@@ -217,12 +215,11 @@ void test_empty() {
template <typename Scalar>
void test_hypot() {
typedef typename NumTraits<Scalar>::Real RealScalar;
Scalar factor = internal::random<Scalar>();
while (numext::abs2(factor) < RealScalar(1e-4)) factor = internal::random<Scalar>();
// Get a random factor bounded away from zero: |factor| >= 0.1.
Scalar factor = internal::random<Scalar>(Scalar(RealScalar(0.1)), Scalar(RealScalar(1)));
Scalar big = factor * ((std::numeric_limits<RealScalar>::max)() * RealScalar(1e-4));
factor = internal::random<Scalar>();
while (numext::abs2(factor) < RealScalar(1e-4)) factor = internal::random<Scalar>();
factor = internal::random<Scalar>(Scalar(RealScalar(0.1)), Scalar(RealScalar(1)));
Scalar small = factor * ((std::numeric_limits<RealScalar>::min)() * RealScalar(1e4));
Scalar one(1), zero(0), sqrt2(std::sqrt(2)), nan(std::numeric_limits<RealScalar>::quiet_NaN());