Expression object for the dense vector-dense vector map() function.The DVecDVecMapExpr class represents the compile time expression for the pairwise evaluation of a binary custom operation on the elements of two dense vectors via the map() function.
More...
#include <DVecDVecMapExpr.h>
Inherits blaze::VecVecMapExpr< DenseVector< DVecDVecMapExpr< VT1, VT2, OP, TF >, TF > >, and blaze::Computation.
|
using | This = DVecDVecMapExpr< VT1, VT2, OP, TF > |
| Type of this DVecDVecMapExpr instance.
|
|
using | BaseType = DenseVector< This, TF > |
| Base type of this DVecDVecMapExpr instance.
|
|
using | ResultType = MapTrait_t< RT1, RT2, OP > |
| Result type for expression template evaluations.
|
|
using | TransposeType = TransposeType_t< ResultType > |
| Transpose type for expression template evaluations.
|
|
using | ElementType = ElementType_t< ResultType > |
| Resulting element type.
|
|
using | ReturnType = decltype(std::declval< OP >()(std::declval< RN1 >(), std::declval< RN2 >())) |
| Return type for expression template evaluations.
|
|
using | CompositeType = If_t< useAssign, const ResultType, const DVecDVecMapExpr &> |
| Data type for composite expression templates.
|
|
using | LeftOperand = If_t< IsExpression_v< VT1 >, const VT1, const VT1 &> |
| Composite type of the left-hand side dense vector expression.
|
|
using | RightOperand = If_t< IsExpression_v< VT2 >, const VT2, const VT2 &> |
| Composite type of the right-hand side dense vector expression.
|
|
using | Operation = OP |
| Data type of the custom unary operation.
|
|
using | LT = If_t< RequiresEvaluation_v< VT1 >, const RT1, CT1 > |
| Type for the assignment of the left-hand side dense vector operand.
|
|
using | RT = If_t< RequiresEvaluation_v< VT2 >, const RT2, CT2 > |
| Type for the assignment of the right-hand side dense vector operand.
|
|
using | VectorType = VT |
| Type of the vector.
|
|
|
static constexpr bool | simdEnabled |
| Compilation switch for the expression template evaluation strategy. More...
|
|
static constexpr bool | smpAssignable = ( VT1::smpAssignable && VT2::smpAssignable ) |
| Compilation switch for the expression template assignment strategy.
|
|
static constexpr size_t | SIMDSIZE = SIMDTrait<ElementType>::size |
| The number of elements packed within a single SIMD element.
|
|
static constexpr bool | transposeFlag = TF |
| Transpose flag of the vector.
|
|
|
using | RT1 = ResultType_t< VT1 > |
| Result type of the left-hand side dense vector expression.
|
|
using | RT2 = ResultType_t< VT2 > |
| Result type of the right-hand side dense vector expression.
|
|
using | ET1 = ElementType_t< VT1 > |
| Element type of the left-hand side dense vector expression.
|
|
using | ET2 = ElementType_t< VT2 > |
| Element type of the right-hand side dense vector expression.
|
|
using | RN1 = ReturnType_t< VT1 > |
| Return type of the left-hand side dense vector expression.
|
|
using | RN2 = ReturnType_t< VT2 > |
| Return type of the right-hand side dense vector expression.
|
|
using | CT1 = CompositeType_t< VT1 > |
| Composite type of the left-hand side dense vector expression.
|
|
using | CT2 = CompositeType_t< VT2 > |
| Composite type of the right-hand side dense vector expression.
|
|
template<typename VT1, typename VT2, typename OP, bool TF>
class blaze::DVecDVecMapExpr< VT1, VT2, OP, TF >
Expression object for the dense vector-dense vector map() function.
The DVecDVecMapExpr class represents the compile time expression for the pairwise evaluation of a binary custom operation on the elements of two dense vectors via the map() function.
◆ DVecDVecMapExpr()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Constructor for the DVecMapExpr class.
- Parameters
-
lhs | The left-hand side dense vector operand of the map expression. |
rhs | The right-hand side dense vector operand of the map expression. |
op | The custom unary operation. |
◆ at()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Checked access to the vector elements.
- Parameters
-
index | Access index. The index has to be in the range . |
- Returns
- The resulting value.
- Exceptions
-
std::out_of_range | Invalid vector access index. |
◆ begin()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns an iterator to the first non-zero element of the dense vector.
- Returns
- Iterator to the first non-zero element of the dense vector.
◆ canAlias()
template<typename VT1 , typename VT2 , typename OP , bool TF>
template<typename T >
Returns whether the expression can alias with the given address alias.
- Parameters
-
alias | The alias to be checked. |
- Returns
- true in case the expression can alias, false otherwise.
◆ canSMPAssign()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns whether the expression can be used in SMP assignments.
- Returns
- true in case the expression can be used in SMP assignments, false if not.
◆ end()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns an iterator just past the last non-zero element of the dense vector.
- Returns
- Iterator just past the last non-zero element of the dense vector.
◆ isAliased()
template<typename VT1 , typename VT2 , typename OP , bool TF>
template<typename T >
Returns whether the expression is aliased with the given address alias.
- Parameters
-
alias | The alias to be checked. |
- Returns
- true in case an alias effect is detected, false otherwise.
◆ isAligned()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns whether the operands of the expression are properly aligned in memory.
- Returns
- true in case the operands are aligned, false if not.
◆ leftOperand()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns the left-hand side dense vector operand.
- Returns
- The left-hand side dense vector operand.
◆ load()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Access to the SIMD elements of the vector.
- Parameters
-
index | Access index. The index has to be in the range . |
- Returns
- Reference to the accessed values.
◆ operation()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns a copy of the custom operation.
- Returns
- A copy of the custom operation.
◆ operator[]()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Subscript operator for the direct access to the vector elements.
- Parameters
-
index | Access index. The index has to be in the range . |
- Returns
- The resulting value.
◆ operator~() [1/2]
template<typename VT, bool TF>
Conversion operator for non-constant vectors.
- Returns
- Reference of the actual type of the vector.
◆ operator~() [2/2]
template<typename VT, bool TF>
Conversion operator for constant vectors.
- Returns
- Const reference of the actual type of the vector.
◆ rightOperand()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns the right-hand side dense vector operand.
- Returns
- The right-hand side dense vector operand.
◆ size()
template<typename VT1 , typename VT2 , typename OP , bool TF>
Returns the current size/dimension of the vector.
- Returns
- The size of the vector.
◆ simdEnabled
template<typename VT1 , typename VT2 , typename OP , bool TF>
Initial value:=
( VT1::simdEnabled && VT2::simdEnabled &&
If_t< HasSIMDEnabled_v<OP>, GetSIMDEnabled<OP,ET1,ET2>, HasLoad<OP> >::value )
Compilation switch for the expression template evaluation strategy.
◆ useAssign
template<typename VT1 , typename VT2 , typename OP , bool TF>
Compilation switch for the serial evaluation strategy of the map expression.
The useAssign compile time constant expression represents a compilation switch for the serial evaluation strategy of the map expression. In case either of the two dense vector operands requires an intermediate evaluation, useAssign will be set to 1 and the addition expression will be evaluated via the assign function family. Otherwise useAssign will be set to 0 and the expression will be evaluated via the subscript operator.
The documentation for this class was generated from the following file: