28 static partial class fdlibm
30 internal static double cbrt(
double x)
41 C = 5.42857142857142815906e-01,
42 D = -7.05306122448979611050e-01,
43 E = 1.41428571428571436819e+00,
44 F = 1.60714285714285720630e+00,
45 G = 3.57142857142857150787e-01;
48 double r, s, t = 0.0, w;
53 sign = hx & unchecked((
int)0x80000000);
55 if (hx >= 0x7ff00000)
return (x + x);
56 if ((hx | __LO(x)) == 0)
63 t = __HI(t, 0x43500000);
64 t *= x; t = __HI(t, __HI(t) / 3 + B2);
67 t = __HI(t, hx / 3 + B1);
73 t *= G + F / (s + E + D / s);
76 t = __LO(t, 0); t = __HI(t, __HI(t) + 0x00000001);
83 r = (r - t) / (w + r);
87 t = __HI(t, __HI(t) | sign);