mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
implement BandMatrix::evalTo (thus avoid infinite recursion when assigning a BandMatrix to a Matrix)
This commit is contained in:
parent
44ed79fc3c
commit
0fb0307377
@ -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));
|
return Block<DataType,1,Dynamic>(m_data, supers()-i, std::max(0,i), 1, diagonalLength(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Dest> inline void evalTo(Dest& dst) const
|
||||||
|
{
|
||||||
|
dst.resize(rows(),cols());
|
||||||
|
dst.setZero();
|
||||||
|
dst.diagonal() = diagonal();
|
||||||
|
for (int i=1; i<=supers();++i)
|
||||||
|
dst.diagonal(i) = diagonal(i);
|
||||||
|
for (int i=1; i<=subs();++i)
|
||||||
|
dst.diagonal(-i) = diagonal(-i);
|
||||||
|
}
|
||||||
|
|
||||||
DenseMatrixType toDenseMatrix() const
|
DenseMatrixType toDenseMatrix() const
|
||||||
{
|
{
|
||||||
DenseMatrixType res(rows(),cols());
|
DenseMatrixType res(rows(),cols());
|
||||||
res.setZero();
|
evalTo(res);
|
||||||
res.diagonal() = diagonal();
|
|
||||||
for (int i=1; i<=supers();++i)
|
|
||||||
res.diagonal(i) = diagonal(i);
|
|
||||||
for (int i=1; i<=subs();++i)
|
|
||||||
res.diagonal(-i) = diagonal(-i);
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user