aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/BandMatrix.h
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen/src/Core/BandMatrix.h')
-rw-r--r--Eigen/src/Core/BandMatrix.h18
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;
}