示例#1
0
                public static double StudentDistributionInversed(int k, double p)
                {
                    double z;

                    double rk = k;

                    if (p is > .25 and < .75)
                    {
                        if (Math.Abs(p - .5) < Eps)
                        {
                            return(0);
                        }
                        z = IncompleteBeta.IncompleteBetaInversed(.5, .5 * rk, Math.Abs(1 - 2 * p));
                        var t = Math.Sqrt(rk * z / (1 - z));
                        return(p < 0 ? -t : t);
                    }

                    var r_flg = -1;

                    if (p >= .5)
                    {
                        p     = 1 - p;
                        r_flg = 1;
                    }

                    z = IncompleteBeta.IncompleteBetaInversed(.5 * rk, .5, 2 * p);
                    return(__MaxRealNumber * z < rk ? r_flg * __MaxRealNumber : r_flg *Math.Sqrt(rk / z - rk));
                }