#include <stdio.h>
#include <math.h>
#define IMAX 50
double func(double x);
double dfunc(double x);

/*================================================================*/
/*       main function                                            */
/*================================================================*/
main(){
  double eps=1e-15;         /* precision of calculation */
  double x[IMAX+10];
  char temp;
  int i=-1;

  printf("\ninitial value x0 = ");
  scanf("%lf%c", &x[0], &temp);
    
  do{
    i++;
    x[i+1]=x[i]-func(x[i])/dfunc(x[i]);

    printf("  %d\t%e\n", i, x[i+1]);

    if(fabs((x[i+1]-x[i])/x[i])<eps) break;
  }while(i<=IMAX);

  if(i>=IMAX){
    printf("\n  not converged !!! \n\n");
  }else{
    printf("\niteration = %d  solution  x = %20.15f\n\n",i,x[i+1]);
  }

}

/*================================================================*/
/*       define function                                          */
/*================================================================*/
double func(double x){
  double y;

  y=x*x*x-3*x*x+9*x-8;

  return(y);
}

/*================================================================*/
/*       define derived function                                  */
/*================================================================*/
double dfunc(double x){
  double dydx;

  dydx=3*x*x-6*x+9;

  return(dydx);
}



no counter