35 #ifndef _BLAZE_MATH_VIEWS_SUBMATRIX_H_
36 #define _BLAZE_MATH_VIEWS_SUBMATRIX_H_
134 template<
typename MT
136 inline typename SubmatrixExprTrait<MT,unaligned>::Type
141 return submatrix<unaligned>( ~matrix,
row,
column, m, n );
205 template<
typename MT
207 inline typename SubmatrixExprTrait<const MT,unaligned>::Type
212 return submatrix<unaligned>( ~matrix,
row,
column, m, n );
302 inline typename DisableIf< Or< IsComputation<MT>, IsTransExpr<MT> >
303 ,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
309 return ReturnType( ~matrix, row, column, m, n );
399 inline typename DisableIf< Or< IsComputation<MT>, IsTransExpr<MT> >
400 ,
typename SubmatrixExprTrait<const MT,AF>::Type >::Type
406 return ReturnType( ~matrix, row, column, m, n );
437 inline typename EnableIf< IsMatMatAddExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
438 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
442 return submatrix<AF>( (~matrix).leftOperand() ,
row,
column, m, n ) +
443 submatrix<AF>( (~matrix).rightOperand(),
row,
column, m, n );
467 inline typename EnableIf< IsMatMatSubExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
468 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
472 return submatrix<AF>( (~matrix).leftOperand() ,
row,
column, m, n ) -
473 submatrix<AF>( (~matrix).rightOperand(),
row,
column, m, n );
497 inline typename EnableIf< IsMatMatMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
498 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
502 typename MT::LeftOperand left ( (~matrix).leftOperand() );
503 typename MT::RightOperand right( (~matrix).rightOperand() );
505 return submatrix<AF>( left,
row, 0UL, m, left.columns() ) *
506 submatrix<AF>( right, 0UL, column, right.rows(), n );
530 inline typename EnableIf< IsVecTVecMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
531 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
535 return subvector<AF>( (~matrix).leftOperand(),
row, m ) *
536 subvector<AF>( (~matrix).rightOperand(),
column, n );
560 inline typename EnableIf< IsMatScalarMultExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
561 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
565 return submatrix<AF>( (~matrix).leftOperand(),
row,
column, m, n ) * (~matrix).rightOperand();
589 inline typename EnableIf< IsMatScalarDivExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
590 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
594 return submatrix<AF>( (~matrix).leftOperand(),
row,
column, m, n ) / (~matrix).rightOperand();
618 inline typename EnableIf< IsMatAbsExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
619 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
623 return abs( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
647 inline typename EnableIf< IsMatEvalExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
648 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
652 return eval( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
676 inline typename EnableIf< IsMatSerialExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
677 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
681 return serial( submatrix<AF>( (~matrix).operand(), row, column, m, n ) );
705 inline typename EnableIf< IsMatTransExpr<MT>,
typename SubmatrixExprTrait<MT,AF>::Type >::Type
706 submatrix(
const Matrix<MT,SO>& matrix,
size_t row,
size_t column,
size_t m,
size_t n )
710 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:909
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:695
Header file for the IsMatMatAddExpr type trait class.
Header file for the IsMatTransExpr type trait class.
Header file for all restructuring subvector functions.
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:2477
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:677
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:137
const DMatTransExpr< MT,!SO > trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:932
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.