Return matrices by constant reference where possible. This changes the return type of: * eigenvectors() and eigenvalues() in ComplexEigenSolver * eigenvalues() in EigenSolver * eigenvectors() and eigenvalues() in SelfAdjointEigenSolver
diff --git a/Eigen/src/Eigenvalues/ComplexEigenSolver.h b/Eigen/src/Eigenvalues/ComplexEigenSolver.h index f6b90d7..5f956e4 100644 --- a/Eigen/src/Eigenvalues/ComplexEigenSolver.h +++ b/Eigen/src/Eigenvalues/ComplexEigenSolver.h
@@ -136,6 +136,8 @@ /** \brief Returns the eigenvectors of given matrix. * + * \returns A const reference to the matrix whose columns are the eigenvectors. + * * It is assumed that either the constructor * ComplexEigenSolver(const MatrixType& matrix) or the member * function compute(const MatrixType& matrix) has been called @@ -151,7 +153,7 @@ * Example: \include ComplexEigenSolver_eigenvectors.cpp * Output: \verbinclude ComplexEigenSolver_eigenvectors.out */ - EigenvectorType eigenvectors() const + const EigenvectorType& eigenvectors() const { ei_assert(m_isInitialized && "ComplexEigenSolver is not initialized."); return m_eivec; @@ -159,6 +161,8 @@ /** \brief Returns the eigenvalues of given matrix. * + * \returns A const reference to the column vector containing the eigenvalues. + * * It is assumed that either the constructor * ComplexEigenSolver(const MatrixType& matrix) or the member * function compute(const MatrixType& matrix) has been called @@ -171,7 +175,7 @@ * Example: \include ComplexEigenSolver_eigenvalues.cpp * Output: \verbinclude ComplexEigenSolver_eigenvalues.out */ - EigenvalueType eigenvalues() const + const EigenvalueType& eigenvalues() const { ei_assert(m_isInitialized && "ComplexEigenSolver is not initialized."); return m_eivalues;
diff --git a/Eigen/src/Eigenvalues/EigenSolver.h b/Eigen/src/Eigenvalues/EigenSolver.h index 7713e04..b619dc2 100644 --- a/Eigen/src/Eigenvalues/EigenSolver.h +++ b/Eigen/src/Eigenvalues/EigenSolver.h
@@ -223,7 +223,7 @@ /** \brief Returns the eigenvalues of given matrix. * - * \returns Column vector containing the eigenvalues. + * \returns A const reference to the column vector containing the eigenvalues. * * \pre Either the constructor EigenSolver(const MatrixType&) or the * member function compute(const MatrixType&) has been called before. @@ -237,7 +237,7 @@ * \sa eigenvectors(), pseudoEigenvalueMatrix(), * MatrixBase::eigenvalues() */ - EigenvalueType eigenvalues() const + const EigenvalueType& eigenvalues() const { ei_assert(m_isInitialized && "EigenSolver is not initialized."); return m_eivalues;
diff --git a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h index 25b18dd..1abbed9 100644 --- a/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +++ b/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
@@ -264,7 +264,7 @@ /** \brief Returns the eigenvectors of given matrix (pencil). * - * \returns %Matrix whose columns are the eigenvectors. + * \returns A const reference to the matrix whose columns are the eigenvectors. * * \pre The eigenvectors have been computed before. * @@ -280,7 +280,7 @@ * * \sa eigenvalues() */ - MatrixType eigenvectors() const + const MatrixType& eigenvectors() const { #ifndef NDEBUG ei_assert(m_eigenvectorsOk); @@ -290,7 +290,7 @@ /** \brief Returns the eigenvalues of given matrix (pencil). * - * \returns Column vector containing the eigenvalues. + * \returns A const reference to the column vector containing the eigenvalues. * * \pre The eigenvalues have been computed before. * @@ -302,7 +302,7 @@ * * \sa eigenvectors(), MatrixBase::eigenvalues() */ - RealVectorType eigenvalues() const { return m_eivalues; } + const RealVectorType& eigenvalues() const { return m_eivalues; } /** \brief Computes the positive-definite square root of the matrix. *