Fixed newline characters throughout the code
[com/gs-lite.git] / include / hfta / hfta_udaf.h
index 5837a47..6b576cf 100644 (file)
-/* ------------------------------------------------\r
-Copyright 2014 AT&T Intellectual Property\r
-   Licensed under the Apache License, Version 2.0 (the "License");\r
-   you may not use this file except in compliance with the License.\r
-   You may obtain a copy of the License at\r
-\r
-     http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
- ------------------------------------------- */\r
-\r
-#ifndef _HFTA_UDAF_H_INCLUDED_\r
-#define _HFTA_UDAF_H_INCLUDED_\r
-\r
-#include "vstring.h"\r
-#include "host_tuple.h"\r
-#include "gsconfig.h"\r
-\r
-// -------------------------------------------------------------------\r
-//             sum over 3 intervals : test rUDAF\r
-void sum3_HFTA_AGGR_INIT_(gs_sp_t buf) ;\r
-void sum3_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s) ;\r
-void sum3_HFTA_AGGR_OUTPUT_(gs_uint32_t *result, gs_sp_t buf) ;\r
-void sum3_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;\r
-void sum3_HFTA_AGGR_REINIT_( gs_sp_t buf) ;\r
-\r
-\r
-// -------------------------------------------------------------------\r
-//             running sum over arbitrary intervals.\r
-void moving_sum_udaf_HFTA_AGGR_INIT_(gs_sp_t buf) ;\r
-void moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s, gs_uint32_t N) ;\r
-void moving_sum_udaf_HFTA_AGGR_OUTPUT_(gs_uint64_t *result, gs_sp_t buf) ;\r
-void moving_sum_udaf_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;\r
-void moving_sum_udaf_HFTA_AGGR_REINIT_( gs_sp_t buf) ;\r
-\r
-#define super_moving_sum_udaf_HFTA_AGGR_INIT_ moving_sum_udaf_HFTA_AGGR_INIT_\r
-void super_moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint64_t s) ;\r
-#define super_moving_sum_udaf_HFTA_AGGR_OUTPUT_ moving_sum_udaf_HFTA_AGGR_OUTPUT_\r
-#define super_moving_sum_udaf_HFTA_AGGR_DESTROY_ moving_sum_udaf_HFTA_AGGR_DESTROY_\r
-#define super_moving_sum_udaf_HFTA_AGGR_REINIT_ moving_sum_udaf_HFTA_AGGR_REINIT_\r
-\r
-gs_uint32_t moving_sum_extract(gs_uint64_t result);\r
-gs_float_t moving_sum_extract_exp(gs_uint64_t result, gs_float_t alpha);\r
-\r
-\r
-/////////////////////////////////////////////////////////////////////////\r
-/////   Calculate the average of all positive float numbers\r
-\r
-void POSAVG_HFTA_AGGR_INIT_(gs_sp_t buf);\r
-void POSAVG_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_float_t v);\r
-void POSAVG_HFTA_AGGR_OUTPUT_(gs_float_t * v, gs_sp_t buf);\r
-void POSAVG_HFTA_AGGR_DESTROY_(gs_sp_t buf);\r
-\r
-\r
-///////////////////////////////////////////////////////////////////\r
-/////                  avg_udaf (simple example)\r
-\r
-//             hfta avg_udaf\r
-void avg_udaf_HFTA_AGGR_INIT_(gs_sp_t b);\r
-void avg_udaf_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v);\r
-void avg_udaf_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);\r
-void avg_udaf_HFTA_AGGR_DESTROY_(gs_sp_t b);\r
-\r
-//             avg_udaf superaggregate\r
-void avg_udaf_hfta_HFTA_AGGR_INIT_(gs_sp_t b);\r
-void avg_udaf_hfta_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v);\r
-void avg_udaf_hfta_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);\r
-void avg_udaf_hfta_HFTA_AGGR_DESTROY_(gs_sp_t b);\r
-\r
-//             Extraction function\r
-gs_float_t extr_avg_fcn(vstring *v);\r
-\r
-//      first aggregate\r
-// hfta only\r
-void FIRST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);\r
-void FIRST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);\r
-void FIRST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);\r
-void FIRST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);\r
-void FIRST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);\r
-\r
-void FIRST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);\r
-void FIRST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);\r
-void FIRST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);\r
-void FIRST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);\r
-void FIRST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);\r
-\r
-void FIRST_STR_HFTA_AGGR_INIT_(vstring* scratch);\r
-void FIRST_STR_HFTA_AGGR_REINIT_(vstring* scratch);\r
-void FIRST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);\r
-void FIRST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);\r
-void FIRST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);\r
-// hfts-lfta split\r
-void FIRST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);\r
-void FIRST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);\r
-void FIRST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);\r
-void FIRST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);\r
-void FIRST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);\r
-\r
-void FIRST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);\r
-void FIRST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);\r
-void FIRST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);\r
-void FIRST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);\r
-void FIRST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);\r
-\r
-void FIRST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);\r
-void FIRST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);\r
-void FIRST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);\r
-void FIRST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);\r
-void FIRST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);\r
-\r
-//      last aggregate\r
-//  hfta only\r
-void LAST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);\r
-void LAST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);\r
-void LAST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);\r
-void LAST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);\r
-void LAST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);\r
-\r
-void LAST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);\r
-void LAST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);\r
-void LAST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);\r
-void LAST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);\r
-void LAST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);\r
-\r
-void LAST_STR_HFTA_AGGR_INIT_(vstring* scratch);\r
-void LAST_STR_HFTA_AGGR_REINIT_(vstring* scratch);\r
-void LAST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);\r
-void LAST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);\r
-void LAST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);\r
-\r
-// hfta/lfta split\r
-void LAST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);\r
-void LAST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);\r
-void LAST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);\r
-void LAST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);\r
-void LAST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);\r
-\r
-void LAST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);\r
-void LAST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);\r
-void LAST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);\r
-void LAST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);\r
-void LAST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);\r
-\r
-void LAST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);\r
-void LAST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);\r
-void LAST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);\r
-void LAST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);\r
-void LAST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);\r
-\r
-//             running_array_aggr aggregate\r
-void running_array_aggr_hfta_HFTA_AGGR_INIT_(vstring* scratch);\r
-void running_array_aggr_hfta_HFTA_AGGR_REINIT_(vstring* scratch);\r
-void running_array_aggr_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);\r
-void running_array_aggr_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);\r
-void running_array_aggr_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);\r
-\r
-////////////////////////////////////////////////////////////////\r
-///            Flip's sample-based quantiles\r
-\r
-/****************************************************************/\r
-/* HFTA functions                                              */\r
-/****************************************************************/\r
-\r
-void quant_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t);\r
-void quant_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t, vstring *);\r
-void quant_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t);\r
-void quant_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t);\r
-gs_uint32_t extr_quant_hfta3_fcn(vstring *, gs_float_t);\r
-gs_uint32_t extr_med_hfta3_fcn(vstring *);\r
-gs_uint32_t extr_quant_hfta3_space(vstring *);\r
-\r
-/****************************************************************/\r
-/* HFTA-only functions                                         */\r
-/****************************************************************/\r
-void quant_udaf_hfta0_HFTA_AGGR_INIT_(gs_sp_t);\r
-void quant_udaf_hfta0_HFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t);\r
-void quant_udaf_hfta0_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t);\r
-void quant_udaf_hfta0_HFTA_AGGR_DESTROY_(gs_sp_t);\r
-gs_uint32_t extr_quant_hfta0_fcn(vstring *, gs_float_t);\r
-gs_uint32_t extr_med_hfta0_fcn(vstring *);\r
-gs_uint32_t extr_quant_hfta0_space(vstring *);\r
-\r
-#endif\r
+/* ------------------------------------------------
+Copyright 2014 AT&T Intellectual Property
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ ------------------------------------------- */
+
+#ifndef _HFTA_UDAF_H_INCLUDED_
+#define _HFTA_UDAF_H_INCLUDED_
+
+#include "vstring.h"
+#include "host_tuple.h"
+#include "gsconfig.h"
+
+// -------------------------------------------------------------------
+//             sum over 3 intervals : test rUDAF
+void sum3_HFTA_AGGR_INIT_(gs_sp_t buf) ;
+void sum3_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s) ;
+void sum3_HFTA_AGGR_OUTPUT_(gs_uint32_t *result, gs_sp_t buf) ;
+void sum3_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;
+void sum3_HFTA_AGGR_REINIT_( gs_sp_t buf) ;
+
+
+// -------------------------------------------------------------------
+//             running sum over arbitrary intervals.
+void moving_sum_udaf_HFTA_AGGR_INIT_(gs_sp_t buf) ;
+void moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s, gs_uint32_t N) ;
+void moving_sum_udaf_HFTA_AGGR_OUTPUT_(gs_uint64_t *result, gs_sp_t buf) ;
+void moving_sum_udaf_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;
+void moving_sum_udaf_HFTA_AGGR_REINIT_( gs_sp_t buf) ;
+
+#define super_moving_sum_udaf_HFTA_AGGR_INIT_ moving_sum_udaf_HFTA_AGGR_INIT_
+void super_moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint64_t s) ;
+#define super_moving_sum_udaf_HFTA_AGGR_OUTPUT_ moving_sum_udaf_HFTA_AGGR_OUTPUT_
+#define super_moving_sum_udaf_HFTA_AGGR_DESTROY_ moving_sum_udaf_HFTA_AGGR_DESTROY_
+#define super_moving_sum_udaf_HFTA_AGGR_REINIT_ moving_sum_udaf_HFTA_AGGR_REINIT_
+
+gs_uint32_t moving_sum_extract(gs_uint64_t result);
+gs_float_t moving_sum_extract_exp(gs_uint64_t result, gs_float_t alpha);
+
+
+/////////////////////////////////////////////////////////////////////////
+/////   Calculate the average of all positive float numbers
+
+void POSAVG_HFTA_AGGR_INIT_(gs_sp_t buf);
+void POSAVG_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_float_t v);
+void POSAVG_HFTA_AGGR_OUTPUT_(gs_float_t * v, gs_sp_t buf);
+void POSAVG_HFTA_AGGR_DESTROY_(gs_sp_t buf);
+
+
+///////////////////////////////////////////////////////////////////
+/////                  avg_udaf (simple example)
+
+//             hfta avg_udaf
+void avg_udaf_HFTA_AGGR_INIT_(gs_sp_t b);
+void avg_udaf_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v);
+void avg_udaf_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);
+void avg_udaf_HFTA_AGGR_DESTROY_(gs_sp_t b);
+
+//             avg_udaf superaggregate
+void avg_udaf_hfta_HFTA_AGGR_INIT_(gs_sp_t b);
+void avg_udaf_hfta_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v);
+void avg_udaf_hfta_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);
+void avg_udaf_hfta_HFTA_AGGR_DESTROY_(gs_sp_t b);
+
+//             Extraction function
+gs_float_t extr_avg_fcn(vstring *v);
+
+//      first aggregate
+// hfta only
+void FIRST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
+void FIRST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
+void FIRST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
+void FIRST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
+void FIRST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
+
+void FIRST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
+void FIRST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
+void FIRST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
+void FIRST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
+void FIRST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
+
+void FIRST_STR_HFTA_AGGR_INIT_(vstring* scratch);
+void FIRST_STR_HFTA_AGGR_REINIT_(vstring* scratch);
+void FIRST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
+void FIRST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
+void FIRST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);
+// hfts-lfta split
+void FIRST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
+void FIRST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
+void FIRST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
+void FIRST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
+void FIRST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
+
+void FIRST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
+void FIRST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
+void FIRST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
+void FIRST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
+void FIRST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
+
+void FIRST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);
+void FIRST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
+void FIRST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
+void FIRST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
+void FIRST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
+
+//      last aggregate
+//  hfta only
+void LAST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
+void LAST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
+void LAST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
+void LAST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
+void LAST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
+
+void LAST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
+void LAST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
+void LAST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
+void LAST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
+void LAST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
+
+void LAST_STR_HFTA_AGGR_INIT_(vstring* scratch);
+void LAST_STR_HFTA_AGGR_REINIT_(vstring* scratch);
+void LAST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
+void LAST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
+void LAST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);
+
+// hfta/lfta split
+void LAST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
+void LAST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
+void LAST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
+void LAST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
+void LAST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
+
+void LAST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
+void LAST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
+void LAST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
+void LAST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
+void LAST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
+
+void LAST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);
+void LAST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
+void LAST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
+void LAST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
+void LAST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
+
+//             running_array_aggr aggregate
+void running_array_aggr_hfta_HFTA_AGGR_INIT_(vstring* scratch);
+void running_array_aggr_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
+void running_array_aggr_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
+void running_array_aggr_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
+void running_array_aggr_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
+
+////////////////////////////////////////////////////////////////
+///            Flip's sample-based quantiles
+
+/****************************************************************/
+/* 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 *);
+
+/****************************************************************/
+/* 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 *);
+
+#endif