Merge "Initial push of INFO file"
[com/gs-lite.git] / include / hfta / hfta_udaf.h
1 /* ------------------------------------------------
2 Copyright 2014 AT&T Intellectual Property
3    Licensed under the Apache License, Version 2.0 (the "License");
4    you may not use this file except in compliance with the License.
5    You may obtain a copy of the License at
6
7      http://www.apache.org/licenses/LICENSE-2.0
8
9    Unless required by applicable law or agreed to in writing, software
10    distributed under the License is distributed on an "AS IS" BASIS,
11    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12    See the License for the specific language governing permissions and
13    limitations under the License.
14  ------------------------------------------- */
15
16 #ifndef _HFTA_UDAF_H_INCLUDED_
17 #define _HFTA_UDAF_H_INCLUDED_
18
19 #include "vstring.h"
20 #include "host_tuple.h"
21 #include "gsconfig.h"
22
23 // -------------------------------------------------------------------
24 //              sum over 3 intervals : test rUDAF
25 void sum3_HFTA_AGGR_INIT_(gs_sp_t buf) ;
26 void sum3_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s) ;
27 void sum3_HFTA_AGGR_OUTPUT_(gs_uint32_t *result, gs_sp_t buf) ;
28 void sum3_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;
29 void sum3_HFTA_AGGR_REINIT_( gs_sp_t buf) ;
30
31
32 // -------------------------------------------------------------------
33 //              running sum over arbitrary intervals.
34 void moving_sum_udaf_HFTA_AGGR_INIT_(gs_sp_t buf) ;
35 void moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint32_t s, gs_uint32_t N) ;
36 void moving_sum_udaf_HFTA_AGGR_OUTPUT_(gs_uint64_t *result, gs_sp_t buf) ;
37 void moving_sum_udaf_HFTA_AGGR_DESTROY_(gs_sp_t buf) ;
38 void moving_sum_udaf_HFTA_AGGR_REINIT_( gs_sp_t buf) ;
39
40 #define super_moving_sum_udaf_HFTA_AGGR_INIT_ moving_sum_udaf_HFTA_AGGR_INIT_
41 void super_moving_sum_udaf_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_uint64_t s) ;
42 #define super_moving_sum_udaf_HFTA_AGGR_OUTPUT_ moving_sum_udaf_HFTA_AGGR_OUTPUT_
43 #define super_moving_sum_udaf_HFTA_AGGR_DESTROY_ moving_sum_udaf_HFTA_AGGR_DESTROY_
44 #define super_moving_sum_udaf_HFTA_AGGR_REINIT_ moving_sum_udaf_HFTA_AGGR_REINIT_
45
46 gs_uint32_t moving_sum_extract(gs_uint64_t result);
47 gs_float_t moving_sum_extract_exp(gs_uint64_t result, gs_float_t alpha);
48
49
50 /////////////////////////////////////////////////////////////////////////
51 /////   Calculate the average of all positive float numbers
52
53 void POSAVG_HFTA_AGGR_INIT_(gs_sp_t buf);
54 void POSAVG_HFTA_AGGR_UPDATE_(gs_sp_t buf, gs_float_t v);
55 void POSAVG_HFTA_AGGR_OUTPUT_(gs_float_t * v, gs_sp_t buf);
56 void POSAVG_HFTA_AGGR_DESTROY_(gs_sp_t buf);
57
58
59 ///////////////////////////////////////////////////////////////////
60 /////                   avg_udaf (simple example)
61
62 //              hfta avg_udaf
63 void avg_udaf_HFTA_AGGR_INIT_(gs_sp_t b);
64 void avg_udaf_HFTA_AGGR_UPDATE_(gs_sp_t b, gs_uint32_t v);
65 void avg_udaf_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);
66 void avg_udaf_HFTA_AGGR_DESTROY_(gs_sp_t b);
67
68 //              avg_udaf superaggregate
69 void avg_udaf_hfta_HFTA_AGGR_INIT_(gs_sp_t b);
70 void avg_udaf_hfta_HFTA_AGGR_UPDATE_(gs_sp_t b, vstring *v);
71 void avg_udaf_hfta_HFTA_AGGR_OUTPUT_(vstring *r,gs_sp_t b);
72 void avg_udaf_hfta_HFTA_AGGR_DESTROY_(gs_sp_t b);
73
74 //              Extraction function
75 gs_float_t extr_avg_fcn(vstring *v);
76
77 //      first aggregate
78 // hfta only
79 void FIRST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
80 void FIRST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
81 void FIRST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
82 void FIRST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
83 void FIRST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
84
85 void FIRST_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
86 void FIRST_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
87 void FIRST_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
88 void FIRST_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
89 void FIRST_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
90
91
92 void FIRST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
93 void FIRST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
94 void FIRST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
95 void FIRST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
96 void FIRST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
97
98 void FIRST_STR_HFTA_AGGR_INIT_(vstring* scratch);
99 void FIRST_STR_HFTA_AGGR_REINIT_(vstring* scratch);
100 void FIRST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
101 void FIRST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
102 void FIRST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);
103 // hfts-lfta split
104 void FIRST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
105 void FIRST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
106 void FIRST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
107 void FIRST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
108 void FIRST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
109
110 void FIRST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
111 void FIRST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
112 void FIRST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
113 void FIRST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
114 void FIRST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
115
116 void FIRST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);
117 void FIRST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
118 void FIRST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
119 void FIRST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
120 void FIRST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
121
122 //      last aggregate
123 //  hfta only
124 void LAST_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
125 void LAST_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
126 void LAST_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
127 void LAST_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
128 void LAST_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
129
130 void LAST_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
131 void LAST_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
132 void LAST_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
133 void LAST_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
134 void LAST_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
135
136 void LAST_ULL_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
137 void LAST_ULL_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
138 void LAST_ULL_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
139 void LAST_ULL_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
140 void LAST_ULL_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
141
142 void LAST_STR_HFTA_AGGR_INIT_(vstring* scratch);
143 void LAST_STR_HFTA_AGGR_REINIT_(vstring* scratch);
144 void LAST_STR_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
145 void LAST_STR_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
146 void LAST_STR_HFTA_AGGR_DESTROY_(vstring* scratch);
147
148 // hfta/lfta split
149 void LAST_hfta_HFTA_AGGR_INIT_(gs_uint32_t* scratch);
150 void LAST_hfta_HFTA_AGGR_REINIT_(gs_uint32_t* scratch);
151 void LAST_hfta_HFTA_AGGR_UPDATE_(gs_uint32_t* scratch, gs_uint32_t val);
152 void LAST_hfta_HFTA_AGGR_OUTPUT_(gs_uint32_t* res, gs_uint32_t* scratch);
153 void LAST_hfta_HFTA_AGGR_DESTROY_(gs_uint32_t* scratch);
154
155 void LAST_ULL_hfta_HFTA_AGGR_INIT_(gs_uint64_t* scratch);
156 void LAST_ULL_hfta_HFTA_AGGR_REINIT_(gs_uint64_t* scratch);
157 void LAST_ULL_hfta_HFTA_AGGR_UPDATE_(gs_uint64_t* scratch, gs_uint64_t val);
158 void LAST_ULL_hfta_HFTA_AGGR_OUTPUT_(gs_uint64_t* res, gs_uint64_t* scratch);
159 void LAST_ULL_hfta_HFTA_AGGR_DESTROY_(gs_uint64_t* scratch);
160
161 void LAST_STR_hfta_HFTA_AGGR_INIT_(vstring* scratch);
162 void LAST_STR_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
163 void LAST_STR_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
164 void LAST_STR_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
165 void LAST_STR_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
166
167 //              running_array_aggr aggregate
168 void running_array_aggr_hfta_HFTA_AGGR_INIT_(vstring* scratch);
169 void running_array_aggr_hfta_HFTA_AGGR_REINIT_(vstring* scratch);
170 void running_array_aggr_hfta_HFTA_AGGR_UPDATE_(vstring* scratch, vstring* val);
171 void running_array_aggr_hfta_HFTA_AGGR_OUTPUT_(vstring* res, vstring* scratch);
172 void running_array_aggr_hfta_HFTA_AGGR_DESTROY_(vstring* scratch);
173
174 ////////////////////////////////////////////////////////////////
175 ///             Flip's sample-based quantiles
176
177 /****************************************************************/
178 /* HFTA functions                                               */
179 /****************************************************************/
180
181 void quant_udaf_hfta3_HFTA_AGGR_INIT_(gs_sp_t);
182 void quant_udaf_hfta3_HFTA_AGGR_UPDATE_(gs_sp_t, vstring *);
183 void quant_udaf_hfta3_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t);
184 void quant_udaf_hfta3_HFTA_AGGR_DESTROY_(gs_sp_t);
185 gs_uint32_t extr_quant_hfta3_fcn(vstring *, gs_float_t);
186 gs_uint32_t extr_med_hfta3_fcn(vstring *);
187 gs_uint32_t extr_quant_hfta3_space(vstring *);
188
189 /****************************************************************/
190 /* HFTA-only functions                                          */
191 /****************************************************************/
192 void quant_udaf_hfta0_HFTA_AGGR_INIT_(gs_sp_t);
193 void quant_udaf_hfta0_HFTA_AGGR_UPDATE_(gs_sp_t, gs_uint32_t);
194 void quant_udaf_hfta0_HFTA_AGGR_OUTPUT_(vstring *, gs_sp_t);
195 void quant_udaf_hfta0_HFTA_AGGR_DESTROY_(gs_sp_t);
196 gs_uint32_t extr_quant_hfta0_fcn(vstring *, gs_float_t);
197 gs_uint32_t extr_med_hfta0_fcn(vstring *);
198 gs_uint32_t extr_quant_hfta0_space(vstring *);
199
200 #endif