31#ifndef ROOT_Math_VavilovAccurate
32#define ROOT_Math_VavilovAccurate
147 VavilovAccurate(
double kappa=1,
double beta2=1,
double epsilonPM=5E-4,
double epsilon=1E-5);
162 double Pdf (
double x)
const override;
172 double Pdf (
double x,
double kappa,
double beta2)
override;
179 double Cdf (
double x)
const override;
189 double Cdf (
double x,
double kappa,
double beta2)
override;
196 double Cdf_c (
double x)
const override;
206 double Cdf_c (
double x,
double kappa,
double beta2)
override;
213 double Quantile (
double z)
const override;
223 double Quantile (
double z,
double kappa,
double beta2)
override;
240 double Quantile_c (
double z,
double kappa,
double beta2)
override;
261 void Set(
double kappa,
double beta2,
double epsilonPM=5E-4,
double epsilon=1E-5);
289 double Mode()
const override;
298 double Mode(
double kappa,
double beta2)
override;
347 double G116f1 (
double x)
const;
348 double G116f2 (
double x)
const;
350 int Rzero (
double a,
double b,
double& x0,
Class describing a Vavilov distribution.
double GetEpsilon() const
Return the current value of .
void InitQuantile() const
double Quantile_c(double z) const override
Evaluate the inverse of the complementary Vavilov cumulative probability density function.
double Cdf(double x) const override
Evaluate the Vavilov cumulative probability density function.
static VavilovAccurate * GetInstance()
Returns a static instance of class VavilovFast.
double G116f1(double x) const
double GetBeta2() const override
Return the current value of .
int Rzero(double a, double b, double &x0, double eps, int mxf, double(VavilovAccurate::*f)(double) const) const
void SetKappaBeta2(double kappa, double beta2) override
Change and and recalculate coefficients if necessary.
static VavilovAccurate * fgInstance
double fA_cdf[MAXTERMS+1]
double fA_pdf[MAXTERMS+1]
double Quantile(double z) const override
Evaluate the inverse of the Vavilov cumulative probability density function.
double fLambda[kNquantMax]
double GetKappa() const override
Return the current value of .
static double E1plLog(double x)
double GetLambdaMax() const override
Return the maximum value of for which is nonzero in the current approximation.
~VavilovAccurate() override
Destructor.
double GetLambdaMin() const override
Return the minimum value of for which is nonzero in the current approximation.
double GetEpsilonPM() const
Return the current value of .
double fB_cdf[MAXTERMS+1]
double G116f2(double x) const
double Cdf_c(double x) const override
Evaluate the Vavilov complementary cumulative probability density function.
static constexpr int MAXTERMS
double fQuant[kNquantMax]
void Set(double kappa, double beta2, double epsilonPM=5E-4, double epsilon=1E-5)
(Re)Initialize the object
double fB_pdf[MAXTERMS+1]
double GetNTerms() const
Return the number of terms used in the series expansion.
static constexpr int kNquantMax
double Mode() const override
Return the value of where the pdf is maximal.
Base class describing a Vavilov distribution.
double vavilov_accurate_pdf(double x, double kappa, double beta2)
The Vavilov probability density function.
double vavilov_accurate_cdf_c(double x, double kappa, double beta2)
The Vavilov complementary cumulative probability density function.
double vavilov_accurate_cdf(double x, double kappa, double beta2)
The Vavilov cumulative probability density function.
double vavilov_accurate_quantile_c(double z, double kappa, double beta2)
The inverse of the complementary Vavilov cumulative probability density function.
double vavilov_accurate_quantile(double z, double kappa, double beta2)
The inverse of the Vavilov cumulative probability density function.
Namespace for new Math classes and functions.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...