18 public static double Erf(
double x)
30 Term = x * Product / (2 * n + 1);
33 while (Math.Abs(Term) > 1e-10);
45 public static Complex
Erf(Complex z)
57 Term = z * Product / (2 * n + 1);
60 while (Complex.Abs(Term) > 1e-10);
67 private static readonly
double erfC = 2 / Math.Sqrt(Math.PI);
78 public static double Γ(
double x)
84 return Math.PI / (Math.Sin(Math.PI * x) *
Γ(1 - x));
90 double w = Math.Pow(v, x - 0.5);
91 double u = 0.99999999999980993;
93 u += 676.5203681218851 / x++;
94 u += -1259.1392167224028 / x++;
95 u += 771.32342877765313 / x++;
96 u += -176.61502916214059 / x++;
97 u += 12.507343278686905 / x++;
98 u += -0.13857109526572012 / x++;
99 u += 9.9843695780195716e-6 / x++;
100 u += 1.5056327351493116e-7 / x++;
102 return gammaC * w * Math.Exp(-v) * u;
111 public static Complex
Γ(Complex z)
117 return Math.PI / (Complex.Sin(Math.PI * z) *
Γ(1 - z));
123 Complex w = Complex.Pow(v, z - 0.5);
124 Complex u = 0.99999999999980993;
126 u += 676.5203681218851 / z;
127 u += -1259.1392167224028 / (z + 1);
128 u += 771.32342877765313 / (z + 2);
129 u += -176.61502916214059 / (z + 3);
130 u += 12.507343278686905 / (z + 4);
131 u += -0.13857109526572012 / (z + 5);
132 u += 9.9843695780195716e-6 / (z + 6);
133 u += 1.5056327351493116e-7 / (z + 7);
135 return gammaC * w * Complex.Exp(-v) * u;
139 private static readonly
double gammaC = Math.Sqrt(2 * Math.PI);
147 public static double γ(
double a,
double x)
152 double c = Math.Abs(a);
153 if (c > 1.1 && Math.Abs(x) > c)
154 return Γ(a) -
Γ(a, x);
156 return γ(a, x, 1e-10);
159 private static double γ(
double a,
double x,
double eps)
161 double c = Math.Pow(x, a) * Math.Exp(-x);
174 while (Math.Abs(Term) > eps);
185 public static Complex
γ(Complex a, Complex z)
187 if (z == Complex.Zero)
190 double c = Complex.Abs(a);
191 if (c > 1.1 && Complex.Abs(z) > c)
192 return Γ(a) -
Γ(a, z);
194 return γ(a, z, 1e-10);
197 private static Complex
γ(Complex a, Complex z,
double eps)
199 Complex c = Complex.Pow(z, a) * Complex.Exp(-z);
202 Complex Term = n / d;
214 while (Complex.Abs(Term) > eps);
225 public static double Γ(
double a,
double x)
230 double c = Math.Abs(a);
231 if (c <= 1.1 || Math.Abs(x) <= c)
232 return Γ(a) -
γ(a, x);
237 private static double Γ(
double a,
double x,
int N)
243 for (i = N; i > 0; i--)
245 d = q + 1 + 2 * i + x - a;
250 n = Math.Pow(x, a) * Math.Exp(-x);
261 public static Complex
Γ(Complex a, Complex z)
263 if (z == Complex.Zero)
266 double c = Complex.Abs(a);
267 if (c <= 1.1 || Complex.Abs(z) <= c)
268 return Γ(a) -
γ(a, z);
273 private static Complex
Γ(Complex a, Complex z,
int N)
279 for (i = N; i > 0; i--)
281 d = q + 1 + 2 * i + z - a;
286 n = Complex.Pow(z, a) * Complex.Exp(-z);
301 public static double Β(
double a,
double b)
303 return Γ(a) *
Γ(b) /
Γ(a + b);
312 public static Complex
Β(Complex a, Complex b)
314 return Γ(a) *
Γ(b) /
Γ(a + b);
Contains Numerical Methods to compute mathematical functions needed for probabilistic computations.
static Complex Β(Complex a, Complex b)
Beta-function Β(a,b)
static double Β(double a, double b)
Beta-function Β(a,b)
static double Γ(double x)
Gamma function Γ(x), for real-valued arguments.
static double Erf(double x)
Error function erf(x)
static Complex Γ(Complex a, Complex z)
Incomplete gamma function Γ(a,z), γ(a,z)+Γ(a,z)=Γ(a)
static Complex γ(Complex a, Complex z)
Incomplete gamma function γ(a,z)→Γ(a),z→∞
static Complex Γ(Complex z)
Gamma function Γ(x), for real-valued arguments.
static double γ(double a, double x)
Incomplete gamma function γ(a,x)→Γ(a),x→∞
static double Γ(double a, double x)
Incomplete gamma function Γ(a,x), γ(a,x)+Γ(a,x)=Γ(a)
static Complex Erf(Complex z)
Error function erf(z)