35#ifndef _BLAZE_MATH_EXPRESSIONS_DVECDVECMAPEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_DVECDVECMAPEXPR_H_
105template<
typename VT1
110 :
public VecVecMapExpr< DenseVector< DVecDVecMapExpr<VT1,VT2,OP,TF>, TF > >
132 static constexpr bool useAssign = ( RequiresEvaluation_v<VT1> || RequiresEvaluation_v<VT2> );
136 template<
typename VT >
137 static constexpr bool UseAssign_v =
useAssign;
149 template<
typename VT >
150 static constexpr bool UseSMPAssign_v =
151 ( ( !VT1::smpAssignable || !VT2::smpAssignable ) &&
useAssign );
168 using ReturnType =
decltype( std::declval<OP>()( std::declval<RN1>(), std::declval<RN2>() ) );
226 ,
op_ ( std::move(op) )
315 inline auto load() const noexcept {
445 ( VT1::simdEnabled && VT2::simdEnabled &&
449 static constexpr bool smpAssignable = ( VT1::smpAssignable && VT2::smpAssignable );
467 ,
op_ ( std::move(op) )
491 if( index >=
lhs_.size() ) {
494 return (*
this)[index];
507 return op_.load(
lhs_.load( index ),
rhs_.load( index ) );
536 inline size_t size() const noexcept {
577 template<
typename T >
578 inline bool canAlias(
const T* alias )
const noexcept {
579 return ( IsExpression_v<VT1> &&
lhs_.canAlias( alias ) ) ||
580 ( IsExpression_v<VT2> &&
rhs_.canAlias( alias ) );
590 template<
typename T >
591 inline bool isAliased(
const T* alias )
const noexcept {
592 return (
lhs_.isAliased( alias ) ||
rhs_.isAliased( alias ) );
602 return lhs_.isAligned() &&
rhs_.isAligned();
612 return lhs_.canSMPAssign() &&
rhs_.canSMPAssign();
637 template<
typename VT >
651 assign( *lhs,
map( x, y, rhs.op_ ) );
670 template<
typename VT >
702 template<
typename VT >
703 friend inline auto addAssign( DenseVector<VT,TF>& lhs,
const DVecDVecMapExpr& rhs )
704 -> EnableIf_t< UseAssign_v<VT> >
716 addAssign( *lhs,
map( x, y, rhs.op_ ) );
739 template<
typename VT >
740 friend inline auto subAssign( DenseVector<VT,TF>& lhs,
const DVecDVecMapExpr& rhs )
741 -> EnableIf_t< UseAssign_v<VT> >
753 subAssign( *lhs,
map( x, y, rhs.op_ ) );
776 template<
typename VT >
777 friend inline auto multAssign( DenseVector<VT,TF>& lhs,
const DVecDVecMapExpr& rhs )
778 -> EnableIf_t< UseAssign_v<VT> >
790 multAssign( *lhs,
map( x, y, rhs.op_ ) );
813 template<
typename VT >
814 friend inline auto divAssign( DenseVector<VT,TF>& lhs,
const DVecDVecMapExpr& rhs )
815 -> EnableIf_t< UseAssign_v<VT> >
827 divAssign( *lhs,
map( x, y, rhs.op_ ) );
850 template<
typename VT >
852 -> EnableIf_t< UseSMPAssign_v<VT> >
883 template<
typename VT >
885 -> EnableIf_t< UseSMPAssign_v<VT> >
916 template<
typename VT >
918 -> EnableIf_t< UseSMPAssign_v<VT> >
954 template<
typename VT >
956 -> EnableIf_t< UseSMPAssign_v<VT> >
992 template<
typename VT >
994 -> EnableIf_t< UseSMPAssign_v<VT> >
1030 template<
typename VT >
1032 -> EnableIf_t< UseSMPAssign_v<VT> >
1097template<
typename VT1
1101inline decltype(
auto)
1106 if( (*lhs).size() != (*rhs).size() ) {
1111 return ReturnType( *lhs, *rhs, std::move(op) );
1134template<
typename VT1
1139inline decltype(
auto)
1146 return map(
map(
map( *dv1, *dv2, mp ), *dv3, mp ),
join( std::move(op) ) );
1170template<
typename VT1
1176inline decltype(
auto)
1183 return map(
map(
map(
map( *dv1, *dv2, mp ), *dv3, mp ), *dv4, mp ),
join( std::move(op) ) );
1208template<
typename VT1
1215inline decltype(
auto)
1223 return map(
map(
map(
map(
map( *dv1, *dv2, mp ), *dv3, mp ), *dv4, mp ), *dv5, mp ),
join( std::move(op) ) );
1249template<
typename VT1
1257inline decltype(
auto)
1265 return map(
map(
map(
map(
map(
map( *dv1, *dv2, mp ), *dv3, mp ), *dv4, mp ), *dv5, mp ), *dv6, mp ),
join( std::move(op) ) );
1292template<
typename VT1
1295inline decltype(
auto)
1300 return map( *lhs, *rhs,
Min() );
1327template<
typename VT1
1330inline decltype(
auto)
1335 return map( *lhs, *rhs,
Max() );
1362template<
typename VT1
1365inline decltype(
auto)
1397template<
typename VT1
1400inline decltype(
auto)
1405 return map( *lhs, *rhs,
Pow() );
1432template<
typename VT1
1435inline decltype(
auto)
1475template<
typename VT1
1479inline decltype(
auto)
1484 return map( cond, lhs, rhs, [](
bool c,
const auto& a,
const auto& b ) {
return c ? a : b; } );
1517template<
typename VT1
1520inline decltype(
auto)
1550template<
typename VT1
1553inline decltype(
auto)
1583template<
typename VT1
1586inline decltype(
auto)
1616template<
typename VT1
1619inline decltype(
auto)
1649template<
typename VT1
1652inline decltype(
auto)
1684template<
typename VT1
1688inline decltype(
auto)
1689 operator<<(
const DVecDVecMapExpr<VT1,VT2,ShiftLV,TF>& lhs,
const DenseVector<VT3,TF>& rhs )
1693 return map( lhs.leftOperand(), lhs.rightOperand() + (*rhs), lhs.operation() );
1713template<
typename VT1
1717inline decltype(
auto)
1718 operator>>(
const DVecDVecMapExpr<VT1,VT2,ShiftRV,TF>& lhs,
const DenseVector<VT3,TF>& rhs )
1722 return map( lhs.leftOperand(), lhs.rightOperand() + (*rhs), lhs.operation() );
1756template<
typename VT1
1759inline decltype(
auto)
1764 return map( *lhs, *rhs,
And{} );
1789template<
typename VT1
1792inline decltype(
auto)
1797 return map( *lhs, *rhs,
Or{} );
1812template<
typename VT1,
typename VT2,
typename OP,
bool TF >
1813struct IsAligned< DVecDVecMapExpr<VT1,VT2,OP,TF> >
1814 :
public BoolConstant< IsAligned_v<VT1> && IsAligned_v<VT2> >
1830template<
typename VT1,
typename VT2,
typename OP,
bool TF >
1831struct IsPadded< DVecDVecMapExpr<VT1,VT2,OP,TF> >
1832 :
public BoolConstant< IsPadded_v<VT1> && IsPadded_v<VT2> && IsPaddingEnabled_v<OP> >
Header file for auxiliary alias declarations.
typename T::CompositeType CompositeType_t
Alias declaration for nested CompositeType type definitions.
Definition: Aliases.h:110
typename T::ReturnType ReturnType_t
Alias declaration for nested ReturnType type definitions.
Definition: Aliases.h:470
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.
Definition: Aliases.h:450
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.
Definition: Aliases.h:130
typename T::TransposeType TransposeType_t
Alias declaration for nested TransposeType type definitions.
Definition: Aliases.h:550
Header file for run time assertion macros.
Header file for the EnableIf class template.
Header file for the function trace functionality.
Header file for the HasLoad type trait.
Macro for CUDA compatibility.
Header file for the If class template.
Header file for the IntegralConstant class template.
Header file for the IsAligned type trait.
Header file for the IsExpression type trait class.
Header file for the IsPadded type trait.
Header file for the IsPaddingEnabled type trait.
Header file for the IsSIMDEnabled type trait.
Header file for the IsVector type trait.
Header file for the Join functor.
Deactivation of problematic macros.
Header file for the MakePair functor.
Header file for the map trait.
Header file for all SIMD functionality.
Iterator over the elements of the dense vector map expression.
Definition: DVecDVecMapExpr.h:193
IteratorCategory iterator_category
The iterator category.
Definition: DVecDVecMapExpr.h:203
RightIteratorType right_
Iterator to the current right-hand side element.
Definition: DVecDVecMapExpr.h:436
PointerType pointer
Pointer return type.
Definition: DVecDVecMapExpr.h:205
bool operator>=(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:381
bool operator==(const ConstIterator &rhs) const
Equality comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:326
BLAZE_DEVICE_CALLABLE const ConstIterator operator++(int)
Post-increment operator.
Definition: DVecDVecMapExpr.h:273
ConstIterator_t< VT2 > RightIteratorType
ConstIterator type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:213
ConstIterator_t< VT1 > LeftIteratorType
ConstIterator type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:210
bool operator>(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:359
BLAZE_DEVICE_CALLABLE ConstIterator & operator-=(size_t dec)
Subtraction assignment operator.
Definition: DVecDVecMapExpr.h:249
bool operator!=(const ConstIterator &rhs) const
Inequality comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:337
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DVecDVecMapExpr.h:196
friend const ConstIterator operator+(const ConstIterator &it, size_t inc)
Addition between a ConstIterator and an integral value.
Definition: DVecDVecMapExpr.h:404
auto load() const noexcept
Access to the SIMD elements of the vector.
Definition: DVecDVecMapExpr.h:315
LeftIteratorType left_
Iterator to the current left-hand side element.
Definition: DVecDVecMapExpr.h:435
friend const ConstIterator operator-(const ConstIterator &it, size_t dec)
Subtraction between a ConstIterator and an integral value.
Definition: DVecDVecMapExpr.h:428
ValueType value_type
Type of the underlying elements.
Definition: DVecDVecMapExpr.h:204
friend const ConstIterator operator+(size_t inc, const ConstIterator &it)
Addition between an integral value and a ConstIterator.
Definition: DVecDVecMapExpr.h:416
ElementType * PointerType
Pointer return type.
Definition: DVecDVecMapExpr.h:198
bool operator<=(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:370
ReferenceType reference
Reference return type.
Definition: DVecDVecMapExpr.h:206
ReturnType operator*() const
Direct access to the element at the current iterator position.
Definition: DVecDVecMapExpr.h:305
BLAZE_DEVICE_CALLABLE ConstIterator & operator+=(size_t inc)
Addition assignment operator.
Definition: DVecDVecMapExpr.h:236
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DVecDVecMapExpr.h:200
bool operator<(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DVecDVecMapExpr.h:348
ElementType ValueType
Type of the underlying elements.
Definition: DVecDVecMapExpr.h:197
ElementType & ReferenceType
Reference return type.
Definition: DVecDVecMapExpr.h:199
DifferenceType difference_type
Difference between two iterators.
Definition: DVecDVecMapExpr.h:207
DifferenceType operator-(const ConstIterator &rhs) const
Calculating the number of elements between two iterators.
Definition: DVecDVecMapExpr.h:392
ConstIterator(LeftIteratorType left, RightIteratorType right, OP op)
Constructor for the ConstIterator class.
Definition: DVecDVecMapExpr.h:223
BLAZE_DEVICE_CALLABLE ConstIterator & operator++()
Pre-increment operator.
Definition: DVecDVecMapExpr.h:261
BLAZE_DEVICE_CALLABLE const ConstIterator operator--(int)
Post-decrement operator.
Definition: DVecDVecMapExpr.h:295
OP op_
The custom binary operation.
Definition: DVecDVecMapExpr.h:437
BLAZE_DEVICE_CALLABLE ConstIterator & operator--()
Pre-decrement operator.
Definition: DVecDVecMapExpr.h:283
Expression object for the dense vector-dense vector map() function.
Definition: DVecDVecMapExpr.h:112
TransposeType_t< ResultType > TransposeType
Transpose type for expression template evaluations.
Definition: DVecDVecMapExpr.h:164
LeftOperand leftOperand() const noexcept
Returns the left-hand side dense vector operand.
Definition: DVecDVecMapExpr.h:546
ConstIterator begin() const
Returns an iterator to the first non-zero element of the dense vector.
Definition: DVecDVecMapExpr.h:516
If_t< RequiresEvaluation_v< VT2 >, const RT2, CT2 > RT
Type for the assignment of the right-hand side dense vector operand.
Definition: DVecDVecMapExpr.h:186
DVecDVecMapExpr(const VT1 &lhs, const VT2 &rhs, OP op) noexcept
Constructor for the DVecDVecMapExpr class.
Definition: DVecDVecMapExpr.h:464
Operation operation() const
Returns a copy of the custom operation.
Definition: DVecDVecMapExpr.h:566
ResultType_t< VT1 > RT1
Result type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:115
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DVecDVecMapExpr.h:591
ConstIterator end() const
Returns an iterator just past the last non-zero element of the dense vector.
Definition: DVecDVecMapExpr.h:526
If_t< useAssign, const ResultType, const DVecDVecMapExpr & > CompositeType
Data type for composite expression templates.
Definition: DVecDVecMapExpr.h:171
static constexpr bool useAssign
Compilation switch for the serial evaluation strategy of the map expression.
Definition: DVecDVecMapExpr.h:132
CompositeType_t< VT2 > CT2
Composite type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:122
ReturnType_t< VT2 > RN2
Return type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:120
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: DVecDVecMapExpr.h:490
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DVecDVecMapExpr.h:601
RightOperand rhs_
Right-hand side dense vector of the map expression.
Definition: DVecDVecMapExpr.h:619
static constexpr bool simdEnabled
Compilation switch for the expression template evaluation strategy.
Definition: DVecDVecMapExpr.h:444
ElementType_t< ResultType > ElementType
Resulting element type.
Definition: DVecDVecMapExpr.h:165
If_t< IsExpression_v< VT2 >, const VT2, const VT2 & > RightOperand
Composite type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:177
ElementType_t< VT2 > ET2
Element type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:118
RightOperand rightOperand() const noexcept
Returns the right-hand side dense vector operand.
Definition: DVecDVecMapExpr.h:556
MapTrait_t< RT1, RT2, OP > ResultType
Result type for expression template evaluations.
Definition: DVecDVecMapExpr.h:163
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DVecDVecMapExpr.h:536
ElementType_t< VT1 > ET1
Element type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:117
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecDVecMapExpr.h:477
ResultType_t< VT2 > RT2
Result type of the right-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:116
ReturnType_t< VT1 > RN1
Return type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:119
static constexpr size_t SIMDSIZE
The number of elements packed within a single SIMD element.
Definition: DVecDVecMapExpr.h:454
BLAZE_ALWAYS_INLINE auto load(size_t index) const noexcept
Access to the SIMD elements of the vector.
Definition: DVecDVecMapExpr.h:504
Operation op_
The custom binary operation.
Definition: DVecDVecMapExpr.h:620
If_t< IsExpression_v< VT1 >, const VT1, const VT1 & > LeftOperand
Composite type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:174
LeftOperand lhs_
Left-hand side dense vector of the map expression.
Definition: DVecDVecMapExpr.h:618
OP Operation
Data type of the custom binary operation.
Definition: DVecDVecMapExpr.h:180
static constexpr bool smpAssignable
Compilation switch for the expression template assignment strategy.
Definition: DVecDVecMapExpr.h:449
decltype(std::declval< OP >()(std::declval< RN1 >(), std::declval< RN2 >())) ReturnType
Return type for expression template evaluations.
Definition: DVecDVecMapExpr.h:168
CompositeType_t< VT1 > CT1
Composite type of the left-hand side dense vector expression.
Definition: DVecDVecMapExpr.h:121
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DVecDVecMapExpr.h:578
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: DVecDVecMapExpr.h:611
If_t< RequiresEvaluation_v< VT1 >, const RT1, CT1 > LT
Type for the assignment of the left-hand side dense vector operand.
Definition: DVecDVecMapExpr.h:183
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
SIMD characteristics of data types.
Definition: SIMDTrait.h:297
Base class for sparse vectors.
Definition: SparseVector.h:72
Constraint on the data type.
Constraint on the data type.
Header file for the Computation base class.
Header file for the DenseVector base class.
Header file for the VecVecMapExpr base class.
Header file for the Atan2 functor.
Header file for the Bitand functor.
Header file for the Bitor functor.
Header file for the Bitxor functor.
Header file for the Hypot functor.
Header file for the Pow functor.
Header file for the ShiftLV functor.
Header file for the ShiftRV functor.
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) map(const DenseVector< VT1, TF > &dv1, const DenseVector< VT2, TF > &dv2, const DenseVector< VT3, TF > &dv3, const DenseVector< VT4, TF > &dv4, const DenseVector< VT5, TF > &dv5, const DenseVector< VT6, TF > &dv6, OP op)
Elementwise evaluation of the given 6-ary operation on each single element of the dense vectors dv1,...
Definition: DVecDVecMapExpr.h:1258
decltype(auto) min(const DenseVector< VT1, TF > &lhs, const DenseVector< VT2, TF > &rhs)
Computes the componentwise minimum of the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1296
decltype(auto) max(const DenseVector< VT1, TF > &lhs, const DenseVector< VT2, TF > &rhs)
Computes the componentwise maximum of the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1331
decltype(auto) select(const DenseVector< VT1, TF > &cond, const DenseVector< VT2, TF > &lhs, const DenseVector< VT3, TF > &rhs)
Elementwise conditional selection of values from the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1480
decltype(auto) hypot(const DenseVector< VT1, TF > &lhs, const DenseVector< VT2, TF > &rhs)
Computes the componentwise hypotenous for the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1366
decltype(auto) pow(const DenseVector< VT1, TF > &lhs, const DenseVector< VT2, TF > &rhs)
Computes the componentwise exponential value for the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1401
decltype(auto) atan2(const DenseVector< VT1, TF > &lhs, const DenseVector< VT2, TF > &rhs)
Computes the multi-valued inverse tangent of the dense vectors lhs and rhs.
Definition: DVecDVecMapExpr.h:1436
constexpr Join< OP > join(const OP &op)
Wraps the given operation to unpack paired arguments.
Definition: Join.h:183
#define BLAZE_CONSTRAINT_MUST_NOT_REQUIRE_EVALUATION(T)
Constraint on the data type.
Definition: RequiresEvaluation.h:81
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T, TF)
Constraint on the data type.
Definition: TransposeFlag.h:63
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: DenseVector.h:61
typename MapTrait< Args... >::Type MapTrait_t
Auxiliary alias declaration for the MapTrait class template.
Definition: MapTrait.h:131
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
auto smpDivAssign(Vector< VT1, TF1 > &lhs, const Vector< VT2, TF2 > &rhs) -> EnableIf_t< IsDenseVector_v< VT1 > >
Default implementation of the SMP division assignment of a vector to a dense vector.
Definition: DenseVector.h:221
auto smpSubAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP subtraction assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:162
auto smpAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:100
auto smpMultAssign(Vector< VT1, TF1 > &lhs, const Vector< VT2, TF2 > &rhs) -> EnableIf_t< IsDenseVector_v< VT1 > >
Default implementation of the SMP multiplication assignment of a vector to a dense vector.
Definition: DenseVector.h:192
auto smpAddAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP addition assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:131
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
#define BLAZE_DEVICE_CALLABLE
Conditional macro that sets host and device attributes when compiled with CUDA.
Definition: HostDevice.h:94
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:138
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108
IntegralConstant< bool, B > BoolConstant
Generic wrapper for a compile time constant boolean value.
Definition: IntegralConstant.h:110
#define BLAZE_THROW_OUT_OF_RANGE(MESSAGE)
Macro for the emission of a std::out_of_range exception.
Definition: Exception.h:331
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Header file for the exception macros of the math module.
Constraint on the data type.
Header file for all forward declarations for expression class templates.
Header file for the And functor.
Header file for the Max functor.
Header file for the Min functor.
Header file for the Or functor.
Header file for the serial shim.
Generic wrapper for the logical AND operator.
Definition: And.h:60
Generic wrapper for the atan2() function.
Definition: Atan2.h:80
Generic wrapper for the bitwise AND ('&') operator.
Definition: Bitand.h:82
Generic wrapper for the bitwise OR ('|') operator.
Definition: Bitor.h:82
Generic wrapper for the bitwise XOR ('^') operator.
Definition: Bitxor.h:68
Base class for all compute expression templates.
Definition: Computation.h:68
Generic wrapper for the hypot() function.
Definition: Hypot.h:80
Generic wrapper for the make_pair() function.
Definition: MakePair.h:82
Generic wrapper for the max() function.
Definition: Max.h:82
Generic wrapper for the min() function.
Definition: Min.h:82
Generic wrapper for the logical OR operator.
Definition: Or.h:60
Generic wrapper for the pow() function.
Definition: Pow.h:65
Generic wrapper for the elementwise left-shift operation.
Definition: ShiftLV.h:77
Generic wrapper for the elementwise right-shift operation.
Definition: ShiftRV.h:77
Base class for all binary vector map expression templates.
Definition: VecVecMapExpr.h:68
System settings for the inline keywords.
Header file for the RequiresEvaluation type trait.
Header file for basic type definitions.