IBJK5HBMWKXUMHT7E2W5OVCA7SJYFRAHMJFP5K5CHWDQXBLEBC2QC
NUOLOGCKMF5UOBGBYEOX4O7NQ5AEVVLCH6KRBQRJQXIRDNJ2C2ZQC
OXDROTMRIJ42WSAJSZAZSDM2LDRDIBQH62VUGNAIID5BMWN3VETQC
VAF66DTVLDWNG7N2PEQYEH4OH5SPSMFBXKPR2PU67IIM6CVPCJ7AC
KG47IF4CPCUT3BHS34WDRHTH5HYMBTY4OSTB3X7APR2E5ZJ32IYQC
FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC
I4P6OKQG6OD3JX2KV23QLKMG7DSNYMTYUZCIOKNPTHOFHOFLMSNAC
reduction();
reduction(const vect<T, D> &p, const T &V, const T &x);
reduction(const reduction &x, const reduction &y);
reduction operator+(const reduction &y) const { return reduction(*this, y); }
reduction &operator+=(const reduction &y) { return *this = *this + y; }
T avg() const { return sum / vol; }
T sdv() const { return sqrt(fmax1(T(0), vol * sum2 - pow21(sum))); }
T norm0() const { return vol; }
T norm1() const { return sumabs / vol; }
T norm2() const { return sqrt(sum2abs / vol); }
T norm_inf() const { return maxabs; }
constexpr reduction();
constexpr reduction(const vect<T, D> &p, const T &V, const T &x);
constexpr reduction(const reduction &x, const reduction &y);
constexpr reduction operator+(const reduction &y) const {
return reduction(*this, y);
}
constexpr reduction &operator+=(const reduction &y) noexcept {
return *this = *this + y;
}
constexpr T avg() const noexcept { return sum / vol; }
constexpr T sdv() const noexcept {
return sqrt(fmax1(T(0), vol * sum2 - pow21(sum)));
}
constexpr T norm0() const noexcept { return vol; }
constexpr T norm1() const noexcept { return sumabs / vol; }
constexpr T norm2() const noexcept { return sqrt(sum2abs / vol); }
constexpr T norm_inf() const noexcept { return maxabs; }