3712 {
3713 uint digitsCount = (uint)number.DigitsCount;
3714 uint num = (uint)Math.Max(0, number.Scale);
3715 uint num2 = Math.Min(num, digitsCount);
3716 uint num3 = digitsCount - num2;
3717 uint num4 = (uint)Math.Abs(number.Scale - num2 - num3);
3718 byte* digitsPointer = number.GetDigitsPointer();
3719 if (digitsCount <= 7 && num4 <= 10)
3720 {
3723 num5 = ((num3 == 0) ? (num5 * num6) : (num5 / num6));
3724 return BitConverter.HalfToUInt16Bits((Half)num5);
3725 }
3726 if (digitsCount <= 15 && num4 <= 22)
3727 {
3730 num7 = ((num3 == 0) ? (num7 * num8) : (num7 / num8));
3731 return BitConverter.HalfToUInt16Bits((Half)num7);
3732 }
3734 }
static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in FloatingPointInfo info, uint positiveExponent, uint integerDigitsPresent, uint fractionalDigitsPresent)
static unsafe ulong DigitsToUInt64(byte *p, int count)
static readonly double[] s_Pow10DoubleTable
static unsafe uint DigitsToUInt32(byte *p, int count)
static readonly float[] s_Pow10SingleTable