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
18namespace boost { namespace accumulators
19{
20
21///////////////////////////////////////////////////////////////////////////////
22// base struct and base extractor for quantiles
23namespace tag
24{
25 struct quantile
26 : depends_on<>
27 {
28 typedef mpl::print<class ____MISSING_SPECIFIC_QUANTILE_FEATURE_IN_ACCUMULATOR_SET____ > impl;
29 };
30}
31namespace extract
32{
33 extractor<tag::quantile> const quantile = {};
34
35 BOOST_ACCUMULATORS_IGNORE_GLOBAL(quantile)
36}
37using extract::quantile;
38
39///////////////////////////////////////////////////////////////////////////////
40// base struct and base extractor for *coherent* tail means
41namespace 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}
49namespace extract
50{
51 extractor<tag::tail_mean> const tail_mean = {};
52
53 BOOST_ACCUMULATORS_IGNORE_GLOBAL(tail_mean)
54}
55using extract::tail_mean;
56
57namespace 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
198namespace 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.
385template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)>
386struct stats;
387
388template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)>
389struct with_error;
390
391// modifiers for the mean and variance stats
392struct lazy {};
393struct immediate {};
394
395// modifiers for the variance stat
396// struct fast {};
397// struct accurate {};
398
399// modifiers for order
400struct right {};
401struct left {};
402// typedef right default_order_tag_type;
403
404// modifiers for the tail_variate_means stat
405struct absolute {};
406struct relative {};
407
408// modifiers for median and weighted_median stats
409struct with_density {};
410struct with_p_square_cumulative_distribution {};
411struct with_p_square_quantile {};
412
413// modifiers for peaks_over_threshold stat
414struct with_threshold_value {};
415struct with_threshold_probability {};
416
417// modifiers for extended_p_square_quantile and weighted_extended_p_square_quantile stats
418struct weighted {};
419struct unweighted {};
420struct linear {};
421struct quadratic {};
422
423// modifiers for p_square_quantile
424struct regular {};
425struct for_median {};
426
427// modifier for sum_kahan, sum_of_weights_kahan, sum_of_variates_kahan, weighted_sum_kahan
428struct kahan {};
429
430}} // namespace boost::accumulators
431
432#endif
433

source code of include/boost/accumulators/statistics_fwd.hpp