131 typename result_t,
bool second_set_empty,
132 typename iterator_first_t,
typename iterator_second_t,
134 class accumulate_Q,
class accumulate_R,
135 class make_average_Q,
class make_average_R,
140 iterator_first_t bfirst,
const iterator_first_t efirst,
141 iterator_second_t bsecond, [[maybe_unused]]
const iterator_second_t esecond,
143 accumulate_Q accQ, accumulate_R accR,
144 make_average_Q avgQ, make_average_R avgR,
149 if constexpr (second_set_empty) {
151 auto [total_Q, total_R] = values(*bfirst);
152 std::size_t amount = 1;
155 for (; bfirst != efirst; ++bfirst, ++amount) {
156 const auto [Qi, Ri] = values(*bfirst);
161 return avg(avgQ(total_Q, amount), avgR(total_R, amount));
166 assert(std::distance(bfirst, efirst) == std::distance(bsecond, esecond));
169 auto [total_Q, total_R] = values(*bfirst, *bsecond);
170 std::size_t amount = 1;
173 for (; bfirst != efirst; ++bfirst, ++bsecond, ++amount) {
174 const auto [Qi, Ri] = values(*bfirst, *bsecond);
179 return avg(avgQ(total_Q, amount), avgR(total_R, amount));
252 typename result_t,
bool second_set_empty,
253 typename iterator_first_t,
254 typename iterator_second_t,
255 class metric,
class combine,
class accumulate,
class make_average
259 iterator_first_t bfirst,
const iterator_first_t efirst,
260 iterator_second_t bsecond, [[maybe_unused]]
const iterator_second_t esecond,
262 combine comb_values, accumulate acc_values,
267 if constexpr (second_set_empty) {
269 auto total = comb_values(values(*bfirst));
270 std::size_t amount = 1;
273 for (; bfirst != efirst; ++bfirst, ++amount) {
274 acc_values(total, comb_values(values(*bfirst)));
276 return avg(total, amount);
281 assert(std::distance(bfirst, efirst) == std::distance(bsecond, esecond));
283 auto total = comb_values(values(*bfirst, *bsecond));
284 std::size_t amount = 1;
287 for (; bfirst != efirst; ++bfirst, ++bsecond, ++amount) {
288 acc_values(total, comb_values(values(*bfirst, *bsecond)));
290 return avg(total, amount);
result_t one_level_aggregation(iterator_first_t bfirst, const iterator_first_t efirst, iterator_second_t bsecond, const iterator_second_t esecond, metric values, accumulate_Q accQ, accumulate_R accR, make_average_Q avgQ, make_average_R avgR, make_average avg) noexcept
Computation of 1-level aggregation of and .
Definition: aggregations.hpp:139
result_t two_level_aggregation(iterator_first_t bfirst, const iterator_first_t efirst, iterator_second_t bsecond, const iterator_second_t esecond, metric values, combine comb_values, accumulate acc_values, make_average avg) noexcept
Computation of 2-level aggregation of and .
Definition: aggregations.hpp:258
Main namespace of the library.
Definition: basic_types.hpp:50