35 static partial class fdlibm
37 static double scalbn(
double x,
int n)
40 two54 = 1.80143985094819840000e+16,
41 twom54 = 5.55111512312578270212e-17,
48 k = (hx & 0x7ff00000) >> 20;
51 if ((lx | (hx & 0x7fffffff)) == 0)
return x;
54 k = ((hx & 0x7ff00000) >> 20) - 54;
55 if (n < -50000)
return tiny * x;
57 if (k == 0x7ff)
return x + x;
59 if (k > 0x7fe)
return huge * copysign(huge, x);
61 { x = __HI(x, (hx & unchecked((
int)0x800fffff)) | (k << 20));
return x; }
65 return huge * copysign(huge, x);
66 else return tiny * copysign(tiny, x);
69 x = __HI(x, (hx & unchecked((
int)0x800fffff)) | (k << 20));