/* nag_prob_lin_non_central_chi_sq (g01jcc) Example Program. * * Copyright 2001 Numerical Algorithms Group. * * Mark 7, 2001. */ #include #include #include #include int main(void) { /* Initialized data */ Integer maxit = 500; double tol = 1e-4; /* Scalars */ double c, p, pdf; Integer exit_status, i, n; NagError fail; /* Arrays */ double *a = 0, *rlamda = 0; Integer *mult = 0; INIT_FAIL(fail); exit_status = 0; printf( "nag_prob_lin_non_central_chi_sq (g01jcc) Example Program Results\n"); /* Skip heading in data file */ scanf("%*[^\n] "); printf("\n A MULT RLAMDA\n"); while (scanf("%ld%lf%*[^\n] ", &n, &c) != EOF) { /* Allocate memory */ if (!(a = NAG_ALLOC(n, double)) || !(rlamda = NAG_ALLOC(n, double)) || !(mult = NAG_ALLOC(n, Integer))) { printf("Allocation failure\n"); exit_status = -1; goto END; } printf("\n"); for (i = 1; i <= n; ++i) scanf("%lf", &a[i - 1]); scanf("%*[^\n] "); for (i = 1; i <= n; ++i) scanf("%ld", &mult[i - 1]); scanf("%*[^\n] "); for (i = 1; i <= n; ++i) scanf("%lf", &rlamda[i - 1]); scanf("%*[^\n] "); /* nag_prob_lin_non_central_chi_sq (g01jcc). * Computes probability for a positive linear combination of * chi^2 variables */ nag_prob_lin_non_central_chi_sq(a, mult, rlamda, n, c, &p, &pdf, tol, maxit, &fail); if (fail.code == NE_NOERROR || fail.code == NE_ACCURACY || fail.code == NE_PROB_BOUNDARY) { for (i = 1; i <= n; ++i) printf(" %10.2f%6ld%9.2f\n", a[i - 1], mult[i - 1], rlamda[i - 1]); printf("c = %6.2f Prob = %6.4f\n", c, p); } else { printf("Error from nag_normal_scores_exact (g01dac).\n%s\n", fail.message); exit_status = 1; goto END; } NAG_FREE(a); NAG_FREE(rlamda); NAG_FREE(mult); } END: NAG_FREE(a); NAG_FREE(rlamda); NAG_FREE(mult); return exit_status; }