diff options
author | 2008-12-19 14:15:32 +0000 | |
---|---|---|
committer | 2008-12-19 14:15:32 +0000 | |
commit | e4980616fd2a28984bb00cd6481dcf111975187e (patch) | |
tree | fde6189eb805f9a1e304065d801db4828b97973d /Eigen/src | |
parent | 84bb868f07361af7991abd1f0cdb8017af96c0a5 (diff) |
SelfAdjointEigenSolver: add operatorSqrt() and operatorInverseSqrt()
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/QR/SelfAdjointEigenSolver.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Eigen/src/QR/SelfAdjointEigenSolver.h b/Eigen/src/QR/SelfAdjointEigenSolver.h index c6bda1115..95842c160 100644 --- a/Eigen/src/QR/SelfAdjointEigenSolver.h +++ b/Eigen/src/QR/SelfAdjointEigenSolver.h @@ -105,6 +105,25 @@ template<typename _MatrixType> class SelfAdjointEigenSolver /** \returns the computed eigen values */ RealVectorType eigenvalues(void) const { return m_eivalues; } + /** \returns the positive square root of the matrix + * + * \note the matrix itself must be positive in order for this to make sense. + */ + MatrixType operatorSqrt() const + { + return m_eivec * m_eivalues.cwise().sqrt().asDiagonal() * m_eivec.adjoint(); + } + + /** \returns the positive inverse square root of the matrix + * + * \note the matrix itself must be positive definite in order for this to make sense. + */ + MatrixType operatorInverseSqrt() const + { + return m_eivec * m_eivalues.cwise().inverse().cwise().sqrt().asDiagonal() * m_eivec.adjoint(); + } + + protected: MatrixType m_eivec; RealVectorType m_eivalues; |