From 6aa01438515817c1f92aa92534db3d7313ee1fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20S=C3=A1nchez?= Date: Tue, 30 Apr 2024 22:28:46 +0000 Subject: [PATCH] Judge unitary-ness relative to scaling. (cherry picked from commit c1d637433e3b3f9012b226c2c9125c494b470ae6) --- test/eigensolver_selfadjoint.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/eigensolver_selfadjoint.cpp b/test/eigensolver_selfadjoint.cpp index 0e39b5364..1a1b948c7 100644 --- a/test/eigensolver_selfadjoint.cpp +++ b/test/eigensolver_selfadjoint.cpp @@ -25,6 +25,7 @@ template void selfadjointeigensolver_essential_check(const VERIFY_IS_EQUAL(eiSymm.info(), Success); RealScalar scaling = m.cwiseAbs().maxCoeff(); + RealScalar unitary_error_factor = RealScalar(16); if(scaling<(std::numeric_limits::min)()) { @@ -36,7 +37,7 @@ template void selfadjointeigensolver_essential_check(const (eiSymm.eigenvectors() * eiSymm.eigenvalues().asDiagonal())/scaling); } VERIFY_IS_APPROX(m.template selfadjointView().eigenvalues(), eiSymm.eigenvalues()); - VERIFY_IS_UNITARY(eiSymm.eigenvectors()); + VERIFY(eiSymm.eigenvectors().isUnitary(test_precision() * unitary_error_factor)); if(m.cols()<=4) { @@ -62,7 +63,7 @@ template void selfadjointeigensolver_essential_check(const VERIFY_IS_APPROX(m.template selfadjointView().eigenvalues()/scaling, eiDirect.eigenvalues()/scaling); } - VERIFY_IS_UNITARY(eiDirect.eigenvectors()); + VERIFY(eiDirect.eigenvectors().isUnitary(test_precision() * unitary_error_factor)); } }