private static void test01(int base_) //****************************************************************************80 // // Purpose: // // TEST01 tests NIEDERREITER. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 14 September 2007 // // Author: // // John Burkardt // // Parameters: // // Input, int BASE, the base_ to use in the computation. // BASE should be a prime, or a power of a prime. // { const int dim_max = 4; int dim_num; double[] r = new double[dim_max]; Niederreiter.NiederReiterData data = new(); Console.WriteLine(""); Console.WriteLine("TEST01"); Console.WriteLine(" NIEDERREITER computes the next element of "); Console.WriteLine(" a Niederreiter quasirandom sequence using base_ BASE."); Console.WriteLine(""); Console.WriteLine(" In this test, we call NIEDERREITER repeatedly."); Console.WriteLine(""); Console.WriteLine(" Using base_ BASE = " + base_ + ""); for (dim_num = 2; dim_num <= dim_max; dim_num++) { int seed = 0; Console.WriteLine(""); Console.WriteLine(" Using dimension DIM_NUM = " + dim_num + ""); Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); int i; for (i = 0; i <= 110; i++) { int seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); int seed_out = seed; switch (i) { case <= 11: case >= 95: { string cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); int dim; for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(10); } Console.WriteLine(cout); break; } case 12: Console.WriteLine("......................"); break; } } } }
private static void test02(int base_) //****************************************************************************80 // // Purpose: // // TEST02 tests NIEDERREITER. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 14 September 2007 // // Author: // // John Burkardt // // Parameters: // // Input, int BASE, the base_ to use in the computation. // BASE should be a prime, or a power of a prime. // { const int dim_num = 3; int dim; int i; double[] r = new double[dim_num]; int seed_in; int seed_out; string cout; Niederreiter.NiederReiterData data = new(); Console.WriteLine(""); Console.WriteLine("TEST02"); Console.WriteLine(" NIEDERREITER computes the next element of"); Console.WriteLine(" a Niederreiter quasirandom sequence using base_ BASE."); Console.WriteLine(""); Console.WriteLine(" In this test, we demonstrate how the SEED can be"); Console.WriteLine(" manipulated to skip ahead in the sequence, or"); Console.WriteLine(" to come back to any part of the sequence."); Console.WriteLine(""); Console.WriteLine(" Using base_ BASE = " + base_ + ""); Console.WriteLine(" Using dimension DIM_NUM = " + dim_num + ""); int seed = 0; Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); for (i = 0; i <= 10; i++) { seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); seed_out = seed; cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(10); } Console.WriteLine(cout); } Console.WriteLine(""); Console.WriteLine(" Jump ahead by increasing SEED:"); Console.WriteLine(""); seed = 100; Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); for (i = 1; i <= 5; i++) { seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); seed_out = seed; cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(10); } Console.WriteLine(cout); } Console.WriteLine(""); Console.WriteLine(" Jump back by decreasing SEED:"); Console.WriteLine(""); seed = 3; Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); for (i = 0; i <= 10; i++) { seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); seed_out = seed; cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(8); } Console.WriteLine(cout); } Console.WriteLine(""); Console.WriteLine(" Jump ahead by increasing SEED:"); Console.WriteLine(""); seed = 98; Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); cout = ""; for (i = 1; i <= 5; i++) { seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); seed_out = seed; cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(10); } Console.WriteLine(cout); } }
private static void test03(int base_, int dim_num) //****************************************************************************80 // // Purpose: // // TEST03 tests NIEDERREITER. // // Discussion: // // Simply verify that a few terms of a sequence of given dimension // can be computed. Most recently, the NIEDERREITER code was set // up to handle up to dimension 50...we think. // // Licensing: // // This code is distributed under the GNU LGPL license. // // Modified: // // 07 June 2010 // // Author: // // John Burkardt // // Parameters: // // Input, int BASE, the base_ to use in the computation. // BASE should be a prime, or a power of a prime. // // Input, int DIM, the spatial dimension. // { int i; Niederreiter.NiederReiterData data = new(); Console.WriteLine(""); Console.WriteLine("TEST03"); Console.WriteLine(" NIEDERREITER computes the next element of"); Console.WriteLine(" a Niederreiter quasirandom sequence using base_ BASE."); Console.WriteLine(""); Console.WriteLine(" In this test, we simply generate ten elements in a given base_"); Console.WriteLine(" and dimension."); Console.WriteLine(" manipulated to skip ahead in the sequence, or"); Console.WriteLine(" to come back to any part of the sequence."); Console.WriteLine(""); Console.WriteLine(" Using base_ BASE = " + base_ + ""); Console.WriteLine(" Using dimension DIM_NUM = " + dim_num + ""); int seed = 0; double[] r = new double[dim_num]; Console.WriteLine(""); Console.WriteLine(" Seed Seed Niederreiter"); Console.WriteLine(" In Out"); Console.WriteLine(""); for (i = 0; i <= 10; i++) { int seed_in = seed; Niederreiter.niederreiter(ref data, dim_num, base_, ref seed, ref r); int seed_out = seed; string cout = " " + seed_in.ToString(CultureInfo.InvariantCulture).PadLeft(8) + " " + seed_out.ToString(CultureInfo.InvariantCulture).PadLeft(8); int dim; for (dim = 0; dim < dim_num; dim++) { cout += " " + r[dim].ToString(CultureInfo.InvariantCulture).PadLeft(10); switch ((dim + 1) % 5) { case 0 when dim != dim_num: Console.WriteLine(cout); cout = " "; break; } } Console.WriteLine(cout); } }