10 #ifndef EIGEN_SPARSE_DIAGONAL_PRODUCT_H
11 #define EIGEN_SPARSE_DIAGONAL_PRODUCT_H
34 template<
typename SparseXprType,
typename DiagonalCoeffType,
int SDP_Tag>
37 template<
typename Lhs,
typename Rhs,
int ProductTag>
48 template<
typename Lhs,
typename Rhs,
int ProductTag>
59 template<
typename SparseXprType,
typename DiagonalCoeffType>
72 m_coeff(xprEval.m_diagCoeffImpl.coeff(outer))
81 : m_sparseXprImpl(sparseXpr), m_diagCoeffImpl(diagCoeff)
92 template<
typename SparseXprType,
typename DiagCoeffType>
98 typedef typename nested_eval<DiagCoeffType,SparseXprType::IsRowMajor ? SparseXprType::RowsAtCompileTime
106 : m_sparseIter(xprEval.m_sparseXprEval, outer), m_diagCoeffNested(xprEval.m_diagCoeffNested)
109 inline Scalar value()
const {
return m_sparseIter.value() * m_diagCoeffNested.coeff(index()); }
112 inline Index col()
const {
return SparseXprType::IsRowMajor ? m_sparseIter.index() : m_sparseIter.outer(); }
113 inline Index row()
const {
return SparseXprType::IsRowMajor ? m_sparseIter.outer() : m_sparseIter.index(); }
116 inline operator bool()
const {
return m_sparseIter; }
124 : m_sparseXprEval(sparseXpr), m_diagCoeffNested(diagCoeff)
138 #endif // EIGEN_SPARSE_DIAGONAL_PRODUCT_H