35#ifndef _BLAZE_MATH_EXPRESSIONS_DVECMAPEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_DVECMAPEXPR_H_
104 :
public VecMapExpr< DenseVector< DVecMapExpr<VT,OP,TF>, TF > >
122 static constexpr bool useAssign = ( IsComputation_v<VT> && RequiresEvaluation_v<VT> );
126 template<
typename VT2 >
127 static constexpr bool UseAssign_v =
useAssign;
139 template<
typename VT2 >
140 static constexpr bool UseSMPAssign_v =
141 ( ( !VT2::smpAssignable || !VT::smpAssignable ) &&
useAssign );
158 using ReturnType =
decltype( std::declval<OP>()( std::declval<RN>() ) );
202 ,
op_( std::move(op) )
287 inline auto load() const noexcept {
288 return op_.load(
it_.load() );
437 ,
op_( std::move(op) )
461 if( index >=
dv_.size() ) {
464 return (*
this)[index];
477 return op_.load(
dv_.load( index ) );
506 inline size_t size() const noexcept {
537 template<
typename T >
538 inline bool canAlias(
const T* alias )
const noexcept {
539 return IsExpression_v<VT> &&
dv_.canAlias( alias );
549 template<
typename T >
550 inline bool isAliased(
const T* alias )
const noexcept {
551 return dv_.isAliased( alias );
561 return dv_.isAligned();
571 return dv_.canSMPAssign();
596 template<
typename VT2 >
605 assign( *lhs, rhs.dv_ );
606 assign( *lhs,
map( *lhs, rhs.op_ ) );
626 template<
typename VT2 >
640 assign( *lhs,
map( tmp, rhs.op_ ) );
659 template<
typename VT2 >
660 friend inline auto assign( SparseVector<VT2,TF>& lhs,
const DVecMapExpr& rhs )
661 -> EnableIf_t< UseAssign_v<VT2> >
672 assign( *lhs,
map( tmp, rhs.op_ ) );
691 template<
typename VT2 >
692 friend inline auto addAssign( DenseVector<VT2,TF>& lhs,
const DVecMapExpr& rhs )
693 -> EnableIf_t< UseAssign_v<VT2> >
704 addAssign( *lhs,
map( tmp, rhs.op_ ) );
727 template<
typename VT2 >
728 friend inline auto subAssign( DenseVector<VT2,TF>& lhs,
const DVecMapExpr& rhs )
729 -> EnableIf_t< UseAssign_v<VT2> >
740 subAssign( *lhs,
map( tmp, rhs.op_ ) );
763 template<
typename VT2 >
764 friend inline auto multAssign( DenseVector<VT2,TF>& lhs,
const DVecMapExpr& rhs )
765 -> EnableIf_t< UseAssign_v<VT2> >
776 multAssign( *lhs,
map( tmp, rhs.op_ ) );
799 template<
typename VT2 >
800 friend inline auto divAssign( DenseVector<VT2,TF>& lhs,
const DVecMapExpr& rhs )
801 -> EnableIf_t< UseAssign_v<VT2> >
812 divAssign( *lhs,
map( tmp, rhs.op_ ) );
836 template<
typename VT2 >
838 -> EnableIf_t< UseSMPAssign_v<VT2> &&
839 IsSame_v< UnderlyingScalar_t<VT>, UnderlyingScalar_t<VT2> > >
866 template<
typename VT2 >
868 -> EnableIf_t< UseSMPAssign_v<VT2> &&
869 !IsSame_v< UnderlyingScalar_t<VT>, UnderlyingScalar_t<VT2> > >
879 const RT tmp( rhs.dv_ );
899 template<
typename VT2 >
901 -> EnableIf_t< UseSMPAssign_v<VT2> >
911 const RT tmp( rhs.dv_ );
931 template<
typename VT2 >
933 -> EnableIf_t< UseSMPAssign_v<VT2> >
943 const RT tmp( rhs.dv_ );
967 template<
typename VT2 >
969 -> EnableIf_t< UseSMPAssign_v<VT2> >
979 const RT tmp( rhs.dv_ );
1003 template<
typename VT2 >
1005 -> EnableIf_t< UseSMPAssign_v<VT2> >
1015 const RT tmp( rhs.dv_ );
1039 template<
typename VT2 >
1041 -> EnableIf_t< UseSMPAssign_v<VT2> >
1051 const RT tmp( rhs.dv_ );
1097template<
typename VT
1105 return ReturnType( *dv, std::move(op) );
1128template<
typename VT
1135 return map( *dv, std::move(op) );
1159template<
typename VT
1162 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
1193template<
typename ST
1196 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
1230template<
typename VT
1233 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
1264template<
typename ST
1267 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
1296template<
typename VT
1302 return map( *dv,
Abs() );
1324template<
typename VT
1352template<
typename VT
1380template<
typename VT
1408template<
typename VT
1436template<
typename VT
1464template<
typename VT
1501template<
typename VT
1529template<
typename VT
1557template<
typename VT
1585template<
typename VT
1591 return map( *dv,
Arg() );
1616template<
typename VT
1647template<
typename VT
1678template<
typename VT
1709template<
typename VT
1739template<
typename VT
1769template<
typename VT
1772 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
1801template<
typename VT
1807 return map( *dv,
Exp() );
1829template<
typename VT
1857template<
typename VT
1888template<
typename VT
1894 return map( *dv,
Log() );
1919template<
typename VT
1950template<
typename VT
1983template<
typename VT
2016template<
typename VT
2044template<
typename VT
2050 return map( *dv,
Sin() );
2075template<
typename VT
2103template<
typename VT
2131template<
typename VT
2159template<
typename VT
2165 return map( *dv,
Cos() );
2190template<
typename VT
2218template<
typename VT
2249template<
typename VT
2277template<
typename VT
2283 return map( *dv,
Tan() );
2305template<
typename VT
2336template<
typename VT
2367template<
typename VT
2395template<
typename VT
2401 return map( *dv,
Erf() );
2423template<
typename VT
2453template<
typename VT
2455inline decltype(
auto)
abs(
const DVecMapExpr<VT,Abs,TF>& dv )
2476template<
typename VT
2478inline decltype(
auto)
sign(
const DVecMapExpr<VT,Sign,TF>& dv )
2499template<
typename VT
2501inline decltype(
auto)
floor(
const DVecMapExpr<VT,Floor,TF>& dv )
2522template<
typename VT
2524inline decltype(
auto)
ceil(
const DVecMapExpr<VT,Ceil,TF>& dv )
2545template<
typename VT
2547inline decltype(
auto)
trunc(
const DVecMapExpr<VT,Trunc,TF>& dv )
2568template<
typename VT
2570inline decltype(
auto)
round(
const DVecMapExpr<VT,Round,TF>& dv )
2598template<
typename VT
2600inline decltype(
auto)
conj(
const DVecMapExpr<VT,Conj,TF>& dv )
2604 return dv.operand();
2628template<
typename VT
2630inline decltype(
auto)
conj(
const DVecTransExpr<DVecMapExpr<VT,Conj,TF>,!TF>& dv )
2634 return trans( dv.operand().operand() );
2651template<
typename VT
2653inline decltype(
auto)
real(
const DVecMapExpr<VT,Real,TF>& dv )
2694template<
typename VT
2697 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2732template<
typename ST
2735 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2770template<
typename VT
2773 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2808template<
typename ST
2811 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2846template<
typename ST
2849 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2877template<
typename VT
2904template<
typename VT
2931template<
typename VT
2934 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2960template<
typename VT
2963 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
2989template<
typename VT
2992 , EnableIf_t< IsScalar_v<ST> >* =
nullptr >
3025template<
typename VT
3031 return map( *vec,
Not{} );
3046template<
typename VT,
typename OP,
bool TF >
3047struct IsAligned< DVecMapExpr<VT,OP,TF> >
3048 :
public IsAligned<VT>
3064template<
typename VT,
typename OP,
bool TF >
3065struct IsPadded< DVecMapExpr<VT,OP,TF> >
3066 :
public BoolConstant< IsPadded_v<VT> && IsPaddingEnabled_v<OP> >
Header file for the addition trait.
Header file for auxiliary alias declarations.
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 division trait.
Header file for the EnableIf class template.
Header file for the function trace functionality.
Header file for all functors.
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 IsComputation type trait class.
Header file for the IsExpression type trait class.
Header file for the IsNumeric type trait.
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 IsSame and IsStrictlySame type traits.
Header file for the IsScalar type trait.
Deactivation of problematic macros.
Header file for the map trait.
Header file for the multiplication trait.
Header file for all SIMD functionality.
Header file for the subtraction trait.
Header file for the UnderlyingScalar type trait.
Iterator over the elements of the dense vector map expression.
Definition: DVecMapExpr.h:174
BLAZE_DEVICE_CALLABLE bool operator!=(const ConstIterator &rhs) const
Inequality comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:309
IteratorCategory iterator_category
The iterator category.
Definition: DVecMapExpr.h:184
BLAZE_DEVICE_CALLABLE ConstIterator & operator+=(size_t inc)
Addition assignment operator.
Definition: DVecMapExpr.h:212
OP op_
The custom unary operation.
Definition: DVecMapExpr.h:408
BLAZE_DEVICE_CALLABLE ConstIterator & operator-=(size_t dec)
Subtraction assignment operator.
Definition: DVecMapExpr.h:224
friend BLAZE_DEVICE_CALLABLE const ConstIterator operator+(const ConstIterator &it, size_t inc)
Addition between a ConstIterator and an integral value.
Definition: DVecMapExpr.h:376
BLAZE_DEVICE_CALLABLE bool operator>(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:331
BLAZE_DEVICE_CALLABLE DifferenceType operator-(const ConstIterator &rhs) const
Calculating the number of elements between two iterators.
Definition: DVecMapExpr.h:364
BLAZE_DEVICE_CALLABLE bool operator<(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:320
DifferenceType difference_type
Difference between two iterators.
Definition: DVecMapExpr.h:188
BLAZE_DEVICE_CALLABLE ReturnType operator*() const
Direct access to the element at the current iterator position.
Definition: DVecMapExpr.h:277
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DVecMapExpr.h:177
PointerType pointer
Pointer return type.
Definition: DVecMapExpr.h:186
ElementType ValueType
Type of the underlying elements.
Definition: DVecMapExpr.h:178
ValueType value_type
Type of the underlying elements.
Definition: DVecMapExpr.h:185
BLAZE_DEVICE_CALLABLE const ConstIterator operator--(int)
Post-decrement operator.
Definition: DVecMapExpr.h:267
BLAZE_DEVICE_CALLABLE const ConstIterator operator++(int)
Post-increment operator.
Definition: DVecMapExpr.h:246
IteratorType it_
Iterator to the current vector element.
Definition: DVecMapExpr.h:407
ElementType * PointerType
Pointer return type.
Definition: DVecMapExpr.h:179
friend BLAZE_DEVICE_CALLABLE const ConstIterator operator+(size_t inc, const ConstIterator &it)
Addition between an integral value and a ConstIterator.
Definition: DVecMapExpr.h:388
BLAZE_DEVICE_CALLABLE ConstIterator & operator++()
Pre-increment operator.
Definition: DVecMapExpr.h:235
auto load() const noexcept
Access to the SIMD elements of the vector.
Definition: DVecMapExpr.h:287
ReferenceType reference
Reference return type.
Definition: DVecMapExpr.h:187
BLAZE_DEVICE_CALLABLE bool operator<=(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:342
ElementType & ReferenceType
Reference return type.
Definition: DVecMapExpr.h:180
ConstIterator_t< VT > IteratorType
ConstIterator type of the left-hand side dense vector expression.
Definition: DVecMapExpr.h:191
BLAZE_DEVICE_CALLABLE bool operator>=(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:353
BLAZE_DEVICE_CALLABLE bool operator==(const ConstIterator &rhs) const
Equality comparison between two ConstIterator objects.
Definition: DVecMapExpr.h:298
friend BLAZE_DEVICE_CALLABLE const ConstIterator operator-(const ConstIterator &it, size_t dec)
Subtraction between a ConstIterator and an integral value.
Definition: DVecMapExpr.h:400
BLAZE_DEVICE_CALLABLE ConstIterator(IteratorType it, OP op)
Constructor for the ConstIterator class.
Definition: DVecMapExpr.h:200
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DVecMapExpr.h:181
BLAZE_DEVICE_CALLABLE ConstIterator & operator--()
Pre-decrement operator.
Definition: DVecMapExpr.h:256
Expression object for the dense vector map() function.
Definition: DVecMapExpr.h:106
ConstIterator begin() const
Returns an iterator to the first non-zero element of the dense vector.
Definition: DVecMapExpr.h:486
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: DVecMapExpr.h:570
Operation op_
The custom unary operation.
Definition: DVecMapExpr.h:578
ConstIterator end() const
Returns an iterator just past the last non-zero element of the dense vector.
Definition: DVecMapExpr.h:496
ElementType_t< VT > ET
Element type of the dense vector expression.
Definition: DVecMapExpr.h:110
static constexpr bool simdEnabled
Compilation switch for the expression template evaluation strategy.
Definition: DVecMapExpr.h:416
TransposeType_t< ResultType > TransposeType
Transpose type for expression template evaluations.
Definition: DVecMapExpr.h:154
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DVecMapExpr.h:538
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DVecMapExpr.h:550
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecMapExpr.h:447
MapTrait_t< RT, OP > ResultType
Result type for expression template evaluations.
Definition: DVecMapExpr.h:153
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DVecMapExpr.h:506
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: DVecMapExpr.h:460
If_t< IsExpression_v< VT >, const VT, const VT & > Operand
Composite data type of the dense vector expression.
Definition: DVecMapExpr.h:164
Operation operation() const
Returns a copy of the custom operation.
Definition: DVecMapExpr.h:526
static constexpr size_t SIMDSIZE
The number of elements packed within a single SIMD element.
Definition: DVecMapExpr.h:426
ElementType_t< ResultType > ElementType
Resulting element type.
Definition: DVecMapExpr.h:155
DVecMapExpr(const VT &dv, OP op) noexcept
Constructor for the DVecMapExpr class.
Definition: DVecMapExpr.h:435
Operand dv_
Dense vector of the map expression.
Definition: DVecMapExpr.h:577
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DVecMapExpr.h:560
ResultType_t< VT > RT
Result type of the dense vector expression.
Definition: DVecMapExpr.h:109
BLAZE_ALWAYS_INLINE auto load(size_t index) const noexcept
Access to the SIMD elements of the vector.
Definition: DVecMapExpr.h:474
static constexpr bool useAssign
Compilation switch for the serial evaluation strategy of the map expression.
Definition: DVecMapExpr.h:122
If_t< useAssign, const ResultType, const DVecMapExpr & > CompositeType
Data type for composite expression templates.
Definition: DVecMapExpr.h:161
Operand operand() const noexcept
Returns the dense vector operand.
Definition: DVecMapExpr.h:516
static constexpr bool smpAssignable
Compilation switch for the expression template assignment strategy.
Definition: DVecMapExpr.h:421
OP Operation
Data type of the custom unary operation.
Definition: DVecMapExpr.h:167
ReturnType_t< VT > RN
Return type of the dense vector expression.
Definition: DVecMapExpr.h:111
decltype(std::declval< OP >()(std::declval< RN >())) ReturnType
Return type for expression template evaluations.
Definition: DVecMapExpr.h:158
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
SIMD characteristics of data types.
Definition: SIMDTrait.h:297
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 VecMapExpr base class.
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:766
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) arg(const DenseVector< VT, TF > &dv)
Returns a vector containing the phase angle of each single element of dv.
Definition: DVecMapExpr.h:1587
decltype(auto) acosh(const DenseVector< VT, TF > &dv)
Computes the inverse hyperbolic cosine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2251
decltype(auto) forEach(const DenseVector< VT, TF > &dv, OP op)
Evaluates the given custom operation on each single element of the dense vector dv.
Definition: DVecMapExpr.h:1131
decltype(auto) erfc(const DenseVector< VT, TF > &dv)
Computes the complementary error function for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2425
decltype(auto) ceil(const DenseVector< VT, TF > &dv)
Applies the ceil() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1382
decltype(auto) cos(const DenseVector< VT, TF > &dv)
Computes the cosine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2161
decltype(auto) trunc(const DenseVector< VT, TF > &dv)
Applies the trunc() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1410
decltype(auto) round(const DenseVector< VT, TF > &dv)
Applies the round() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1438
decltype(auto) atan(const DenseVector< VT, TF > &dv)
Computes the inverse tangent for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2307
decltype(auto) max(ST scalar, const DenseVector< VT, TF > &dv)
Computes the componentwise maximum of a scalar and a dense vector dv.
Definition: DVecMapExpr.h:1268
decltype(auto) asin(const DenseVector< VT, TF > &dv)
Computes the inverse sine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2077
decltype(auto) tan(const DenseVector< VT, TF > &dv)
Computes the tangent for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2279
decltype(auto) atanh(const DenseVector< VT, TF > &dv)
Computes the inverse hyperbolic tangent for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2369
decltype(auto) exp2(const DenseVector< VT, TF > &dv)
Computes for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1831
decltype(auto) conj(const DenseVector< VT, TF > &dv)
Returns a vector containing the complex conjugate of each single element of dv.
Definition: DVecMapExpr.h:1466
decltype(auto) sinh(const DenseVector< VT, TF > &dv)
Computes the hyperbolic sine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2105
decltype(auto) invsqrt(const DenseVector< VT, TF > &dv)
Computes the inverse square root of each single element of the dense vector dv.
Definition: DVecMapExpr.h:1649
decltype(auto) invcbrt(const DenseVector< VT, TF > &dv)
Computes the inverse cubic root of each single element of the dense vector dv.
Definition: DVecMapExpr.h:1711
decltype(auto) log10(const DenseVector< VT, TF > &dv)
Computes the common logarithm for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1952
decltype(auto) log1p(const DenseVector< VT, TF > &dv)
Computes the natural logarithm of x+1 for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1985
decltype(auto) floor(const DenseVector< VT, TF > &dv)
Applies the floor() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1354
decltype(auto) sqrt(const DenseVector< VT, TF > &dv)
Computes the square root of each single element of the dense vector dv.
Definition: DVecMapExpr.h:1618
decltype(auto) ctrans(const DenseVector< VT, TF > &dv)
Returns the conjugate transpose vector of dv.
Definition: DVecMapExpr.h:1503
decltype(auto) log2(const DenseVector< VT, TF > &dv)
Computes the binary logarithm for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1921
decltype(auto) erf(const DenseVector< VT, TF > &dv)
Computes the error function for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2397
decltype(auto) exp(const DenseVector< VT, TF > &dv)
Computes for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1803
decltype(auto) imag(const DenseVector< VT, TF > &dv)
Returns a vector containing the imaginary part of each single element of dv.
Definition: DVecMapExpr.h:1559
decltype(auto) log(const DenseVector< VT, TF > &dv)
Computes the natural logarithm for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1890
decltype(auto) sin(const DenseVector< VT, TF > &dv)
Computes the sine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2046
decltype(auto) min(ST scalar, const DenseVector< VT, TF > &dv)
Computes the componentwise minimum of a scalar and a dense vector dv.
Definition: DVecMapExpr.h:1197
decltype(auto) cosh(const DenseVector< VT, TF > &dv)
Computes the hyperbolic cosine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2220
decltype(auto) abs(const DenseVector< VT, TF > &dv)
Applies the abs() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1298
decltype(auto) clamp(const DenseVector< VT, TF > &dv, const DT &min, const DT &max)
Restricts each single element of the dense vector dv to the range .
Definition: DVecMapExpr.h:1742
decltype(auto) real(const DenseVector< VT, TF > &dv)
Returns a vector containing the real part of each single element of dv.
Definition: DVecMapExpr.h:1531
decltype(auto) exp10(const DenseVector< VT, TF > &dv)
Computes for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1859
decltype(auto) cbrt(const DenseVector< VT, TF > &dv)
Computes the cubic root of each single element of the dense vector dv.
Definition: DVecMapExpr.h:1680
decltype(auto) map(const DenseVector< VT, TF > &dv, OP op)
Evaluates the given custom operation on each single element of the dense vector dv.
Definition: DVecMapExpr.h:1100
decltype(auto) pow(const DenseVector< VT, TF > &dv, ST exp)
Computes the exponential value for each single element of the dense vector dv.
Definition: DVecMapExpr.h:1773
decltype(auto) tanh(const DenseVector< VT, TF > &dv)
Computes the hyperbolic tangent for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2338
decltype(auto) sign(const DenseVector< VT, TF > &dv)
Applies the sign() function to each single element of the dense vector dv.
Definition: DVecMapExpr.h:1326
decltype(auto) acos(const DenseVector< VT, TF > &dv)
Computes the inverse cosine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2192
decltype(auto) asinh(const DenseVector< VT, TF > &dv)
Computes the inverse hyperbolic sine for each single element of the dense vector dv.
Definition: DVecMapExpr.h:2133
decltype(auto) lgamma(const DenseVector< VT, SO > &dv)
Computes the natural logarithm of the absolute value of the gamma function for each single element of...
Definition: DVecMapExpr.h:2018
constexpr Bind1st< OP, A1 > bind1st(const OP &op, const A1 &a1)
Binds the given object/value to the 1st parameter of the given operation.
Definition: Bind1st.h:153
constexpr Bind3rd< OP, A3 > bind3rd(const OP &op, const A3 &a3)
Binds the given object/value to the 3rd parameter of the given operation.
Definition: Bind3rd.h:157
constexpr Bind2nd< OP, A2 > bind2nd(const OP &op, const A2 &a2)
Binds the given object/value to the 2nd parameter of the given operation.
Definition: Bind2nd.h:155
#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 DivTrait< T1, T2 >::Type DivTrait_t
Auxiliary alias declaration for the DivTrait class template.
Definition: DivTrait.h:164
typename MapTrait< Args... >::Type MapTrait_t
Auxiliary alias declaration for the MapTrait class template.
Definition: MapTrait.h:131
typename AddTrait< T1, T2 >::Type AddTrait_t
Auxiliary alias declaration for the AddTrait class template.
Definition: AddTrait.h:163
typename SubTrait< T1, T2 >::Type SubTrait_t
Auxiliary alias declaration for the SubTrait class template.
Definition: SubTrait.h:163
typename MultTrait< T1, T2 >::Type MultTrait_t
Auxiliary alias declaration for the MultTrait class template.
Definition: MultTrait.h:165
typename UnderlyingScalar< T >::Type UnderlyingScalar_t
Auxiliary alias declaration for the UnderlyingScalar type trait.
Definition: UnderlyingScalar.h:116
#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_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 serial shim.
Generic wrapper for the abs() function.
Definition: Abs.h:85
Generic wrapper for the acos() function.
Definition: Acos.h:71
Generic wrapper for the acosh() function.
Definition: Acosh.h:71
Generic wrapper for the addition operator.
Definition: Add.h:85
Generic wrapper for the arg() function.
Definition: Arg.h:77
Generic wrapper for the asin() function.
Definition: Asin.h:81
Generic wrapper for the asinh() function.
Definition: Asinh.h:81
Generic wrapper for the atan() function.
Definition: Atan.h:81
Generic wrapper for the atanh() function.
Definition: Atanh.h:81
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
Generic wrapper for the cbrt() function.
Definition: Cbrt.h:83
Generic wrapper for the ceil() function.
Definition: Ceil.h:83
Generic wrapper for the clamp() function.
Definition: Clamp.h:68
Base class for all compute expression templates.
Definition: Computation.h:68
Generic wrapper for the conj() function.
Definition: Conj.h:85
Generic wrapper for the cos() function.
Definition: Cos.h:71
Generic wrapper for the cosh() function.
Definition: Cosh.h:71
Generic wrapper for the division operator.
Definition: Div.h:81
Generic wrapper for the erf() function.
Definition: Erf.h:79
Generic wrapper for the erfc() function.
Definition: Erfc.h:69
Generic wrapper for the exp10() function.
Definition: Exp10.h:69
Generic wrapper for the exp2() function.
Definition: Exp2.h:69
Generic wrapper for the exp() function.
Definition: Exp.h:71
Generic wrapper for the floor() function.
Definition: Floor.h:83
Generic wrapper for the imag() function.
Definition: Imag.h:76
Generic wrapper for the invcbrt() function.
Definition: InvCbrt.h:69
Generic wrapper for the invsqrt() function.
Definition: InvSqrt.h:71
Generic wrapper for the lgamma() function.
Definition: LGamma.h:71
Generic wrapper for the log10() function.
Definition: Log10.h:71
Generic wrapper for the log1p() function.
Definition: Log1p.h:71
Generic wrapper for the log2() function.
Definition: Log2.h:69
Generic wrapper for the log() function.
Definition: Log.h:71
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 NOT operator.
Definition: Not.h:60
Generic wrapper for the pow() function.
Definition: Pow.h:65
Generic wrapper for the real() function.
Definition: Real.h:82
Generic wrapper for the round() function.
Definition: Round.h:83
Generic wrapper for the uniform left-shift operation.
Definition: ShiftLI.h:78
Generic wrapper for the uniform right-shift operation.
Definition: ShiftRI.h:77
Generic wrapper for the sign() function.
Definition: Sign.h:83
Generic wrapper for the sin() function.
Definition: Sin.h:81
Generic wrapper for the sinh() function.
Definition: Sinh.h:81
Generic wrapper for the sqrt() function.
Definition: Sqrt.h:85
Generic wrapper for the subtraction operator.
Definition: Sub.h:85
Generic wrapper for the tan() function.
Definition: Tan.h:81
Generic wrapper for the tanh() function.
Definition: Tanh.h:81
Generic wrapper for the trunc() function.
Definition: Trunc.h:83
Base class for all unary vector map expression templates.
Definition: VecMapExpr.h:68
System settings for the inline keywords.
Header file for the RequiresEvaluation type trait.
Header file for basic type definitions.