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

◆ Div96By64()

static uint System.Decimal.DecCalc.Div96By64 ( ref Buf12 bufNum,
ulong den )
inlinestaticprivate

Definition at line 390 of file Decimal.cs.

391 {
392 uint u = bufNum.U2;
393 uint num;
394 ulong low;
395 if (u == 0)
396 {
397 low = bufNum.Low64;
398 if (low < den)
399 {
400 return 0u;
401 }
402 num = (uint)(low / den);
403 low -= num * den;
405 return num;
406 }
407 uint num2 = (uint)(den >> 32);
408 if (u >= num2)
409 {
410 low = bufNum.Low64;
411 low -= den << 32;
412 num = 0u;
413 do
414 {
415 num--;
416 low += den;
417 }
418 while (low >= den);
420 return num;
421 }
422 ulong high = bufNum.High64;
423 if (high < num2)
424 {
425 return 0u;
426 }
427 num = (uint)(high / num2);
428 low = bufNum.U0 | (high - num * num2 << 32);
429 ulong num3 = UInt32x32To64(num, (uint)den);
430 low -= num3;
431 if (low > ~num3)
432 {
433 do
434 {
435 num--;
436 low += den;
437 }
438 while (low >= den);
439 }
441 return num;
442 }
static ulong UInt32x32To64(uint a, uint b)
Definition Decimal.cs:300

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

Referenced by System.Decimal.DecCalc.VarDecDiv(), and System.Decimal.DecCalc.VarDecModFull().