22 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATABSEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_SMATABSEXPR_H_
72 class SMatAbsExpr :
public SparseMatrix< SMatAbsExpr<MT,SO>, SO >
78 typedef typename MT::ResultType
RT;
79 typedef typename MT::ReturnType
RN;
80 typedef typename MT::CompositeType
CT;
108 template<
typename MT2 >
110 enum { value = useAssign };
207 return abs(
it_->value() );
324 return sm_.columns();
334 return sm_.nonZeros();
345 return sm_.nonZeros(i);
365 template<
typename T >
367 return sm_.canAlias( alias );
377 template<
typename T >
379 return sm_.isAliased( alias );
402 template<
typename MT2
416 const size_t m( rhs.rows() );
417 const size_t n( rhs.columns() );
419 for(
size_t i=0UL; i<m; ++i ) {
420 for(
size_t j=0UL; j<n; ++j ) {
421 (~lhs)(i,j) =
abs( (~lhs)(i,j) );
442 template<
typename MT2 >
453 typedef typename MT2::Iterator Iterator;
457 const size_t m( rhs.rows() );
459 for(
size_t i=0UL; i<m; ++i ) {
460 const Iterator
end( (~lhs).
end(i) );
461 for( Iterator element=(~lhs).
begin(i); element!=
end; ++element ) {
462 element->value() =
abs( element->value() );
483 template<
typename MT2 >
484 friend inline typename EnableIf< UseAssign<MT2> >::Type
494 typedef typename MT2::Iterator Iterator;
498 const size_t n( rhs.columns() );
500 for(
size_t j=0UL; j<n; ++j ) {
501 const Iterator
end( (~lhs).
end(j) );
502 for( Iterator element=(~lhs).
begin(j); element!=
end; ++element ) {
503 element->value() =
abs( element->value() );
524 template<
typename MT2
526 friend inline typename EnableIf< UseAssign<MT2> >::Type
561 template<
typename MT2
563 friend inline typename EnableIf< UseAssign<MT2> >::Type
627 template<
typename MT
657 template<
typename MT
659 inline const SMatAbsExpr<MT,TF>&
abs(
const SMatAbsExpr<MT,TF>& sm )
679 template<
typename MT,
bool SO >
680 struct RowExprTrait< SMatAbsExpr<MT,SO> >
684 typedef typename AbsExprTrait< typename RowExprTrait<const MT>::Type >::Type Type;
693 template<
typename MT,
bool SO >
694 struct ColumnExprTrait< SMatAbsExpr<MT,SO> >
698 typedef typename AbsExprTrait< typename ColumnExprTrait<const MT>::Type >::Type Type;