in cpp/src/cpc_union_accuracy_profile.cpp [26:50]
void cpc_union_accuracy_profile::run_trial() {
const size_t lg_k = 12;
const size_t num_sketches = 32;
std::unique_ptr<cpc_sketch> sketches[num_sketches];
for (size_t i = 0; i < num_sketches; i++) {
sketches[i] = std::unique_ptr<cpc_sketch>(new cpc_sketch(lg_k));
}
cpc_union u(lg_k);
size_t count = 0;
size_t i = 0;
for (auto& stat: stats) {
const size_t delta = stat.get_true_value() - count;
for (size_t j = 0; j < delta; j++) {
sketches[i++]->update(key++);
if (i == num_sketches) i = 0;
}
count += delta;
for (auto& sketch: sketches) {
u.update(*sketch);
}
stat.update(u.get_result().get_estimate());
}
}