35#ifndef _BLAZE_MATH_EXPRESSIONS_VECNOSIMDEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_VECNOSIMDEXPR_H_
85template<
typename VT >
110template<
typename VT >
115 return nosimd( (*vector).leftOperand() ) +
nosimd( (*vector).rightOperand() );
131template<
typename VT >
132inline decltype(
auto)
nosimd(
const VecVecSubExpr<VT>& vector )
136 return nosimd( (*vector).leftOperand() ) -
nosimd( (*vector).rightOperand() );
152template<
typename VT >
153inline decltype(
auto)
nosimd(
const VecVecMultExpr<VT>& vector )
157 return nosimd( (*vector).leftOperand() ) *
nosimd( (*vector).rightOperand() );
174template<
typename VT >
175inline decltype(
auto)
nosimd(
const VecVecKronExpr<VT>& vector )
179 return kron(
nosimd( (*vector).leftOperand() ),
nosimd( (*vector).rightOperand() ) );
195template<
typename VT >
196inline decltype(
auto)
nosimd(
const VecVecDivExpr<VT>& vector )
200 return nosimd( (*vector).leftOperand() ) /
nosimd( (*vector).rightOperand() );
216template<
typename VT >
217inline decltype(
auto)
nosimd(
const CrossExpr<VT>& vector )
221 return nosimd( (*vector).leftOperand() ) %
nosimd( (*vector).rightOperand() );
237template<
typename VT >
238inline decltype(
auto)
nosimd(
const VecScalarMultExpr<VT>& vector )
242 return nosimd( (*vector).leftOperand() ) * (*vector).rightOperand();
258template<
typename VT >
259inline decltype(
auto)
nosimd(
const VecScalarDivExpr<VT>& vector )
263 return nosimd( (*vector).leftOperand() ) / (*vector).rightOperand();
279template<
typename VT >
280inline decltype(
auto)
nosimd(
const VecMapExpr<VT>& vector )
284 return map(
nosimd( (*vector).operand() ), (*vector).operation() );
300template<
typename VT >
301inline decltype(
auto)
nosimd(
const VecVecMapExpr<VT>& vector )
305 return map(
nosimd( (*vector).leftOperand() ),
nosimd( (*vector).rightOperand() ),
306 (*vector).operation() );
322template<
typename VT >
323inline decltype(
auto)
nosimd(
const VecEvalExpr<VT>& vector )
344template<
typename VT >
345inline decltype(
auto)
nosimd(
const VecSerialExpr<VT>& vector )
365template<
typename VT >
366inline decltype(
auto)
nosimd(
const VecNoAliasExpr<VT>& vector )
386template<
typename VT >
387inline decltype(
auto)
nosimd(
const VecNoSIMDExpr<VT>& vector )
406template<
typename VT >
407inline decltype(
auto)
nosimd(
const VecTransExpr<VT>& vector )
428template<
typename VT >
429inline decltype(
auto)
nosimd(
const MatVecMultExpr<VT>& vector )
433 return nosimd( (*vector).leftOperand() ) *
nosimd( (*vector).rightOperand() );
450template<
typename VT >
451inline decltype(
auto)
nosimd(
const TVecMatMultExpr<VT>& vector )
455 return nosimd( (*vector).leftOperand() ) *
nosimd( (*vector).rightOperand() );
474inline decltype(
auto)
nosimd(
const MatReduceExpr<VT,RF>& vector )
478 return reduce<RF>(
nosimd( (*vector).operand() ), (*vector).operation() );
496inline decltype(
auto)
nosimd(
const VecRepeatExpr<VT,R0>& vector )
500 return repeat<R0>(
nosimd( (*vector).operand() ) );
516template<
typename VT >
517inline decltype(
auto)
nosimd(
const VecRepeatExpr<VT>& vector )
521 return repeat(
nosimd( (*vector).operand() ), (*vector).template repetitions<0UL>() );
Header file for the function trace functionality.
Header file for the reduction flags.
size_t ReductionFlag
Type of the reduction flags.
Definition: ReductionFlag.h:57
Header file for the CrossExpr base class.
Header file for the MatReduceExpr base class.
Header file for the MatVecMultExpr base class.
Header file for the NoSIMDExpr base class.
Header file for the TVecMatMultExpr base class.
Header file for the VecEvalExpr base class.
Header file for the VecMapExpr base class.
Header file for the VecNoAliasExpr base class.
Header file for the VecRepeatExpr base class.
Header file for the VecScalarDivExpr base class.
Header file for the VecScalarMultExpr base class.
Header file for the VecSerialExpr base class.
Header file for the VecTransExpr base class.
Header file for the VecVecAddExpr base class.
Header file for the VecVecDivExpr base class.
Header file for the VecVecKronExpr base class.
Header file for the VecVecMapExpr base class.
Header file for the VecVecMultExpr base class.
Header file for the VecVecSubExpr 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) 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) 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) kron(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the Kronecker product of two dense matrices ( ).
Definition: DMatDMatKronExpr.h:957
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Base class for all no-SIMD expression templates.
Definition: NoSIMDExpr.h:68
Base class for all vector no-SIMD expression templates.
Definition: VecNoSIMDExpr.h:88
Base class for all vector/vector addition expression templates.
Definition: VecVecAddExpr.h:68