30 lines · 329 B · C
RawDownload
#include <u.h>#include <libc.h>#include "map.h" doublecubrt(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);}