12 #include "libmesh/utility.h" 34 if (x <= 0.0 || x > 1.0)
78 return std::tgamma(
a) * std::tgamma(
b) / std::tgamma(
a +
b);
84 if (
x > ((
a + 1.0) / (
a +
b + 2.0)))
88 const unsigned int max_iter = 1e3;
95 for (
unsigned int i = 0; i < max_iter; ++i)
102 num = m * (
b - m) *
x / (
a + 2.0 * m) / (
a + 2.0 * m - 1.0);
107 num = -(
a + m) * (
a +
b + m) *
x / (
a + 2.0 * m) / (
a + 2.0 * m + 1.0);
110 dn = 1.0 / (1.0 + num * dn);
112 const Real cd = cn * dn;
115 if (std::abs(1.0 - cd) <
tol)
116 return coef * (fn - 1.0);
119 mooseAssert(
false,
"Could not compute incomplete beta function.");
120 return coef * (fn - 1.0);
132 const unsigned int max_iter = 1e3;
136 for (
unsigned int i = 0; i < max_iter; ++i)
139 if (std::abs(
f) <
tol)
144 if (x < 0 || x > 1.0)
151 for (
unsigned int i = 0; i < max_iter; ++i)
155 if (std::abs(
f) <
tol)
163 mooseAssert(
false,
"Could not find inverse of incomplete gamma function.");
static InputParameters validParams()
const Real & _beta
Shape parameter 2.
virtual Real quantile(const Real &p) const override
virtual Real pdf(const Real &x) const override
static Real incompleteBetaInv(const Real &a, const Real &b, const Real &p)
Inverse of lower incomplete beta function.
const std::vector< double > x
Real f(Real x)
Test function for Brents method.
registerMooseObject("StochasticToolsApp", Beta)
Beta(const InputParameters ¶meters)
static Real betaFunction(const Real &a, const Real &b)
Beta function: B(a,b) = Gamma(a)Gamma(b)/Gamma(a+b)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string alpha
static InputParameters validParams()
A class used to generate a Beta distribution.
static Real incompleteBeta(const Real &a, const Real &b, const Real &x)
Lower incomplete beta function.
const Real & _alpha
Shape parameter 1.
MooseUnits pow(const MooseUnits &, int)
virtual Real cdf(const Real &x) const override