private static void MpMul1
(
uint[] piulD, // InOut| D
ref int ciulD, // InOut| # of digits in D
uint iulX // In | X
)
{
Debug.Assert(iulX > s_uiZero);
uint ulCarry = 0;
int iData;
ulong dwlAccum;
for (iData = 0; iData < ciulD; iData++)
{
ulong ulTemp = piulD[iData];
dwlAccum = ulCarry + ulTemp * iulX;
ulCarry = HI(dwlAccum);
piulD[iData] = LO(dwlAccum);
}
// If overflow occurs, increase precision
if (ulCarry != 0)
{
piulD[iData] = ulCarry;
ciulD++;
}
}