* various fixes related to sub diagonals and band matrix

* allows 0 sized objects in Block/Map
This commit is contained in:
Gael Guennebaud
2009-07-21 11:19:52 +02:00
parent 34490f1493
commit afa8f2ca95
6 changed files with 60 additions and 27 deletions

View File

@@ -70,7 +70,7 @@ template<typename MatrixType, int Index> class Diagonal
EIGEN_STRONG_INLINE int absIndex() const { return m_index.value()>0 ? m_index.value() : -m_index.value(); }
EIGEN_STRONG_INLINE int rowOffset() const { return m_index.value()>0 ? 0 : -m_index.value(); }
EIGEN_STRONG_INLINE int colOffset() const { return m_index.value()>0 ? m_index.value() : 0; }
public:
EIGEN_GENERIC_PUBLIC_INTERFACE(Diagonal)
@@ -79,7 +79,9 @@ template<typename MatrixType, int Index> class Diagonal
EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Diagonal)
inline int rows() const{ return m_matrix.diagonalSize() - absIndex(); }
inline int rows() const
{ return m_index.value()<0 ? std::min(m_matrix.cols(),m_matrix.rows()+m_index.value()) : std::min(m_matrix.rows(),m_matrix.cols()-m_index.value()); }
inline int cols() const { return 1; }
inline Scalar& coeffRef(int row, int)