35#ifndef NEKTAR_LIB_UTILITIES_LINEAR_ALGEBRA_SCALED_MATRIX_HPP
36#define NEKTAR_LIB_UTILITIES_LINEAR_ALGEBRA_SCALED_MATRIX_HPP
45template <
typename DataType,
typename InnerMatrixType>
53 typedef typename std::remove_const<typename InnerType::NumberType>::type
68 : m_iter(iter), m_scale(scale)
74 const_iterator out = *
this;
87 return m_scale * (*m_iter);
92 return m_iter == rhs.m_iter;
97 return !(*
this == rhs);
101 typename InnerType::const_iterator
m_iter;
109 typename boost::call_traits<NumberType>::const_reference scale,
110 std::shared_ptr<const InnerType> m);
115 typename boost::call_traits<NumberType>::const_reference scale,
121 unsigned int col)
const;
142 const std::shared_ptr<ThisType> &rhs);
146 typename boost::call_traits<NumberType>::value_type v_GetValue(
147 unsigned int row,
unsigned int column)
const override;
158template <
typename DataType>
162template <
typename DataType>
#define LIB_UTILITIES_EXPORT
bool operator==(const const_iterator &rhs)
const_iterator operator++(int)
const_iterator & operator++()
InnerType::const_iterator m_iter
bool operator!=(const const_iterator &rhs)
const_iterator(typename InnerType::const_iterator iter, const NumberType &scale)
std::remove_const< typenameInnerType::NumberType >::type NumberType
NumberType ConstGetValueType
NekMatrix(const ThisType &rhs)
static std::shared_ptr< ThisType > CreateWrapper(const std::shared_ptr< ThisType > &rhs)
ConstMatrix< DataType > BaseType
NekMatrix< InnerType, ScaledMatrixTag > ThisType
static ThisType CreateWrapper(const ThisType &rhs)
ThisType & operator=(const ThisType &)=default
NekMatrix(typename boost::call_traits< NumberType >::const_reference scale, const ThisType &rhs)
std::shared_ptr< const InnerType > m_matrix
NekMatrix< DataType, InnerMatrixType > InnerType
void NegateInPlace(NekVector< DataType > &v)
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose(NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)