blob: 31bfa436fcac16f40a583e69d7e9e32a462eed71 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// statistics_fwd.hpp
//
// Copyright 2005 Eric Niebler. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_ACCUMULATORS_STATISTICS_STATISTICS_FWD_HPP_EAN_23_11_2005
#define BOOST_ACCUMULATORS_STATISTICS_STATISTICS_FWD_HPP_EAN_23_11_2005
#include <boost/mpl/apply_fwd.hpp> // for mpl::na
#include <boost/mpl/print.hpp>
#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
#include <boost/accumulators/accumulators_fwd.hpp>
#include <boost/accumulators/framework/depends_on.hpp>
#include <boost/accumulators/framework/extractor.hpp>
namespace boost { namespace accumulators
{
///////////////////////////////////////////////////////////////////////////////
// base struct and base extractor for quantiles
namespace tag
{
struct quantile
: depends_on<>
{
typedef mpl::print<class ____MISSING_SPECIFIC_QUANTILE_FEATURE_IN_ACCUMULATOR_SET____ > impl;
};
}
namespace extract
{
extractor<tag::quantile> const quantile = {};
BOOST_ACCUMULATORS_IGNORE_GLOBAL(quantile)
}
using extract::quantile;
///////////////////////////////////////////////////////////////////////////////
// base struct and base extractor for *coherent* tail means
namespace tag
{
struct tail_mean
: depends_on<>
{
typedef mpl::print<class ____MISSING_SPECIFIC_TAIL_MEAN_FEATURE_IN_ACCUMULATOR_SET____ > impl;
};
}
namespace extract
{
extractor<tag::tail_mean> const tail_mean = {};
BOOST_ACCUMULATORS_IGNORE_GLOBAL(tail_mean)
}
using extract::tail_mean;
namespace tag
{
///////////////////////////////////////////////////////////////////////////////
// Variates tags
struct weights;
struct covariate1;
struct covariate2;
///////////////////////////////////////////////////////////////////////////////
// Statistic tags
struct count;
template<typename VariateType, typename VariateTag>
struct covariance;
struct density;
template<typename Feature>
struct error_of;
struct extended_p_square;
struct extended_p_square_quantile;
struct extended_p_square_quantile_quadratic;
struct kurtosis;
struct max;
struct mean;
struct immediate_mean;
struct mean_of_weights;
struct immediate_mean_of_weights;
template<typename VariateType, typename VariateTag>
struct mean_of_variates;
template<typename VariateType, typename VariateTag>
struct immediate_mean_of_variates;
struct median;
struct with_density_median;
struct with_p_square_cumulative_distribution_median;
struct min;
template<int N>
struct moment;
template<typename LeftRight>
struct peaks_over_threshold;
template<typename LeftRight>
struct peaks_over_threshold_prob;
template<typename LeftRight>
struct pot_tail_mean;
template<typename LeftRight>
struct pot_tail_mean_prob;
template<typename LeftRight>
struct pot_quantile;
template<typename LeftRight>
struct pot_quantile_prob;
struct p_square_cumulative_distribution;
struct p_square_quantile;
struct p_square_quantile_for_median;
struct skewness;
struct sum;
struct sum_of_weights;
template<typename VariateType, typename VariateTag>
struct sum_of_variates;
template<typename LeftRight>
struct tail;
template<typename LeftRight>
struct coherent_tail_mean;
template<typename LeftRight>
struct non_coherent_tail_mean;
template<typename LeftRight>
struct tail_quantile;
template<typename VariateType, typename VariateTag, typename LeftRight>
struct tail_variate;
template<typename LeftRight>
struct tail_weights;
template<typename VariateType, typename VariateTag, typename LeftRight>
struct right_tail_variate;
template<typename VariateType, typename VariateTag, typename LeftRight>
struct left_tail_variate;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct tail_variate_means;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct absolute_tail_variate_means;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct relative_tail_variate_means;
struct lazy_variance;
struct variance;
template<typename VariateType, typename VariateTag>
struct weighted_covariance;
struct weighted_density;
struct weighted_kurtosis;
struct weighted_mean;
struct immediate_weighted_mean;
template<typename VariateType, typename VariateTag>
struct weighted_mean_of_variates;
template<typename VariateType, typename VariateTag>
struct immediate_weighted_mean_of_variates;
struct weighted_median;
struct with_density_weighted_median;
struct with_p_square_cumulative_distribution_weighted_median;
struct weighted_extended_p_square;
struct weighted_extended_p_square_quantile;
struct weighted_extended_p_square_quantile_quadratic;
template<int N>
struct weighted_moment;
template<typename LeftRight>
struct weighted_peaks_over_threshold;
template<typename LeftRight>
struct weighted_peaks_over_threshold_prob;
template<typename LeftRight>
struct weighted_pot_quantile;
template<typename LeftRight>
struct weighted_pot_quantile_prob;
template<typename LeftRight>
struct weighted_pot_tail_mean;
template<typename LeftRight>
struct weighted_pot_tail_mean_prob;
struct weighted_p_square_cumulative_distribution;
struct weighted_p_square_quantile;
struct weighted_p_square_quantile_for_median;
struct weighted_skewness;
template<typename LeftRight>
struct weighted_tail_quantile;
template<typename LeftRight>
struct non_coherent_weighted_tail_mean;
template<typename LeftRight>
struct weighted_tail_quantile;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct weighted_tail_variate_means;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct absolute_weighted_tail_variate_means;
template<typename LeftRight, typename VariateType, typename VariateTag>
struct relative_weighted_tail_variate_means;
struct lazy_weighted_variance;
struct weighted_variance;
struct weighted_sum;
template<typename VariateType, typename VariateTag>
struct weighted_sum_of_variates;
struct rolling_window_plus1;
struct rolling_window;
struct rolling_sum;
struct rolling_count;
struct rolling_mean;
} // namespace tag
namespace impl
{
///////////////////////////////////////////////////////////////////////////////
// Statistics impls
struct count_impl;
template<typename Sample, typename VariateType, typename VariateTag>
struct covariance_impl;
template<typename Sample>
struct density_impl;
template<typename Sample, typename Feature>
struct error_of_impl;
template<typename Sample, typename Variance>
struct error_of_mean_impl;
template<typename Sample>
struct extended_p_square_impl;
template<typename Sample, typename Impl1, typename Impl2>
struct extended_p_square_quantile_impl;
template<typename Sample>
struct kurtosis_impl;
template<typename Sample>
struct max_impl;
template<typename Sample>
struct median_impl;
template<typename Sample>
struct with_density_median_impl;
template<typename Sample>
struct with_p_square_cumulative_distribution_median_impl;
template<typename Sample>
struct min_impl;
template<typename Sample, typename SumFeature = tag::sum>
struct mean_impl;
template<typename Sample, typename Tag = tag::sample>
struct immediate_mean_impl;
template<typename N, typename Sample>
struct moment_impl;
template<typename Sample, typename LeftRight>
struct peaks_over_threshold_prob_impl;
template<typename Sample, typename Impl, typename LeftRight>
struct pot_quantile_impl;
template<typename Sample, typename Impl, typename LeftRight>
struct pot_tail_mean_impl;
template<typename Sample>
struct p_square_cumulative_distribution_impl;
template<typename Sample, typename Impl>
struct p_square_quantile_impl;
template<typename Sample>
struct skewness_impl;
template<typename Sample, typename Tag = tag::sample>
struct sum_impl;
template<typename Sample, typename LeftRight>
struct tail_impl;
template<typename Sample, typename LeftRight>
struct coherent_tail_mean_impl;
template<typename Sample, typename LeftRight>
struct non_coherent_tail_mean_impl;
template<typename Sample, typename LeftRight>
struct tail_quantile_impl;
template<typename VariateType, typename VariateTag, typename LeftRight>
struct tail_variate_impl;
template<typename Sample, typename Impl, typename LeftRight, typename VariateTag>
struct tail_variate_means_impl;
template<typename Sample, typename MeanFeature>
struct lazy_variance_impl;
template<typename Sample, typename MeanFeature, typename Tag>
struct variance_impl;
template<typename Sample, typename Weight, typename VariateType, typename VariateTag>
struct weighted_covariance_impl;
template<typename Sample, typename Weight>
struct weighted_density_impl;
template<typename Sample, typename Weight>
struct weighted_kurtosis_impl;
template<typename Sample>
struct weighted_median_impl;
template<typename Sample>
struct with_density_weighted_median_impl;
template<typename Sample, typename Weight>
struct with_p_square_cumulative_distribution_weighted_median_impl;
template<typename Sample, typename Weight, typename Tag>
struct weighted_mean_impl;
template<typename Sample, typename Weight, typename Tag>
struct immediate_weighted_mean_impl;
template<typename Sample, typename Weight, typename LeftRight>
struct weighted_peaks_over_threshold_impl;
template<typename Sample, typename Weight, typename LeftRight>
struct weighted_peaks_over_threshold_prob_impl;
template<typename Sample, typename Weight>
struct with_p_square_cumulative_distribution_weighted_median_impl;
template<typename Sample, typename Weight>
struct weighted_extended_p_square_impl;
template<typename N, typename Sample, typename Weight>
struct weighted_moment_impl;
template<typename Sample, typename Weight>
struct weighted_p_square_cumulative_distribution_impl;
template<typename Sample, typename Weight, typename Impl>
struct weighted_p_square_quantile_impl;
template<typename Sample, typename Weight>
struct weighted_skewness_impl;
template<typename Sample, typename Weight, typename Tag>
struct weighted_sum_impl;
template<typename Sample, typename Weight, typename LeftRight>
struct non_coherent_weighted_tail_mean_impl;
template<typename Sample, typename Weight, typename LeftRight>
struct weighted_tail_quantile_impl;
template<typename Sample, typename Weight, typename Impl, typename LeftRight, typename VariateType>
struct weighted_tail_variate_means_impl;
template<typename Sample, typename Weight, typename MeanFeature>
struct lazy_weighted_variance_impl;
template<typename Sample, typename Weight, typename MeanFeature, typename Tag>
struct weighted_variance_impl;
template<typename Sample>
struct rolling_window_plus1_impl;
template<typename Sample>
struct rolling_window_impl;
template<typename Sample>
struct rolling_sum_impl;
template<typename Sample>
struct rolling_count_impl;
template<typename Sample>
struct rolling_mean_impl;
} // namespace impl
///////////////////////////////////////////////////////////////////////////////
// stats
// A more descriptive name for an MPL sequence of statistics.
template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)>
struct stats;
template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na)>
struct with_error;
// modifiers for the mean and variance stats
struct lazy {};
struct immediate {};
// modifiers for the variance stat
// struct fast {};
// struct accurate {};
// modifiers for order
struct right {};
struct left {};
// typedef right default_order_tag_type;
// modifiers for the tail_variate_means stat
struct absolute {};
struct relative {};
// modifiers for median and weighted_median stats
struct with_density {};
struct with_p_square_cumulative_distribution {};
struct with_p_square_quantile {};
// modifiers for peaks_over_threshold stat
struct with_threshold_value {};
struct with_threshold_probability {};
// modifiers for extended_p_square_quantile and weighted_extended_p_square_quantile stats
struct weighted {};
struct unweighted {};
struct linear {};
struct quadratic {};
// modifiers for p_square_quantile
struct regular {};
struct for_median {};
}} // namespace boost::accumulators
#endif