HI!

I wrote a program that finds a root with the bisection method.

The problem is that i cant find the bug :P

here is the code...

can you give me your ideas for solving the problem?

Code:#include<stdio.h> double my_function(double x); double a,b,e,meso,fm,fa,fb; int main() { printf("GIVE {a} AND {b} OF THE INTERVAL [a,b] \n,AND ALSO THE TOLERANCE e:"); printf("EXAMBLE:IF a=1 AND b=2 GIVE 1 2\n"); scanf("%lf%lf%lf ",&a,&b,&e); fa=my_function(a); fb=my_function(b); while((fa>0)&&(fb>0) || (fa<0)&&(fb<0)) { printf("THE VALUES A AND B DO NOT DIFFER IN SIGN\n"); printf(" (+a)*(+b) OR (-a)*(-b) WORNG\n"); printf("GIVE {a} AND {b} OF THE INTERVAL [a,b] \n,AND ALSO THE TOLERANCE e:"); scanf("%lf%lf%lf",&a,&b,&e); fa=my_function(a); fb=my_function(b); } meso=(a+b)/2; while(my_function(meso)!=0 || ((b-a)>e) ) { fm=my_function(meso); fa=my_function(a); fb=my_function(b); if((fa>0)&&(fm>0) || (fa<0)&&(fm<0)) { b=meso; } else { a=meso; } meso=(a+b)/2; } if(my_function(meso)==0) printf("%lf IS THE ROOT OF THE FUNCTION F(X)",meso); else if(((b-a)<e)) printf("THE ROOT APPROXIMATIVE IS %lf",meso); return 0; } double my_function(double x) { double fx; fx=x*x*x+4*x*x-10; return fx; }