44 static const double eu = 0.577215664901532860606;
56 double Vavilov::Mode()
const {
57 double x = -4.22784335098467134e-01-std::log(GetKappa())-GetBeta2();
58 if (x>-0.223172) x = -0.223172;
63 double p0 = Pdf (x - eps);
65 double p2 = Pdf (x + eps);
66 double y1 = 0.5*(p2-p0)/eps;
67 double y2 = (p2-2*p1+p0)/(eps*eps);
70 if (fabs(dx) < eps) eps = 0.1*fabs(dx);
71 }
while (fabs(dx) > 1E-5);
75 double Vavilov::Mode(
double kappa,
double beta2) {
76 SetKappaBeta2 (kappa, beta2);
80 double Vavilov::Mean()
const {
81 return Mean (GetKappa(), GetBeta2());
84 double Vavilov::Mean(
double kappa,
double beta2) {
85 return eu-1-std::log(kappa)-beta2;
88 double Vavilov::Variance()
const {
89 return Variance (GetKappa(), GetBeta2());
92 double Vavilov::Variance(
double kappa,
double beta2) {
93 return (1-0.5*beta2)/kappa;
96 double Vavilov::Skewness()
const {
97 return Skewness (GetKappa(), GetBeta2());
100 double Vavilov::Skewness(
double kappa,
double beta2) {
101 return (0.5-beta2/3)/(kappa*kappa) * std::pow ((1-0.5*beta2)/kappa, -1.5);
105 double Vavilov::Kurtosis()
const {
106 return Kurtosis (GetKappa(), GetBeta2());
109 double Vavilov::Kurtosis(
double kappa,
double beta2) {
110 return (1./3-0.25*beta2)*pow (1-0.5*beta2, -2)/kappa;