fix bug #391: improper stream output for uncompressed mode, also avoid double debugging outputs for column major matrices

This commit is contained in:
Gael Guennebaud 2011-12-20 18:31:00 +01:00
parent 6f92b75874
commit 7e866c447f
2 changed files with 23 additions and 8 deletions

View File

@ -678,18 +678,33 @@ class SparseMatrix
{
EIGEN_DBG_SPARSE(
s << "Nonzero entries:\n";
for (Index i=0; i<m.nonZeros(); ++i)
{
s << "(" << m.m_data.value(i) << "," << m.m_data.index(i) << ") ";
}
if(m.isCompressed())
for (Index i=0; i<m.nonZeros(); ++i)
s << "(" << m.m_data.value(i) << "," << m.m_data.index(i) << ") ";
else
for (Index i=0; i<m.outerSize(); ++i)
{
int p = m.m_outerIndex[i];
int pe = m.m_outerIndex[i]+m.m_innerNonZeros[i];
Index k=p;
for (; k<pe; ++k)
s << "(" << m.m_data.value(k) << "," << m.m_data.index(k) << ") ";
for (; k<m.m_outerIndex[i+1]; ++k)
s << "(_,_) ";
}
s << std::endl;
s << std::endl;
s << "Column pointers:\n";
s << "Outer pointers:\n";
for (Index i=0; i<m.outerSize(); ++i)
{
s << m.m_outerIndex[i] << " ";
}
s << " $" << std::endl;
if(!m.isCompressed())
{
s << "Inner non zeros:\n";
for (Index i=0; i<m.outerSize(); ++i)
s << m.m_innerNonZeros[i] << " ";
s << " $" << std::endl;
}
s << std::endl;
);
s << static_cast<const SparseMatrixBase<SparseMatrix>&>(m);

View File

@ -308,7 +308,7 @@ template<typename Derived> class SparseMatrixBase : public EigenBase<Derived>
else
{
SparseMatrix<Scalar, RowMajorBit> trans = m.derived();
s << trans;
s << static_cast<const SparseMatrixBase<SparseMatrix<Scalar, RowMajorBit> >&>(trans);
}
}
return s;