/* nag_1d_quad_wt_trig_1(d01snc) Example Program * * Copyright 1998 Numerical Algorithms Group. * * Mark 5, 1998. * Mark 6 revised, 2000. * Mark 7 revised, 2001. * */ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif static double g(double x, Nag_User *comm); #ifdef __cplusplus } #endif int main(void) { double a, b; double omega; double epsabs, abserr, epsrel, result; Nag_TrigTransform wt_func; Nag_QuadProgress qp; Integer max_num_subint; static NagError fail; Nag_User comm; Vprintf("d01snc Example Program Results\n"); epsrel = 0.0001; epsabs = 0.0; a = 0.0; b = 1.0; omega = X01AAC * 10.0; wt_func = Nag_Sine; max_num_subint = 200; d01snc(g, a, b, omega, wt_func, epsabs, epsrel, max_num_subint, &result, &abserr, &qp, &comm, &fail); Vprintf("a - lower limit of integration = %10.4f\n", a); Vprintf("b - upper limit of integration = %10.4f\n", b); Vprintf("epsabs - absolute accuracy requested = %9.2e\n", epsabs); Vprintf("epsrel - relative accuracy requested = %9.2e\n\n", epsrel); if (fail.code != NE_NOERROR) Vprintf("%s\n", fail.message); if (fail.code != NE_INT_ARG_LT && fail.code != NE_BAD_PARAM && fail.code != NE_ALLOC_FAIL) { Vprintf("result - approximation to the integral = %9.5f\n", result); Vprintf("abserr - estimate of the absolute error = %9.2e\n", abserr); Vprintf("qp.fun_count - number of function evaluations = %4ld\n", qp.fun_count); Vprintf("qp.num_subint - number of subintervals used = %4ld\n", qp.num_subint); /* Free memory used by qp */ NAG_FREE(qp.sub_int_beg_pts); NAG_FREE(qp.sub_int_end_pts); NAG_FREE(qp.sub_int_result); NAG_FREE(qp.sub_int_error); return EXIT_SUCCESS; } return EXIT_FAILURE; } static double g(double x, Nag_User *comm) { return (x>0.0) ? log(x) : 0.0; }