📄 c8_3_2.c
字号:
#define RS_2T (16)
#define RS_T (8)
void bk_massey_cn( unsigned char * s, unsigned int * GF_inv, int T,
int * fail_code, int * lam_deg, unsigned char * lambda )
{
unsigned char Told[RS_2T];
unsigned char Tnew[RS_2T];
unsigned char syn_rev[RS_T];
unsigned char delta, q;
int i,j,k,L,case0, case1;
for (i = 0; i <= RS_T; i++)
{
lambda[i] = 0;
syn_rev[i] = 0;
Told[i] = 0;
}
lambda[0] = 1;
L = 0;
Told[1] = 1;
k = 1;
delta = s[0];
syn_rev[1] = s[0];
for (j = 0; j < 2*T; j++)
{
case0 = (k - 2*L) >> 31;
case1 = delta & ~case0;
if (case1) L = k - L;
for (i = RS_T; i > 0; i--) Tnew[i] = Told[i-1];
q = (unsigned char) (0xff & GF_inv[0xff & delta]);
for (i = RS_T; i > 0; i--)
if ( case1) Tnew[i] = GMPY(lambda[i-1],q);
for (i = RS_T; i > 0; i--) lambda[i] ^= GMPY(delta,Told[i]);
for (i = RS_T; i > 0; i--) Told[i] = Tnew[i];
delta = s[k];
for (i = RS_T; i > 0; i--)
delta ^= GMPY(lambda[i], syn_rev[i]);
for (i = RS_T; i > 0; i--) syn_rev[i] = syn_rev[i-1];
syn_rev[1] = s[k];
k++;
}
*lam_deg = L;
*fail_code = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -