aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/BandMatrix.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-01-07 21:53:52 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-01-07 21:53:52 -0500
commit58fb27cd566f4057cee914be4cfe4f87abe8dc04 (patch)
tree44b86687bfa119443960a2c27ae4a9e4e2c3d3dc /Eigen/src/Core/BandMatrix.h
parent7befc8d6f396b4013ff30382dbb8be4aea906908 (diff)
undo
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;
}