]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // statistics_fwd.hpp | |
3 | // | |
4 | // Copyright 2005 Eric Niebler. Distributed under the Boost | |
5 | // Software License, Version 1.0. (See accompanying file | |
6 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | ||
8 | #ifndef BOOST_ACCUMULATORS_STATISTICS_STATISTICS_FWD_HPP_EAN_23_11_2005 | |
9 | #define BOOST_ACCUMULATORS_STATISTICS_STATISTICS_FWD_HPP_EAN_23_11_2005 | |
10 | ||
11 | #include <boost/mpl/apply_fwd.hpp> // for mpl::na | |
12 | #include <boost/mpl/print.hpp> | |
13 | #include <boost/preprocessor/repetition/enum_params_with_a_default.hpp> | |
14 | #include <boost/accumulators/accumulators_fwd.hpp> | |
15 | #include <boost/accumulators/framework/depends_on.hpp> | |
16 | #include <boost/accumulators/framework/extractor.hpp> | |
17 | ||
18 | namespace boost { namespace accumulators | |
19 | { | |
20 | ||
21 | /////////////////////////////////////////////////////////////////////////////// | |
22 | // base struct and base extractor for quantiles | |
23 | namespace tag | |
24 | { | |
25 | struct quantile | |
26 | : depends_on<> | |
27 | { | |
28 | typedef mpl::print<class ____MISSING_SPECIFIC_QUANTILE_FEATURE_IN_ACCUMULATOR_SET____ > impl; | |
29 | }; | |
30 | } | |
31 | namespace extract | |
32 | { | |
33 | extractor<tag::quantile> const quantile = {}; | |
34 | ||
35 | BOOST_ACCUMULATORS_IGNORE_GLOBAL(quantile) | |
36 | } | |
37 | using extract::quantile; | |
38 | ||
39 | /////////////////////////////////////////////////////////////////////////////// | |
40 | // base struct and base extractor for *coherent* tail means | |
41 | namespace tag | |
42 | { | |
43 | struct tail_mean | |
44 | : depends_on<> | |
45 | { | |
46 | typedef mpl::print<class ____MISSING_SPECIFIC_TAIL_MEAN_FEATURE_IN_ACCUMULATOR_SET____ > impl; | |
47 | }; | |
48 | } | |
49 | namespace extract | |
50 | { | |
51 | extractor<tag::tail_mean> const tail_mean = {}; | |
52 | ||
53 | BOOST_ACCUMULATORS_IGNORE_GLOBAL(tail_mean) | |
54 | } | |
55 | using extract::tail_mean; | |
56 | ||
57 | namespace tag | |
58 | { | |
59 | /////////////////////////////////////////////////////////////////////////////// | |
60 | // Variates tags | |
61 | struct weights; | |
62 | struct covariate1; | |
63 | struct covariate2; | |
64 | ||
65 | /////////////////////////////////////////////////////////////////////////////// | |
66 | // Statistic tags | |
67 | struct count; | |
68 | template<typename VariateType, typename VariateTag> | |
69 | struct covariance; | |
70 | struct density; | |
71 | template<typename Feature> | |
72 | struct error_of; | |
73 | struct extended_p_square; | |
74 | struct extended_p_square_quantile; | |
75 | struct extended_p_square_quantile_quadratic; | |
76 | struct kurtosis; | |
77 | struct max; | |
78 | struct mean; | |
79 | struct immediate_mean; | |
80 | struct mean_of_weights; | |
81 | struct immediate_mean_of_weights; | |
82 | template<typename VariateType, typename VariateTag> | |
83 | struct mean_of_variates; | |
84 | template<typename VariateType, typename VariateTag> | |
85 | struct immediate_mean_of_variates; | |
86 | struct median; | |
87 | struct with_density_median; | |
88 | struct with_p_square_cumulative_distribution_median; | |
89 | struct min; | |
90 | template<int N> | |
91 | struct moment; | |
92 | template<typename LeftRight> | |
93 | struct peaks_over_threshold; | |
94 | template<typename LeftRight> | |
95 | struct peaks_over_threshold_prob; | |
96 | template<typename LeftRight> | |
97 | struct pot_tail_mean; | |
98 | template<typename LeftRight> | |
99 | struct pot_tail_mean_prob; | |
100 | template<typename LeftRight> | |
101 | struct pot_quantile; | |
102 | template<typename LeftRight> | |
103 | struct pot_quantile_prob; | |
104 | struct p_square_cumulative_distribution; | |
105 | struct p_square_quantile; | |
106 | struct p_square_quantile_for_median; | |
107 | struct skewness; | |
108 | struct sum; | |
109 | struct sum_of_weights; | |
110 | template<typename VariateType, typename VariateTag> | |
111 | struct sum_of_variates; | |
112 | struct sum_kahan; | |
113 | struct sum_of_weights_kahan; | |
114 | template<typename VariateType, typename VariateTag> | |
115 | struct sum_of_variates_kahan; | |
116 | template<typename LeftRight> | |
117 | struct tail; | |
118 | template<typename LeftRight> | |
119 | struct coherent_tail_mean; | |
120 | template<typename LeftRight> | |
121 | struct non_coherent_tail_mean; | |
122 | template<typename LeftRight> | |
123 | struct tail_quantile; | |
124 | template<typename VariateType, typename VariateTag, typename LeftRight> | |
125 | struct tail_variate; | |
126 | template<typename LeftRight> | |
127 | struct tail_weights; | |
128 | template<typename VariateType, typename VariateTag, typename LeftRight> | |
129 | struct right_tail_variate; | |
130 | template<typename VariateType, typename VariateTag, typename LeftRight> | |
131 | struct left_tail_variate; | |
132 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
133 | struct tail_variate_means; | |
134 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
135 | struct absolute_tail_variate_means; | |
136 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
137 | struct relative_tail_variate_means; | |
138 | struct lazy_variance; | |
139 | struct variance; | |
140 | template<typename VariateType, typename VariateTag> | |
141 | struct weighted_covariance; | |
142 | struct weighted_density; | |
143 | struct weighted_kurtosis; | |
144 | struct weighted_mean; | |
145 | struct immediate_weighted_mean; | |
146 | template<typename VariateType, typename VariateTag> | |
147 | struct weighted_mean_of_variates; | |
148 | template<typename VariateType, typename VariateTag> | |
149 | struct immediate_weighted_mean_of_variates; | |
150 | struct weighted_median; | |
151 | struct with_density_weighted_median; | |
152 | struct with_p_square_cumulative_distribution_weighted_median; | |
153 | struct weighted_extended_p_square; | |
154 | struct weighted_extended_p_square_quantile; | |
155 | struct weighted_extended_p_square_quantile_quadratic; | |
156 | template<int N> | |
157 | struct weighted_moment; | |
158 | template<typename LeftRight> | |
159 | struct weighted_peaks_over_threshold; | |
160 | template<typename LeftRight> | |
161 | struct weighted_peaks_over_threshold_prob; | |
162 | template<typename LeftRight> | |
163 | struct weighted_pot_quantile; | |
164 | template<typename LeftRight> | |
165 | struct weighted_pot_quantile_prob; | |
166 | template<typename LeftRight> | |
167 | struct weighted_pot_tail_mean; | |
168 | template<typename LeftRight> | |
169 | struct weighted_pot_tail_mean_prob; | |
170 | struct weighted_p_square_cumulative_distribution; | |
171 | struct weighted_p_square_quantile; | |
172 | struct weighted_p_square_quantile_for_median; | |
173 | struct weighted_skewness; | |
174 | template<typename LeftRight> | |
175 | struct weighted_tail_quantile; | |
176 | template<typename LeftRight> | |
177 | struct non_coherent_weighted_tail_mean; | |
178 | template<typename LeftRight> | |
179 | struct weighted_tail_quantile; | |
180 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
181 | struct weighted_tail_variate_means; | |
182 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
183 | struct absolute_weighted_tail_variate_means; | |
184 | template<typename LeftRight, typename VariateType, typename VariateTag> | |
185 | struct relative_weighted_tail_variate_means; | |
186 | struct lazy_weighted_variance; | |
187 | struct weighted_variance; | |
188 | struct weighted_sum; | |
189 | template<typename VariateType, typename VariateTag> | |
190 | struct weighted_sum_of_variates; | |
191 | struct rolling_window_plus1; | |
192 | struct rolling_window; | |
193 | struct rolling_sum; | |
194 | struct rolling_count; | |
195 | struct rolling_mean; | |
196 | } // namespace tag | |
197 | ||
198 | namespace impl | |
199 | { | |
200 | /////////////////////////////////////////////////////////////////////////////// | |
201 | // Statistics impls | |
202 | struct count_impl; | |
203 | ||
204 | template<typename Sample, typename VariateType, typename VariateTag> | |
205 | struct covariance_impl; | |
206 | ||
207 | template<typename Sample> | |
208 | struct density_impl; | |
209 | ||
210 | template<typename Sample, typename Feature> | |
211 | struct error_of_impl; | |
212 | ||
213 | template<typename Sample, typename Variance> | |
214 | struct error_of_mean_impl; | |
215 | ||
216 | template<typename Sample> | |
217 | struct extended_p_square_impl; | |
218 | ||
219 | template<typename Sample, typename Impl1, typename Impl2> | |
220 | struct extended_p_square_quantile_impl; | |
221 | ||
222 | template<typename Sample> | |
223 | struct kurtosis_impl; | |
224 | ||
225 | template<typename Sample> | |
226 | struct max_impl; | |
227 | ||
228 | template<typename Sample> | |
229 | struct median_impl; | |
230 | ||
231 | template<typename Sample> | |
232 | struct with_density_median_impl; | |
233 | ||
234 | template<typename Sample> | |
235 | struct with_p_square_cumulative_distribution_median_impl; | |
236 | ||
237 | template<typename Sample> | |
238 | struct min_impl; | |
239 | ||
240 | template<typename Sample, typename SumFeature = tag::sum> | |
241 | struct mean_impl; | |
242 | ||
243 | template<typename Sample, typename Tag = tag::sample> | |
244 | struct immediate_mean_impl; | |
245 | ||
246 | template<typename N, typename Sample> | |
247 | struct moment_impl; | |
248 | ||
249 | template<typename Sample, typename LeftRight> | |
250 | struct peaks_over_threshold_prob_impl; | |
251 | ||
252 | template<typename Sample, typename Impl, typename LeftRight> | |
253 | struct pot_quantile_impl; | |
254 | ||
255 | template<typename Sample, typename Impl, typename LeftRight> | |
256 | struct pot_tail_mean_impl; | |
257 | ||
258 | template<typename Sample> | |
259 | struct p_square_cumulative_distribution_impl; | |
260 | ||
261 | template<typename Sample, typename Impl> | |
262 | struct p_square_quantile_impl; | |
263 | ||
264 | template<typename Sample> | |
265 | struct skewness_impl; | |
266 | ||
267 | template<typename Sample, typename Tag = tag::sample> | |
268 | struct sum_impl; | |
269 | ||
270 | template<typename Sample, typename Tag> | |
271 | struct sum_kahan_impl; | |
272 | ||
273 | template<typename Sample, typename LeftRight> | |
274 | struct tail_impl; | |
275 | ||
276 | template<typename Sample, typename LeftRight> | |
277 | struct coherent_tail_mean_impl; | |
278 | ||
279 | template<typename Sample, typename LeftRight> | |
280 | struct non_coherent_tail_mean_impl; | |
281 | ||
282 | template<typename Sample, typename LeftRight> | |
283 | struct tail_quantile_impl; | |
284 | ||
285 | template<typename VariateType, typename VariateTag, typename LeftRight> | |
286 | struct tail_variate_impl; | |
287 | ||
288 | template<typename Sample, typename Impl, typename LeftRight, typename VariateTag> | |
289 | struct tail_variate_means_impl; | |
290 | ||
291 | template<typename Sample, typename MeanFeature> | |
292 | struct lazy_variance_impl; | |
293 | ||
294 | template<typename Sample, typename MeanFeature, typename Tag> | |
295 | struct variance_impl; | |
296 | ||
297 | template<typename Sample, typename Weight, typename VariateType, typename VariateTag> | |
298 | struct weighted_covariance_impl; | |
299 | ||
300 | template<typename Sample, typename Weight> | |
301 | struct weighted_density_impl; | |
302 | ||
303 | template<typename Sample, typename Weight> | |
304 | struct weighted_kurtosis_impl; | |
305 | ||
306 | template<typename Sample> | |
307 | struct weighted_median_impl; | |
308 | ||
309 | template<typename Sample> | |
310 | struct with_density_weighted_median_impl; | |
311 | ||
312 | template<typename Sample, typename Weight> | |
313 | struct with_p_square_cumulative_distribution_weighted_median_impl; | |
314 | ||
315 | template<typename Sample, typename Weight, typename Tag> | |
316 | struct weighted_mean_impl; | |
317 | ||
318 | template<typename Sample, typename Weight, typename Tag> | |
319 | struct immediate_weighted_mean_impl; | |
320 | ||
321 | template<typename Sample, typename Weight, typename LeftRight> | |
322 | struct weighted_peaks_over_threshold_impl; | |
323 | ||
324 | template<typename Sample, typename Weight, typename LeftRight> | |
325 | struct weighted_peaks_over_threshold_prob_impl; | |
326 | ||
327 | template<typename Sample, typename Weight> | |
328 | struct with_p_square_cumulative_distribution_weighted_median_impl; | |
329 | ||
330 | template<typename Sample, typename Weight> | |
331 | struct weighted_extended_p_square_impl; | |
332 | ||
333 | template<typename N, typename Sample, typename Weight> | |
334 | struct weighted_moment_impl; | |
335 | ||
336 | template<typename Sample, typename Weight> | |
337 | struct weighted_p_square_cumulative_distribution_impl; | |
338 | ||
339 | template<typename Sample, typename Weight, typename Impl> | |
340 | struct weighted_p_square_quantile_impl; | |
341 | ||
342 | template<typename Sample, typename Weight> | |
343 | struct weighted_skewness_impl; | |
344 | ||
345 | template<typename Sample, typename Weight, typename Tag> | |
346 | struct weighted_sum_impl; | |
347 | ||
348 | template<typename Sample, typename Weight, typename Tag> | |
349 | struct weighted_sum_kahan_impl; | |
350 | ||
351 | template<typename Sample, typename Weight, typename LeftRight> | |
352 | struct non_coherent_weighted_tail_mean_impl; | |
353 | ||
354 | template<typename Sample, typename Weight, typename LeftRight> | |
355 | struct weighted_tail_quantile_impl; | |
356 | ||
357 | template<typename Sample, typename Weight, typename Impl, typename LeftRight, typename VariateType> | |
358 | struct weighted_tail_variate_means_impl; | |
359 | ||
360 | template<typename Sample, typename Weight, typename MeanFeature> | |
361 | struct lazy_weighted_variance_impl; | |
362 | ||
363 | template<typename Sample, typename Weight, typename MeanFeature, typename Tag> | |
364 | struct weighted_variance_impl; | |
365 | ||
366 | template<typename Sample> | |
367 | struct rolling_window_plus1_impl; | |
368 | ||
369 | template<typename Sample> | |
370 | struct rolling_window_impl; | |
371 | ||
372 | template<typename Sample> | |
373 | struct rolling_sum_impl; | |
374 | ||
375 | template<typename Sample> | |
376 | struct rolling_count_impl; | |
377 | ||
378 | template<typename Sample> | |
379 | struct rolling_mean_impl; | |
380 | } // namespace impl | |
381 | ||
382 | /////////////////////////////////////////////////////////////////////////////// | |
383 | // stats | |
384 | // A more descriptive name for an MPL sequence of statistics. | |
385 | template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)> | |
386 | struct stats; | |
387 | ||
388 | template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)> | |
389 | struct with_error; | |
390 | ||
391 | // modifiers for the mean and variance stats | |
392 | struct lazy {}; | |
393 | struct immediate {}; | |
394 | ||
395 | // modifiers for the variance stat | |
396 | // struct fast {}; | |
397 | // struct accurate {}; | |
398 | ||
399 | // modifiers for order | |
400 | struct right {}; | |
401 | struct left {}; | |
402 | // typedef right default_order_tag_type; | |
403 | ||
404 | // modifiers for the tail_variate_means stat | |
405 | struct absolute {}; | |
406 | struct relative {}; | |
407 | ||
408 | // modifiers for median and weighted_median stats | |
409 | struct with_density {}; | |
410 | struct with_p_square_cumulative_distribution {}; | |
411 | struct with_p_square_quantile {}; | |
412 | ||
413 | // modifiers for peaks_over_threshold stat | |
414 | struct with_threshold_value {}; | |
415 | struct with_threshold_probability {}; | |
416 | ||
417 | // modifiers for extended_p_square_quantile and weighted_extended_p_square_quantile stats | |
418 | struct weighted {}; | |
419 | struct unweighted {}; | |
420 | struct linear {}; | |
421 | struct quadratic {}; | |
422 | ||
423 | // modifiers for p_square_quantile | |
424 | struct regular {}; | |
425 | struct for_median {}; | |
426 | ||
427 | // modifier for sum_kahan, sum_of_weights_kahan, sum_of_variates_kahan, weighted_sum_kahan | |
428 | struct kahan {}; | |
429 | ||
430 | }} // namespace boost::accumulators | |
431 | ||
432 | #endif |