22 #ifndef _BLAZE_MATH_EXPRESSIONS_SVECABSEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_SVECABSEXPR_H_
32 #include <boost/type_traits/remove_reference.hpp>
70 class SVecAbsExpr :
public SparseVector< SVecAbsExpr<VT,TF>, TF >
76 typedef typename VT::ResultType
RT;
77 typedef typename VT::ReturnType
RN;
78 typedef typename VT::CompositeType
CT;
79 typedef typename VT::TransposeType
TT;
80 typedef typename VT::ElementType
ET;
108 template<
typename VT2 >
110 enum { value = useAssign };
143 typedef typename boost::remove_reference<Operand>::type::ConstIterator
IteratorType;
206 return abs(
it_->value() );
319 return sv_.nonZeros();
339 template<
typename T >
341 return sv_.canAlias( alias );
351 template<
typename T >
353 return sv_.isAliased( alias );
376 template<
typename VT2 >
388 const size_t size( rhs.size() );
389 for(
size_t i=0UL; i<
size; ++i ) {
390 (~lhs)[i] =
abs( (~lhs)[i] );
410 template<
typename VT2 >
420 typedef typename VT2::Iterator Iterator;
424 const Iterator
end( (~lhs).
end() );
425 for( Iterator element=(~lhs).
begin(); element!=
end; ++element ) {
426 element->value() =
abs( element->value() );
446 template<
typename VT2 >
447 friend inline typename EnableIf< UseAssign<VT2> >::Type
482 template<
typename VT2 >
483 friend inline typename EnableIf< UseAssign<VT2> >::Type
518 template<
typename VT2 >
519 friend inline typename EnableIf< UseAssign<VT2> >::Type
575 template<
typename VT
605 template<
typename VT
607 inline const SVecAbsExpr<VT,TF>&
abs(
const SVecAbsExpr<VT,TF>& sv )