public void MulAdd(uint uMul, uint uAdd) {
AssertValid();
Debug.Assert(0 != uMul);
for (int i = 0; i < length; i++) {
uint d, uT;
d = MulU(digits[i], uMul, out uT);
if (0 != uAdd) {
uT += AddU(ref d, uAdd);
}
digits[i] = d;
uAdd = uT;
}
if (0 != uAdd) {
Ensure(length + 1);
digits[length++] = uAdd;
}
AssertValid();
}