35#ifndef _BLAZE_MATH_EXPRESSIONS_MATNOSIMDEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_MATNOSIMDEXPR_H_
92template<
typename MT >
117template<
typename MT >
122 return nosimd( (*matrix).leftOperand() ) +
nosimd( (*matrix).rightOperand() );
138template<
typename MT >
139inline decltype(
auto)
nosimd(
const MatMatSubExpr<MT>& matrix )
143 return nosimd( (*matrix).leftOperand() ) -
nosimd( (*matrix).rightOperand() );
159template<
typename MT >
160inline decltype(
auto)
nosimd(
const SchurExpr<MT>& matrix )
164 return nosimd( (*matrix).leftOperand() ) %
nosimd( (*matrix).rightOperand() );
180template<
typename MT >
181inline decltype(
auto)
nosimd(
const MatMatMultExpr<MT>& matrix )
185 return nosimd( (*matrix).leftOperand() ) *
nosimd( (*matrix).rightOperand() );
202template<
typename MT >
203inline decltype(
auto)
nosimd(
const MatMatKronExpr<MT>& matrix )
207 return kron(
nosimd( (*matrix).leftOperand() ),
nosimd( (*matrix).rightOperand() ) );
223template<
typename MT >
224inline decltype(
auto)
nosimd(
const VecTVecMultExpr<MT>& matrix )
228 return nosimd( (*matrix).leftOperand() ) *
nosimd( (*matrix).rightOperand() );
244template<
typename MT >
245inline decltype(
auto)
nosimd(
const MatScalarMultExpr<MT>& matrix )
249 return nosimd( (*matrix).leftOperand() ) * (*matrix).rightOperand();
265template<
typename MT >
266inline decltype(
auto)
nosimd(
const MatScalarDivExpr<MT>& matrix )
270 return nosimd( (*matrix).leftOperand() ) / (*matrix).rightOperand();
286template<
typename MT >
287inline decltype(
auto)
nosimd(
const MatMapExpr<MT>& matrix )
291 return map(
nosimd( (*matrix).operand() ), (*matrix).operation() );
307template<
typename MT >
308inline decltype(
auto)
nosimd(
const MatMatMapExpr<MT>& matrix )
312 return map(
nosimd( (*matrix).leftOperand() ),
nosimd( (*matrix).rightOperand() ),
313 (*matrix).operation() );
329template<
typename MT >
330inline decltype(
auto)
nosimd(
const VecTVecMapExpr<MT>& matrix )
334 return map(
nosimd( (*matrix).leftOperand() ),
nosimd( (*matrix).rightOperand() ),
335 (*matrix).operation() );
351template<
typename MT >
352inline decltype(
auto)
nosimd(
const MatEvalExpr<MT>& matrix )
373template<
typename MT >
374inline decltype(
auto)
nosimd(
const MatSerialExpr<MT>& matrix )
394template<
typename MT >
395inline decltype(
auto)
nosimd(
const MatNoAliasExpr<MT>& matrix )
415template<
typename MT >
416inline decltype(
auto)
nosimd(
const MatNoSIMDExpr<MT>& matrix )
434template<
typename MT >
435inline decltype(
auto)
nosimd(
const DeclSymExpr<MT>& matrix )
455template<
typename MT >
456inline decltype(
auto)
nosimd(
const DeclHermExpr<MT>& matrix )
476template<
typename MT >
477inline decltype(
auto)
nosimd(
const DeclLowExpr<MT>& matrix )
497template<
typename MT >
498inline decltype(
auto)
nosimd(
const DeclUniLowExpr<MT>& matrix )
518template<
typename MT >
519inline decltype(
auto)
nosimd(
const DeclStrLowExpr<MT>& matrix )
539template<
typename MT >
540inline decltype(
auto)
nosimd(
const DeclUppExpr<MT>& matrix )
560template<
typename MT >
561inline decltype(
auto)
nosimd(
const DeclUniUppExpr<MT>& matrix )
581template<
typename MT >
582inline decltype(
auto)
nosimd(
const DeclStrUppExpr<MT>& matrix )
602template<
typename MT >
603inline decltype(
auto)
nosimd(
const DeclDiagExpr<MT>& matrix )
623template<
typename MT >
624inline decltype(
auto)
nosimd(
const MatTransExpr<MT>& matrix )
646inline decltype(
auto)
nosimd(
const VecExpandExpr<MT,E>& matrix )
650 return expand<E>(
nosimd( (*matrix).operand() ) );
666template<
typename MT >
667inline decltype(
auto)
nosimd(
const VecExpandExpr<MT>& matrix )
671 return expand(
nosimd( (*matrix).operand() ), (*matrix).expansion() );
690inline decltype(
auto)
nosimd(
const MatRepeatExpr<MT,R0,R1>& matrix )
694 return repeat<R0,R1>(
nosimd( (*matrix).operand() ) );
710template<
typename MT >
711inline decltype(
auto)
nosimd(
const MatRepeatExpr<MT>& matrix )
716 , (*matrix).template repetitions<0UL>()
717 , (*matrix).template repetitions<1UL>() );
Header file for the function trace functionality.
Header file for the DeclDiagExpr base class.
Header file for the DeclHermExpr base class.
Header file for the DeclLowExpr base class.
Header file for the DeclStrLowExpr base class.
Header file for the DeclStrUppExpr base class.
Header file for the DeclSymExpr base class.
Header file for the DeclUniLowExpr base class.
Header file for the DeclUniUppExpr base class.
Header file for the DeclUppExpr base class.
Header file for the MatEvalExpr base class.
Header file for the MatMapExpr base class.
Header file for the MatMatAddExpr base class.
Header file for the MatMatKronExpr base class.
Header file for the MatMatMapExpr base class.
Header file for the MatMatMultExpr base class.
Header file for the MatMatSubExpr base class.
Header file for the MatNoAliasExpr base class.
Header file for the MatRepeatExpr base class.
Header file for the MatScalarDivExpr base class.
Header file for the MatScalarMultExpr base class.
Header file for the MatSerialExpr base class.
Header file for the MatTransExpr base class.
Header file for the NoSIMDExpr base class.
Header file for the SchurExpr base class.
Header file for the VecExpandExpr base class.
Header file for the VecTVecMapExpr base class.
Header file for the VecTVecMultExpr base class.
decltype(auto) noalias(const DenseMatrix< MT, SO > &dm)
Forces the non-aliased evaluation of the given dense matrix expression dm.
Definition: DMatNoAliasExpr.h:679
decltype(auto) eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:790
decltype(auto) declstrupp(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as strictly upper.
Definition: DMatDeclStrUppExpr.h:1003
decltype(auto) decldiag(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as diagonal.
Definition: DMatDeclDiagExpr.h:978
decltype(auto) repeat(const DenseMatrix< MT, SO > &dm, size_t m, size_t n)
Repeats the given dense matrix.
Definition: DMatRepeatExpr.h:543
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:766
decltype(auto) declstrlow(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as strictly lower.
Definition: DMatDeclStrLowExpr.h:1003
decltype(auto) map(const DenseMatrix< MT1, SO > &lhs, const DenseMatrix< MT2, SO > &rhs, OP op)
Elementwise evaluation of the given binary operation on each single element of the dense matrices lhs...
Definition: DMatDMatMapExpr.h:1144
decltype(auto) nosimd(const DenseMatrix< MT, SO > &dm)
Disables the SIMD evaluation of the given dense matrix expression dm.
Definition: DMatNoSIMDExpr.h:717
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:812
decltype(auto) declupp(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as upper.
Definition: DMatDeclUppExpr.h:1004
decltype(auto) kron(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the Kronecker product of two dense matrices ( ).
Definition: DMatDMatKronExpr.h:957
decltype(auto) decllow(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as lower.
Definition: DMatDeclLowExpr.h:1004
decltype(auto) decluniupp(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as uniupper.
Definition: DMatDeclUniUppExpr.h:1005
decltype(auto) declherm(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as Hermitian.
Definition: DMatDeclHermExpr.h:1005
decltype(auto) declsym(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as symmetric.
Definition: DMatDeclSymExpr.h:1005
decltype(auto) declunilow(const DenseMatrix< MT, SO > &dm)
Declares the given dense matrix expression dm as unilower.
Definition: DMatDeclUniLowExpr.h:1004
decltype(auto) expand(const DenseVector< VT, TF > &dv, size_t expansion)
Expansion of the given dense vector.
Definition: DVecExpandExpr.h:746
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Base class for all matrix/matrix addition expression templates.
Definition: MatMatAddExpr.h:68
Base class for all matrix no-SIMD expression templates.
Definition: MatNoSIMDExpr.h:95
Base class for all no-SIMD expression templates.
Definition: NoSIMDExpr.h:68