亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ribm.cpp

?? c編的RS編碼的程 c編的RS編碼的程
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*             rs.c        */
/* This program is an encoder/decoder for Reed-Solomon codes. Encoding is in
   systematic form, decoding via the Berlekamp iterative algorithm.
   In the present form , the constants mm, nn, tt, and kk=nn-2tt must be
   specified  (the double letters are used simply to avoid clashes with
   other n,k,t used in other programs into which this was incorporated!)
   Also, the irreducible polynomial used to generate GF(2**mm) must also be
   entered -- these can be found in Lin and Costello, and also Clark and Cain.

   The representation of the elements of GF(2**m) is either in index form,
   where the number is the power of the primitive element alpha, which is
   convenient for multiplication (add the powers modulo 2**m-1) or in
   polynomial form, where the bits represent the coefficients of the
   polynomial representation of the number, which is the most convenient form
   for addition.  The two forms are swapped between via lookup tables.
   This leads to fairly messy looking expressions, but unfortunately, there
   is no easy alternative when working with Galois arithmetic.

   The code is not written in the most elegant way, but to the best
   of my knowledge, (no absolute guarantees!), it works.
   However, when including it into a simulation program, you may want to do
   some conversion of global variables (used here because I am lazy!) to
   local variables where appropriate, and passing parameters (eg array
   addresses) to the functions  may be a sensible move to reduce the number
   of global variables and thus decrease the chance of a bug being introduced.

   This program does not handle erasures at present, but should not be hard
   to adapt to do this, as it is just an adjustment to the Berlekamp-Massey
   algorithm. It also does not attempt to decode past the BCH bound -- see
   Blahut "Theory and practice of error control codes" for how to do this.

              Simon Rockliff, University of Adelaide   21/9/89

   26/6/91 Slight modifications to remove a compiler dependent bug which hadn't
           previously surfaced. A few extra comments added for clarity.
           Appears to all work fine, ready for posting to net!

                  Notice
                 --------
   This program may be freely modified and/or given to whoever wants it.
   A condition of such distribution is that the author's contribution be
   acknowledged by his name being left in the comments heading the program,
   however no responsibility is accepted for any financial or other loss which
   may result from some unforseen errors or malfunctioning of the program
   during use.
                                 Simon Rockliff, 26th June 1991
*/

#include <math.h>
#include <stdio.h>
#include <sys/timeb.h>
#define mm  8           /* RS code over GF(2**4) - change to suit */
#define nn  255        /* nn=2**mm -1   length of codeword */
#define tt  8           /* number of errors that can be corrected */
#define kk  239          /* kk = nn-2*tt  */
#define no_p 16   /* no_p = 2*tt */
#define no_t 24   /* no_t = 3*tt */

//file://int pp [mm+1] = { 1, 1, 0, 0,1} ; /* specify irreducible polynomial coeffts */
int pp[mm+1] = { 1, 0, 1, 1, 1, 0, 0, 0, 1};
int alpha_to [nn+1], index_of [nn+1], gg [nn-kk+1] ;
int recd [nn], data [kk], bb [nn-kk] ;


void generate_gf()
/* generate GF(2**mm) from the irreducible polynomial p(X) in pp[0]..pp[mm]
   lookup tables:  index->polynomial form   alpha_to[] contains j=alpha**i;
                   polynomial form -> index form  index_of[j=alpha**i] = i
   alpha=2 is the primitive element of GF(2**mm)
*/
 {
   register int i, mask ;

  mask = 1 ;
  alpha_to[mm] = 0 ;
  for (i=0; i<mm; i++)
   { alpha_to[i] = mask ;
     index_of[alpha_to[i]] = i ;
     if (pp[i]!=0)
       alpha_to[mm] ^= mask ;
     mask <<= 1 ;
   }
  index_of[alpha_to[mm]] = mm ;
  mask >>= 1 ;
  for (i=mm+1; i<nn; i++)
   { if (alpha_to[i-1] >= mask)
        alpha_to[i] = alpha_to[mm] ^ ((alpha_to[i-1]^mask)<<1) ;
     else alpha_to[i] = alpha_to[i-1]<<1 ;
     index_of[alpha_to[i]] = i ;
   }
  index_of[0] = -1 ;
 }


void gen_poly()
/* Obtain the generator polynomial of the tt-error correcting, length
  nn=(2**mm -1) Reed Solomon code  from the product of (X+alpha**i), i=1..2*tt
*/
 {
   register int i,j ;

   gg[0] = 2 ;    /* primitive element alpha = 2  for GF(2**mm)  */
   gg[1] = 1 ;    /* g(x) = (X+alpha) initially */
   for (i=2; i<=nn-kk; i++)
    { gg[i] = 1 ;
      for (j=i-1; j>0; j--)
        if (gg[j] != 0)  gg[j] = gg[j-1]^ alpha_to[(index_of[gg[j]]+i)%nn] ;
        else gg[j] = gg[j-1] ;
      gg[0] = alpha_to[(index_of[gg[0]]+i)%nn] ;     /* gg[0] can never be zero */
    }
   /* convert gg[] to index form for quicker encoding */
   for (i=0; i<=nn-kk; i++)  gg[i] = index_of[gg[i]] ;
 }


void encode_rs()
/* take the string of symbols in data[i], i=0..(k-1) and encode systematically
   to produce 2*tt parity symbols in bb[0]..bb[2*tt-1]
   data[] is input and bb[] is output in polynomial form.
   Encoding is done by using a feedback shift register with appropriate
   connections specified by the elements of gg[], which was generated above.
   Codeword is   c(X) = data(X)*X**(nn-kk)+ b(X)          */
 {
   register int i,j ;
   int feedback ;

   for (i=0; i<nn-kk; i++)   bb[i] = 0 ;
   for (i=kk-1; i>=0; i--)
    {  feedback = index_of[data[i]^bb[nn-kk-1]] ;
       if (feedback != -1)
        { for (j=nn-kk-1; j>0; j--)
            if (gg[j] != -1)
              bb[j] = bb[j-1]^alpha_to[(gg[j]+feedback)%nn] ;
            else
              bb[j] = bb[j-1] ;
          bb[0] = alpha_to[(gg[0]+feedback)%nn] ;
        }
       else
        { for (j=nn-kk-1; j>0; j--)
            bb[j] = bb[j-1] ;
          bb[0] = 0 ;
        } ;
    } ;
 } ;

 

void decode_rs()
/* assume we have received bits grouped into mm-bit symbols in recd[i],
   i=0..(nn-1),  and recd[i] is index form (ie as powers of alpha).
   We first compute the 2*tt syndromes by substituting alpha**i into rec(X) and
   evaluating, storing the syndromes in s[i], i=1..2tt (leave s[0] zero) .
   Then we use the Berlekamp iteration to find the error location polynomial
   elp[i].   If the degree of the elp is >tt, we cannot correct all the errors
   and hence just put out the information symbols uncorrected. If the degree of
   elp is <=tt, we substitute alpha**i , i=1..n into the elp to get the roots,
   hence the inverse roots, the error location numbers. If the number of errors
   located does not equal the degree of the elp, we have more than tt errors
   and cannot correct them.  Otherwise, we then solve for the error value at
   the error location and correct the error.  The procedure is that found in
   Lin and Costello. For the cases where the number of errors is known to be too
   large to correct, the information symbols as received are output (the
   advantage of systematic encoding is that hopefully some of the information
   symbols will be okay and that if we are in luck, the errors are in the
   parity part of the transmitted codeword).  Of course, these insoluble cases
   can be returned as error flags to the calling routine if desired.   */
 {
   register int i,j,u,q ;
   int elp[nn-kk+2][nn-kk], d[nn-kk+2], l[nn-kk+2], u_lu[nn-kk+2], s[nn-kk+1] ;
   int count=0, syn_error=0, root[tt], loc[tt], z[tt+1], err[nn], reg[tt+1] ;

   int da[no_p+1][no_t+1];
   int st[no_p+1][no_t+1];
   int ga[no_p+1];
   int kr[no_p+1];
   int dg_mul;
   int ds_mul;
   int omiga;
   int sita;
   int yi;

/* first form the syndromes */
   for (i=1; i<=nn-kk; i++)
    { s[i] = 0 ;
      for (j=0; j<nn; j++)
        if (recd[j]!=-1)
          s[i] ^= alpha_to[(recd[j]+i*j)%nn] ;      /* recd[j] in index form */
/* convert syndrome from polynomial form to index form  */
      if (s[i]!=0)  syn_error=1 ;        /* set flag if non-zero syndrome => error */
      //file://s[i] = index_of[s[i]] ;
    } 

   //file://Ribm algorithm
   //file://Begin
/*   int da[3*tt+1][2*tt+1];
   int st[3*tt+1][2*tt+1];
   int ga[2*tt+1];
   int kr[2*tt+1];
   int dg_mul;
   int ds_mul;*/

//   file://Calculate error locator and error evaluator polynomial
   for(i=0; i<no_p; i++){
    da[0][i] = s[i+1];
    st[0][i] = s[i+1];
//    file://da[0][i] = 1;
//   file://st[0][i] = 1;
   }

   for(i=no_p; i<no_t; i++){
    da[0][i] = 0;
    st[0][i] = 0;
   }

   da[0][no_t] = 1;
   st[0][no_t] = 1;

   kr[0] = 0;
   ga[0] = 1;

   for(i=0; i<no_p; i++)
   {
	 for(j=0; j<no_t; j++)
	 {
		 if(ga[i]!=0 && da[i][j+1]!=0)
			dg_mul = alpha_to[(index_of[ga[i]] + index_of[da[i][j+1]])%nn];
		 else
            dg_mul = 0;

     if(da[i][0]!=0 && st[i][j]!=0)
	   ds_mul = alpha_to[(index_of[da[i][0]] + index_of[st[i][j]])%nn];
     else
	   ds_mul = 0;

     da[i+1][j] = dg_mul ^ ds_mul;
	 }

    if(da[i][0]!=0 && st[i][no_t]!=0)
     da[i+1][no_t] = alpha_to[(index_of[da[i][0]] + index_of[st[i][no_t]])%nn];
    else
     da[i+1][no_t] = 0;

    if(da[i][0]!=0 && kr[i]>=0)
	{
		 ga[i+1] = da[i][0];
		 kr[i+1] = - (kr[i] + 1);
		 //file://kr[i+1] = - (kr[i] - 1);

		 for(j=0; j<no_t; j++)
			st[i+1][j] = da[i][j+1];

		 st[i+1][no_t] = 0;
    }

    else
	{
		 ga[i+1] = ga[i];
		kr[i+1] = kr[i] + 1;

			for(j=0; j<=no_t; j++)
               st[i+1][j] = st[i][j];
    }
   }

//   file://solve the error locator polynomial
   for (i=0; i<=tt; i++){
    reg[i] = index_of[da[no_p][i+tt]];
    if(i<tt)
     z[i] = index_of[da[no_p][i]];
   }

   count = 0 ;
   for (i=1; i<=nn; i++)
   {
    q = 0 ;
    for (j=0; j<=tt; j++)
	{
     if (reg[j]!=-1)
	 {
      reg[j] = (reg[j]+j)%nn ;
               q ^= alpha_to[reg[j]] ;
     }
    }

       if (!q){
     root[count] = i;
           loc[count] = nn-i ;
           count++ ;
    }
   }

 /*  file://For reference
   for(i=1; i<=nn; i++){
    omiga = 0;
    for(j=0; j<tt; j++){
     if(z[j]!=-1)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品欧美福利在线观看| 亚洲乱码国产乱码精品精的特点| 欧美精品国产精品| 欧美少妇bbb| 欧美日韩久久一区二区| 欧美在线观看你懂的| 欧美色涩在线第一页| 欧美日韩亚洲另类| 9191精品国产综合久久久久久| 欧美麻豆精品久久久久久| 欧美日韩免费观看一区三区| 欧美丰满高潮xxxx喷水动漫| 欧美三区免费完整视频在线观看| 欧美日韩中文一区| 91精品国产麻豆国产自产在线| 欧美一级免费观看| 26uuu国产一区二区三区 | 亚洲国产精品久久艾草纯爱| 亚洲3atv精品一区二区三区| 日本不卡一区二区三区| 看电视剧不卡顿的网站| 国内精品久久久久影院色| 国产河南妇女毛片精品久久久| 成人久久久精品乱码一区二区三区| 99视频在线精品| 欧美在线一二三四区| 欧美日韩精品免费观看视频| 精品久久久久一区二区国产| 久久精品一区八戒影视| 亚洲免费在线视频| 午夜激情一区二区三区| 狠狠久久亚洲欧美| 91在线观看下载| 欧美理论电影在线| 久久精品视频在线免费观看| 亚洲桃色在线一区| 日韩成人免费看| 国产成人精品影院| 欧美日韩一区在线| 欧美精品一区男女天堂| 亚洲人成在线观看一区二区| 视频在线在亚洲| 国产成人精品一区二| 欧美日韩一区二区三区四区| 久久久精品国产免费观看同学| 亚洲精品综合在线| 久草中文综合在线| 在线视频欧美区| 久久久久久亚洲综合影院红桃 | 亚洲国产成人va在线观看天堂| 精品一区二区久久| 色婷婷久久综合| www成人在线观看| 亚洲成人久久影院| 成人黄色一级视频| 欧美一级黄色大片| 一区二区三区在线播| 韩国成人在线视频| 精品视频在线看| 国产女同互慰高潮91漫画| 天天做天天摸天天爽国产一区| 国产福利一区二区三区视频在线 | 国产精品乱码久久久久久| 青青草视频一区| 色婷婷精品大在线视频| 国产欧美精品一区二区色综合| 午夜久久电影网| 91在线精品秘密一区二区| 精品国产成人在线影院| 日日嗨av一区二区三区四区| 99精品视频在线观看免费| 2023国产精品视频| 日韩va亚洲va欧美va久久| 99精品欧美一区二区三区小说 | 日日摸夜夜添夜夜添精品视频| 99精品一区二区| 中文字幕免费一区| 韩日av一区二区| 日韩精品专区在线影院观看| 亚洲一区在线电影| 99精品热视频| 国产精品不卡在线观看| 国产在线日韩欧美| 日韩欧美123| 青青草精品视频| 7878成人国产在线观看| 一个色妞综合视频在线观看| fc2成人免费人成在线观看播放| 久久久欧美精品sm网站| 激情久久久久久久久久久久久久久久| 欧美日韩精品一区二区三区| 一区二区三区精品在线| 日本韩国精品在线| 悠悠色在线精品| 色视频成人在线观看免| 最新成人av在线| 91原创在线视频| 亚洲视频一二三区| 91浏览器入口在线观看| 最新不卡av在线| 色老头久久综合| 亚洲激情图片小说视频| 色哟哟日韩精品| 亚洲一区在线观看视频| 欧美日韩一区二区三区不卡| 亚洲高清三级视频| 欧美精三区欧美精三区| 同产精品九九九| 欧美一级夜夜爽| 精品在线免费观看| 久久久久国色av免费看影院| 国产激情偷乱视频一区二区三区| 久久久美女毛片| 国产91高潮流白浆在线麻豆| 中文字幕免费不卡在线| 99久久精品99国产精品| 亚洲精品网站在线观看| 欧美三级电影网| 青青草91视频| 国产视频在线观看一区二区三区| 夫妻av一区二区| 亚洲三级在线免费观看| 欧美色视频在线观看| 伦理电影国产精品| 欧美国产精品劲爆| 91麻豆免费看| 天天免费综合色| 欧美精品一区二区三区在线播放| 成人午夜av影视| 亚洲国产日韩av| www精品美女久久久tv| www.欧美.com| 天堂久久久久va久久久久| 精品成人一区二区三区| 99久久er热在这里只有精品66| 亚洲精品少妇30p| 欧美一级欧美三级| 丁香六月久久综合狠狠色| 亚洲一区二区3| 精品美女在线播放| 一本大道av一区二区在线播放| 亚洲成av人**亚洲成av**| 久久久综合九色合综国产精品| 91美女片黄在线观看| 日本不卡的三区四区五区| 国产精品丝袜黑色高跟| 欧美午夜不卡视频| 国精产品一区一区三区mba视频| 中文字幕欧美一区| 91精品国产一区二区三区| 高清免费成人av| 亚洲成a人片综合在线| 国产日韩一级二级三级| 欧美日韩在线三级| 高清不卡在线观看| 日韩精品一区第一页| 日本一区免费视频| 555夜色666亚洲国产免| 国产91丝袜在线播放| 日韩高清不卡一区| 亚洲日穴在线视频| 久久久久久久久蜜桃| 欧美日韩一级片在线观看| 成人影视亚洲图片在线| 亚洲小少妇裸体bbw| 中文文精品字幕一区二区| 91.com在线观看| 91免费版在线看| 国产成人精品亚洲午夜麻豆| 日本不卡视频在线观看| 亚洲天堂av一区| 国产日韩欧美不卡在线| 欧美一区二区三区四区在线观看 | 91丨国产丨九色丨pron| 麻豆精品久久精品色综合| 亚洲激情校园春色| 国产精品久久久久久久久晋中| 日韩免费视频一区| 欧美性猛交xxxx乱大交退制版| 成人午夜视频网站| 国产一区欧美日韩| 日韩精品一级中文字幕精品视频免费观看 | 在线不卡中文字幕| 色播五月激情综合网| 丰满白嫩尤物一区二区| 精品一区二区三区视频在线观看| 亚洲国产成人av网| 亚洲一区二区三区在线| 一区在线中文字幕| 国产精品丝袜91| 欧美国产精品一区二区| 国产亚洲精品超碰| 久久美女艺术照精彩视频福利播放| 日韩丝袜情趣美女图片| 在线不卡的av| 5858s免费视频成人| 777亚洲妇女| 日韩欧美在线网站| 日韩丝袜美女视频| 精品日韩99亚洲|