RandLib 2.0.0
Probability distributions, fitting, and heavy-tail tools for C++20
Loading...
Searching...
No Matches
randlib::SingularDistribution Class Reference

The SingularDistribution class
Abstract class for all singular distributions. More...

#include <singular.hpp>

Inheritance diagram for randlib::SingularDistribution:
Collaboration diagram for randlib::SingularDistribution:

Public Member Functions

virtual ~SingularDistribution ()
 
- Public Member Functions inherited from randlib::UnivariateDistribution< double >
virtual ~UnivariateDistribution ()
 
virtual Support SupportType () const=0
 
bool isLeftBounded () const
 
bool isRightBounded () const
 
virtual long double Mean () const=0
 
virtual long double Variance () const=0
 
double Quantile (double p) const
 
double Quantile1m (double p) const
 
void QuantileFunction (std::span< const double > p, std::span< double > y) const
 
void QuantileFunction1m (std::span< const double > p, std::span< double > y) const
 
std::complex< double > CF (double t) const
 
void CharacteristicFunction (std::span< const double > t, std::span< std::complex< double > > y) const
 
void HazardFunction (std::span< const double > x, std::span< double > y) const
 
virtual double Median () const
 
virtual long double Skewness () const
 
virtual long double Kurtosis () const
 
virtual long double ExcessKurtosis () const
 
virtual long double SecondMoment () const
 
virtual long double ThirdMoment () const
 
virtual long double FourthMoment () const
 
- Public Member Functions inherited from randlib::ProbabilityDistribution< T >
virtual ~ProbabilityDistribution ()=default
 
virtual std::string Name () const =0
 
virtual T MinValue () const =0
 
virtual T MaxValue () const =0
 
virtual double F (const T &x) const =0
 
void CumulativeDistributionFunction (std::span< const T > x, std::span< double > y) const
 
virtual double S (const T &x) const
 
void SurvivalFunction (std::span< const T > x, std::span< double > y) const
 
template<std::uniform_random_bit_generator G>
T operator() (G &g) const
 Draws a variate with the given engine through the virtual interface.
 
T Variate () const
 Uses the engine of this object, so it is not thread-safe for one object; use operator() with one engine per thread instead.
 
void Sample (std::span< T > outputData) const
 Fills the output with variates drawn with the engine of this object.
 
template<std::uniform_random_bit_generator G>
void Sample (G &g, std::span< T > outputData) const
 Fills the output with variates drawn with the given engine.
 
void Reseed (std::uint64_t seed)
 

Protected Member Functions

 SingularDistribution ()
 
- Protected Member Functions inherited from randlib::UnivariateDistribution< double >
 UnivariateDistribution ()
 
virtual std::complex< double > CFImpl (double t) const
 
- Protected Member Functions inherited from randlib::ProbabilityDistribution< T >
std::string toStringWithPrecision (const double a_value, const int n=6) const
 
 ProbabilityDistribution ()=default
 
DefaultEngine & engine () const
 
virtual T variate (detail::EngineRef g) const =0
 Every concrete distribution implements this by calling its templated operator()
 
virtual void sample (detail::EngineRef g, std::span< T > outputData) const
 Fills the output with variate(g); distributions with a faster bulk algorithm override it.
 
fit_error fitError (FitErrorCode code, const std::string &explanation) const
 

Additional Inherited Members

- Public Types inherited from randlib::ProbabilityDistribution< T >
using value_type = T
 
- Static Public Member Functions inherited from randlib::UnivariateDistribution< double >
static long double GetSampleSum (std::span< const double > sample)
 
static long double GetSampleMean (std::span< const double > sample)
 
static long double GetSampleLogMean (std::span< const double > sample)
 
static long double GetSampleVariance (std::span< const double > sample, double mean)
 
static long double GetSampleLogVariance (std::span< const double > sample, double logMean)
 
static LongDoublePair GetSampleMeanAndVariance (std::span< const double > sample)
 
static LongDoublePair GetSampleLogMeanAndVariance (std::span< const double > sample)
 
static std::tuple< long double, long double, long double, long double > GetSampleStatistics (std::span< const double > sample)
 
- Static Protected Member Functions inherited from randlib::UnivariateDistribution< double >
static bool allElementsAreNotGreaterThan (double value, std::span< const double > sample)
 
static bool allElementsAreNotSmallerThan (double value, std::span< const double > sample)
 
static bool allElementsAreNonNegative (std::span< const double > sample)
 
static bool allElementsArePositive (std::span< const double > sample)
 
- Static Protected Attributes inherited from randlib::ProbabilityDistribution< T >
static constexpr size_t MAX_ITER_REJECTION = detail::MAX_ITER_REJECTION
 MAX_ITER_REJECTION upper boundary for maximum amount of iterations in rejection methods one thousand should be enough to be sure there is a bug (or rejection method is too slow to be used)
 
static constexpr char POSITIVITY_VIOLATION [] = "All elements should be positive"
 
static constexpr char NON_NEGATIVITY_VIOLATION [] = "All elements should be non-negative"
 
static constexpr char UPPER_LIMIT_VIOLATION [] = "No element should be greater than "
 
static constexpr char LOWER_LIMIT_VIOLATION [] = "No element should be smaller than "
 

Detailed Description

The SingularDistribution class
Abstract class for all singular distributions.

Constructor & Destructor Documentation

◆ SingularDistribution()

randlib::SingularDistribution::SingularDistribution ( )
inlineprotected

◆ ~SingularDistribution()

virtual randlib::SingularDistribution::~SingularDistribution ( )
inlinevirtual

The documentation for this class was generated from the following file: