From 6754f5783adb2bc2ff468fc18f6c5e5dc1028478 Mon Sep 17 00:00:00 2001 From: "Ryan M. Richard" Date: Tue, 1 Sep 2026 11:04:16 -0500 Subject: [PATCH] account for uncertainty in log --- .../generate/generate_eigenvalues.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/cxx/unit_tests/tensorwrapper/generate/generate_eigenvalues.cpp b/tests/cxx/unit_tests/tensorwrapper/generate/generate_eigenvalues.cpp index ebac9fdb..85ed270a 100644 --- a/tests/cxx/unit_tests/tensorwrapper/generate/generate_eigenvalues.cpp +++ b/tests/cxx/unit_tests/tensorwrapper/generate/generate_eigenvalues.cpp @@ -25,6 +25,21 @@ using namespace tensorwrapper::generate; using namespace tensorwrapper::operations; using namespace tensorwrapper::utilities; +namespace { +// Composing two transcendental functions (log then exp) forces a rigorous +// Interval to widen by more than the default 1e-16 tolerance even when +// compared against itself, since an interval's difference with itself is not +// zero-width unless the interval is a single point. This tolerance accounts +// for that unavoidable widening. +template +constexpr double log_spacing_tol = + std::is_same_v || std::is_same_v || + std::is_same_v || std::is_same_v || + std::is_same_v || std::is_same_v ? + 5e-3 : + 1e-9; +} // namespace + TEMPLATE_LIST_TEST_CASE("generate_eigenvalues", "", types::floating_point_types) { SECTION("n == 1") { @@ -70,7 +85,7 @@ TEMPLATE_LIST_TEST_CASE("generate_eigenvalues", "", auto gen = make_rng(1); auto result = generate_eigenvalues(spec, gen); auto corr = make_tensor({3}, expected); - REQUIRE(approximately_equal(result, corr)); + REQUIRE(approximately_equal(result, corr, log_spacing_tol)); } SECTION("degenerate spacing") {