Reduction operators
|
generic batch reduction |
|
sum of each batch element |
|
max of the batch elements |
|
min of the batch elements |
|
horizontal sum across batches |
- template<class T, class A> XSIMD_INLINE batch< T, A > haddp (batch< T, A > const *row) noexcept
Parallel horizontal addition: adds the scalars of each batch in the array pointed by
row
and store them in a returned batch.- Parameters:
row – an array of
N
batches- Returns:
the result of the reduction.
- template<class T, class A, class F> XSIMD_INLINE T reduce (F &&f, batch< T, A > const &x) noexcept
Generic reducer using only batch operations.
- Parameters:
f – reducing function, accepting
batch ()(batch, batch)
x – batch involved in the reduction
- Returns:
the result of the reduction, as a scalar.
- template<class T, class A> XSIMD_INLINE T reduce_add (batch< T, A > const &x) noexcept
Adds all the scalars of the batch
x
.- Parameters:
x – batch involved in the reduction
- Returns:
the result of the reduction.
- template<class T, class A> XSIMD_INLINE T reduce_max (batch< T, A > const &x) noexcept
Max of all the scalars of the batch
x
.- Parameters:
x – batch involved in the reduction
- Returns:
the result of the reduction.
- template<class T, class A> XSIMD_INLINE T reduce_min (batch< T, A > const &x) noexcept
Min of all the scalars of the batch
x
.- Parameters:
x – batch involved in the reduction
- Returns:
the result of the reduction.