#include <stdio.h>
double func(double x);
/*=============================================================*/
/* main function */
/*=============================================================*/
main(){
double eps=1e-15; /* precision of calculation */
double a, b, c;
double test;
char temp;
int i=0;
do{
printf("\ninitial value a = ");
scanf("%lf%c", &a, &temp);
printf("initial value b = ");
scanf("%lf%c", &b, &temp);
test=func(a)*func(b);
if(test >= 0){
printf(" bad initial value !! f(a)*f(b)>0\n\n");
}
}while(test >= 0);
if(b-a<0){
c=a;
a=b;
b=c;
}
while(b-a>eps){
c=(a+b)/2;
if(func(c)*func(a)<0){
b=c;
}else{
a=c;
}
i++;
printf(" %d\t%20.15f\n",i,c);
}
printf("\nsolution x = %20.15f\n\n",c);
}
/*=============================================================*/
/* define function */
/*=============================================================*/
double func(double x){
double y;
y=x*x*x-3*x*x+9*x-8;
return(y);
}