Accord.Statistics.Distributions.Univariate.KolmogorovSmirnovDistribution.computeLimits C# (CSharp) Method

computeLimits() private static method

Initializes the Pomeranz algorithm.
private static computeLimits ( double t, double floors, double ceilings ) : double
t double
floors double
ceilings double
return double
        private static double computeLimits(double t, double[] floors, double[] ceilings)
        {
            double floor = Math.Floor(t);
            double ceiling = Math.Ceiling(t);

            double z = t - floor;
            double w = ceiling - t;

            if (z > 0.5)
            {
                for (int i = 1; i < floors.Length; i += 2)
                    floors[i] = i / 2 - 1 - floor;
                for (int i = 2; i < floors.Length; i += 2)
                    floors[i] = i / 2 - 2 - floor;
                for (int i = 1; i < ceilings.Length; i += 2)
                    ceilings[i] = i / 2 + 1 + floor;
                for (int i = 2; i < ceilings.Length; i += 2)
                    ceilings[i] = i / 2 + floor;
            }
            else if (z > 0.0)
            {
                ceilings[1] = 1 + floor;
                for (int i = 1; i < floors.Length; i++)
                    floors[i] = i / 2 - 1 - floor;
                for (int i = 2; i < ceilings.Length; i++)
                    ceilings[i] = i / 2 + floor;
            }
            else // if (z == 0)
            {
                for (int i = 1; i < floors.Length; i += 2)
                    floors[i] = i / 2 - floor;
                for (int i = 2; i < floors.Length; i += 2)
                    floors[i] = i / 2 - 1 - floor;
                for (int i = 1; i < ceilings.Length; i += 2)
                    ceilings[i] = i / 2 + floor;
                for (int i = 2; i < ceilings.Length; i += 2)
                    ceilings[i] = i / 2 - 1 + floor;
            }

            if (w < z) z = w;

            return z;
        }