/* nag_normal_scores_var (g01dcc) Example Program. * * Copyright 2001 Numerical Algorithms Group. * * Mark 7, 2001. * Mark 7b revised, 2004. */ #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpout; /* Scalars */ double errest, etol, exp1, exp2, sumssq; Integer exit_status, i, j, k, n, vec_elem; NagError fail; /* Arrays */ double *pp = 0, *vec = 0; INIT_FAIL(fail); /* Check for command-line IO options */ fpout = nag_example_file_io(argc, argv, "-results", NULL); fprintf(fpout, "nag_normal_scores_var (g01dcc) Example Program Results\n"); etol = 1e-4; exit_status = 0; n = 6; /* Allocate memory */ if (!(pp = NAG_ALLOC(n, double)) || !(vec = NAG_ALLOC(n*(n+1)/2, double))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } /* nag_normal_scores_exact (g01dac). * Normal scores, accurate values */ nag_normal_scores_exact(n, pp, etol, &errest, &fail); if (fail.code != NE_NOERROR) { fprintf(fpout, "Error from nag_normal_scores_exact (g01dac).\n%s\n", fail.message); exit_status = 1; goto END; } exp1 = pp[5]; exp2 = pp[4]; sumssq = 0.0; for (i = 1; i <= 6; ++i) sumssq += pp[i - 1] * pp[i - 1]; /* nag_normal_scores_var (g01dcc). * Normal scores, approximate variance-covariance matrix */ nag_normal_scores_var(n, exp1, exp2, sumssq, vec, &fail); if (fail.code != NE_NOERROR) { fprintf(fpout, "Error from nag_normal_scores_exact (g01dac).\n%s\n", fail.message); exit_status = 1; goto END; } fprintf(fpout, "\nSample size = %2ld\n\n", n); fprintf(fpout, "Variance-covariance matrix\n"); k = 1; for (j = 1; j <= n; ++j) { vec_elem = 1; for (i = k; i <= k + j - 1; ++i) { fprintf(fpout, "%8.4f%s", vec[i - 1], vec_elem%6 == 0?"\n":" "); vec_elem++; } fprintf(fpout, "\n"); k += j; } END: if (fpout != stdout) fclose(fpout); if (pp) NAG_FREE(pp); if (vec) NAG_FREE(vec); return exit_status; }