aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
diff options
context:
space:
mode:
Diffstat (limited to 'Eigen/src')
-rw-r--r--Eigen/src/Sparse/RandomSetter.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/Eigen/src/Sparse/RandomSetter.h b/Eigen/src/Sparse/RandomSetter.h
index efe8ba2db..8606e03c6 100644
--- a/Eigen/src/Sparse/RandomSetter.h
+++ b/Eigen/src/Sparse/RandomSetter.h
@@ -90,12 +90,12 @@ class RandomSetter
inline RandomSetter(SparseMatrixType& target)
: mp_target(&target)
{
- int outerPackets = target.outerSize() >> OuterPacketBits;
+ m_outerPackets = target.outerSize() >> OuterPacketBits;
if (target.outerSize()&OuterPacketMask)
- outerPackets += 1;
- m_hashmaps = new HashMapType[outerPackets];
+ m_outerPackets += 1;
+ m_hashmaps = new HashMapType[m_outerPackets];
KeyType ik = (1<<OuterPacketBits)*mp_target->innerSize()+1;
- for (int k=0; k<outerPackets; ++k)
+ for (int k=0; k<m_outerPackets; ++k)
HashMapTraits<ScalarWrapper>::setInvalidKey(m_hashmaps[k],ik);
}
@@ -115,11 +115,20 @@ class RandomSetter
return m_hashmaps[outerMajor][key].value;
}
+ int nonZeros() const
+ {
+ int nz = 0;
+ for (int k=0; k<m_outerPackets; ++k)
+ nz += m_hashmaps[k].size();
+ return nz;
+ }
+
protected:
HashMapType* m_hashmaps;
SparseMatrixType* mp_target;
+ int m_outerPackets;
};
#endif // EIGEN_RANDOMSETTER_H