#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);
}



no counter