26 #ifndef _BLAZE_MATH_DENSE_DENSEITERATOR_H_ 27 #define _BLAZE_MATH_DENSE_DENSEITERATOR_H_ 56 template<
typename Type
83 explicit inline constexpr
DenseIterator( Type* ptr ) noexcept;
85 template< typename Other,
bool AF2 >
113 inline constexpr const
DenseIterator operator++(
int ) noexcept;
115 inline constexpr const
DenseIterator operator--(
int ) noexcept;
122 inline constexpr
ReferenceType operator[](
size_t index ) const noexcept;
124 inline constexpr
PointerType operator->() const noexcept;
170 template< typename Type
183 template<
typename Type
196 template<
typename Type
198 template<
typename Other
220 template<
typename Type
237 template<
typename Type
261 template<
typename Type
276 template<
typename Type
290 template<
typename Type
305 template<
typename Type
328 template<
typename Type
343 template<
typename Type
358 template<
typename Type
381 template<
typename Type
409 template<
typename Type
432 template<
typename Type
454 template<
typename Type
475 template<
typename Type
498 template<
typename Type
518 template<
typename Type
538 template<
typename Type
558 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
562 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
566 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
570 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
574 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
578 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
582 template<
typename Type,
bool AF >
586 template<
typename Type,
bool AF >
590 template<
typename Type,
bool AF >
594 template<
typename Type,
bool AF >
608 template<
typename T1
614 return lhs.base() == rhs.base();
626 template<
typename T1
632 return lhs.base() != rhs.base();
644 template<
typename T1
650 return lhs.
base() < rhs.base();
662 template<
typename T1
668 return lhs.base() > rhs.base();
680 template<
typename T1
686 return lhs.
base() <= rhs.base();
698 template<
typename T1
704 return lhs.base() >= rhs.base();
716 template<
typename Type
732 template<
typename Type
748 template<
typename Type
764 template<
typename Type
768 return lhs.base() - rhs.base();
constexpr DenseIterator & operator-=(ptrdiff_t inc) noexcept
Subtraction assignment operator.
Definition: DenseIterator.h:240
Pointer difference type of the Blaze library.
Type ValueType
Type of the underlying elements.
Definition: DenseIterator.h:63
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DenseIterator.h:62
ReferenceType reference
Reference return type.
Definition: DenseIterator.h:72
Header file for basic type definitions.
constexpr const DenseIterator< Type, AF > operator-(const DenseIterator< Type, AF > &it, ptrdiff_t inc) noexcept
Subtraction between a DenseIterator and an integral value.
Definition: DenseIterator.h:750
Type * PointerType
Pointer return type.
Definition: DenseIterator.h:64
const SIMDType load() const noexcept
Load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:412
constexpr ReferenceType operator*() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:346
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > loadu(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loadu.h:76
typename SIMDTrait< T >::Type SIMDTrait_t
Auxiliary alias declaration for the SIMDTrait class template.The SIMDTrait_t alias declaration provid...
Definition: SIMDTrait.h:315
const SIMDType loada() const noexcept
Aligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:435
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< T1, 1UL > > storeu(T1 *address, const SIMDi8< T2 > &value) noexcept
Unaligned store of a vector of 1-byte integral values.
Definition: Storeu.h:75
PointerType pointer
Pointer return type.
Definition: DenseIterator.h:71
SIMDTrait_t< Type > SIMDType
SIMD type of the elements.
Definition: DenseIterator.h:76
Type & ReferenceType
Reference return type.
Definition: DenseIterator.h:65
void storea(const SIMDType &value) const noexcept
Aligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:500
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DenseIterator.h:66
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
constexpr DenseIterator & operator--() noexcept
Pre-decrement operator.
Definition: DenseIterator.h:292
constexpr bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:370
constexpr 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:446
void stream(const SIMDType &value) const noexcept
Aligned, non-temporal store of the SIMD element at the current iterator position. ...
Definition: DenseIterator.h:540
constexpr bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value. ...
Definition: Accuracy.h:253
constexpr PointerType operator->() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:361
Header file for all SIMD functionality.
void store(const SIMDType &value) const noexcept
Store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:477
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< T1, 1UL > > storea(T1 *address, const SIMDi8< T2 > &value) noexcept
Aligned store of a vector of 1-byte integral values.
Definition: Storea.h:78
const SIMDType loadu() const noexcept
Unaligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:457
constexpr bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:293
PointerType ptr_
Pointer to the current element.
Definition: DenseIterator.h:152
constexpr DenseIterator & operator++() noexcept
Pre-increment operator.
Definition: DenseIterator.h:263
Header file for run time assertion macros.
constexpr const DenseIterator< Type, AF > operator+(const DenseIterator< Type, AF > &it, ptrdiff_t inc) noexcept
Addition between a DenseIterator and an integral value.
Definition: DenseIterator.h:718
constexpr DenseIterator() noexcept
Default constructor for the DenseIterator class.
Definition: DenseIterator.h:172
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > loada(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loada.h:79
Implementation of a generic iterator for dense vectors and matrices.The DenseIterator represents a ge...
Definition: DenseIterator.h:58
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< T1, 1UL > > stream(T1 *address, const SIMDi8< T2 > &value) noexcept
Aligned, non-temporal store of a vector of 1-byte integral values.
Definition: Stream.h:74
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
constexpr ReferenceType operator[](size_t index) const noexcept
Direct access to the underlying elements.
Definition: DenseIterator.h:331
Header file for the alignment check function.
ValueType value_type
Type of the underlying elements.
Definition: DenseIterator.h:70
IteratorCategory iterator_category
The iterator category.
Definition: DenseIterator.h:69
constexpr PointerType base() const noexcept
Low-level access to the underlying member of the iterator.
Definition: DenseIterator.h:384
constexpr DenseIterator & operator+=(ptrdiff_t inc) noexcept
Addition assignment operator.
Definition: DenseIterator.h:223
#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
void storeu(const SIMDType &value) const noexcept
Unaligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:520