| #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); | |
| } |