mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-14 12:46:00 +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);
|
VERIFY_IS_EQUAL(eiSymm.info(), Success);
|
||||||
|
|
||||||
RealScalar scaling = m.cwiseAbs().maxCoeff();
|
RealScalar scaling = m.cwiseAbs().maxCoeff();
|
||||||
|
RealScalar unitary_error_factor = RealScalar(16);
|
||||||
|
|
||||||
if(scaling<(std::numeric_limits<RealScalar>::min)())
|
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);
|
(eiSymm.eigenvectors() * eiSymm.eigenvalues().asDiagonal())/scaling);
|
||||||
}
|
}
|
||||||
VERIFY_IS_APPROX(m.template selfadjointView<Lower>().eigenvalues(), eiSymm.eigenvalues());
|
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)
|
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_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