ГОСТ Р ИСО/МЭК 24778 — 2010
Г allocate, then generate the log & antilog arrays: ‘Z3*
log = malloc(sizeof(int) * gf);
alog = malloc(sizeof(int)’ gf):
log[0] = 1—gf: alog[0) = 1;
for (i = 1; i < gf; i++) {
alog[i] = alog[i-1] * 2;
if (alog[iJ >= gf) alogffl л= pp;
log[alog[i]] = i;
}
Г allocate, then generate the generator polynomial coefficients: ’lA>
c = malloc(sizeof(int) * (nc)+1);
for (i=1; i<=rtc: i++) c[i] = 0: c(0) = 1:
for (i=1; i<=nc; i++){
c(i] = c0-1];
for (j=i-i;j>=1;j--){
C[j]
= CO-1] лprod(c(j].alog(i].log.alog.gf);
}
c(0] = prod(c{0}.alog[i].log.alog,gf):
}
Г clear, then generate «пс» check4\*ords in the array wdQ: 75>
for (i=nd; i<={nd+nc); i++) wd(i) = 0;
for (i=0; i<nd; i++) {
k = wd[nd]л wd[i):
for (j=0; j<nc; j++){
wd[nd+jj = wd[nd+j+1]л prod(k.c{nc-i-1l.log.alog.gf):
}
}
free(c):
free(alog):
free(log);
Рисунок В. 1, лист 2
В.З Метод исправления ошибок
Если общее число стираний е меньше или равно способности исправления ошибок, то активизируется
схема восстановления данных. Стирания заменяются нулями. Позиция q-ro неизвестного кодового слова равна к,
для q = 1,2
.....
е.
Создается многочлен знаков символа С(х) = Crv)xrv1 + Сп-гХ02 + — + С(х1 + Со. где л коэффициентов
определяются по считанным сканером значениям знаков символа (Сп., — первый знак символа, а п — общее
число знаков символа). Далее вычисляются значения i синдромов от So до S„b для чего вычисляется С(х) при х =
2К для к от 1 до i (i — число знаков исправления ошибок в символе). Схема генерирования значений
синдромов приведена на рисунке В.2.
Рисунок В.2 — Схема генерирования значения синдромов
3J Выделение памяти и построение массивов логарифмов и антилогарифмов.
4> Выделение памяти и построение коэффициентов порождающего многочлена.
5> Очистка и построение “пс" контрольных слов в массиве wd/J.
27