22 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATABSEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_SMATABSEXPR_H_
32 #include <boost/type_traits/remove_reference.hpp>
76 typedef typename MT::ResultType
RT;
77 typedef typename MT::ReturnType
RN;
78 typedef typename MT::CompositeType
CT;
106 template<
typename MT2 >
108 enum { value = useAssign };
147 typedef typename boost::remove_reference<Operand>::type::ConstIterator
IteratorType;
210 return abs(
it_->value() );
327 return sm_.columns();
337 return sm_.nonZeros();
348 return sm_.nonZeros(i);
368 template<
typename T >
394 template<
typename MT2
406 const size_t m( rhs.
rows() );
407 const size_t n( rhs.
columns() );
409 for(
size_t i=0UL; i<m; ++i ) {
410 for(
size_t j=0UL; j<n; ++j ) {
411 (~lhs)(i,j) =
abs( (~lhs)(i,j) );
432 template<
typename MT2 >
441 typedef typename MT2::Iterator Iterator;
445 const size_t m( rhs.
rows() );
447 for(
size_t i=0UL; i<m; ++i ) {
448 const Iterator
end( (~lhs).
end(i) );
449 for( Iterator element=(~lhs).
begin(i); element!=
end; ++element ) {
450 element->value() =
abs( element->value() );
471 template<
typename MT2 >
472 friend inline typename EnableIf< UseAssign<MT2> >::Type
480 typedef typename MT2::Iterator Iterator;
484 const size_t n( rhs.columns() );
486 for(
size_t j=0UL; j<n; ++j ) {
487 const Iterator
end( (~lhs).
end(j) );
488 for( Iterator element=(~lhs).
begin(j); element!=
end; ++element ) {
489 element->value() =
abs( element->value() );
510 template<
typename MT2
512 friend inline typename EnableIf< UseAssign<MT2> >::Type
545 template<
typename MT2
547 friend inline typename EnableIf< UseAssign<MT2> >::Type
609 template<
typename MT
637 template<
typename MT