[an error occurred while processing this directive]
|
Насколько я понял, Вы делаете так.
Пусть наш исходный 32битный вектор a[i], i=1,2,...N, в который Вы записали квадраты исходного 16битного вектора x[i] представим в виде:
a[i] = aH[i]*2^16+aL[i].
Тогда Вы вычисляете два значения:
sH = sum{aH}, sL = sum{aL};
После этого Вы делаете примерно так:
s= sH*2^16+sL.
Правильно я Вас понял?
Если так, то в последней операции Вы и получите переполнение в случае "плохого" вектора длиной больше 256, пример которого я Вам приводил.