/* nag_1d_quad_inf_wt_trig_1 (d01ssc) Example Program. * * Copyright 1998 Numerical Algorithms Group. * * Mark 5, 1998. * Mark 6 revised, 2000. * Mark 7 revised, 2001. * */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif static double NAG_CALL g(double x, Nag_User *comm); #ifdef __cplusplus } #endif int main(int argc, char *argv[]) { FILE *fpout; Integer exit_status = 0; double a; double omega; double epsabs, abserr; Nag_TrigTransform wt_func; double result; Nag_QuadSubProgress qpsub; Integer maxintervals, maxsubint_per_int; NagError fail; Nag_User comm; INIT_FAIL(fail); /* Check for command-line IO options */ fpout = nag_example_file_io(argc, argv, "-results", NULL); fprintf(fpout, "nag_1d_quad_inf_wt_trig_1 (d01ssc) Example Program Results\n"); epsabs = 0.001; a = 0.0; /* nag_pi (x01aac). * pi */ omega = X01AAC * 0.5; wt_func = Nag_Cosine; maxintervals = 50; maxsubint_per_int = 500; /* nag_1d_quad_inf_wt_trig_1 (d01ssc). * One-dimensional adaptive quadrature, semi-infinite * interval, sine or cosine weight function, thread-safe */ nag_1d_quad_inf_wt_trig_1(g, a, omega, wt_func, maxintervals, maxsubint_per_int, epsabs, &result, &abserr, &qpsub, &comm, &fail); fprintf(fpout, "a - lower limit of integration = %10.4f\n", a); fprintf(fpout, "b - upper limit of integration = infinity\n"); fprintf(fpout, "epsabs - absolute accuracy requested = %11.2e\n\n", epsabs); if (fail.code != NE_NOERROR) fprintf(fpout, "Error from nag_1d_quad_inf_wt_trig_1 (d01ssc) %s\n", fail.message); if (fail.code != NE_INT_ARG_LT && fail.code != NE_BAD_PARAM && fail.code != NE_ALLOC_FAIL && fail.code != NE_NO_LICENCE) { fprintf(fpout, "result - approximation to the integral = %9.5f\n", result); fprintf(fpout, "abserr - estimate of the absolute error = %11.2e\n", abserr); fprintf(fpout, "qpsub.fun_count - number of function evaluations =" " %4ld\n", qpsub.fun_count); fprintf(fpout, "qpsub.intervals - number of intervals used = %4ld\n", qpsub.intervals); fprintf(fpout, "qpsub.subints_per_interval - \n" "maximum number of subintervals used in any one interval =" " %4ld\n", qpsub.subints_per_interval); /* Free memory used by qpsub */ NAG_FREE(qpsub.interval_error); NAG_FREE(qpsub.interval_result); NAG_FREE(qpsub.interval_flag); } else { exit_status = 1; goto END; } END: if (fpout != stdout) fclose(fpout); return exit_status; } static double NAG_CALL g(double x, Nag_User *comm) { return (x > 0.0)?1.0/sqrt(x):0.0; }