35 #ifndef _BLAZE_MATH_VIEWS_SUBMATRIX_H_
36 #define _BLAZE_MATH_VIEWS_SUBMATRIX_H_
133 template<
typename MT
135 inline typename SubmatrixExprTrait<MT,unaligned>::Type
140 return submatrix<unaligned>( ~matrix,
row,
column, m, n );
204 template<
typename MT
206 inline typename SubmatrixExprTrait<const MT,unaligned>::Type
211 return submatrix<unaligned>( ~matrix,
row,
column, m, n );
301 inline typename DisableIf< Or< IsComputation<MT>, IsTransExpr<MT> >
302 ,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
308 return ReturnType( ~matrix, row, column, m, n );
398 inline typename DisableIf< Or< IsComputation<MT>, IsTransExpr<MT> >
399 ,
typename SubmatrixExprTrait<const MT,AF>::Type >::Type
405 return ReturnType( ~matrix, row, column, m, n );
436 inline typename EnableIf< IsMatMatAddExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
437 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
441 return submatrix<AF>( (~matrix).leftOperand() ,
row,
column, m, n ) +
442 submatrix<AF>( (~matrix).rightOperand(),
row,
column, m, n );
466 inline typename EnableIf< IsMatMatSubExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
467 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
471 return submatrix<AF>( (~matrix).leftOperand() ,
row,
column, m, n ) -
472 submatrix<AF>( (~matrix).rightOperand(),
row,
column, m, n );
496 inline typename EnableIf< IsMatMatMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
497 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
501 typename MT::LeftOperand left ( (~matrix).leftOperand() );
502 typename MT::RightOperand right( (~matrix).rightOperand() );
504 return submatrix<AF>( left,
row, 0UL, m, left.columns() ) *
505 submatrix<AF>( right, 0UL, column, right.rows(), n );
529 inline typename EnableIf< IsVecTVecMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
530 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
534 return subvector<AF>( (~matrix).leftOperand(),
row, m ) *
535 subvector<AF>( (~matrix).rightOperand(),
column, n );
559 inline typename EnableIf< IsMatScalarMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
560 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
564 return submatrix<AF>( (~matrix).leftOperand(),
row,
column, m, n ) * (~matrix).rightOperand();
588 inline typename EnableIf< IsMatScalarDivExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
589 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
593 return submatrix<AF>( (~matrix).leftOperand(),
row,
column, m, n ) / (~matrix).rightOperand();
617 inline typename EnableIf< IsMatAbsExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
618 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
622 return abs( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
646 inline typename EnableIf< IsMatEvalExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
647 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
651 return eval( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
675 inline typename EnableIf< IsMatSerialExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
676 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
680 return serial( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
704 inline typename EnableIf< IsMatTransExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
705 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
709 return trans( submatrix<AF>( (~matrix).operand(), column, row, n, m ) );
Header file for the subvector/submatrix alignment flag values.
DisableIf< Or< IsComputation< MT >, IsTransExpr< MT > >, typename ColumnExprTrait< MT >::Type >::Type column(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific column of the given matrix.
Definition: Column.h:103
const DMatAbsExpr< MT, SO > abs(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the absolute values of each single element of dm.
Definition: DMatAbsExpr.h:903
Header file for the IsTransExpr type trait class.
const DMatSerialExpr< MT, SO > serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:690
Header file for the IsMatMatAddExpr type trait class.
Header file for the IsMatTransExpr type trait class.
Header file for the IsMatAbsExpr type trait class.
Header file for the DisableIf class template.
Header file for the IsVecTVecMultExpr type trait class.
Header file for the Or class template.
Header file for the IsMatMatMultExpr type trait class.
Header file for the IsMatSerialExpr type trait class.
Header file for the IsMatScalarMultExpr type trait class.
Evaluation of the expression type type of a submatrix operation.Via this type trait it is possible to...
Definition: SubmatrixExprTrait.h:78
Header file for the IsMatEvalExpr type trait class.
Header file for the EnableIf class template.
Header file for the serial shim.
DisableIf< Or< IsComputation< MT >, IsTransExpr< MT > >, typename RowExprTrait< MT >::Type >::Type row(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific row of the given matrix.
Definition: Row.h:103
Header file for the Matrix base class.
Header file for the SubmatrixExprTrait class template.
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2407
Header file for the IsMatScalarDivExpr type trait class.
const DMatEvalExpr< MT, SO > eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:672
Header file for the IsMatMatSubExpr type trait class.
SubmatrixExprTrait< MT, unaligned >::Type submatrix(Matrix< MT, SO > &matrix, size_t row, size_t column, size_t m, size_t n)
Creating a view on a specific submatrix of the given matrix.
Definition: Submatrix.h:136
const DMatTransExpr< MT,!SO > trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:907
Header file for the IsComputation type trait class.
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:157
Header file for basic type definitions.
Header file for the FunctionTrace class.