1 // ================================================================ 2 // For mlr stats1 percentiles 3 // ================================================================ 4 5 #ifndef PERCENTILE_KEEPER_H 6 #define PERCENTILE_KEEPER_H 7 #include "lib/mlrval.h" 8 9 typedef struct _percentile_keeper_t { 10 mv_t* data; 11 unsigned long long size; 12 unsigned long long capacity; 13 int sorted; 14 } percentile_keeper_t; 15 16 percentile_keeper_t* percentile_keeper_alloc(); 17 void percentile_keeper_free(percentile_keeper_t* ppercentile_keeper); 18 void percentile_keeper_ingest(percentile_keeper_t* ppercentile_keeper, mv_t value); 19 20 typedef mv_t percentile_keeper_emitter_t(percentile_keeper_t* ppercentile_keeper, double percentile); 21 mv_t percentile_keeper_emit_non_interpolated(percentile_keeper_t* ppercentile_keeper, double percentile); 22 mv_t percentile_keeper_emit_linearly_interpolated(percentile_keeper_t* ppercentile_keeper, double percentile); 23 24 // For debug/test 25 void percentile_keeper_print(percentile_keeper_t* ppercentile_keeper); 26 27 #endif // PERCENTILE_KEEPER_H 28