#include
    #include
    #include
    #include
    #include

    #define retf(x)  sin(x)
    #define FALSE 0
    #define TRUE 1

     unsigned char chk_error=FALSE;

     void main(void)
     {
     double nioton_solve(double,double);
     double accuracy,p0,answer;

     clrscr();
     printf("Enter Accuracy For Solving Sin(x)=0: \0");
     cin>>accuracy;
     printf("Enter Start Point P0:\0");
     cin>>p0;

     answer=nioton_solve(accuracy,p0);

     if(chk_error)
     printf("Error In calculation.\a\n\0");
     else
     {
     printf("Answer Of sin(x)=0 With Nioton Method And start Point= \0");
     printf("&f\n\0",answer);
     }
     }
     double d1x(double xi)
     {
     double h=0.00001;
     double yi_1=retf(xi);
     return((retf(xi+h)-yi_1)/h);
     }

     double d2x(double xi)
     {
     double h=0.00001;
     double yi_1=retf(xi);
     return((retf(xi-h)-2*yi_1+retf(xi+h))/(h*h));
     }
     double nioton_solve(double accuracy,double p0)
     {
     double y0=retf(p0),df,d2f,dp,p1,y1,relerror;
     unsigned int max =99,cmax=1;
     do
     {
     df=d1x(p0);
     if(df==0)
     {
     chk_error=TRUE;
     return(-1);
     }
     else
     dp=y0/df;
     p1=p0-dp;
     y1=retf(p1);
     relerror=2*fabs(dp)/(fabs(p1)+accuracy);
     if ((relerror     return(p1);
     p0=p1;
     y0=y1;
     cmax++;
     }while (cmax<=max);
     return (p0);
     }