35 #ifndef _BLAZE_MATH_SPARSE_MATRIXACCESSPROXY_H_
36 #define _BLAZE_MATH_SPARSE_MATRIXACCESSPROXY_H_
85 template<
typename MT >
173 template<
typename MT >
180 const size_t index( rmm ?
i_ :
j_ );
181 if( element ==
sm_.end(index) )
192 template<
typename MT >
214 template<
typename MT >
217 const Iterator element( sm_.find( i_, j_ ) );
218 const size_t index( rmm ? i_ : j_ );
219 if( element != sm_.end( index ) &&
isDefault( element->value() ) )
220 sm_.erase( index, element );
239 template<
typename MT >
254 template<
typename MT >
255 template<
typename T >
270 template<
typename MT >
271 template<
typename T >
286 template<
typename MT >
287 template<
typename T >
302 template<
typename MT >
303 template<
typename T >
318 template<
typename MT >
319 template<
typename T >
341 template<
typename MT >
362 template<
typename MT >
365 const Iterator element( sm_.find( i_, j_ ) );
367 return element->value();
378 template<
typename MT >
381 const Iterator element( sm_.find( i_, j_ ) );
383 element->value() = value;
399 template<
typename VT1,
typename VT2 >
402 template<
typename VT,
typename T >
405 template<
typename T,
typename VT >
408 template<
typename VT1,
typename VT2 >
411 template<
typename VT,
typename T >
414 template<
typename T,
typename VT >
417 template<
typename VT1,
typename VT2 >
420 template<
typename VT,
typename T >
421 inline bool operator<( const MatrixAccessProxy<VT>& lhs,
const T& rhs );
423 template<
typename T,
typename VT >
424 inline bool operator<( const T& lhs, const MatrixAccessProxy<VT>& rhs );
426 template<
typename VT1,
typename VT2 >
429 template<
typename VT,
typename T >
432 template<
typename T,
typename VT >
435 template<
typename VT1,
typename VT2 >
438 template<
typename VT,
typename T >
439 inline bool operator<=( const MatrixAccessProxy<VT>& lhs,
const T& rhs );
441 template<
typename T,
typename VT >
442 inline bool operator<=( const T& lhs, const MatrixAccessProxy<VT>& rhs );
444 template<
typename VT1,
typename VT2 >
447 template<
typename VT,
typename T >
450 template<
typename T,
typename VT >
464 template<
typename VT1,
typename VT2 >
469 return ( static_cast<LhsReference>( lhs ) == static_cast<RhsReference>( rhs ) );
482 template<
typename VT,
typename T >
486 return ( static_cast<Reference>( lhs ) == rhs );
499 template<
typename T,
typename VT >
503 return ( lhs == static_cast<Reference>( rhs ) );
516 template<
typename VT1,
typename VT2 >
521 return ( static_cast<LhsReference>( lhs ) != static_cast<RhsReference>( rhs ) );
534 template<
typename VT,
typename T >
538 return ( static_cast<Reference>( lhs ) != rhs );
551 template<
typename T,
typename VT >
555 return ( lhs != static_cast<Reference>( rhs ) );
568 template<
typename VT1,
typename VT2 >
573 return ( static_cast<LhsReference>( lhs ) <
static_cast<RhsReference
>( rhs ) );
586 template<
typename VT,
typename T >
587 inline bool operator<( const MatrixAccessProxy<VT>& lhs,
const T& rhs )
590 return ( static_cast<Reference>( lhs ) < rhs );
603 template<
typename T,
typename VT >
604 inline bool operator<( const T& lhs, const MatrixAccessProxy<VT>& rhs )
607 return ( lhs < static_cast<Reference>( rhs ) );
620 template<
typename VT1,
typename VT2 >
625 return ( static_cast<LhsReference>( lhs ) > static_cast<RhsReference>( rhs ) );
638 template<
typename VT,
typename T >
642 return ( static_cast<Reference>( lhs ) > rhs );
655 template<
typename T,
typename VT >
659 return ( lhs > static_cast<Reference>( rhs ) );
672 template<
typename VT1,
typename VT2 >
677 return ( static_cast<LhsReference>( lhs ) <=
static_cast<RhsReference
>( rhs ) );
690 template<
typename VT,
typename T >
691 inline bool operator<=( const MatrixAccessProxy<VT>& lhs,
const T& rhs )
694 return ( static_cast<Reference>( lhs ) <= rhs );
707 template<
typename T,
typename VT >
708 inline bool operator<=( const T& lhs, const MatrixAccessProxy<VT>& rhs )
711 return ( lhs <= static_cast<Reference>( rhs ) );
724 template<
typename VT1,
typename VT2 >
729 return ( static_cast<LhsReference>( lhs ) >= static_cast<RhsReference>( rhs ) );
742 template<
typename VT,
typename T >
746 return ( static_cast<Reference>( lhs ) >= rhs );
759 template<
typename T,
typename VT >
763 return ( lhs >= static_cast<Reference>( rhs ) );
size_t i_
Row-index of the accessed sparse matrix element.
Definition: MatrixAccessProxy.h:150
bool isDefault(const DynamicMatrix< Type, SO > &m)
Returns whether the given dense matrix is in default state.
Definition: DynamicMatrix.h:4555
MT::Iterator Iterator
Iterator type of the accessed sparse matrix.
Definition: MatrixAccessProxy.h:100
bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:366
MT MatrixType
Type of the accessed sparse matrix.
Definition: MatrixAccessProxy.h:96
bool operator>=(const NegativeAccuracy< A > &, const T &rhs)
Greater-or-equal-than comparison between a NegativeAccuracy object and a floating point value...
Definition: Accuracy.h:442
Access proxy for sparse, matrices.The MatrixAccessProxy provides safe access to the elements of a no...
Definition: MatrixAccessProxy.h:86
const ElementType & ConstReference
Reference type of the accessed constant element.
Definition: MatrixAccessProxy.h:99
Reference get() const
Returning the value of the accessed sparse matrix element.
Definition: MatrixAccessProxy.h:363
ElementType & Reference
Reference type of the accessed element.
Definition: MatrixAccessProxy.h:98
Compile time check for row-major matrix types.This type trait tests whether or not the given template...
Definition: IsRowMajorMatrix.h:104
MT::ElementType ElementType
Type of the accessed sparse matrix element.
Definition: MatrixAccessProxy.h:97
MatrixAccessProxy & operator=(const MatrixAccessProxy &vap)
Copy assignment operator for MatrixAccessProxy.
Definition: MatrixAccessProxy.h:240
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2373
~MatrixAccessProxy()
The destructor for MatrixAccessProxy.
Definition: MatrixAccessProxy.h:215
MT & sm_
Reference to the accessed sparse matrix.
Definition: MatrixAccessProxy.h:149
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:2378
void set(ConstReference value) const
Setting the value of the accessed sparse matrix element.
Definition: MatrixAccessProxy.h:379
MatrixAccessProxy(MT &sv, size_t i, size_t j)
Initialization constructor for a MatrixAccessProxy.
Definition: MatrixAccessProxy.h:174
size_t j_
Column-index of the accessed sparse matrix element.
Definition: MatrixAccessProxy.h:151
Header file for the IsRowMajorMatrix type trait.
bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value. ...
Definition: Accuracy.h:249
bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:289
Header file for basic type definitions.
MatrixAccessProxy< This > Reference
Reference to a non-constant matrix value.
Definition: CompressedMatrix.h:2376
#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
EnableIf< IsIntegral< T >, Set< T, sizeof(T)> >::Type::Type set(T value)
Sets all values in the vector to the given integral value.
Definition: Set.h:209