aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2013-11-10 15:26:07 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2013-11-10 15:26:07 +0100
commit5c2d1b4710b5f1ae280bb687b3dd47dfeb62b698 (patch)
treeb0b7a32e09ec3d8be563d0f26215e288459a28a1 /Eigen
parentb93520b1a52818c4659cafbb4d80aae001ece932 (diff)
Add missing nonZeros() overload in Block<SparseMatrixBase<>>
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/SparseCore/SparseBlock.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/Eigen/src/SparseCore/SparseBlock.h b/Eigen/src/SparseCore/SparseBlock.h
index 38c7f1ff6..75b5e37a3 100644
--- a/Eigen/src/SparseCore/SparseBlock.h
+++ b/Eigen/src/SparseCore/SparseBlock.h
@@ -52,14 +52,24 @@ public:
inline BlockImpl(const XprType& xpr, int i)
: m_matrix(xpr), m_outerStart(i), m_outerSize(OuterSize)
- {}
+ {std::cout << __LINE__ << "\n";}
inline BlockImpl(const XprType& xpr, int startRow, int startCol, int blockRows, int blockCols)
: m_matrix(xpr), m_outerStart(IsRowMajor ? startRow : startCol), m_outerSize(IsRowMajor ? blockRows : blockCols)
- {}
+ {std::cout << __LINE__ << "\n";}
EIGEN_STRONG_INLINE Index rows() const { return IsRowMajor ? m_outerSize.value() : m_matrix.rows(); }
EIGEN_STRONG_INLINE Index cols() const { return IsRowMajor ? m_matrix.cols() : m_outerSize.value(); }
+
+ Index nonZeros() const
+ {
+ Index nnz = 0;
+ Index end = m_outerStart + m_outerSize.value();
+ for(int j=m_outerStart; j<end; ++j)
+ for(typename XprType::InnerIterator it(m_matrix, j); it; ++it)
+ ++nnz;
+ return nnz;
+ }
protected:
@@ -115,11 +125,11 @@ public:
inline BlockImpl(const SparseMatrixType& xpr, int i)
: m_matrix(xpr), m_outerStart(i), m_outerSize(OuterSize)
- {}
+ {std::cout << __LINE__ << "\n";}
inline BlockImpl(const SparseMatrixType& xpr, int startRow, int startCol, int blockRows, int blockCols)
: m_matrix(xpr), m_outerStart(IsRowMajor ? startRow : startCol), m_outerSize(IsRowMajor ? blockRows : blockCols)
- {}
+ {std::cout << __LINE__ << "\n";}
template<typename OtherDerived>
inline BlockType& operator=(const SparseMatrixBase<OtherDerived>& other)
@@ -307,13 +317,13 @@ public:
m_startCol( (BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) ? i : 0),
m_blockRows(xpr.rows()),
m_blockCols(xpr.cols())
- {}
+ {std::cout << __LINE__ << "\n";}
/** Dynamic-size constructor
*/
inline BlockImpl(const XprType& xpr, int startRow, int startCol, int blockRows, int blockCols)
: m_matrix(xpr), m_startRow(startRow), m_startCol(startCol), m_blockRows(blockRows), m_blockCols(blockCols)
- {}
+ {std::cout << __LINE__ << "\n";}
inline int rows() const { return m_blockRows.value(); }
inline int cols() const { return m_blockCols.value(); }