#include "stdio.h"
#include "math.h"
#define MaxK 1000
#define EPS 0.5e-3
double f( double x ){ return x*x*x - x - 1;}
double f1( double x ) { return 3*x*x - 1;}
void main()
{
    double x = 1.5;
    int newton( double(*)(double), double(*)(double), double &x0 ,double);
    if( newton(f,f1,x,EPS) == 1 )
      printf("\nthe root is x=%f\n\n",x);
    else printf("the method is fail!");
}
int newton( double(*)(double), double(*)(double), double &x0 ,double eps)
{
    double xk;
    int k=0;
    printf("k\t  xk\n");
 printf("------------------\n");
    printf("%d\t%f\n",k,x0);
 xk = x0 - (f(x0)/f1(x0));
    printf("%d\t%f\n",k+1,xk);
    do
    {
       x0 = xk ;
    
       xk = x0 - (f(x0)/f1(x0));
       k++;
    printf("%d\t%f\n",k+1,xk);
    }while( fabs(xk - x0) > eps );
    printf("------------------");
 x0 = xk;
 return 1;
  
}