/* nag_complex_bessel_i (s18dec) Example Program. * * Copyright 2002 Numerical Algorithms Group. * * Mark 7, 2002. */ #include #include #include #include int main(void) { Complex z, cy[2]; double fnu; const Integer n = 2; Integer nz; Nag_ScaleResType scal_enum; char scal; Integer exit_status = EXIT_SUCCESS; NagError fail; INIT_FAIL(fail); /* Skip heading in data file */ Vscanf("%*[^\n]"); Vprintf("nag_complex_bessel_i (s18dec) Example Program Results\n"); Vprintf("Calling with n = %ld\n", n); Vprintf(" fnu z scal cy[0] " "cy[1] nz\n"); while (scanf(" %lf (%lf,%lf) '%c'%*[^\n] ", &fnu, &z.re, &z.im, &scal) != EOF) { /* Convert scal character to enum */ if (scal == 's') { scal_enum = Nag_ScaleRes; } else if (scal == 'u') { scal_enum = Nag_UnscaleRes; } else { Vprintf("Unrecognised character for Nag_ScaleResType type\n"); exit_status = -1; goto END; } /* nag_complex_bessel_i (s18dec). * Modified Bessel functions I_(nu~+~a)(z), real a~>=~0, * complex z, nu~=~0~,~1~,~2~,~... */ nag_complex_bessel_i(fnu, z, n, scal_enum, cy, &nz, &fail); if (fail.code == NE_NOERROR) Vprintf("%7.4f (%7.3f,%7.3f) '%c' (%7.3f,%7.3f) (%7.3f,%7.3f) " "%ld\n", fnu, z.re, z.im, scal, cy[0].re, cy[0].im, cy[1].re, cy[1].im, nz); else { Vprintf("Error from nag_complex_bessel_i (s18dec).\n%s\n", fail.message); exit_status = 1; goto END; } } END: return exit_status; }