?? 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(#ifdef FIXEDDTYPE *data, DTYPE *bb,int pad){#elsevoid *p,DTYPE *data, DTYPE *bb){ struct rs *rs = (struct rs *)p;#endif int i, j; DTYPE feedback;#ifdef FIXED /* Check pad parameter for validity */ if(pad < 0 || pad >= NN) return;#endif memset(bb,0,NROOTS*sizeof(DTYPE)); for(i=0;i<NN-NROOTS-PAD;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; }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -