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. 
       *