Exemplo n.º 1
0
    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;
                }
            }
        }
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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);
        }
    }