на его вход по умолчанию
* распространяемых по лицензии GNU
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-*/
decode_rs()
{
int i, j, u, q;
int s[n-k+1]; // полином синдрома ошибки
int elp[n – k + 2][n - k]; // полином локатора ошибки лямда
int d[n-k+2];
int l[n-k+2];
int u_lu[n-k+2],
int count=0, syn_error=0, root[t], loc[t], z[t+1], err[n], reg[t+1];
// переводим полученное кодовое слово в индексную форму
// для упрощения вычислений
for (i = 0; i < n; i++) recd[i] = index_of[recd[i]];
// вычисляем синдром
//---------------------------------------------------------------------------
for (i = 1; i <= n - k; i++)
{
s[i] = 0; // инициализация s-регистра (на его в
// на его вход по умолчанию поступает ноль
// выполняем s[i] += recd[j]*ij
// т.е. берем очередной символ декодируемых данных,
// умножаем его на порядковый номер данного символа,
// умноженный на номер очередного оборота и складываем
// полученный результат с содержимым s-регистра
// по факту исчерпания всех декодируемых символ, мы
// мы повторяем весь цикл вычислений опять – по одному
// разу для каждого символа четности
for (j=0; j<n; j++) if (recd[j]!=-1) s[i]^= alpha_to[(recd[j]+i*j)%n];
if (s[i]!=0) syn_error=1; // если синдром не равен нулю, взводим
// флаг ошибки
// преобразуем синдром из полиномиальной формы в индексную
s[i] = index_of[s[i]];
}
// коррекция ошибок
//---------------------------------------------------------------------------
if (syn_error) // если есть ошибки, пытаемся их скорректировать
{
// вычисление полинома локатора ламбдла
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий