3632 {
3633 int denormalMantissaBits =
info.DenormalMantissaBits;
3634 if (integerBitsOfPrecision <= 64)
3635 {
3637 }
3638 (uint Quotient, uint Remainder) tuple = Math.DivRem(integerBitsOfPrecision, 32u);
3639 uint
item = tuple.Quotient;
3640 uint item2 = tuple.Remainder;
3641 uint num =
item - 1;
3642 uint num2 = num - 1;
3643 int num3 = denormalMantissaBits + (int)(num2 * 32);
3644 bool flag = !hasNonZeroFractionalPart;
3645 ulong initialMantissa;
3646 if (item2 == 0)
3647 {
3648 initialMantissa = ((ulong)
value.GetBlock(num) << 32) +
value.GetBlock(num2);
3649 }
3650 else
3651 {
3652 int num4 = (int)item2;
3653 int num5 = 64 - num4;
3654 int num6 = num5 - 32;
3655 num3 += (int)item2;
3656 uint block =
value.GetBlock(num2);
3657 uint num7 = block >> num4;
3658 ulong num8 = (ulong)
value.GetBlock(num) << num6;
3659 ulong num9 = (ulong)
value.GetBlock(
item) << num5;
3660 initialMantissa = num9 + num8 + num7;
3661 uint num10 = (uint)((1 << (int)item2) - 1);
3662 flag = flag && (block & num10) == 0;
3663 }
3664 for (uint num11 = 0u; num11 != num2; num11++)
3665 {
3666 flag &=
value.GetBlock(num11) == 0;
3667 }
3669 }
static ulong AssembleFloatingPointBits(in FloatingPointInfo info, ulong initialMantissa, int initialExponent, bool hasZeroTail)