X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=include%2Fhfta%2Fhfta_udaf.h;h=8c72cd20497b40005e972ece63117cae781e0c3a;hb=refs%2Fheads%2Fmaster;hp=6281859aae52fadf4db73a7eca25a879ffdd3b60;hpb=dec9c93423775db0f4783a93145f016d5d780ffd;p=com%2Fgs-lite.git diff --git a/include/hfta/hfta_udaf.h b/include/hfta/hfta_udaf.h index 6281859..8c72cd2 100644 --- a/include/hfta/hfta_udaf.h +++ b/include/hfta/hfta_udaf.h @@ -229,6 +229,16 @@ void CAT_aggr_HFTA_AGGR_UPDATE_(gs_sp_t s, vstring *sep, vstring *str); void CAT_aggr_HFTA_AGGR_OUTPUT_(vstring *res, gs_sp_t s); void CAT_aggr_HFTA_AGGR_DESTROY_(gs_sp_t s); +////////////////////////////////////////////// +// CAT_aggr, aggregate strings by catenation but only when the payload changes +////////////////////////////////////////////// +void CAT_aggr_diff_HFTA_AGGR_INIT_(gs_sp_t s); +void CAT_aggr_diff_HFTA_AGGR_REINIT_(gs_sp_t s); +void CAT_aggr_diff_HFTA_AGGR_UPDATE_(gs_sp_t s, vstring *str); +void CAT_aggr_diff_HFTA_AGGR_OUTPUT_(vstring *res, gs_sp_t s); +void CAT_aggr_diff_HFTA_AGGR_DESTROY_(gs_sp_t s); + + ///////////////////////////////////////////////////////// // time-averaged sum, from aperiodic reports //////////////////////////////////////////////////////// @@ -279,23 +289,130 @@ void running_array_aggr_hfta_HFTA_AGGR_DESTROY_(vstring* scratch); /* HFTA functions */ /****************************************************************/ -void quant_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t); -void quant_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t, vstring *); -void quant_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t); -void quant_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t); -gs_uint32_t extr_quant_hfta3_fcn(vstring *, gs_float_t); -gs_uint32_t extr_med_hfta3_fcn(vstring *); -gs_uint32_t extr_quant_hfta3_space(vstring *); +// void quant_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t); +// void quant_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t, vstring *); +// void quant_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t); +// void quant_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t); +// gs_uint32_t extr_quant_hfta3_fcn(vstring *, gs_float_t); +// gs_uint32_t extr_med_hfta3_fcn(vstring *); +// gs_uint32_t extr_quant_hfta3_space(vstring *); + +void quant_f_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_f_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v); +void quant_f_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b) ; +//gs_float_t extr_quant_f_hfta3_fcn(vstring *v, gs_float_t phi) ; +//gs_float_t extr_f_med_hfta3_fcn(vstring *v); +void quant_f_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t b) ; + +void quant_ui_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_ui_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v); +void quant_ui_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b) ; +//gs_uint32_t extr_quant_ui_hfta3_fcn(vstring *v, gs_float_t phi) ; +//gs_uint32_t extr_ui_med_hfta3_fcn(vstring *v); +void quant_ui_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t b) ; + +void quant_i_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_i_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v); +void quant_i_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b) ; +//gs_int32_t extr_quant_i_hfta3_fcn(vstring *v, gs_float_t phi) ; +//gs_int32_t extr_i_med_hfta3_fcn(vstring *v); +void quant_i_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t b) ; + +void quant_ul_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_ul_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v); +void quant_ul_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b) ; +//gs_uint64_t extr_quant_ul_hfta3_fcn(vstring *v, gs_float_t phi) ; +//gs_uint64_t extr_ul_med_hfta3_fcn(vstring *v); +void quant_ul_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t b) ; + +void quant_l_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_l_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v); +void quant_l_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b) ; +//gs_int64_t extr_quant_l_hfta3_fcn(vstring *v, gs_float_t phi) ; +//gs_int64_t extr_l_med_hfta3_fcn(vstring *v); +void quant_l_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t b) ; + + + /****************************************************************/ /* HFTA-only functions */ /****************************************************************/ -void quant_udaf_hfta0_HFTA_AGGR_INIT_(gs_sp_t); -void quant_udaf_hfta0_HFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t); -void quant_udaf_hfta0_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t); -void quant_udaf_hfta0_HFTA_AGGR_DESTROY_(gs_sp_t); -gs_uint32_t extr_quant_hfta0_fcn(vstring *, gs_float_t); -gs_uint32_t extr_med_hfta0_fcn(vstring *); -gs_uint32_t extr_quant_hfta0_space(vstring *); + +// void quant_udaf_hfta0_HFTA_AGGR_INIT_(gs_sp_t); +// void quant_udaf_hfta0_HFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t); +// void quant_udaf_hfta0_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t); +// void quant_udaf_hfta0_HFTA_AGGR_DESTROY_(gs_sp_t); +// gs_uint32_t extr_quant_hfta0_fcn(vstring *, gs_float_t); +// gs_uint32_t extr_med_hfta0_fcn(vstring *); +// gs_uint32_t extr_quant_hfta0_space(vstring *); + +void quant_ui_udaf_hftaZ_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_ui_udaf_hftaZ_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v) ; +void quant_ui_udaf_hftaZ_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b); +void quant_ui_udaf_hftaZ_HFTA_AGGR_DESTROY_(gs_sp_t b); +gs_uint32_t extr_quant_ui_hftaZ_fcn(vstring *v, gs_float_t phi) ; +gs_uint32_t extr_med_ui_hftaZ_fcn(vstring *v) ; +int quant_ui_udaf_hftaZ_nelem(gs_sp_t b) ; + +void quant_ul_udaf_hftaZ_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_ul_udaf_hftaZ_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint64_t v) ; +void quant_ul_udaf_hftaZ_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b); +void quant_ul_udaf_hftaZ_HFTA_AGGR_DESTROY_(gs_sp_t b); +gs_uint64_t extr_quant_ul_hftaZ_fcn(vstring *v, gs_float_t phi) ; +gs_uint64_t extr_med_ul_hftaZ_fcn(vstring *v) ; +int quant_ul_udaf_hftaZ_nelem(gs_sp_t b) ; + +void quant_i_udaf_hftaZ_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_i_udaf_hftaZ_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_int32_t v) ; +void quant_i_udaf_hftaZ_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b); +void quant_i_udaf_hftaZ_HFTA_AGGR_DESTROY_(gs_sp_t b); +gs_int32_t extr_quant_i_hftaZ_fcn(vstring *v, gs_float_t phi) ; +gs_int32_t extr_med_i_hftaZ_fcn(vstring *v) ; +int quant_i_udaf_hftaZ_nelem(gs_sp_t b) ; + +void quant_l_udaf_hftaZ_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_l_udaf_hftaZ_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_int64_t v) ; +void quant_l_udaf_hftaZ_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b); +void quant_l_udaf_hftaZ_HFTA_AGGR_DESTROY_(gs_sp_t b); +gs_int64_t extr_quant_l_hftaZ_fcn(vstring *v, gs_float_t phi) ; +gs_int64_t extr_med_l_hftaZ_fcn(vstring *v) ; +int quant_l_udaf_hftaZ_nelem(gs_sp_t b) ; + +void quant_f_udaf_hftaZ_HFTA_AGGR_INIT_(gs_sp_t b); +void quant_f_udaf_hftaZ_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_float_t v) ; +void quant_f_udaf_hftaZ_HFTA_AGGR_OUTPUT_(vstring *r, gs_sp_t b); +void quant_f_udaf_hftaZ_HFTA_AGGR_DESTROY_(gs_sp_t b); +gs_float_t extr_quant_f_hftaZ_fcn(vstring *v, gs_float_t phi) ; +gs_float_t extr_med_f_hftaZ_fcn(vstring *v) ; +int quant_f_udaf_hftaZ_nelem(gs_sp_t b) ; + + + +/****************************************************************/ +// Approximate count distinct. +// Rely on the minhashing approach. +// Currently HFTA-only +// Uses a 32-bit hash, tested up to 100,000,000 elements +// and it gave good results (within 7%) +/****************************************************************/ + +// --------------------------------------------- +// HFTA-only +void approx_count_distinct_udaf_HFTA_AGGR_INIT_(gs_sp_t buf); +void approx_count_distinct_udaf_HFTA_AGGR_REINIT_(gs_sp_t buf); +void approx_count_distinct_udaf_HFTA_AGGR_DESTROY_(gs_sp_t buf); +void approx_count_distinct_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, vstring *val); +void approx_count_distinct_udaf_HFTA_AGGR_OUTPUT_(vstring *res, gs_sp_t buf); + +void running_approx_count_distinct_udaf_HFTA_AGGR_INIT_(gs_sp_t buf); +void running_approx_count_distinct_udaf_HFTA_AGGR_REINIT_(gs_sp_t buf); +void running_approx_count_distinct_udaf_HFTA_AGGR_DESTROY_(gs_sp_t buf); +void running_approx_count_distinct_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, vstring *val); +void running_approx_count_distinct_udaf_HFTA_AGGR_OUTPUT_(vstring *res, gs_sp_t buf); + +gs_float_t extr_approx_count_distinct(vstring *v); + + #endif