📄 encode_rs.c
字号:
/* Reed-Solomon encoder * Copyright 2002, Phil Karn, KA9Q * May be used under the terms of the GNU General Public License (GPL) */#include <string.h>#ifdef FIXED#include "fixed.h"#elif defined(BIGSYM)#include "int.h"#else#include "char.h"#endifvoid ENCODE_RS(#ifndef FIXEDvoid *p,#endifDTYPE *data, DTYPE *bb){#ifndef FIXED struct rs *rs = (struct rs *)p;#endif int i, j; DTYPE feedback; memset(bb,0,NROOTS*sizeof(DTYPE)); for(i=0;i<NN-NROOTS;i++){ feedback = INDEX_OF[data[i] ^ bb[0]]; if(feedback != A0){ /* feedback term is non-zero */#ifdef UNNORMALIZED /* This line is unnecessary when GENPOLY[NROOTS] is unity, as it must * always be for the polynomials constructed by init_rs() */ feedback = MODNN(NN - GENPOLY[NROOTS] + feedback);#endif for(j=1;j<NROOTS;j++) bb[j] ^= ALPHA_TO[MODNN(feedback + GENPOLY[NROOTS-j])]; } /* Shift */ memmove(&bb[0],&bb[1],sizeof(DTYPE)*(NROOTS-1)); if(feedback != A0) bb[NROOTS-1] = ALPHA_TO[MODNN(feedback + GENPOLY[0])]; else bb[NROOTS-1] = 0; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -