/* nag_inteq_abel_weak_weights (d05byc) Example Program. * * Copyright 2011, Numerical Algorithms Group. * * Mark 23, 2011. */ #include #include #include #include int main(void) { /* Scalars */ Integer exit_status = 0; Integer i, iorder, iq, j, lomega, n, ncols, ncwt, nmax; /* Arrays */ double *omega = 0, *sw = 0; /* NAG types */ NagError fail; INIT_FAIL(fail); printf("nag_inteq_abel_weak_weights (d05byc) Example Program Results\n"); /* Skip heading in data file*/ scanf("%*[^\n] "); scanf("%ld%*[^\n] ", &iorder); scanf("%ld%*[^\n] ", &iq); ncwt = pow(2, iq + 1); lomega = 2*ncwt; ncols = 2 * iorder - 1; nmax = ncwt + ncols; if ( !(omega = NAG_ALLOC(lomega, double)) || !(sw = NAG_ALLOC(ncols * nmax, double)) ) { printf("Allocation failure\n"); exit_status = -1; goto END; } /* nag_inteq_abel_weak_weights (d05byc). Generate weights for use in solving weakly singular Abel-type equations. */ nag_inteq_abel_weak_weights(iorder, iq, omega, sw, &fail); if (fail.code != NE_NOERROR) { printf("Error from nag_inteq_abel_weak_weights (d05byc).\n%s\n", fail.message); exit_status = 1; goto END; } printf("\nFractional convolution weights\n\n"); for (i = 0; i < ncwt; i++) printf("%5ld %9.4f\n", i, omega[i]); printf("\nFractional starting weights W\n\n"); #define SW(I, J) sw[J * nmax + I - 1] for (n = 1; n <= nmax; n++) { printf("%5ld ", n); for (j = 0; j < ncols; j++) printf("%9.4f", SW(n, j)); printf("\n"); } #undef SW END: if (sw) NAG_FREE(sw); if (omega) NAG_FREE(omega); return exit_status; }