28void Ensemble::mean(
const T& f,
const M& fmask)
30 static_assert(std::is_integral<typename M::value_type>::value,
"Integral mask required.");
33 GOOSEEYE_ASSERT(xt::all(xt::equal(fmask, 0) || xt::equal(fmask, 1)), std::out_of_range);
34 GOOSEEYE_ASSERT(m_shape == std::vector<size_t>(MAX_DIM, 1), std::out_of_range);
35 GOOSEEYE_ASSERT(m_stat == Type::mean || m_stat == Type::Unset, std::out_of_range);
39 m_first(0) +=
static_cast<double>(xt::sum(xt::where(xt::equal(fmask, 0), f, 0.0))[0]);
42 static_cast<double>(xt::sum(xt::where(xt::equal(fmask, 0), xt::pow(f, 2.0), 0.0))[0]);
44 m_norm(0) +=
static_cast<double>(xt::sum(1 - fmask)[0]);