8#include <batmat/simd.hpp>
19template <
class T,
class simd =
void>
25template <
class T,
class simd>
36 using norms<T>::operator();
43 return {.amax = max(at, accum.
amax), .asum = at + accum.
asum, .sumsq = t * t + accum.
sumsq};
48#if BATMAT_WITH_GSI_HPC_SIMD
49 using batmat::datapar::hmax;
51 return {hmax(accum.
amax), reduce(accum.
asum), reduce(accum.
sumsq)};
84 return {.amax = max(at, accum.
amax), .asum = at + accum.
asum, .sumsq = t * t + accum.
sumsq};
T amax
Maximum absolute value (ignoring NaNs).
result operator()(result accum, result t) const
Combine two accumulators.
result operator()(result accum, T t) const
Update the accumulator with a new value.
static result zero()
Identity element for the reduction.
Utilities for computing vector norms.
static result_simd zero_simd()
result operator()(result_simd accum) const
Reduce the SIMD accumulator to a scalar result.
result_simd operator()(result_simd accum, simd t) const
Update the accumulator with a new value.
typename norms< T >::result result
Accumulator.