/* nag_frequency_table (g01aec) Example Program. * * Copyright 2000 Numerical Algorithms Group. * * Mark 6a revised, 2001. */ #include #include #include #include int main(void) { Integer exit_status=0, i, iclass, j, *jfreq=0, n, nprob, num_class; NagError fail; Nag_ClassBoundary iclass_enum; double *a=0, *c=0, xmax, xmin; INIT_FAIL(fail); Vprintf("nag_frequency_table (g01aec) Example Program Results\n\n"); /* Skip heading in data file */ Vscanf("%*[^\n] "); Vscanf("%ld", &nprob); for (i = 1; i <= nprob; ++i) { Vscanf("%ld %ld %ld", &n, &iclass, &num_class); if (!(a = NAG_ALLOC(n, double)) || !(c = NAG_ALLOC(num_class-1, double)) || !(jfreq = NAG_ALLOC(num_class, Integer))) { Vprintf("Allocation failure\n"); exit_status = -1; goto END; } for (j = 1; j <= n; ++j) Vscanf("%lf", &a[j - 1]); Vprintf("Problem %ld\n", i); Vprintf("Number of cases %ld\n", n); Vprintf("Number of classes, including extreme classes %ld\n", num_class); if (iclass != 1) Vprintf("Routine-supplied class boundaries\n\n"); else { for (j = 1; j <= num_class-1; ++j) Vscanf("%lf", &c[j - 1]); Vprintf("User-supplied class boundaries\n"); } if (iclass == 1) iclass_enum = Nag_ClassBoundaryUser; else if (iclass == 0) iclass_enum = Nag_ClassBoundaryComp; else iclass_enum = (Nag_ClassBoundary)-999; /* nag_frequency_table (g01aec). * Frequency table from raw data */ nag_frequency_table(n, a, num_class, iclass_enum, c, jfreq, &xmin, &xmax, &fail); if (fail.code == NE_NOERROR) { Vprintf("Successful call of g01aec\n\n"); Vprintf("*** Frequency distribution ***\n\n"); Vprintf(" Class Frequency\n\n"); Vprintf(" Up to %8.2f %11ld\n", c[0], jfreq[0]); if (num_class-1 > 1) { for (j = 2; j <= num_class-1; ++j) Vprintf("%8.2f to %8.2f %11ld\n", c[j - 2], c[j - 1], jfreq[j - 1]); } Vprintf("%8.2f and over %9ld\n\n", c[num_class - 2], jfreq[num_class-1]); Vprintf("Total frequency = %ld\n", n); Vprintf("Minimum = %9.2f\n", xmin); Vprintf("Maximum = %9.2f\n", xmax); } else { Vprintf("Error from nag_frequency_table (g01aec).\n%s\n", fail.message); exit_status = 1; goto END; } } END: if (a) NAG_FREE(a); if (c) NAG_FREE(c); if (jfreq) NAG_FREE(jfreq); return exit_status; }