mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-13 12:19:12 +08:00
Judge unitary-ness relative to scaling.
(cherry picked from commit c1d637433e3b3f9012b226c2c9125c494b470ae6)
This commit is contained in:
parent
c7f6f8315f
commit
6aa0143851
@ -25,6 +25,7 @@ template<typename MatrixType> 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<RealScalar>::min)())
|
||||
{
|
||||
@ -36,7 +37,7 @@ template<typename MatrixType> void selfadjointeigensolver_essential_check(const
|
||||
(eiSymm.eigenvectors() * eiSymm.eigenvalues().asDiagonal())/scaling);
|
||||
}
|
||||
VERIFY_IS_APPROX(m.template selfadjointView<Lower>().eigenvalues(), eiSymm.eigenvalues());
|
||||
VERIFY_IS_UNITARY(eiSymm.eigenvectors());
|
||||
VERIFY(eiSymm.eigenvectors().isUnitary(test_precision<RealScalar>() * unitary_error_factor));
|
||||
|
||||
if(m.cols()<=4)
|
||||
{
|
||||
@ -62,7 +63,7 @@ template<typename MatrixType> void selfadjointeigensolver_essential_check(const
|
||||
VERIFY_IS_APPROX(m.template selfadjointView<Lower>().eigenvalues()/scaling, eiDirect.eigenvalues()/scaling);
|
||||
}
|
||||
|
||||
VERIFY_IS_UNITARY(eiDirect.eigenvectors());
|
||||
VERIFY(eiDirect.eigenvectors().isUnitary(test_precision<RealScalar>() * unitary_error_factor));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user