481 {
483 int num =
value.Exponent;
484 uint num2 =
value.Significand;
485 switch (num)
486 {
487 case 31:
488 if (num2 != 0)
489 {
491 }
492 if (!flag)
493 {
494 return double.PositiveInfinity;
495 }
496 return double.NegativeInfinity;
497 case 0:
498 {
499 if (num2 == 0)
500 {
501 return BitConverter.UInt64BitsToDouble(flag ? 9223372036854775808uL : 0);
502 }
504 num = tuple.Exp;
505 num2 = tuple.Sig;
506 num--;
507 break;
508 }
509 }
510 return CreateDouble(flag, (ushort)(num + 1008), (ulong)num2 << 42);
511 }
static bool IsNegative(Half value)
static double CreateDouble(bool sign, ushort exp, ulong sig)
static double CreateDoubleNaN(bool sign, ulong significand)
static int uint Sig NormSubnormalF16Sig(uint sig)