static void stats1_percentile_free(stats1_acc_t* pstats1_acc) { stats1_percentile_state_t* pstate = pstats1_acc->pvstate; pstate->reference_count--; if (pstate->reference_count == 0) { percentile_keeper_free(pstate->ppercentile_keeper); lhmss_free(pstate->poutput_field_names); free(pstate); free(pstats1_acc); } }
// ---------------------------------------------------------------- static char* test_percentile_keeper() { percentile_keeper_t* ppercentile_keeper = percentile_keeper_alloc(); percentile_keeper_ingest(ppercentile_keeper, 1.0); percentile_keeper_ingest(ppercentile_keeper, 2.0); percentile_keeper_ingest(ppercentile_keeper, 3.0); percentile_keeper_ingest(ppercentile_keeper, 4.0); percentile_keeper_ingest(ppercentile_keeper, 5.0); percentile_keeper_print(ppercentile_keeper); double p, q; p = 0.0; q = percentile_keeper_emit(ppercentile_keeper, p); printf("%4.2lf -> %7.4lf\n", p, q); mu_assert_lf(q == 1.0); p = 10.0; q = percentile_keeper_emit(ppercentile_keeper, p); printf("%4.2lf -> %7.4lf\n", p, q); mu_assert_lf(q == 1.0); p = 50.0; q = percentile_keeper_emit(ppercentile_keeper, p); printf("%4.2lf -> %7.4lf\n", p, q); mu_assert_lf(q == 3.0); p = 90.0; q = percentile_keeper_emit(ppercentile_keeper, p); printf("%4.2lf -> %7.4lf\n", p, q); mu_assert_lf(q == 5.0); p = 100.0; q = percentile_keeper_emit(ppercentile_keeper, p); printf("%4.2lf -> %7.4lf\n", p, q); mu_assert_lf(q == 5.0); percentile_keeper_free(ppercentile_keeper); return NULL; }