22 #ifndef _BLAZE_MATH_EXPRESSIONS_TDMATSMATADDEXPR_H_
23 #define _BLAZE_MATH_EXPRESSIONS_TDMATSMATADDEXPR_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" );
434 template<
typename T1
440 throw std::invalid_argument(
"Matrix sizes do not match" );
468 template<
typename T1
472 inline const typename AddExprTrait< TDMatSMatAddExpr<T1,T2>, T3 >::Type
475 return ( lhs.leftOperand() + (~rhs) ) + lhs.rightOperand();
494 template<
typename T1
498 inline const typename SubExprTrait< TDMatSMatAddExpr<T1,T2>, T3 >::Type
501 return ( lhs.leftOperand() - (~rhs) ) + lhs.rightOperand();
517 template<
typename MT1,
typename MT2,
typename MT3 >
523 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
524 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
525 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
526 ,
typename DMatSMatAddExprTrait< typename TDMatDMatAddExprTrait<MT1,MT3>::Type, MT2 >::Type
527 , INVALID_TYPE >::Type Type;
537 template<
typename MT1,
typename MT2,
typename MT3 >
543 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
544 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
545 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
546 ,
typename TDMatSMatAddExprTrait< typename TDMatTDMatAddExprTrait<MT1,MT3>::Type, MT2 >::Type
547 , INVALID_TYPE >::Type Type;
557 template<
typename MT1,
typename MT2,
typename MT3 >
563 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
564 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
565 IsDenseMatrix<MT3>::value && IsRowMajorMatrix<MT3>::value
566 ,
typename DMatSMatAddExprTrait< typename TDMatDMatSubExprTrait<MT1,MT3>::Type, MT2 >::Type
567 , INVALID_TYPE >::Type Type;
577 template<
typename MT1,
typename MT2,
typename MT3 >
583 typedef typename SelectType< IsDenseMatrix<MT1>::value && IsColumnMajorMatrix<MT1>::value &&
584 IsSparseMatrix<MT2>::value && IsRowMajorMatrix<MT2>::value &&
585 IsDenseMatrix<MT3>::value && IsColumnMajorMatrix<MT3>::value
586 ,
typename TDMatSMatAddExprTrait< typename TDMatTDMatSubExprTrait<MT1,MT3>::Type, MT2 >::Type
587 , INVALID_TYPE >::Type Type;