mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-16 14:49:39 +08:00
bug #1258: fix compilation of Map<SparseMatrix>::coeffRef
This commit is contained in:
parent
c9425492c8
commit
757971e7ea
@ -186,7 +186,7 @@ class SparseMapBase<Derived,WriteAccessors>
|
||||
Index end = Base::isCompressed() ? Base::m_outerIndex[outer+1] : start + Base::m_innerNonZeros[outer];
|
||||
eigen_assert(end>=start && "you probably called coeffRef on a non finalized matrix");
|
||||
eigen_assert(end>start && "coeffRef cannot be called on a zero coefficient");
|
||||
Index* r = std::lower_bound(&Base::m_innerIndices[start],&Base::m_innerIndices[end],inner);
|
||||
StorageIndex* r = std::lower_bound(&Base::m_innerIndices[start],&Base::m_innerIndices[end],inner);
|
||||
const Index id = r - &Base::m_innerIndices[0];
|
||||
eigen_assert((*r==inner) && (id<end) && "coeffRef cannot be called on a zero coefficient");
|
||||
return const_cast<Scalar*>(Base::m_values)[id];
|
||||
|
@ -317,6 +317,17 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re
|
||||
VERIFY_IS_APPROX(mapMat2+mapMat3, refMat2+refMat3);
|
||||
VERIFY_IS_APPROX(mapMat2+mapMat3, refMat2+refMat3);
|
||||
}
|
||||
|
||||
Index i = internal::random<Index>(0,rows-1);
|
||||
Index j = internal::random<Index>(0,cols-1);
|
||||
m2.coeffRef(i,j) = 123;
|
||||
if(internal::random<bool>())
|
||||
m2.makeCompressed();
|
||||
Map<SparseMatrixType> mapMat2(rows, cols, m2.nonZeros(), m2.outerIndexPtr(), m2.innerIndexPtr(), m2.valuePtr(), m2.innerNonZeroPtr());
|
||||
VERIFY_IS_EQUAL(m2.coeff(i,j),Scalar(123));
|
||||
VERIFY_IS_EQUAL(mapMat2.coeff(i,j),Scalar(123));
|
||||
mapMat2.coeffRef(i,j) = -123;
|
||||
VERIFY_IS_EQUAL(m2.coeff(i,j),Scalar(-123));
|
||||
}
|
||||
|
||||
// test triangularView
|
||||
|
Loading…
x
Reference in New Issue
Block a user