/* nag_runs_test (g08eac) Example Program. * * Copyright 2000 Numerical Algorithms Group. * * Mark 6, 2000. * * Mark 8 revised, 2004 */ #include #include #include #include #include int main(void) { Integer exit_status=0, igen = 0, init, iseed[] = {0, 0, 0, 0}, max_run, n; Integer nruns; NagError fail; double chi, df, enda, endb, p, *x=0; INIT_FAIL(fail); Vprintf("nag_runs_test (g08eac) Example Program Results\n"); n = 10000; if (!(x = NAG_ALLOC(n, double))) { Vprintf("Allocation failure\n"); exit_status = -1; goto END; } init = 0; /* nag_rngs_init_repeatable (g05kbc). * Initialize seeds of a given generator for random number * generating functions (that pass seeds explicitly) to give * a repeatable sequence */ nag_rngs_init_repeatable(&igen, iseed); enda = 0.0; endb = 1.0; /* nag_rngs_uniform (g05lgc). * Generates a vector of random numbers from a uniform * distribution, seeds and generator number passed * explicitly */ nag_rngs_uniform(enda, endb, n, x, igen, iseed, NAGERR_DEFAULT); max_run = 6; /* nag_runs_test (g08eac). * Performs the runs up or runs down test for randomness */ nag_runs_test(n, x, max_run, &nruns, &chi, &df, &p, &fail); if (fail.code == NE_NOERROR || fail.code == NE_G08EA_RUNS) { Vprintf("\n"); Vprintf("%s%10ld\n", "Total number of runs found = ", nruns); if (fail.code == NE_G08EA_RUNS) Vprintf("%s\n", " ** Note : the number of runs requested were not " "found."); Vprintf("\n"); Vprintf("%s%10.4f\n", "Chisq = ", chi); Vprintf("%s%8.2f\n", "DF = ", df); Vprintf("%s%10.4f\n", "Prob = ", p); } else { Vprintf("Error from nag_runs_test (g08eac).\n%s\n", fail.message); exit_status = 1; goto END; } END: if (x) NAG_FREE(x); return exit_status; }