public void testGeneratorDiscrepancy(IRNGFactory generatorFactory, double[][] discrepancy) { //QL_TEST_START_TIMING double tolerance = 1.0e-2; List <double> point; int dim; ulong seed = 123456; double discr; // more than 1 discrepancy measures take long time int sampleLoops = Math.Max(1, discrepancyMeasuresNumber); for (int i = 0; i < 8; i++) { dim = dimensionality[i]; DiscrepancyStatistics stat = new DiscrepancyStatistics(dim); IRNG rsg = generatorFactory.make(dim, seed); int j, k = 0, jMin = 10; stat.reset(dim); for (j = jMin; j < jMin + sampleLoops; j++) { int points = (int)(Utils.Pow(2.0, (int)(j))) - 1; for (; k < points; k++) { point = rsg.nextSequence().value; stat.add(point); } discr = stat.discrepancy(); if (Math.Abs(discr - discrepancy[i][j - jMin]) > tolerance * discr) { Assert.Fail(generatorFactory.name() + "discrepancy dimension " + dimensionality[i] + " at " + points + " samples is " + discr + " instead of " + discrepancy[i][j - jMin]); } } } }
public void testGeneratorDiscrepancy(IRNGFactory generatorFactory, double[][] discrepancy) { //QL_TEST_START_TIMING double tolerance = 1.0e-2; List<double> point; int dim; ulong seed = 123456; double discr; // more than 1 discrepancy measures take long time int sampleLoops = Math.Max(1, discrepancyMeasuresNumber); for (int i = 0; i < 8; i++) { dim = dimensionality[i]; DiscrepancyStatistics stat = new DiscrepancyStatistics(dim); IRNG rsg = generatorFactory.make(dim, seed); int j, k = 0, jMin = 10; stat.reset(dim); for (j = jMin; j < jMin + sampleLoops; j++) { int points = (int)(Utils.Pow(2.0, (int)(j))) - 1; for (; k < points; k++) { point = rsg.nextSequence().value; stat.add(point); } discr = stat.discrepancy(); if (Math.Abs(discr - discrepancy[i][j - jMin]) > tolerance * discr) { Assert.Fail(generatorFactory.name() + "discrepancy dimension " + dimensionality[i] + " at " + points + " samples is " + discr + " instead of " + discrepancy[i][j - jMin]); } } } }