diff options
Diffstat (limited to 'Eigen/src/Core/BandMatrix.h')
-rw-r--r-- | Eigen/src/Core/BandMatrix.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Eigen/src/Core/BandMatrix.h b/Eigen/src/Core/BandMatrix.h index 7943e6280..67684eca3 100644 --- a/Eigen/src/Core/BandMatrix.h +++ b/Eigen/src/Core/BandMatrix.h @@ -171,15 +171,21 @@ class BandMatrix : public AnyMatrixBase<BandMatrix<_Scalar,Rows,Cols,Supers,Subs return Block<DataType,1,Dynamic>(m_data, supers()-i, std::max(0,i), 1, diagonalLength(i)); } - DenseMatrixType toDenseMatrix() const + template<typename Dest> inline void evalTo(Dest& dst) const { - DenseMatrixType res(rows(),cols()); - res.setZero(); - res.diagonal() = diagonal(); + dst.resize(rows(),cols()); + dst.setZero(); + dst.diagonal() = diagonal(); for (int i=1; i<=supers();++i) - res.diagonal(i) = diagonal(i); + dst.diagonal(i) = diagonal(i); for (int i=1; i<=subs();++i) - res.diagonal(-i) = diagonal(-i); + dst.diagonal(-i) = diagonal(-i); + } + + DenseMatrixType toDenseMatrix() const + { + DenseMatrixType res(rows(),cols()); + evalTo(res); return res; } |