ГОСТ Р 53556.11—2014
Продолжение
Псевдокод
Комментарии
lambda определяется в подпункте 6.5.6.6
Обновление матрицы Р(нижний греугольник)
Р = Р-/с *v
Р =Р ‘ (1+1/?ambc/a)
Р имеетформат .60
Обновление матрицы Р(верхний треугольник)
Обновление входноговектора прогнозатора RLS
/N716 lambda:
for (i=0; КМ:i**)
for (j=0:j<=i;;’++)
temp = ((/N764)kfi] *vfi])»(U-vs):
PpNi]-= temp:
if (P[’I[jJ>=0x4000000000000000
IIРш<=-0х4000000000000000)
refnU_P(P): break:
temp =Pfi]fi]/ lambda:
ppm+= <e/np.
/cw(r=1;i<M:t**)
(or(j=0:j<;j++)
РШР]=PPIDJ-
for (KM-1; />0. H
buffi] =buffi-1]:
buf[Q]=x»4;
bufимеетформат .0
//N732 V, /Л/Г16 vs/=
MulMtxVec(INT64 "P /N732 ‘buf)
Умножение матрицы Р на buf
Возвращение результата в v
Р имеетформат .60. bufимеетформат .0
psявляется масштабным коэффициентом
INlbA temp=0:
/N716ps.
7or(/=0;/<AI;/++)
for(/=0;;’<=/;j++)
temp |=(PfiJfipO ?Pfilfi]: -PfiM):
ps =63 - fast_bitcount(lemp);
Получение MSB в матрице Р
Подсчетсдвига, необходимого,чтобы максимизировать Р
INTO* ‘u:
for (i=0: i<M:i**) ufi]=0;
for (j=0; }<M;j++) ufi] +=
(/N764; («Pp]{j]«ps)+fiNTb4)
0x80000000)»32;
*buffi}:
и=Р ‘ buf
и имеет формат .(28+ps)
ns- это масштабный коэффициент
Получение MSB
Определение позиции бита MSB
Масштабирование v
/N716 ns;
temp =0;
for (/=0; /<M;/++J
temp |= (ufi]>0 ?ufi]: -ufi]):
ns =fast_bitcount(temp);
if(ns>28)
ns-=28;
for(/=0; KM; i++)
vfi]= (/N732/ (ufi]»ns):
vs =ns - ps;
elseforfi = 0; i<M:/♦+;
vfi]= (/N732; ufi]:
vs= -ps;
vимеет формат.(28-vs)
33