aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2008-12-19 14:15:32 +0000
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2008-12-19 14:15:32 +0000
commite4980616fd2a28984bb00cd6481dcf111975187e (patch)
treefde6189eb805f9a1e304065d801db4828b97973d /Eigen/src
parent84bb868f07361af7991abd1f0cdb8017af96c0a5 (diff)
SelfAdjointEigenSolver: add operatorSqrt() and operatorInverseSqrt()
Diffstat (limited to 'Eigen/src')
-rw-r--r--Eigen/src/QR/SelfAdjointEigenSolver.h19
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;