/* nag_legendre_p (s22aac) Example Program. * * Copyright 2000 Numerical Algorithms Group. * * NAG C Library * * Mark 6, 2000. * Mark 7, revised, 2001. * Mark 8 revised, 2004. * */ #include #include #include #include #include int main(void) { Integer exit_status=0, m, mode, n, nl; NagError fail; char *str=0; double *p=0, x; INIT_FAIL(fail); /* Skip heading in data file */ Vscanf("%*[^\n] "); Vprintf("nag_legendre_p (s22aac) Example Program Results\n"); Vscanf("%ld %lf %ld %ld", &mode, &x, &m, &nl); if ( !( p = NAG_ALLOC(nl+1, double)) || !( str = NAG_ALLOC(80, char)) ) { Vprintf("Allocation failure\n"); exit_status = -1; goto END; } if (mode == 1) { if (m == 0) Vstrcpy(str, "Unnormalized Legendre function values\n"); else Vstrcpy(str, "Unnormalized associated Legendre function values\n"); } else if (mode == 2) { if (m == 0) Vstrcpy(str, "Normalized Legendre function values\n"); else Vstrcpy(str, "Normalized associated Legendre function values\n"); } /* nag_legendre_p (s22aac). * Legendre and associated Legendre functions of the first * kind with real arguments */ nag_legendre_p(mode, x, m, nl, p, &fail); Vprintf("mode x m nl\n"); Vprintf("%3ld %5.1f%6ld%6ld\n\n", mode, x, m, nl); if (fail.code == NE_NOERROR) { Vprintf(str); Vprintf("\n"); Vprintf(" n P(n)\n"); for (n = 0; n <= nl; ++n) Vprintf("%2ld %12.4e\n",n,p[n]); } else { Vprintf("Error from nag_legendre_p (s22aac).\n%s\n", fail.message); exit_status = 1; goto END; } END: if (p) NAG_FREE(p); if (str) NAG_FREE(str); return exit_status; }