stBigNum multiply(stBigNum tNumX, stBigNum tNumY){ stBigNum tResult; clean_number(&tResult); while(!equal_zero(&tNumX)){ if(odd(tNumX.aiBlock[0])){ tResult = add(tResult, tNumY); } shift_r(&tNumX); shift_l(&tNumY); } return (tResult); }
void mod(INT16 *residualm, INT16 *accshift, INT16 beta, INT16 shiftr, INT16 resolution, INT16 *exctation, INT16 *Dresidual, INT16 *residual, INT16 guard, INT16 *dpm, INT32 delay, INT16 subframel, INT16 extra) { INT16 shiftr2; INT16 sfstart, sfend; INT16 Shift; INT16 picktoav; while (*dpm < subframel) { cshiftframe(&sfstart, &sfend, &shiftr2, *dpm, residual, guard, shift_r(*accshift, -8), shiftr, delay, subframel, extra); PickToAverage(&picktoav, residual + sfstart - shr(*accshift, 8), sfend - sfstart); if (picktoav < 16) { shiftr2 = 0; } Shift = *accshift; modifyorig(residualm, accshift, beta, dpm, shiftr2, resolution, Dresidual, residual, sfstart, sfend); } *dpm -= subframel; }