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)); } }