/* nag_zero_cont_func_cntin_rcomm (c05axc) Example Program. * * Copyright 2007 Numerical Algorithms Group. * * Mark 9, 2009. */ #include #include #include #include #include #include int main(void) { /* Scalars */ Integer exit_status = 0; double fx, tol, x, scal, i; Integer ind; Nag_ErrorControl ir; /* Arrays */ double c[26]; NagError fail; INIT_FAIL(fail); printf("nag_zero_cont_func_cntin_rcomm (c05axc) Example Program Results\n"); scal = sqrt(nag_machine_precision); ir = Nag_Mixed; for (i = 3; i <= 4; i++) { tol = pow(10.0, -i); printf("\ntol = %13.4e\n\n", tol); x = 1.0; ind = 1; fx = 0.0; /* nag_zero_cont_func_cntin_rcomm (c05axc). * Locates a zero of a continuous function. * Reverse communication. */ while (ind != 0) { nag_zero_cont_func_cntin_rcomm(&x, fx, tol, ir, scal, c, &ind, &fail); if (ind != 0) fx = x - exp(-x); } if (fail.code == NE_NOERROR) { printf("Root is %14.5f\n", x); } else { printf( "Error from nag_zero_cont_func_cntin_rcomm (c05axc) %s\n", fail.message); if (fail.code == NE_CONTIN_PROB_NOT_SOLVED || fail.code == NE_FINAL_PROB_NOT_SOLVED) { printf("Final value = %14.5f, theta = %10.2f\n", x, c[4]); } exit_status = 1; goto END; } } END: return exit_status; }