xref: /plan9-contrib/sys/src/cmd/map/libmap/cubrt.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include "map.h"
2 
3 double
4 cubrt(double a)
5 {
6 	double x,y,x1;
7 	if(a==0)
8 		return(0.);
9 	y = 1;
10 	if(a<0) {
11 		y = -y;
12 		a = -a;
13 	}
14 	while(a<1) {
15 		a *= 8;
16 		y /= 2;
17 	}
18 	while(a>1) {
19 		a /= 8;
20 		y *= 2;
21 	}
22 	x = 1;
23 	do {
24 		x1 = x;
25 		x = (2*x1+a/(x1*x1))/3;
26 	} while(fabs(x-x1)>10.e-15);
27 	return(x*y);
28 }
29