22 #ifndef _BLAZE_MATH_EXPRESSIONS_TDMATSMATSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_TDMATSMATSUBEXPR_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
249 template<
typename MT
265 const TmpType tmp( rhs );
284 template<
typename MT
314 template<
typename MT
390 template<
typename T1
396 throw std::invalid_argument(
"Matrix sizes do not match" );
424 template<
typename T1
428 inline const typename AddExprTrait< TDMatSMatSubExpr<T1,T2>, T3 >::Type
431 return ( lhs.leftOperand() + (~rhs) ) - lhs.rightOperand();
450 template<
typename T1
454 inline const typename SubExprTrait< TDMatSMatSubExpr<T1,T2>, T3 >::Type
457 return ( lhs.leftOperand() - (~rhs) ) - lhs.rightOperand();
473 template<
typename MT1,
typename MT2,
typename MT3 >
479 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
480 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
481 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
482 ,
typename DMatSMatSubExprTrait< typename TDMatDMatAddExprTrait<MT1,MT3>::Type, MT2 >::Type
483 , INVALID_TYPE >::Type Type;
493 template<
typename MT1,
typename MT2,
typename MT3 >
499 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
500 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
501 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
502 ,
typename TDMatSMatSubExprTrait< typename TDMatTDMatAddExprTrait<MT1,MT3>::Type, MT2 >::Type
503 , INVALID_TYPE >::Type Type;
513 template<
typename MT1,
typename MT2,
typename MT3 >
519 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
520 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
521 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
522 ,
typename DMatSMatSubExprTrait< typename TDMatDMatSubExprTrait<MT1,MT3>::Type, MT2 >::Type
523 , INVALID_TYPE >::Type Type;
533 template<
typename MT1,
typename MT2,
typename MT3 >
539 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
540 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
541 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
542 ,
typename TDMatSMatSubExprTrait< typename TDMatTDMatSubExprTrait<MT1,MT3>::Type, MT2 >::Type
543 , INVALID_TYPE >::Type Type;