[an error occurred while processing this directive]
|
1) Зачем Вы повторяете вычисление частных произведений во внутреннем цикле
a0=0;
for(i=0;i<=k;i++)
a0+=(long)H[i]*(long)Y[k1-i];
a0>>=14;
temp[k]=(short)a0;
Не проще ли сделать так
a0=0; Или даже 2) Вместо фрагмента в конце внешнего цикла можно написать эквивалентный ассемблерный код Удивительно, но здесь количество строк ассемблера меньше строк Си-кода! 3) Настало время описать словами, что вы хотите сделать... 4) Вот еще, напоследок. Учтите, что Вы пишете long, а компилятор все равно работает с word, а не с double word.
E-mail:
info@telesys.ru
for(i=0;i
a0+=(long)H[i]*(long)Y[k1-i];
temp[k]=(short)(a0>>14);
}
a0=0;
for(i=0;i
a0+=(long)H[i]*(long)Y[k1-i];
temp[k]=(short)(a0>>14)*(short)(a0>>14);
}
Тогда останется всего два цикла, время выполнения существенно сократится. Кстати, за сколько циклов выполняется Ваш вариант кода?
Насколько вы хотите его сократить? И что за процессор, конкретно?
a0=0;
for(k=0;k
rptz #_IDIM-1
squra *ar4,a
Ответы