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

◆ VarDecCmpSub()

static int System.Decimal.DecCalc.VarDecCmpSub ( in decimal d1,
in decimal d2 )
inlinestaticprivate

Definition at line 1067 of file Decimal.cs.

1068 {
1069 int flags = d2._flags;
1070 int num = (flags >> 31) | 1;
1071 int num2 = flags - d1._flags;
1072 ulong num3 = d1.Low64;
1073 uint num4 = d1.High;
1074 ulong num5 = d2.Low64;
1075 uint num6 = d2.High;
1076 if (num2 != 0)
1077 {
1078 num2 >>= 16;
1079 if (num2 < 0)
1080 {
1081 num2 = -num2;
1082 num = -num;
1083 ulong num7 = num3;
1084 num3 = num5;
1085 num5 = num7;
1086 uint num8 = num4;
1087 num4 = num6;
1088 num6 = num8;
1089 }
1090 do
1091 {
1092 uint b = ((num2 >= 9) ? 1000000000u : s_powers10[num2]);
1093 ulong num9 = UInt32x32To64((uint)num3, b);
1094 ulong num10 = UInt32x32To64((uint)(num3 >> 32), b) + (num9 >> 32);
1095 num3 = (uint)num9 + (num10 << 32);
1096 num10 >>= 32;
1098 if (num10 > uint.MaxValue)
1099 {
1100 return num;
1101 }
1102 num4 = (uint)num10;
1103 }
1104 while ((num2 -= 9) > 0);
1105 }
1106 uint num11 = num4 - num6;
1107 if (num11 != 0)
1108 {
1109 if (num11 > num4)
1110 {
1111 num = -num;
1112 }
1113 return num;
1114 }
1115 ulong num12 = num3 - num5;
1116 if (num12 == 0L)
1117 {
1118 num = 0;
1119 }
1120 else if (num12 > num3)
1121 {
1122 num = -num;
1123 }
1124 return num;
1125 }
static readonly uint[] s_powers10
Definition Decimal.cs:205
static ulong UInt32x32To64(uint a, uint b)
Definition Decimal.cs:300

References System.Runtime.Serialization.Dictionary, System.L, System.Decimal.DecCalc.s_powers10, and System.Decimal.DecCalc.UInt32x32To64().

Referenced by System.Decimal.DecCalc.VarDecCmp(), and System.Decimal.DecCalc.VarDecMod().