/usr/include/boost/math/distributions
NameSizeModeActions
detail/-0755rm
arcsine.hpp187970644editdlrm
bernoulli.hpp121430644editdlrm
beta.hpp188070644editdlrm
binomial.hpp286540644editdlrm
cauchy.hpp123100644editdlrm
chi_squared.hpp122420644editdlrm
complement.hpp59780644editdlrm
empirical_cumulative_distribution_function.hpp18860644editdlrm
exponential.hpp89440644editdlrm
extreme_value.hpp104910644editdlrm
find_location.hpp67130644editdlrm
find_scale.hpp96740644editdlrm
fisher_f.hpp143910644editdlrm
fwd.hpp54610644editdlrm
gamma.hpp106600644editdlrm
geometric.hpp211560644editdlrm
hyperexponential.hpp218870644editdlrm
hypergeometric.hpp122200644editdlrm
inverse_chi_squared.hpp152020644editdlrm
inverse_gamma.hpp153890644editdlrm
inverse_gaussian.hpp197600644editdlrm
laplace.hpp105800644editdlrm
logistic.hpp112730644editdlrm
lognormal.hpp117140644editdlrm
negative_binomial.hpp261390644editdlrm
non_central_beta.hpp358370644editdlrm
non_central_chi_squared.hpp407040644editdlrm
non_central_f.hpp158480644editdlrm
non_central_t.hpp479730644editdlrm
normal.hpp107680644editdlrm
pareto.hpp155160644editdlrm
poisson.hpp202670644editdlrm
rayleigh.hpp103440644editdlrm
skew_normal.hpp256460644editdlrm
students_t.hpp184760644editdlrm
triangular.hpp184070644editdlrm
uniform.hpp129630644editdlrm
weibull.hpp120810644editdlrm
Edit: /usr/include/boost/math/distributions/empirical_cumulative_distribution_function.hpp (1886B)
// Copyright Nick Thompson 2019. // Use, modification and distribution are subject to 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_MATH_DISTRIBUTIONS_EMPIRICAL_CUMULATIVE_DISTRIBUTION_FUNCTION_HPP #define BOOST_MATH_DISTRIBUTIONS_EMPIRICAL_CUMULATIVE_DISTRIBUTION_FUNCTION_HPP #include #include #include namespace boost { namespace math{ template class empirical_cumulative_distribution_function { using Real = typename RandomAccessContainer::value_type; public: empirical_cumulative_distribution_function(RandomAccessContainer && v, bool sorted = false) { if (v.size() == 0) { throw std::domain_error("At least one sample is required to compute an empirical CDF."); } m_v = std::move(v); if (!sorted) { std::sort(m_v.begin(), m_v.end()); } } auto operator()(Real x) const { if constexpr (std::is_integral_v) { if (x < m_v[0]) { return double(0); } if (x >= m_v[m_v.size()-1]) { return double(1); } auto it = std::upper_bound(m_v.begin(), m_v.end(), x); return static_cast(std::distance(m_v.begin(), it))/static_cast(m_v.size()); } else { if (x < m_v[0]) { return Real(0); } if (x >= m_v[m_v.size()-1]) { return Real(1); } auto it = std::upper_bound(m_v.begin(), m_v.end(), x); return static_cast(std::distance(m_v.begin(), it))/static_cast(m_v.size()); } } RandomAccessContainer&& return_data() { return std::move(m_v); } private: RandomAccessContainer m_v; }; }} #endif