PageRenderTime 45ms CodeModel.GetById 23ms app.highlight 17ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/accumulators/statistics_fwd.hpp

http://hadesmem.googlecode.com/
C++ Header | 432 lines | 319 code | 82 blank | 31 comment | 0 complexity | 8b4f791e433512666ad9666e5c2472e7 MD5 | raw file
  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