Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include "map.h"

double
cubrt(double a)
{
        double x,y,x1;
        if(a==0) 
                return(0.);
        y = 1;
        if(a<0) {
                y = -y;
                a = -a;
        }
        while(a<1) {
                a *= 8;
                y /= 2;
        }
        while(a>1) {
                a /= 8;
                y *= 2;
        }
        x = 1;
        do {
                x1 = x;
                x = (2*x1+a/(x1*x1))/3;
        } while(fabs(x-x1)>10.e-15);
        return(x*y);
}