35 #ifndef _BLAZE_MATH_EXPRESSIONS_SVECTRANSEXPR_H_
36 #define _BLAZE_MATH_EXPRESSIONS_SVECTRANSEXPR_H_
81 class SVecTransExpr :
public SparseVector< SVecTransExpr<VT,TF>, TF >
82 ,
private VecTransExpr
83 ,
private SelectType< IsComputation<VT>::value, Computation, EmptyType >::Type
103 template<
typename VT2 >
106 enum { value = useAssign };
128 enum { smpAssignable = VT::smpAssignable };
142 typedef typename std::iterator_traits<IteratorType>::value_type
ValueType;
143 typedef typename std::iterator_traits<IteratorType>::pointer
PointerType;
144 typedef typename std::iterator_traits<IteratorType>::reference
ReferenceType;
145 typedef typename std::iterator_traits<IteratorType>::difference_type
DifferenceType;
312 return sv_.nonZeros();
332 template<
typename T >
334 return sv_.canAlias( alias );
344 template<
typename T >
346 return sv_.isAliased( alias );
356 return sv_.canSMPAssign();
379 template<
typename VT2 >
407 template<
typename VT2 >
435 template<
typename VT2 >
436 friend inline typename EnableIf< UseAssign<VT2> >::Type
443 DVecTransposer<VT2,!TF> tmp( ~lhs );
467 template<
typename VT2 >
468 friend inline typename EnableIf< UseAssign<VT2> >::Type
475 DVecTransposer<VT2,!TF> tmp( ~lhs );
499 template<
typename VT2 >
500 friend inline typename EnableIf< UseAssign<VT2> >::Type
507 DVecTransposer<VT2,!TF> tmp( ~lhs );
535 template<
typename VT2
537 friend inline Operand trans(
const SVecTransExpr<VT2,TF2>& sv )
582 template<
typename VT
603 template<
typename VT,
bool TF,
bool AF >
604 struct SubvectorExprTrait< SVecTransExpr<VT,TF>, AF >
608 typedef typename TransExprTrait< typename SubvectorExprTrait<const VT,AF>::Type >::Type Type;
RemoveReference< Operand >::Type::ConstIterator IteratorType
Iterator type of the sparse vector expression.
Definition: SVecTransExpr.h:139
ConstIterator end() const
Returns an iterator just past the last non-zero element of the sparse vector.
Definition: SVecTransExpr.h:291
size_t size() const
Returns the current size/dimension of the vector.
Definition: SVecTransExpr.h:301
Header file for the SparseVector base class.
ConstIterator(IteratorType it)
Constructor for the ConstIterator class.
Definition: SVecTransExpr.h:158
const DMatTransExpr< MT,!SO > trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:751
ConstIterator & operator++()
Pre-increment operator.
Definition: SVecTransExpr.h:168
IteratorCategory iterator_category
The iterator category.
Definition: SVecTransExpr.h:148
SelectType< IsExpression< VT >::value, const VT, const VT & >::Type Operand
Composite data type of the sparse vector expression.
Definition: SVecTransExpr.h:123
VT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: SVecTransExpr.h:117
size_t nonZeros() const
Returns the number of non-zero elements in the sparse vector.
Definition: SVecTransExpr.h:311
const This & CompositeType
Data type for composite expression templates.
Definition: CompressedMatrix.h:2384
ValueType value_type
Type of the underlying pointers.
Definition: SVecTransExpr.h:149
Operand sv_
Sparse vector of the transposition expression.
Definition: SVecTransExpr.h:362
Expression object for sparse vector transpositions.The SVecTransExpr class represents the compile tim...
Definition: Forward.h:118
Header file for the Computation base class.
Header file for the RequiresEvaluation type trait.
IteratorType it_
Iterator over the elements of the sparse vector expression.
Definition: SVecTransExpr.h:249
bool canAlias(const T *alias) const
Returns whether the expression can alias with the given address alias.
Definition: SVecTransExpr.h:333
VT::ResultType TransposeType
Transpose type for expression template evaluations.
Definition: SVecTransExpr.h:115
DifferenceType difference_type
Difference between two iterators.
Definition: SVecTransExpr.h:152
VT::TransposeType ResultType
Result type for expression template evaluations.
Definition: SVecTransExpr.h:114
Expression object for the transposition of a dense vector.The DVecTransposer class is a wrapper objec...
Definition: DVecTransposer.h:71
size_t index() const
Access to the current index of the sparse element.
Definition: SVecTransExpr.h:209
Compile time check to query the requirement to evaluate an expression.Via this type trait it is possi...
Definition: RequiresEvaluation.h:90
ConstIterator begin() const
Returns an iterator to the first non-zero element of the sparse vector.
Definition: SVecTransExpr.h:281
VT::CompositeType CT
Composite type of the sparse vector expression.
Definition: SVecTransExpr.h:87
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
Header file for the dense vector transposer.
ReferenceType reference
Reference return type.
Definition: SVecTransExpr.h:151
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:2388
const ValueType operator*() const
Direct access to the sparse vector element at the current iterator position.
Definition: SVecTransExpr.h:179
Iterator over the elements of the sparse vector absolute value expression.
Definition: SVecTransExpr.h:134
SelectType< useAssign, const ResultType, const SVecTransExpr & >::Type CompositeType
Data type for composite expression templates.
Definition: SVecTransExpr.h:120
void assign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the assignment of a matrix to a matrix.
Definition: Matrix.h:179
Expression object for the transposition of a sparse vector.The SVecTransposer class is a wrapper obje...
Definition: Forward.h:119
VT::ElementType ElementType
Resulting element type.
Definition: SVecTransExpr.h:116
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:70
#define BLAZE_CONSTRAINT_MUST_BE_SPARSE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a sparse, N-dimensional vector type...
Definition: SparseVector.h:79
std::iterator_traits< IteratorType >::value_type ValueType
Type of the underlying pointers.
Definition: SVecTransExpr.h:142
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: SVecTransExpr.h:270
CompressedMatrix< Type, false > TransposeType
Transpose type for expression template evaluations.
Definition: CompressedMatrix.h:2381
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2382
std::iterator_traits< IteratorType >::difference_type DifferenceType
Difference between two iterators.
Definition: SVecTransExpr.h:145
void multAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the multiplication assignment of a matrix to a matrix.
Definition: Matrix.h:269
Header file for the SelectType class template.
Header file for all forward declarations for expression class templates.
Constraint on the data type.
ReturnType value() const
Access to the current value of the sparse element.
Definition: SVecTransExpr.h:199
Header file for the EnableIf class template.
std::iterator_traits< IteratorType >::pointer PointerType
Pointer return type.
Definition: SVecTransExpr.h:143
bool operator==(const ConstIterator &rhs) const
Equality comparison between two ConstIterator objects.
Definition: SVecTransExpr.h:220
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2383
Removal of reference modifiers.The RemoveCV type trait removes any reference modifiers from the given...
Definition: RemoveReference.h:69
Header file for the VecTransExpr base class.
bool operator!=(const ConstIterator &rhs) const
Inequality comparison between two ConstIterator objects.
Definition: SVecTransExpr.h:231
Header file for run time assertion macros.
DifferenceType operator-(const ConstIterator &rhs) const
Calculating the number of elements between two expression iterators.
Definition: SVecTransExpr.h:242
void addAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the addition assignment of a matrix to a matrix.
Definition: Matrix.h:209
Substitution Failure Is Not An Error (SFINAE) class.The EnableIf class template is an auxiliary tool ...
Definition: EnableIf.h:184
void subAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the subtraction assignment of a matrix to matrix.
Definition: Matrix.h:239
bool isAliased(const T *alias) const
Returns whether the expression is aliased with the given address alias.
Definition: SVecTransExpr.h:345
Header file for the TransExprTrait class template.
PointerType pointer
Pointer return type.
Definition: SVecTransExpr.h:150
SVecTransExpr(const VT &sv)
Constructor for the SVecTransExpr class.
Definition: SVecTransExpr.h:259
Header file for the RemoveReference type trait.
Operand operand() const
Returns the sparse vector operand.
Definition: SVecTransExpr.h:321
Header file for the sparse vector transposer.
SVecTransExpr< VT, TF > This
Type of this SVecTransExpr instance.
Definition: SVecTransExpr.h:113
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:105
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:157
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:2379
std::forward_iterator_tag IteratorCategory
The iterator category.
Definition: SVecTransExpr.h:141
bool canSMPAssign() const
Returns whether the expression can be used in SMP assignments.
Definition: SVecTransExpr.h:355
Header file for basic type definitions.
Header file for the SubvectorExprTrait class template.
const ConstIterator * operator->() const
Direct access to the sparse vector element at the current iterator position.
Definition: SVecTransExpr.h:189
Header file for the empty type.
#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
std::iterator_traits< IteratorType >::reference ReferenceType
Reference return type.
Definition: SVecTransExpr.h:144
Header file for the IsExpression type trait class.
Header file for the FunctionTrace class.