/* nag_summary_stats_freq (g01adc) Example Program. * * Copyright 2001 Numerical Algorithms Group. * * Mark 7, 2001. */ #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpin, *fpout; /* Scalars */ double xsd, xskew, xkurt, xmean; Integer exit_status = 0, i, j, k, kmin1, n, nprob; NagError fail; /* Arrays */ double *x = 0; Integer *ifreq = 0; INIT_FAIL(fail); /* Check for command-line IO options */ fpin = nag_example_file_io(argc, argv, "-data", NULL); fpout = nag_example_file_io(argc, argv, "-results", NULL); fprintf(fpout, "nag_summary_stats_freq (g01adc) Example Program Results\n"); /* Skip heading in data file */ fscanf(fpin, "%*[^\n] "); fscanf(fpin, "%ld%*[^\n] ", &nprob); for (j = 1; j <= nprob; ++j) { fscanf(fpin, "%ld%*[^\n] ", &kmin1); k = kmin1 + 1; /* Allocate memory */ if (!(x = NAG_ALLOC(k, double)) || !(ifreq = NAG_ALLOC(k, Integer))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } for (i = 1; i <= kmin1; ++i) fscanf(fpin, "%lf%ld", &x[i - 1], &ifreq[i - 1]); fscanf(fpin, "%lf%*[^\n] ", &x[k - 1]); fprintf(fpout, "\nProblem %4ld\n", j); fprintf(fpout, "Number of classes %4ld\n", kmin1); /* nag_summary_stats_freq (g01adc). * Mean, variance, skewness, kurtosis, etc., one variable, * from frequency table */ nag_summary_stats_freq(k, x, ifreq, &xmean, &xsd, &xskew, &xkurt, &n, &fail); if (fail.code == NE_NOERROR) { fprintf(fpout, "Successful call of " "nag_summary_stats_freq (g01adc)\n\n"); fprintf(fpout, " Class Frequency\n\n"); for (i = 1; i <= kmin1; ++i) fprintf(fpout, "%10.2f%10.2f%12ld\n", x[i-1], x[i], ifreq[i-1]); fprintf(fpout, "\n Mean %16.4f\n", xmean); fprintf(fpout, " Std devn%13.4f\n", xsd); fprintf(fpout, " Skewness%13.4f\n", xskew); fprintf(fpout, " Kurtosis%13.4f\n", xkurt); fprintf(fpout, " Number of cases%8ld\n", n); } else { fprintf(fpout, "Error from nag_summary_stats_freq (g01adc).\n%s\n", fail.message); exit_status = 1; } if (x) { NAG_FREE(x); x = 0; } if (ifreq) { NAG_FREE(ifreq); ifreq = 0; } } END: if (fpin != stdin) fclose(fpin); if (fpout != stdout) fclose(fpout); if (x) NAG_FREE(x); if (ifreq) NAG_FREE(ifreq); return exit_status; }