#include #include #define MAXNUM 1000 #define EPS 1.e-6 double f(double x) { return(x - exp(-x) + sin(x)); } main() { double x1, x2, mid_x; int i; x1 = -100.0; x2 = 100.0; for(i = 0; i < MAXNUM; ++i){ if(f(x1) * f(x2) < 0){ printf("There should be an answer! (x1 = %lf x2 = %lf)\n", x1, x2); mid_x = (x2 + x1)/ 2; if(f(mid_x)*f(x1) < 0) x2 = mid_x; else x1 = mid_x; } else{ printf("Hmm, initial values do not seem to be good\n"); x1 = x1 * 2; x2 = x2 * 2; } if(fabs(x1 - x2) < EPS){ printf("Ans. = %lf (Iteration No. = %d)\n", (x1+x2)/2, i); break; } } }