35 #ifndef _BLAZE_MATH_EXPRESSIONS_DVECTRANSPOSER_H_
36 #define _BLAZE_MATH_EXPRESSIONS_DVECTRANSPOSER_H_
98 enum { vectorizable = VT::vectorizable };
104 enum { smpAssignable = VT::smpAssignable };
198 template<
typename Other >
215 template<
typename Other >
251 template<
typename Other >
254 return dv_.canAlias( alias );
264 template<
typename Other >
267 return dv_.isAliased( alias );
278 return dv_.isAligned();
294 return dv_.load( index );
310 return dv_.loadu( index );
327 dv_.store( index, value );
344 dv_.storeu( index, value );
361 dv_.stream( index, value );
376 template<
typename VT2 >
383 const size_t n(
size() );
386 const size_t iend( n &
size_t(-2) );
388 for(
size_t i=0UL; i<iend; i+=2UL ) {
389 dv_[i ] = (~rhs)[i ];
390 dv_[i+1UL] = (~rhs)[i+1UL];
393 dv_[iend] = (~rhs)[iend];
408 template<
typename VT2 >
417 for( RhsConstIterator element=(~rhs).begin(); element!=(~rhs).
end(); ++element )
418 dv_[element->index()] = element->value();
433 template<
typename VT2 >
440 const size_t n(
size() );
443 const size_t iend( n &
size_t(-2) );
445 for(
size_t i=0UL; i<iend; i+=2UL ) {
446 dv_[i ] += (~rhs)[i ];
447 dv_[i+1UL] += (~rhs)[i+1UL];
450 dv_[iend] += (~rhs)[iend];
465 template<
typename VT2 >
474 for( RhsConstIterator element=(~rhs).begin(); element!=(~rhs).
end(); ++element )
475 dv_[element->index()] += element->value();
490 template<
typename VT2 >
497 const size_t n(
size() );
500 const size_t iend( n &
size_t(-2) );
502 for(
size_t i=0UL; i<iend; i+=2UL ) {
503 dv_[i ] -= (~rhs)[i ];
504 dv_[i+1UL] -= (~rhs)[i+1UL];
507 dv_[iend] -= (~rhs)[iend];
522 template<
typename VT2 >
531 for( RhsConstIterator element=(~rhs).begin(); element!=(~rhs).
end(); ++element )
532 dv_[element->index()] -= element->value();
547 template<
typename VT2 >
554 const size_t n(
size() );
557 const size_t iend( n &
size_t(-2) );
559 for(
size_t i=0UL; i<iend; i+=2UL ) {
560 dv_[i ] *= (~rhs)[i ];
561 dv_[i+1UL] *= (~rhs)[i+1UL];
564 dv_[iend] *= (~rhs)[iend];
579 template<
typename VT2 >
591 for( RhsConstIterator element=(~rhs).
begin(); element!=(~rhs).
end(); ++element )
592 dv_[element->index()] = tmp[element->index()] * element->value();
628 template<
typename VT
648 template<
typename VT,
bool TF >
649 struct SubvectorTrait< DVecTransposer<VT,TF> >
Reference operator[](size_t index)
Subscript operator for the direct access to the vector elements.
Definition: DVecTransposer.h:123
Constraint on the data type.
bool isAliased(const Other *alias) const
Returns whether the vector is aliased with the given address alias.
Definition: DVecTransposer.h:265
VT::ConstIterator ConstIterator
Iterator over constant elements.
Definition: DVecTransposer.h:90
void reset(DynamicMatrix< Type, SO > &m)
Resetting the given dense matrix.
Definition: DynamicMatrix.h:4599
#define BLAZE_USER_ASSERT(expr, msg)
Run time assertion macro for user checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_USER_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERT flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:117
size_t size() const
Returns the current size/dimension of the vector.
Definition: DVecTransposer.h:230
VT::Iterator Iterator
Iterator over non-constant elements.
Definition: DVecTransposer.h:89
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.In case the given data type T is a computational expression (i...
Definition: Computation.h:118
void subAssign(const DenseVector< VT2, TF > &rhs)
Implementation of the transpose subtraction assignment of a dense vector.
Definition: DVecTransposer.h:491
VT::ConstReference ConstReference
Reference to a constant matrix value.
Definition: DVecTransposer.h:88
ConstIterator cend() const
Returns an iterator just past the last element of the dense vector.
Definition: DVecTransposer.h:186
void multAssign(const SparseVector< VT2, TF > &rhs)
Implementation of the transpose multiplication assignment of a sparse vector.
Definition: DVecTransposer.h:580
Header file for the DenseVector base class.
ConstReference operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecTransposer.h:135
bool canAlias(const Other *alias) const
Returns whether the vector can alias with the given address alias.
Definition: DVecTransposer.h:252
ConstIterator begin() const
Returns an iterator to the first element of the dense vector.
Definition: DVecTransposer.h:156
VT::ElementType ElementType
Type of the vector elements.
Definition: DVecTransposer.h:83
Header file for the intrinsic trait.
Expression object for the transposition of a dense vector.The DVecTransposer class is a wrapper objec...
Definition: DVecTransposer.h:71
VT::ResultType TransposeType
Transpose type for expression template evaluations.
Definition: DVecTransposer.h:82
bool isAligned() const
Returns whether the vector is properly aligned in memory.
Definition: DVecTransposer.h:276
VT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: DVecTransposer.h:85
IntrinsicTrait< typename VT::ElementType > IT
Intrinsic trait for the vector element type.
Definition: DVecTransposer.h:75
DVecTransposer(VT &dv)
Constructor for the DVecTransposer class.
Definition: DVecTransposer.h:112
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:2412
Header file for the subvector trait.
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:70
Constraint on the data type.
CompressedMatrix< Type, false > TransposeType
Transpose type for expression template evaluations.
Definition: CompressedMatrix.h:2405
Constraint on the data type.
VT::Reference Reference
Reference to a non-constant matrix value.
Definition: DVecTransposer.h:87
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2406
const Type & ConstReference
Reference to a constant matrix value.
Definition: CompressedMatrix.h:2410
Header file for the EnableIf class template.
void reset()
Resets the vector elements.
Definition: DVecTransposer.h:240
Header file for the IsNumeric type trait.
DVecTransposer< VT, TF > This
Type of this DVecTransposer instance.
Definition: DVecTransposer.h:80
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2407
Intrinsic characteristics of data types.The IntrinsicTrait class template provides the intrinsic char...
Definition: IntrinsicTrait.h:748
Header file for run time assertion macros.
const This & CompositeType
Data type for composite expression templates.
Definition: DVecTransposer.h:86
void addAssign(const SparseVector< VT2, TF > &rhs)
Implementation of the transpose addition assignment of a sparse vector.
Definition: DVecTransposer.h:466
void store(size_t index, const IntrinsicType &value)
Aligned store of an intrinsic element of the vector.
Definition: DVecTransposer.h:325
IntrinsicType load(size_t index) const
Aligned load of an intrinsic element of the vector.
Definition: DVecTransposer.h:292
Substitution Failure Is Not An Error (SFINAE) class.The EnableIf class template is an auxiliary tool ...
Definition: EnableIf.h:184
void addAssign(const DenseVector< VT2, TF > &rhs)
Implementation of the transpose addition assignment of a dense vector.
Definition: DVecTransposer.h:434
ConstIterator end() const
Returns an iterator just past the last element of the dense vector.
Definition: DVecTransposer.h:176
IT::Type IntrinsicType
Intrinsic type of the vector elements.
Definition: DVecTransposer.h:84
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:2411
void storeu(size_t index, const IntrinsicType &value)
Unaligned store of an intrinsic element of the vector.
Definition: DVecTransposer.h:342
void subAssign(const SparseVector< VT2, TF > &rhs)
Implementation of the transpose subtraction assignment of a sparse vector.
Definition: DVecTransposer.h:523
void assign(const SparseVector< VT2, TF > &rhs)
Implementation of the transpose assignment of a sparse vector.
Definition: DVecTransposer.h:409
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a dense, N-dimensional vector type...
Definition: DenseVector.h:79
VT::TransposeType ResultType
Result type for expression template evaluations.
Definition: DVecTransposer.h:81
void assign(const DenseVector< VT2, TF > &rhs)
Implementation of the transpose assignment of a dense vector.
Definition: DVecTransposer.h:377
EnableIf< IsNumeric< Other >, DVecTransposer >::Type & operator/=(Other rhs)
Division assignment operator for the division of a vector by a scalar value ( ).
Definition: DVecTransposer.h:216
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:108
ElementType * data()
Low-level data access to the vector elements.
Definition: DVecTransposer.h:146
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:2403
EnableIf< IsNumeric< Other >, DVecTransposer >::Type & operator*=(Other rhs)
Multiplication assignment operator for the multiplication between a vector and a scalar value ( )...
Definition: DVecTransposer.h:199
Header file for basic type definitions.
void stream(size_t index, const IntrinsicType &value)
Aligned, non-temporal store of an intrinsic element of the vector.
Definition: DVecTransposer.h:359
MatrixAccessProxy< This > Reference
Reference to a non-constant matrix value.
Definition: CompressedMatrix.h:2409
IntrinsicType loadu(size_t index) const
Unaligned load of an intrinsic element of the vector.
Definition: DVecTransposer.h:308
void multAssign(const DenseVector< VT2, TF > &rhs)
Implementation of the transpose multiplication assignment of a dense vector.
Definition: DVecTransposer.h:548
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T, TF)
Constraint on the data type.In case the given data type T is not a dense or sparse vector type and in...
Definition: TransposeFlag.h:238
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101
ConstIterator cbegin() const
Returns an iterator to the first element of the dense vector.
Definition: DVecTransposer.h:166
VT & dv_
The dense vector operand.
Definition: DVecTransposer.h:598