mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-21 20:09:06 +08:00
bug #1359: fix sparse /=scalar and *=scalar implementation.
InnerIterators must be obtained from an evaluator.
This commit is contained in:
parent
c817ce3ba3
commit
98d7458275
@ -123,8 +123,10 @@ template<typename Derived>
|
|||||||
EIGEN_STRONG_INLINE Derived&
|
EIGEN_STRONG_INLINE Derived&
|
||||||
SparseMatrixBase<Derived>::operator*=(const Scalar& other)
|
SparseMatrixBase<Derived>::operator*=(const Scalar& other)
|
||||||
{
|
{
|
||||||
|
typedef typename internal::evaluator<Derived>::InnerIterator EvalIterator;
|
||||||
|
internal::evaluator<Derived> thisEval(derived());
|
||||||
for (Index j=0; j<outerSize(); ++j)
|
for (Index j=0; j<outerSize(); ++j)
|
||||||
for (typename Derived::InnerIterator i(derived(),j); i; ++i)
|
for (EvalIterator i(thisEval,j); i; ++i)
|
||||||
i.valueRef() *= other;
|
i.valueRef() *= other;
|
||||||
return derived();
|
return derived();
|
||||||
}
|
}
|
||||||
@ -133,8 +135,10 @@ template<typename Derived>
|
|||||||
EIGEN_STRONG_INLINE Derived&
|
EIGEN_STRONG_INLINE Derived&
|
||||||
SparseMatrixBase<Derived>::operator/=(const Scalar& other)
|
SparseMatrixBase<Derived>::operator/=(const Scalar& other)
|
||||||
{
|
{
|
||||||
|
typedef typename internal::evaluator<Derived>::InnerIterator EvalIterator;
|
||||||
|
internal::evaluator<Derived> thisEval(derived());
|
||||||
for (Index j=0; j<outerSize(); ++j)
|
for (Index j=0; j<outerSize(); ++j)
|
||||||
for (typename Derived::InnerIterator i(derived(),j); i; ++i)
|
for (EvalIterator i(thisEval,j); i; ++i)
|
||||||
i.valueRef() /= other;
|
i.valueRef() /= other;
|
||||||
return derived();
|
return derived();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user