Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ NumberToHalfFloatingPointBits()

static unsafe ushort System.Number.NumberToHalfFloatingPointBits ( ref NumberBuffer number,
in FloatingPointInfo info )
inlinestaticprivate

Definition at line 3711 of file Number.cs.

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 {
3721 float num5 = DigitsToUInt32(digitsPointer, (int)digitsCount);
3722 float num6 = s_Pow10SingleTable[num4];
3723 num5 = ((num3 == 0) ? (num5 * num6) : (num5 / num6));
3724 return BitConverter.HalfToUInt16Bits((Half)num5);
3725 }
3726 if (digitsCount <= 15 && num4 <= 22)
3727 {
3728 double num7 = DigitsToUInt64(digitsPointer, (int)digitsCount);
3729 double num8 = s_Pow10DoubleTable[num4];
3730 num7 = ((num3 == 0) ? (num7 * num8) : (num7 / num8));
3731 return BitConverter.HalfToUInt16Bits((Half)num7);
3732 }
3733 return (ushort)NumberToFloatingPointBitsSlow(ref number, in info, num, num2, num3);
3734 }
static ulong NumberToFloatingPointBitsSlow(ref NumberBuffer number, in FloatingPointInfo info, uint positiveExponent, uint integerDigitsPresent, uint fractionalDigitsPresent)
Definition Number.cs:3761
static unsafe ulong DigitsToUInt64(byte *p, int count)
Definition Number.cs:3682
static readonly double[] s_Pow10DoubleTable
Definition Number.cs:1259
static unsafe uint DigitsToUInt32(byte *p, int count)
Definition Number.cs:3671
static readonly float[] s_Pow10SingleTable
Definition Number.cs:1253

References System.Math.Abs(), System.Number.DigitsToUInt32(), System.Number.DigitsToUInt64(), System.BitConverter.HalfToUInt16Bits(), System.info, System.Math.Max(), System.Math.Min(), System.Number.NumberToFloatingPointBitsSlow(), System.Number.s_Pow10DoubleTable, and System.Number.s_Pow10SingleTable.

Referenced by System.Number.NumberToHalf().