22 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATDMATSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_DMATDMATSUBEXPR_H_
69 template<
typename MT1
78 typedef typename MT1::ResultType
RT1;
79 typedef typename MT2::ResultType
RT2;
80 typedef typename MT1::ReturnType
RN1;
81 typedef typename MT2::ReturnType
RN2;
82 typedef typename MT1::CompositeType
CT1;
83 typedef typename MT2::CompositeType
CT2;
84 typedef typename MT1::ElementType
ET1;
85 typedef typename MT2::ElementType
ET2;
113 template<
typename VT >
115 enum { value = useAssign };
144 enum { vectorizable = MT1::vectorizable && MT2::vectorizable &&
213 return lhs_.columns();
243 template<
typename T >
256 template<
typename T >
258 return (
lhs_.isAliased( alias ) ||
rhs_.isAliased( alias ) );
282 template<
typename MT
317 template<
typename MT
336 const TmpType tmp( rhs );
356 template<
typename MT
358 friend inline typename EnableIf< UseAssign<MT> >::Type
390 template<
typename MT
392 friend inline typename EnableIf< UseAssign<MT> >::Type
461 template<
typename T1
464 inline const DMatDMatSubExpr<T1,T2,SO>
470 throw std::invalid_argument(
"Matrix sizes do not match" );
497 template<
typename MT1
500 inline typename RowExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >::Type
501 row(
const DMatDMatSubExpr<MT1,MT2,SO>& dm,
size_t index )
505 return row( dm.leftOperand(), index ) -
row( dm.rightOperand(), index );
523 template<
typename MT1
526 inline typename ColumnExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >::Type
527 column(
const DMatDMatSubExpr<MT1,MT2,SO>& dm,
size_t index )
531 return column( dm.leftOperand(), index ) -
column( dm.rightOperand(), index );
547 template<
typename MT1,
typename MT2,
bool SO >
548 struct RowExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >
552 typedef typename SubExprTrait< typename RowExprTrait<const MT1>::Type
553 ,
typename RowExprTrait<const MT2>::Type >::Type Type;
562 template<
typename MT1,
typename MT2,
bool SO >
563 struct ColumnExprTrait< DMatDMatSubExpr<MT1,MT2,SO> >
567 typedef typename SubExprTrait< typename ColumnExprTrait<const MT1>::Type
568 ,
typename ColumnExprTrait<const MT2>::Type >::Type Type;