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

◆ ExtractDigits()

static void System.Numerics.BigIntegerCalculator.ExtractDigits ( ref BitsBuffer xBuffer,
ref BitsBuffer yBuffer,
out ulong x,
out ulong y )
inlinestaticprivate

Definition at line 803 of file BigIntegerCalculator.cs.

804 {
805 uint[] bits = xBuffer.GetBits();
806 int length = xBuffer.GetLength();
807 uint[] bits2 = yBuffer.GetBits();
808 int length2 = yBuffer.GetLength();
809 ulong num = bits[length - 1];
810 ulong num2 = bits[length - 2];
811 ulong num3 = bits[length - 3];
812 ulong num4;
813 ulong num5;
814 ulong num6;
815 switch (length - length2)
816 {
817 case 0:
818 num4 = bits2[length2 - 1];
819 num5 = bits2[length2 - 2];
820 num6 = bits2[length2 - 3];
821 break;
822 case 1:
823 num4 = 0uL;
824 num5 = bits2[length2 - 1];
825 num6 = bits2[length2 - 2];
826 break;
827 case 2:
828 num4 = 0uL;
829 num5 = 0uL;
830 num6 = bits2[length2 - 1];
831 break;
832 default:
833 num4 = 0uL;
834 num5 = 0uL;
835 num6 = 0uL;
836 break;
837 }
838 int num7 = LeadingZeros((uint)num);
839 x = ((num << 32 + num7) | (num2 << num7) | (num3 >> 32 - num7)) >> 1;
840 y = ((num4 << 32 + num7) | (num5 << num7) | (num6 >> 32 - num7)) >> 1;
841 }

References System.Numerics.BigIntegerCalculator.LeadingZeros(), System.length, and System.length2.

Referenced by System.Numerics.BigIntegerCalculator.Gcd().