22 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATTDMATSUBEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_SMATTDMATSUBEXPR_H_
68 template<
typename MT1
76 typedef typename MT1::ResultType
RT1;
77 typedef typename MT2::ResultType
RT2;
78 typedef typename MT1::ReturnType
RN1;
79 typedef typename MT2::ReturnType
RN2;
118 enum { vectorizable = 0 };
169 return lhs_.columns();
199 template<
typename T >
223 template<
typename MT
248 template<
typename MT
264 const TmpType tmp( rhs );
283 template<
typename MT
313 template<
typename MT
389 template<
typename T1
395 throw std::invalid_argument(
"Matrix sizes do not match" );
423 template<
typename T1
427 inline const typename AddExprTrait< SMatTDMatSubExpr<T1,T2>, T3 >::Type
430 return ( (~rhs) - lhs.rightOperand() ) + lhs.leftOperand();
449 template<
typename T1
453 inline const typename SubExprTrait< SMatTDMatSubExpr<T1,T2>, T3 >::Type
456 return lhs.leftOperand() - ( lhs.rightOperand() + (~rhs) );
472 template<
typename MT1,
typename MT2,
typename MT3 >
478 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsRowMajorMatrix<MT1>::value &&
479 IsDenseMatrix<MT2>::value && IsColumnMajorMatrix<MT2>::value &&
480 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
481 ,
typename DMatSMatAddExprTrait< typename DMatTDMatSubExprTrait<MT3,MT2>::Type, MT1 >::Type
482 , INVALID_TYPE >::Type Type;
492 template<
typename MT1,
typename MT2,
typename MT3 >
498 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsRowMajorMatrix<MT1>::value &&
499 IsDenseMatrix<MT2>::value && IsColumnMajorMatrix<MT2>::value &&
500 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
501 ,
typename TDMatSMatAddExprTrait< typename TDMatTDMatSubExprTrait<MT3,MT2>::Type, MT1 >::Type
502 , INVALID_TYPE >::Type Type;
512 template<
typename MT1,
typename MT2,
typename MT3 >
518 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsRowMajorMatrix<MT1>::value &&
519 IsDenseMatrix<MT2>::value && IsColumnMajorMatrix<MT2>::value &&
520 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
521 ,
typename SMatDMatSubExprTrait< MT1, typename TDMatDMatAddExprTrait<MT2,MT3>::Type >::Type
522 , INVALID_TYPE >::Type Type;
532 template<
typename MT1,
typename MT2,
typename MT3 >
538 typedef typename SelectType< IsSparseMatrix<MT1>::value && IsRowMajorMatrix<MT1>::value &&
539 IsDenseMatrix<MT2>::value && IsColumnMajorMatrix<MT2>::value &&
540 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
541 ,
typename SMatTDMatSubExprTrait< MT1, typename TDMatTDMatAddExprTrait<MT2,MT3>::Type >::Type
542 , INVALID_TYPE >::Type Type;