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

◆ DivRem()

uint System.Xml.Xsl.XPathConvert.BigInteger.DivRem ( BigInteger bi)
inline

Definition at line 1266 of file XPathConvert.cs.

1267 {
1268 int length = bi._length;
1269 if (_length < length)
1270 {
1271 return 0u;
1272 }
1273 uint num = _digits[length - 1] / (bi._digits[length - 1] + 1);
1274 switch (num)
1275 {
1276 case 1u:
1277 Subtract(bi);
1278 break;
1279 default:
1280 {
1281 uint u = 0u;
1282 uint num2 = 1u;
1283 int i;
1284 for (i = 0; i < length; i++)
1285 {
1286 uint uHi;
1287 uint u2 = MulU(num, bi._digits[i], out uHi);
1288 u = uHi + AddU(ref u2, u);
1289 if (u2 != 0 || num2 == 0)
1290 {
1291 num2 = AddU(ref _digits[i], ~u2 + num2);
1292 }
1293 }
1294 while (--i >= 0 && _digits[i] == 0)
1295 {
1296 }
1297 _length = i + 1;
1298 break;
1299 }
1300 case 0u:
1301 break;
1302 }
1303 int num3;
1304 if (num < 9 && (num3 = CompareTo(bi)) >= 0)
1305 {
1306 num++;
1307 if (num3 == 0)
1308 {
1309 _length = 0;
1310 }
1311 else
1312 {
1313 Subtract(bi);
1314 }
1315 }
1316 return num;
1317 }
static uint MulU(uint u1, uint u2, out uint uHi)
static uint AddU(ref uint u1, uint u2)

References System.Xml.Xsl.XPathConvert.BigInteger._digits, System.Xml.Xsl.XPathConvert.BigInteger._length, System.Xml.Xsl.XPathConvert.AddU(), System.Xml.Xsl.XPathConvert.BigInteger.CompareTo(), System.Xml.Dictionary, System.length, System.Xml.Xsl.XPathConvert.MulU(), and System.Subtract.