Exemplo n.º 1
0
        public void InverseCentralRegion()
        {
            var grid = GridUtils.RegularGrid(-2.0, 2.0, 1000);

            foreach (var x in grid)
            {
                var p           = NormalDistribution.Cumulative(x);
                var proxy_x     = NormalDistribution.CumulativeInverse(p);
                var errRelative = Math.Abs(proxy_x - x);
                Assert.IsTrue(errRelative < 13 * DoubleUtils.MachineEpsilon);
            }
        }
Exemplo n.º 2
0
        public void InverseHigherRegion()
        {
            var grid = GridUtils.RegularGrid(2.0, 6.0, 1000);

            foreach (var x in grid)
            {
                var p       = NormalDistribution.Cumulative(x);
                var proxy_x = NormalDistribution.CumulativeInverse(p);
                var err     = Math.Abs((proxy_x - x) / x);
                Assert.IsTrue(err < 1.0e-8);
            }
        }
Exemplo n.º 3
0
        public void FastVsPreciseInverse()
        {
            var bound = NormalDistribution.CumulativeInverse(1.0e-6);
            var grid  = GridUtils.RegularGrid(bound, -bound, 1000);

            foreach (var x in grid)
            {
                var p           = NormalDistribution.Cumulative(x);
                var precise     = NormalDistribution.CumulativeInverse(p);
                var fast        = NormalDistribution.FastCumulativeInverse(p);
                var errRelative = Math.Abs(fast - precise);
                Assert.IsTrue(errRelative < 3.0e-9);
            }
        }