1288 {
1289 double num = x;
1290 if (n > 1023)
1291 {
1292 num *= 8.98846567431158E+307;
1293 n -= 1023;
1294 if (n > 1023)
1295 {
1296 num *= 8.98846567431158E+307;
1297 n -= 1023;
1298 if (n > 1023)
1299 {
1300 n = 1023;
1301 }
1302 }
1303 }
1304 else if (n < -1022)
1305 {
1306 num *= 2.004168360008973E-292;
1307 n += 969;
1308 if (n < -1022)
1309 {
1310 num *= 2.004168360008973E-292;
1311 n += 969;
1312 if (n < -1022)
1313 {
1314 n = -1022;
1315 }
1316 }
1317 }
1318 double num2 = BitConverter.Int64BitsToDouble((long)(1023 + n) << 52);
1319 return num * num2;
1320 }