Artemis.Engine.Maths.SpecialFunctions.pseries C# (CSharp) Метод

pseries() приватный статический Метод

Returns the power series for incomplete beta integral. Use when b*x is small and x not too close to 1.
private static pseries ( double a, double b, double x ) : double
a double
b double
x double
Результат double
        private static double pseries(double a, double b, double x)
        {
            double s, t, u, v, n, t1, z, ai;

            ai = 1.0/a;
            u = (1.0 - b)*x;
            v = u/(a + 1.0);
            t1 = v;
            t = u;
            n = 2.0;
            s = 0.0;
            z = MACHEP*ai;
            while (Math.Abs(v) > z)
            {
                u = (n - b)*x/n;
                t *= u;
                v = t/(a + n);
                s += v;
                n += 1.0;
            }
            s += t1;
            s += ai;

            u = a * Math.Log(x);
            if ((a + b) < MAXGAM && Math.Abs(u) < MAXLOG)
            {
                t = Gamma(a + b)/(Gamma(a)*Gamma(b));
                s = s * t * Math.Pow(x, a);
            }
            else
            {
                t = LogGamma(a + b) - LogGamma(a) - LogGamma(b) + u + Math.Log(s);
                if (t < MINLOG) s = 0.0;
                else s = Math.Exp(t);
            }
            return s;
        }