Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

Reference

Accumulators Framework Reference
Statistics Library Reference
Numeric Operators Library Reference

Accumulators Framework Reference

Includes all of the Accumulators Framework


BOOST_ACCUMULATORS_MAX_FEATURES
BOOST_ACCUMULATORS_MAX_ARGS
BOOST_ACCUMULATORS_PROTO_DISABLE_IF_IS_CONST(T)
BOOST_ACCUMULATORS_GCC_VERSION
BOOST_ACCUMULATORS_IGNORE_GLOBAL(X)
BOOST_PARAMETER_NESTED_KEYWORD(tag_namespace, name, alias)
namespace boost {
  namespace accumulators {
    template<typename Accumulator> struct droppable_accumulator_base;
    template<typename Accumulator> struct droppable_accumulator;
    template<typename Accumulator> struct with_cached_result;
    template<typename Sample, typename Features, typename Weight = void> 
      struct accumulator_set;
    template<typename Feature> struct extractor;
    template<typename Feature> struct feature_of;
    template<typename Feature> struct as_feature;
    template<typename Feature> struct as_weighted_feature;
    template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na) > 
      struct depends_on;
    template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_ACCUMULATORS_MAX_FEATURES, typename Feature, mpl::na) > 
      struct features;
    template<typename Feature, typename AccumulatorSet> 
      mpl::apply< AccumulatorSet, Feature >::type::result_type 
      extract_result(AccumulatorSet const & acc);
    template<typename Feature, typename AccumulatorSet, typename A1> 
      mpl::apply< AccumulatorSet, Feature >::type::result_type 
      extract_result(AccumulatorSet const & acc, A1 const & a1);
    namespace impl {
    }
    namespace tag {
      template<typename ValueType, typename Tag> struct value;
      template<typename Tag> struct value_tag;
      template<typename Referent, typename Tag> struct reference;
      template<typename Tag> struct reference_tag;
      template<typename Type, typename Tag = void, 
               typename AccumulatorSet = void> 
        struct external;
      template<typename Feature> struct droppable;
    }
  }
}
namespace boost {
  namespace accumulators {
    struct dont_care;
    struct accumulator_base;
  }
}
namespace boost {
  namespace accumulators {
    template<typename Stat> struct accumulator_concept;
  }
}
namespace boost {
  namespace accumulators {
    template<typename Feature, typename AccumulatorSet> 
      mpl::apply< AccumulatorSet, Feature >::type & 
      find_accumulator(AccumulatorSet &acc  BOOST_ACCUMULATORS_PROTO_DISABLE_IF_IS_CONST);
  }
}
namespace boost {
  namespace accumulators {
    template<typename Feature> struct as_feature<tag::droppable< Feature >>;
    template<typename Feature> 
      struct as_weighted_feature<tag::droppable< Feature >>;
    template<typename Feature> struct feature_of<tag::droppable< Feature >>;
    namespace tag {
      template<typename Feature> struct as_droppable;

      template<typename Feature> struct as_droppable<droppable< Feature >>;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename Feature, typename Tag, typename AccumulatorSet> 
      struct feature_of<tag::external< Feature, Tag, AccumulatorSet >>;
    namespace impl {
    }
    namespace tag {
      template<typename Feature, typename Tag> 
        struct external<Feature, Tag, void>;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename ValueType, typename Tag> 
      struct feature_of<tag::reference< ValueType, Tag >>;
    namespace extract {
    }
    namespace impl {
      template<typename Referent, typename Tag> struct reference_accumulator_impl;
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename ValueType, typename Tag> 
      struct feature_of<tag::value< ValueType, Tag >>;
    namespace extract {
    }
    namespace impl {
      template<typename ValueType, typename Tag> struct value_accumulator_impl;
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    boost::parameter::keyword< tag::accumulator > const accumulator;
    namespace tag {
      struct accumulator;
    }
  }
}
namespace boost {
  namespace accumulators {
    boost::parameter::keyword< tag::sample > const sample;
    namespace tag {
      struct sample;
    }
  }
}
namespace boost {
  namespace accumulators {
    boost::parameter::keyword< tag::weight > const weight;
    namespace tag {
      struct weight;
    }
  }
}
namespace boost {
  namespace accumulators {
    boost::parameter::keyword< tag::weights > const weights;
    namespace tag {
      struct weights;
    }
  }
}

Statistics Library Reference

Header <boost/accumulators/statistics.hpp>
Header <boost/accumulators/statistics/count.hpp>
Header <boost/accumulators/statistics/covariance.hpp>
Header <boost/accumulators/statistics/density.hpp>
Header <boost/accumulators/statistics/error_of.hpp>
Header <boost/accumulators/statistics/error_of_mean.hpp>
Header <boost/accumulators/statistics/extended_p_square.hpp>
Header <boost/accumulators/statistics/extended_p_square_quantile.hpp>
Header <boost/accumulators/statistics/kurtosis.hpp>
Header <boost/accumulators/statistics/max.hpp>
Header <boost/accumulators/statistics/mean.hpp>
Header <boost/accumulators/statistics/median.hpp>
Header <boost/accumulators/statistics/min.hpp>
Header <boost/accumulators/statistics/moment.hpp>
Header <boost/accumulators/statistics/p_square_cumul_dist.hpp>
Header <boost/accumulators/statistics/p_square_quantile.hpp>
Header <boost/accumulators/statistics/peaks_over_threshold.hpp>
Header <boost/accumulators/statistics/pot_quantile.hpp>
Header <boost/accumulators/statistics/pot_tail_mean.hpp>
Header <boost/accumulators/statistics/rolling_count.hpp>
Header <boost/accumulators/statistics/rolling_mean.hpp>
Header <boost/accumulators/statistics/rolling_moment.hpp>
Header <boost/accumulators/statistics/rolling_sum.hpp>
Header <boost/accumulators/statistics/rolling_variance.hpp>
Header <boost/accumulators/statistics/rolling_window.hpp>
Header <boost/accumulators/statistics/skewness.hpp>
Header <boost/accumulators/statistics/stats.hpp>
Header <boost/accumulators/statistics/sum.hpp>
Header <boost/accumulators/statistics/sum_kahan.hpp>
Header <boost/accumulators/statistics/tail.hpp>
Header <boost/accumulators/statistics/tail_mean.hpp>
Header <boost/accumulators/statistics/tail_quantile.hpp>
Header <boost/accumulators/statistics/tail_variate.hpp>
Header <boost/accumulators/statistics/tail_variate_means.hpp>
Header <boost/accumulators/statistics/times2_iterator.hpp>
Header <boost/accumulators/statistics/variance.hpp>
Header <boost/accumulators/statistics/variates/covariate.hpp>
Header <boost/accumulators/statistics/weighted_covariance.hpp>
Header <boost/accumulators/statistics/weighted_density.hpp>
Header <boost/accumulators/statistics/weighted_extended_p_square.hpp>
Header <boost/accumulators/statistics/weighted_kurtosis.hpp>
Header <boost/accumulators/statistics/weighted_mean.hpp>
Header <boost/accumulators/statistics/weighted_median.hpp>
Header <boost/accumulators/statistics/weighted_moment.hpp>
Header <boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp>
Header <boost/accumulators/statistics/weighted_p_square_quantile.hpp>
Header <boost/accumulators/statistics/weighted_peaks_over_threshold.hpp>
Header <boost/accumulators/statistics/weighted_skewness.hpp>
Header <boost/accumulators/statistics/weighted_sum.hpp>
Header <boost/accumulators/statistics/weighted_sum_kahan.hpp>
Header <boost/accumulators/statistics/weighted_tail_mean.hpp>
Header <boost/accumulators/statistics/weighted_tail_quantile.hpp>
Header <boost/accumulators/statistics/weighted_tail_variate_means.hpp>
Header <boost/accumulators/statistics/weighted_variance.hpp>
Header <boost/accumulators/statistics/with_error.hpp>
Header <boost/accumulators/statistics_fwd.hpp>

Includes all of the Statistical Accumulators Library

namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::count > const count;
    }
    namespace impl {
      struct count_impl;
    }
    namespace tag {
      struct count;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::covariance< VariateType, VariateTag >>;
    template<typename VariateType, typename VariateTag> 
      struct as_weighted_feature<tag::covariance< VariateType, VariateTag >>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::weighted_covariance< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::abstract_covariance > const covariance;
    }
    namespace impl {
    }
    namespace tag {
      struct abstract_covariance;
    }
  }
  namespace numeric {
    namespace functional {
      template<typename Left, typename Right, typename EnableIf = void> 
        struct outer_product_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct outer_product;

      template<typename Left, typename Right> 
        struct outer_product<Left, Right, std_vector_tag, std_vector_tag>;
    }
    namespace op {
      struct outer_product;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::density>;
    template<> struct feature_of<tag::weighted_density>;
    namespace extract {
      extractor< tag::density > const density;
    }
    namespace impl {
    }
    namespace tag {
      struct density;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename Feature> struct as_feature<tag::error_of< Feature >>;
    template<typename Feature> 
      struct as_weighted_feature<tag::error_of< Feature >>;
    namespace extract {
    }
    namespace impl {
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::extended_p_square>;
    template<> struct feature_of<tag::weighted_extended_p_square>;
    namespace extract {
      extractor< tag::extended_p_square > const extended_p_square;
    }
    namespace impl {
    }
    namespace tag {
      struct extended_p_square;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::extended_p_square_quantile(linear)>;
    template<> struct as_feature<tag::extended_p_square_quantile(quadratic)>;
    template<> 
      struct as_feature<tag::weighted_extended_p_square_quantile(linear)>;
    template<> 
      struct as_feature<tag::weighted_extended_p_square_quantile(quadratic)>;
    template<> struct feature_of<tag::extended_p_square_quantile>;
    template<> struct feature_of<tag::extended_p_square_quantile_quadratic>;
    template<> struct as_weighted_feature<tag::extended_p_square_quantile>;
    template<> struct feature_of<tag::weighted_extended_p_square_quantile>;
    template<> 
      struct as_weighted_feature<tag::extended_p_square_quantile_quadratic>;
    template<> 
      struct feature_of<tag::weighted_extended_p_square_quantile_quadratic>;
    namespace extract {
      extractor< tag::extended_p_square_quantile > const extended_p_square_quantile;
      extractor< tag::extended_p_square_quantile_quadratic > const extended_p_square_quantile_quadratic;
      extractor< tag::weighted_extended_p_square_quantile > const weighted_extended_p_square_quantile;
      extractor< tag::weighted_extended_p_square_quantile_quadratic > const weighted_extended_p_square_quantile_quadratic;
    }
    namespace impl {
    }
    namespace tag {
      struct extended_p_square_quantile;
      struct extended_p_square_quantile_quadratic;
      struct weighted_extended_p_square_quantile;
      struct weighted_extended_p_square_quantile_quadratic;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::kurtosis>;
    template<> struct feature_of<tag::weighted_kurtosis>;
    namespace extract {
      extractor< tag::kurtosis > const kurtosis;
    }
    namespace impl {
    }
    namespace tag {
      struct kurtosis;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::max > const max;
    }
    namespace impl {
    }
    namespace tag {
      struct max;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::mean(lazy)>;
    template<> struct as_feature<tag::mean(immediate)>;
    template<> struct as_feature<tag::mean_of_weights(lazy)>;
    template<> struct as_feature<tag::mean_of_weights(immediate)>;
    template<typename VariateType, typename VariateTag> 
      struct as_feature<tag::mean_of_variates< VariateType, VariateTag >(lazy)>;
    template<typename VariateType, typename VariateTag> 
      struct as_feature<tag::mean_of_variates< VariateType, VariateTag >(immediate)>;
    template<> struct feature_of<tag::immediate_mean>;
    template<> struct feature_of<tag::immediate_mean_of_weights>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::immediate_mean_of_variates< VariateType, VariateTag >>;
    template<> struct as_weighted_feature<tag::mean>;
    template<> struct feature_of<tag::weighted_mean>;
    template<> struct as_weighted_feature<tag::immediate_mean>;
    template<> struct feature_of<tag::immediate_weighted_mean>;
    template<typename VariateType, typename VariateTag> 
      struct as_weighted_feature<tag::mean_of_variates< VariateType, VariateTag >>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::weighted_mean_of_variates< VariateType, VariateTag >>;
    template<typename VariateType, typename VariateTag> 
      struct as_weighted_feature<tag::immediate_mean_of_variates< VariateType, VariateTag >>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::immediate_weighted_mean_of_variates< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::mean > const mean;
      extractor< tag::mean_of_weights > const mean_of_weights;
    }
    namespace impl {
    }
    namespace tag {
      struct mean;
      struct immediate_mean;
      struct mean_of_weights;
      struct immediate_mean_of_weights;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::median(with_p_square_quantile)>;
    template<> struct as_feature<tag::median(with_density)>;
    template<> 
      struct as_feature<tag::median(with_p_square_cumulative_distribution)>;
    template<> struct feature_of<tag::with_density_median>;
    template<> 
      struct feature_of<tag::with_p_square_cumulative_distribution_median>;
    template<> struct as_weighted_feature<tag::median>;
    template<> struct feature_of<tag::weighted_median>;
    template<> struct as_weighted_feature<tag::with_density_median>;
    template<> struct feature_of<tag::with_density_weighted_median>;
    template<> 
      struct as_weighted_feature<tag::with_p_square_cumulative_distribution_median>;
    template<> 
      struct feature_of<tag::with_p_square_cumulative_distribution_weighted_median>;
    namespace extract {
      extractor< tag::median > const median;
      extractor< tag::with_density_median > const with_density_median;
      extractor< tag::with_p_square_cumulative_distribution_median > const with_p_square_cumulative_distribution_median;
    }
    namespace impl {
    }
    namespace tag {
      struct median;
      struct with_density_median;
      struct with_p_square_cumulative_distribution_median;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::min > const min;
    }
    namespace impl {
    }
    namespace tag {
      struct min;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<int N> struct as_weighted_feature<tag::moment< N >>;
    template<int N> struct feature_of<tag::weighted_moment< N >>;
    namespace extract {
    }
    namespace impl {
    }
    namespace tag {
    }
  }
  namespace numeric {
  }
}
namespace boost {
  namespace accumulators {
    template<> 
      struct as_weighted_feature<tag::p_square_cumulative_distribution>;
    template<> 
      struct feature_of<tag::weighted_p_square_cumulative_distribution>;
    namespace extract {
      extractor< tag::p_square_cumulative_distribution > const p_square_cumulative_distribution;
    }
    namespace impl {
    }
    namespace tag {
      struct p_square_cumulative_distribution;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::p_square_quantile>;
    template<> struct feature_of<tag::weighted_p_square_quantile>;
    namespace extract {
      extractor< tag::p_square_quantile > const p_square_quantile;
      extractor< tag::p_square_quantile_for_median > const p_square_quantile_for_median;
    }
    namespace impl {
    }
    namespace tag {
      struct p_square_quantile;
      struct p_square_quantile_for_median;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct as_feature<tag::peaks_over_threshold< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::peaks_over_threshold< LeftRight >(with_threshold_probability)>;
    template<typename LeftRight> 
      struct feature_of<tag::peaks_over_threshold< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::peaks_over_threshold_prob< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::peaks_over_threshold< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_peaks_over_threshold< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::peaks_over_threshold_prob< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_peaks_over_threshold_prob< LeftRight >>;
    namespace extract {
      extractor< tag::abstract_peaks_over_threshold > const peaks_over_threshold;
    }
    namespace impl {
      template<typename Sample, typename LeftRight> 
        struct peaks_over_threshold_impl;
    }
    namespace tag {
      struct abstract_peaks_over_threshold;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct as_feature<tag::pot_quantile< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::pot_quantile< LeftRight >(with_threshold_probability)>;
    template<typename LeftRight> 
      struct as_feature<tag::weighted_pot_quantile< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::weighted_pot_quantile< LeftRight >(with_threshold_probability)>;
    template<typename LeftRight> 
      struct feature_of<tag::pot_quantile< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::pot_quantile_prob< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::pot_quantile< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_pot_quantile< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::pot_quantile_prob< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_pot_quantile_prob< LeftRight >>;
    namespace impl {
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct as_feature<tag::pot_tail_mean< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::pot_tail_mean< LeftRight >(with_threshold_probability)>;
    template<typename LeftRight> 
      struct as_feature<tag::weighted_pot_tail_mean< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::weighted_pot_tail_mean< LeftRight >(with_threshold_probability)>;
    template<typename LeftRight> 
      struct feature_of<tag::pot_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::pot_tail_mean_prob< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::pot_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_pot_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::pot_tail_mean_prob< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_pot_tail_mean_prob< LeftRight >>;
    namespace impl {
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::rolling_count > const rolling_count;
    }
    namespace impl {
    }
    namespace tag {
      struct rolling_count;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::rolling_mean(lazy)>;
    template<> struct as_feature<tag::rolling_mean(immediate)>;
    template<> struct feature_of<tag::immediate_rolling_mean>;
    template<> struct feature_of<tag::lazy_rolling_mean>;
    namespace extract {
      extractor< tag::lazy_rolling_mean > const lazy_rolling_mean;
      extractor< tag::immediate_rolling_mean > const immediate_rolling_mean;
      extractor< tag::rolling_mean > const rolling_mean;
    }
    namespace impl {
      template<typename Sample> struct lazy_rolling_mean_impl;
      template<typename Sample> struct immediate_rolling_mean_impl;
    }
    namespace tag {
      struct lazy_rolling_mean;
      struct immediate_rolling_mean;
      struct rolling_mean;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
    }
    namespace impl {
      template<typename N, typename Sample> struct rolling_moment_impl;
    }
    namespace tag {
      template<int N> struct rolling_moment;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::rolling_sum > const rolling_sum;
    }
    namespace impl {
    }
    namespace tag {
      struct rolling_sum;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::rolling_variance(lazy)>;
    template<> struct as_feature<tag::rolling_variance(immediate)>;
    template<> struct feature_of<tag::lazy_rolling_variance>;
    template<> struct feature_of<tag::immediate_rolling_variance>;
    namespace extract {
      extractor< tag::lazy_rolling_variance > const lazy_rolling_variance;
      extractor< tag::immediate_rolling_variance > const immediate_rolling_variance;
      extractor< tag::rolling_variance > const rolling_variance;
    }
    namespace impl {
      template<typename Sample> struct lazy_rolling_variance_impl;
      template<typename Sample> struct immediate_rolling_variance_impl;
    }
    namespace tag {
      struct lazy_rolling_variance;
      struct immediate_rolling_variance;
      struct rolling_variance;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::rolling_window_plus1 > const rolling_window_plus1;
      extractor< tag::rolling_window > const rolling_window;
    }
    namespace impl {
      template<typename Args> 
        bool is_rolling_window_plus1_full(Args const & args);
    }
    namespace tag {
      struct rolling_window_plus1;
      struct rolling_window;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::skewness>;
    template<> struct feature_of<tag::weighted_skewness>;
    namespace extract {
      extractor< tag::skewness > const skewness;
    }
    namespace impl {
    }
    namespace tag {
      struct skewness;
    }
  }
}

Contains the stats<> template.

namespace boost {
  namespace accumulators {
    template<> struct as_weighted_feature<tag::sum>;
    template<> struct feature_of<tag::weighted_sum>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::sum_of_variates< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::sum > const sum;
      extractor< tag::sum_of_weights > const sum_of_weights;
      extractor< tag::abstract_sum_of_variates > const sum_of_variates;
    }
    namespace impl {
    }
    namespace tag {
      struct sum;
      struct sum_of_weights;
      struct abstract_sum_of_variates;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::sum(kahan)>;
    template<> struct as_feature<tag::sum_of_weights(kahan)>;
    template<> struct as_weighted_feature<tag::sum_kahan>;
    template<> struct feature_of<tag::weighted_sum_kahan>;
    template<> struct feature_of<tag::sum_kahan>;
    template<> struct feature_of<tag::sum_of_weights_kahan>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::sum_of_variates_kahan< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::sum_kahan > const sum_kahan;
      extractor< tag::sum_of_weights_kahan > const sum_of_weights_kahan;
      extractor< tag::abstract_sum_of_variates > const sum_of_variates_kahan;
    }
    namespace impl {
    }
    namespace tag {
      struct sum_kahan;
      struct sum_of_weights_kahan;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename T> struct tail_cache_size_named_arg;

    template<> struct tail_cache_size_named_arg<left>;
    template<> struct tail_cache_size_named_arg<right>;
    template<typename LeftRight> struct feature_of<tag::tail< LeftRight >>;
    namespace extract {
      extractor< tag::abstract_tail > const tail;
    }
    namespace impl {
    }
    namespace tag {
      struct abstract_tail;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct feature_of<tag::coherent_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::non_coherent_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::non_coherent_tail_mean< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::non_coherent_weighted_tail_mean< LeftRight >>;
    namespace extract {
      extractor< tag::abstract_non_coherent_tail_mean > const non_coherent_tail_mean;
      extractor< tag::tail_mean > const coherent_tail_mean;
    }
    namespace impl {
    }
    namespace tag {
      struct abstract_non_coherent_tail_mean;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct feature_of<tag::tail_quantile< LeftRight >>;
    template<typename LeftRight> 
      struct as_weighted_feature<tag::tail_quantile< LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::weighted_tail_quantile< LeftRight >>;
    namespace extract {
      extractor< tag::quantile > const tail_quantile;
    }
    namespace impl {
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename VariateType, typename VariateTag, typename LeftRight> 
      struct feature_of<tag::tail_variate< VariateType, VariateTag, LeftRight >>;
    template<typename LeftRight> 
      struct feature_of<tag::tail_weights< LeftRight >>;
    namespace extract {
      extractor< tag::abstract_tail_variate > const tail_variate;
      extractor< tag::abstract_tail_weights > const tail_weights;
    }
    namespace impl {
    }
    namespace tag {
      struct abstract_tail_variate;
      struct abstract_tail_weights;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_feature<tag::tail_variate_means< LeftRight, VariateType, VariateTag >(absolute)>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_feature<tag::tail_variate_means< LeftRight, VariateType, VariateTag >(relative)>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct feature_of<tag::absolute_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct feature_of<tag::relative_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_weighted_feature<tag::absolute_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct feature_of<tag::absolute_weighted_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_weighted_feature<tag::relative_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct feature_of<tag::relative_weighted_tail_variate_means< LeftRight, VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::abstract_absolute_tail_variate_means > const tail_variate_means;
      extractor< tag::abstract_relative_tail_variate_means > const relative_tail_variate_means;
    }
    namespace impl {
    }
    namespace tag {
      struct abstract_absolute_tail_variate_means;
      struct abstract_relative_tail_variate_means;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::variance(lazy)>;
    template<> struct as_feature<tag::variance(immediate)>;
    template<> struct feature_of<tag::lazy_variance>;
    template<> struct as_weighted_feature<tag::variance>;
    template<> struct feature_of<tag::weighted_variance>;
    template<> struct as_weighted_feature<tag::lazy_variance>;
    template<> struct feature_of<tag::lazy_weighted_variance>;
    namespace extract {
      extractor< tag::lazy_variance > const lazy_variance;
      extractor< tag::variance > const variance;
    }
    namespace impl {
    }
    namespace tag {
      struct lazy_variance;
      struct variance;
    }
  }
}
namespace boost {
  namespace accumulators {
    boost::parameter::keyword< tag::covariate1 > const covariate1;
    boost::parameter::keyword< tag::covariate2 > const covariate2;
    namespace tag {
      struct covariate1;
      struct covariate2;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::density > const weighted_density;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_density;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::weighted_extended_p_square > const weighted_extended_p_square;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_extended_p_square;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::weighted_kurtosis > const weighted_kurtosis;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_kurtosis;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::weighted_mean(lazy)>;
    template<> struct as_feature<tag::weighted_mean(immediate)>;
    template<typename VariateType, typename VariateTag> 
      struct as_feature<tag::weighted_mean_of_variates< VariateType, VariateTag >(lazy)>;
    template<typename VariateType, typename VariateTag> 
      struct as_feature<tag::weighted_mean_of_variates< VariateType, VariateTag >(immediate)>;
    namespace extract {
      extractor< tag::mean > const weighted_mean;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_mean;
      struct immediate_weighted_mean;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::weighted_median(with_p_square_quantile)>;
    template<> struct as_feature<tag::weighted_median(with_density)>;
    template<> 
      struct as_feature<tag::weighted_median(with_p_square_cumulative_distribution)>;
    namespace extract {
      extractor< tag::median > const weighted_median;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_median;
      struct with_density_weighted_median;
      struct with_p_square_cumulative_distribution_weighted_median;
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::weighted_p_square_cumulative_distribution > const weighted_p_square_cumulative_distribution;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_p_square_cumulative_distribution;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight> 
      struct as_feature<tag::weighted_peaks_over_threshold< LeftRight >(with_threshold_value)>;
    template<typename LeftRight> 
      struct as_feature<tag::weighted_peaks_over_threshold< LeftRight >(with_threshold_probability)>;
    namespace extract {
      extractor< tag::abstract_peaks_over_threshold > const weighted_peaks_over_threshold;
    }
    namespace impl {
    }
    namespace tag {
    }
  }
}
namespace boost {
  namespace accumulators {
    namespace extract {
      extractor< tag::weighted_skewness > const weighted_skewness;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_skewness;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::weighted_sum_of_variates< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::weighted_sum > const weighted_sum;
      extractor< tag::abstract_weighted_sum_of_variates > const weighted_sum_of_variates;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_sum;
      struct abstract_weighted_sum_of_variates;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::weighted_sum(kahan)>;
    template<typename VariateType, typename VariateTag> 
      struct feature_of<tag::weighted_sum_of_variates_kahan< VariateType, VariateTag >>;
    namespace extract {
      extractor< tag::weighted_sum_kahan > const weighted_sum_kahan;
      extractor< tag::abstract_weighted_sum_of_variates > const weighted_sum_of_variates_kahan;
    }
    namespace impl {
    }
    namespace tag {
      struct weighted_sum_kahan;
      template<typename VariateType, typename VariateTag> 
        struct weighted_sum_of_variates_kahan;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_feature<tag::weighted_tail_variate_means< LeftRight, VariateType, VariateTag >(absolute)>;
    template<typename LeftRight, typename VariateType, typename VariateTag> 
      struct as_feature<tag::weighted_tail_variate_means< LeftRight, VariateType, VariateTag >(relative)>;
    namespace extract {
      extractor< tag::abstract_absolute_tail_variate_means > const weighted_tail_variate_means;
      extractor< tag::abstract_relative_tail_variate_means > const relative_weighted_tail_variate_means;
    }
    namespace impl {
    }
    namespace tag {
    }
  }
  namespace numeric {
    namespace functional {
      template<typename T, typename U> struct multiply_and_promote_to_double;
    }
  }
}
namespace boost {
  namespace accumulators {
    template<> struct as_feature<tag::weighted_variance(lazy)>;
    template<> struct as_feature<tag::weighted_variance(immediate)>;
    namespace extract {
      extractor< tag::lazy_weighted_variance > const lazy_weighted_variance;
      extractor< tag::weighted_variance > const weighted_variance;
    }
    namespace impl {
    }
    namespace tag {
      struct lazy_weighted_variance;
      struct weighted_variance;
    }
  }
}
namespace boost {
  namespace accumulators {
    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;
    struct lazy;
    struct immediate;
    struct right;
    struct left;
    struct absolute;
    struct relative;
    struct with_density;
    struct with_p_square_cumulative_distribution;
    struct with_p_square_quantile;
    struct with_threshold_value;
    struct with_threshold_probability;
    struct weighted;
    struct unweighted;
    struct linear;
    struct quadratic;
    struct regular;
    struct for_median;
    struct kahan;
    namespace extract {
      extractor< tag::quantile > const quantile;
      extractor< tag::tail_mean > const tail_mean;
    }
    namespace impl {
      template<typename Sample, typename VariateType, typename VariateTag> 
        struct covariance_impl;
      template<typename Sample> struct density_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 Tag> struct sum_kahan_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 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 Tag> 
        struct weighted_sum_kahan_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 tag {
      struct quantile;
      struct tail_mean;
      template<typename VariateType, typename VariateTag> struct covariance;
      template<typename Feature> struct error_of;
      template<typename VariateType, typename VariateTag> struct mean_of_variates;
      template<typename VariateType, typename VariateTag> 
        struct immediate_mean_of_variates;
      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;
      template<typename VariateType, typename VariateTag> struct sum_of_variates;
      template<typename VariateType, typename VariateTag> 
        struct sum_of_variates_kahan;
      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;
      template<typename VariateType, typename VariateTag> 
        struct weighted_covariance;
      template<typename VariateType, typename VariateTag> 
        struct weighted_mean_of_variates;
      template<typename VariateType, typename VariateTag> 
        struct immediate_weighted_mean_of_variates;
      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;
      template<typename LeftRight> struct weighted_tail_quantile;
      template<typename LeftRight> struct non_coherent_weighted_tail_mean;
      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;
      template<typename VariateType, typename VariateTag> 
        struct weighted_sum_of_variates;
    }
  }
}

Numeric Operators Library Reference

namespace boost {
  namespace numeric {
    template<typename T> struct default_;
    template<typename T> struct one;
    template<typename T> struct zero;
    template<typename T> struct one_or_default;
    template<typename T> struct zero_or_default;
    template<typename To, typename From> 
      lazy_disable_if< is_const< From >, mpl::if_< is_same< To, From >, To &, To > >::type 
      promote(From & from);
    template<typename To, typename From> 
      mpl::if_< is_same< To const, From const  >, To const &, To const  >::type 
      promote(From const & from);
    namespace functional {
      template<typename Left, typename Right> struct left_ref;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct plus_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct plus;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct minus_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct minus;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct multiplies_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct multiplies;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct divides_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct divides;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct modulus_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct modulus;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct greater_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct greater;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct greater_equal_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct greater_equal;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct less_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct less;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct less_equal_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct less_equal;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct equal_to_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct equal_to;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct not_equal_to_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct not_equal_to;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct assign;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct plus_assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct plus_assign;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct minus_assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct minus_assign;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct multiplies_assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct multiplies_assign;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct divides_assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct divides_assign;
      template<typename Left, typename Right, typename EnableIf = void> 
        struct modulus_assign_base;
      template<typename Left, typename Right, 
               typename LeftTag = typename tag<Left>::type, 
               typename RightTag = typename tag<Right>::type> 
        struct modulus_assign;
      template<typename Arg, typename EnableIf = void> struct unary_plus_base;
      template<typename Arg, typename Tag = typename tag<Arg>::type> 
        struct unary_plus;
      template<typename Arg, typename EnableIf = void> struct unary_minus_base;
      template<typename Arg, typename Tag = typename tag<Arg>::type> 
        struct unary_minus;
      template<typename Arg, typename EnableIf = void> struct complement_base;
      template<typename Arg, typename Tag = typename tag<Arg>::type> 
        struct complement;
      template<typename Arg, typename EnableIf = void> struct logical_not_base;
      template<typename Arg, typename Tag = typename tag<Arg>::type> 
        struct logical_not;
      template<typename Left, typename Right, typename EnableIf> 
        struct min_assign_base;
      template<typename Left, typename Right, typename EnableIf> 
        struct max_assign_base;
      template<typename Left, typename Right, typename EnableIf> struct fdiv_base;

      template<typename Left, typename Right> 
        struct fdiv_base<Left, Right, typename enable_if< are_integral< Left, Right > >::type>;

      template<typename To, typename From, typename EnableIf> struct promote_base;

      template<typename ToFrom> struct promote_base<ToFrom, ToFrom, void>;

      template<typename Arg, typename EnableIf> struct as_min_base;

      template<typename Arg> 
        struct as_min_base<Arg, typename enable_if< is_floating_point< Arg > >::type>;

      template<typename Arg, typename EnableIf> struct as_max_base;
      template<typename Arg, typename EnableIf> struct as_zero_base;
      template<typename Arg, typename EnableIf> struct as_one_base;
      template<typename To, typename From, typename ToTag, typename FromTag> 
        struct promote;
      template<typename Left, typename Right, typename LeftTag, 
               typename RightTag> 
        struct min_assign;
      template<typename Left, typename Right, typename LeftTag, 
               typename RightTag> 
        struct max_assign;
      template<typename Left, typename Right, typename LeftTag, 
               typename RightTag> 
        struct fdiv;
      template<typename Arg, typename Tag> struct as_min;
      template<typename Arg, typename Tag> struct as_max;
      template<typename Arg, typename Tag> struct as_zero;
      template<typename Arg, typename Tag> struct as_one;
    }
    namespace op {
      struct plus;
      struct minus;
      struct multiplies;
      struct divides;
      struct modulus;
      struct greater;
      struct greater_equal;
      struct less;
      struct less_equal;
      struct equal_to;
      struct not_equal_to;
      struct assign;
      struct plus_assign;
      struct minus_assign;
      struct multiplies_assign;
      struct divides_assign;
      struct modulus_assign;
      struct unary_plus;
      struct unary_minus;
      struct complement;
      struct logical_not;
      template<typename To> struct promote;
      struct min_assign;
      struct max_assign;
      struct fdiv;
      struct as_min;
      struct as_max;
      struct as_zero;
      struct as_one;
    }
  }
}
namespace boost {
  namespace numeric {
    namespace operators {
      template<typename T, typename U> 
        disable_if< mpl::or_< is_same< T, U >, is_same< std::complex< T >, U > >, std::complex< T > >::type 
        operator*(std::complex< T > ri, U const & u);
      template<typename T, typename U> 
        disable_if< mpl::or_< is_same< T, U >, is_same< std::complex< T >, U > >, std::complex< T > >::type 
        operator/(std::complex< T > ri, U const & u);
    }
  }
}
namespace boost {
  namespace numeric {
    namespace functional {
      template<typename T> struct tag<std::valarray< T >>;
      template<typename Left, typename Right> 
        struct min_assign<Left, Right, std_valarray_tag, std_valarray_tag>;
      template<typename Left, typename Right> 
        struct max_assign<Left, Right, std_valarray_tag, std_valarray_tag>;
      template<typename Left, typename Right, typename RightTag> 
        struct fdiv<Left, Right, std_valarray_tag, RightTag>;
      template<typename To, typename From> 
        struct promote<To, From, std_valarray_tag, std_valarray_tag>;
      template<typename ToFrom> 
        struct promote<ToFrom, ToFrom, std_valarray_tag, std_valarray_tag>;
      template<typename From> struct promote<bool, From, void, std_valarray_tag>;
      template<typename From> 
        struct promote<bool const, From, void, std_valarray_tag>;
      template<typename T> struct as_min<T, std_valarray_tag>;
      template<typename T> struct as_max<T, std_valarray_tag>;
      template<typename T> struct as_zero<T, std_valarray_tag>;
      template<typename T> struct as_one<T, std_valarray_tag>;
    }
    namespace operators {
      template<typename Left, typename Right> 
        unspecified operator/(std::valarray< Left > const & left, 
                              Right const & right);
      template<typename Left, typename Right> 
        unspecified operator*(std::valarray< Left > const & left, 
                              Right const & right);
      template<typename Left, typename Right> 
        unspecified operator+(std::valarray< Left > const & left, 
                              std::valarray< Right > const & right);
    }
  }
}
namespace boost {
  namespace numeric {
    namespace functional {
      template<typename T, typename Al> struct tag<std::vector< T, Al >>;
      template<typename Left, typename Right> 
        struct min_assign<Left, Right, std_vector_tag, std_vector_tag>;
      template<typename Left, typename Right> 
        struct max_assign<Left, Right, std_vector_tag, std_vector_tag>;
      template<typename Left, typename Right> 
        struct fdiv<Left, Right, std_vector_tag, void>;
      template<typename To, typename From> 
        struct promote<To, From, std_vector_tag, std_vector_tag>;
      template<typename ToFrom> 
        struct promote<ToFrom, ToFrom, std_vector_tag, std_vector_tag>;
      template<typename T> struct as_min<T, std_vector_tag>;
      template<typename T> struct as_max<T, std_vector_tag>;
      template<typename T> struct as_zero<T, std_vector_tag>;
      template<typename T> struct as_one<T, std_vector_tag>;
    }
    namespace operators {
      template<typename Left, typename Right> 
        unspecified operator/(std::vector< Left > const & left, 
                              Right const & right);
      template<typename Left, typename Right> 
        std::vector< typename functional::divides< Left, Right >::result_type > 
        operator/(std::vector< Left > const & left, 
                  std::vector< Right > const & right);
      template<typename Left, typename Right> 
        unspecified operator*(std::vector< Left > const & left, 
                              Right const & right);
      template<typename Left, typename Right> 
        unspecified operator*(Left const & left, 
                              std::vector< Right > const & right);
      template<typename Left, typename Right> 
        std::vector< typename functional::multiplies< Left, Right >::result_type > 
        operator*(std::vector< Left > const & left, 
                  std::vector< Right > const & right);
      template<typename Left, typename Right> 
        std::vector< typename functional::plus< Left, Right >::result_type > 
        operator+(std::vector< Left > const & left, 
                  std::vector< Right > const & right);
      template<typename Left, typename Right> 
        std::vector< typename functional::minus< Left, Right >::result_type > 
        operator-(std::vector< Left > const & left, 
                  std::vector< Right > const & right);
      template<typename Left> 
        std::vector< Left > & 
        operator+=(std::vector< Left > & left, 
                   std::vector< Left > const & right);
      template<typename Arg> 
        std::vector< typename functional::unary_minus< Arg >::result_type > 
        operator-(std::vector< Arg > const & arg);
    }
  }
}

PrevUpHomeNext