private void _CopyHead(RawNum source, int length, RawNum dest) { dest.Clear(); for (int i = 1; i <= length; i++) { int sourceIndex = source.Size - i; var sourceDigit = source.Digits[sourceIndex]; dest.Digits.Add(sourceDigit); } }
private void _MultiplyByDigit(RawNum num, UInt32 digit, RawNum dest) { dest.Clear(); UInt32 overfit = 0; foreach (UInt32 d in num.Digits) { UInt32 mulRes = d * digit + overfit; overfit = mulRes >> 16; dest.Digits.Add(mulRes & UInt16.MaxValue); } if (overfit > 0) { dest.Digits.Add(overfit); } }