22 #ifndef _BLAZE_MATH_EXPRESSIONS_TSMATDMATSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_TSMATDMATSUBEXPR_H_
64 template<
typename MT1
72 typedef typename MT1::ResultType
RT1;
73 typedef typename MT2::ResultType
RT2;
74 typedef typename MT1::ReturnType
RN1;
75 typedef typename MT2::ReturnType
RN2;
114 enum { vectorizable = 0 };
165 return lhs_.columns();
195 template<
typename T >
219 template<
typename MT
244 template<
typename MT
260 const TmpType tmp( rhs );
279 template<
typename MT
309 template<
typename MT
384 template<
typename T1
390 throw std::invalid_argument(
"Matrix sizes do not match" );
418 template<
typename T1
422 inline const typename AddExprTrait< TSMatDMatSubExpr<T1,T2>, T3 >::Type
425 return ( (~rhs) - lhs.rightOperand() ) + lhs.leftOperand();
444 template<
typename T1
448 inline const typename SubExprTrait< TSMatDMatSubExpr<T1,T2>, T3 >::Type
451 return lhs.leftOperand() - ( lhs.rightOperand() + (~rhs) );
467 template<
typename MT1,
typename MT2,
typename MT3 >
473 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
474 IsDenseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
475 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
476 ,
typename DMatTSMatAddExprTrait< typename DMatDMatSubExprTrait<MT3,MT2>::Type, MT1 >::Type
477 , INVALID_TYPE >::Type Type;
487 template<
typename MT1,
typename MT2,
typename MT3 >
493 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
494 IsDenseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
495 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
496 ,
typename DMatTSMatAddExprTrait< typename TDMatDMatSubExprTrait<MT3,MT2>::Type, MT1 >::Type
497 , INVALID_TYPE >::Type Type;
507 template<
typename MT1,
typename MT2,
typename MT3 >
513 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
514 IsDenseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
515 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
516 ,
typename TSMatDMatSubExprTrait< MT1, typename DMatDMatAddExprTrait<MT2,MT3>::Type >::Type
517 , INVALID_TYPE >::Type Type;
527 template<
typename MT1,
typename MT2,
typename MT3 >
533 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
534 IsDenseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
535 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
536 ,
typename TSMatDMatSubExprTrait< MT1, typename DMatTDMatAddExprTrait<MT2,MT3>::Type >::Type
537 , INVALID_TYPE >::Type Type;