3762 {
3763 uint num = (uint)(
info.NormalMantissaBits + 1);
3764 uint digitsCount = (uint)number.DigitsCount;
3765 uint num2 = positiveExponent - integerDigitsPresent;
3766 uint lastIndex = digitsCount;
3768 if (num2 != 0)
3769 {
3770 if (num2 >
info.OverflowDecimalExponent)
3771 {
3772 return info.InfinityBits;
3773 }
3774 result.MultiplyPow10(num2);
3775 }
3776 uint num3 =
BigInteger.CountSignificantBits(ref result);
3777 if (num3 >= num || fractionalDigitsPresent == 0)
3778 {
3780 }
3781 uint num4 = fractionalDigitsPresent;
3782 if (number.Scale < 0)
3783 {
3784 num4 += (uint)(-number.Scale);
3785 }
3786 if (num3 == 0 && num4 - (
int)digitsCount >
info.OverflowDecimalExponent)
3787 {
3788 return info.ZeroBits;
3789 }
3791 if (result2.IsZero())
3792 {
3794 }
3796 uint num5 =
BigInteger.CountSignificantBits(ref result2);
3797 uint num6 =
BigInteger.CountSignificantBits(ref result3);
3798 uint num7 = 0u;
3799 if (num6 > num5)
3800 {
3801 num7 = num6 - num5;
3802 }
3803 if (num7 != 0)
3804 {
3805 result2.ShiftLeft(num7);
3806 }
3807 uint num8 = num - num3;
3808 uint num9 = num8;
3809 if (num3 != 0)
3810 {
3811 if (num7 > num9)
3812 {
3814 }
3815 num9 -= num7;
3816 }
3817 uint num10 = num7;
3819 {
3820 num10++;
3821 }
3822 result2.ShiftLeft(num9);
3824 ulong num11 = quo.ToUInt64();
3825 bool flag = !number.HasNonZeroTail && rem.IsZero();
3826 uint num12 =
BigInteger.CountSignificantBits(num11);
3827 if (num12 > num8)
3828 {
3829 int num13 = (int)(num12 - num8);
3830 flag = flag && (num11 & (ulong)((1
L << num13) - 1)) == 0;
3831 num11 >>= num13;
3832 }
3833 ulong num14 = result.ToUInt64();
3834 ulong initialMantissa = (num14 << (int)num8) + num11;
3835 int initialExponent = (int)((num3 != 0) ? (num3 - 2) : (0 - num10 - 1));
3837 }
static unsafe void AccumulateDecimalDigitsIntoBigInteger(ref NumberBuffer number, uint firstIndex, uint lastIndex, out BigInteger result)
static ulong AssembleFloatingPointBits(in FloatingPointInfo info, ulong initialMantissa, int initialExponent, bool hasZeroTail)
static ulong ConvertBigIntegerToFloatingPointBits(ref BigInteger value, in FloatingPointInfo info, uint integerBitsOfPrecision, bool hasNonZeroFractionalPart)
static BigInteger DivRem(BigInteger dividend, BigInteger divisor, out BigInteger remainder)
static int Compare(BigInteger left, BigInteger right)