/*  Cubic Root  */

#include <math.h>
#include <stdio.h>

double cbrt(double x);

void main()
{
        double  x, y;

        printf("    X       Cubic_root(X) \n\n");
        for(x = -10.0; x <= 10.0; x += 1.)
        {
                 printf(" %6.2f      %10.7f \n", x, cbrt(x));
        }
}

double cbrt(double x)
{
        int i;
        double  w1, w2, y1, p, q, r;
        double eps = 1.0e-10;

        if(x == 0.0)
        {
                return(0.0);
        }
        w1 = 1.0;
        for(i = 0; i < 100; i++)
        {
                p = 2.0*w1*w1;
                q = x/w1;
                r = p+q;
                if(r == 0.0)
                         w2 = 0.5*w1;
                else
                         w2 = 0.5 * (w1 + 3.0 * x / r);
                y1 = w1 * w1 * w1;
                if( fabs(y1 - x) <= eps)
                {
                         return(w2);
                }
                else  w1 = w2;
        }
}