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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rscodeyanjiu.txt

?? 也是我從網(wǎng)上找到的源碼 供大家分享 希望有所新發(fā)現(xiàn)
?? TXT
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
Reed Solomon Codec C code implement!
//this code is from Internet, not mine. thank for the author
//C code begin
/////////////////////////////////////////////////////////////////////////////
/*
* Reed-Solomon coding and decoding
* This code supports a symbol size from 2 bits to 16 bits,
* implying a block size of 32-bit symbols (6 bits) up to 65535
* 16-bit symbols (1,048,560 bits).
* Note that if symbols larger than 8 bits are used, the type of each
* data array element switches from unsigned char to unsigned int. The
* caller must ensure that elements larger than the symbol range are
* not passed to the encoder or decoder.
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define MM  8  /* RS code over GF(2**MM) - change to suit */
#define KK  239 /* KK = number of information symbols */
//#define MM 4
//#define KK 9
#define NN ((1 << MM) - 1)
#define TT 8
//#define TT 3
#define DEBUG 1
#define PS 1

#if (MM < 8)
typedef unsigned char dtype;
#else
typedef unsigned int dtype;
#endif
#if (KK >= NN)
#error "KK must be less than 2**MM - 1"
#endif
/*primitive polynomials */
#if(MM == 2)
int pp[MM+1] = { 1, 1, 1 };
#elif(MM == 3)
/* 1 + x + x^3 */
int pp[MM+1] = { 1, 1, 0, 1 };
#elif(MM == 4)
/* 1 + x + x^4 */
int pp[MM+1] = { 1, 1, 0, 0, 1 };
#elif(MM == 5)
/* 1 + x^2 + x^5 */
int pp[MM+1] = { 1, 0, 1, 0, 0, 1 };
#elif(MM == 6)
/* 1 + x + x^6 */
int pp[MM+1] = { 1, 1, 0, 0, 0, 0, 1 };
#elif(MM == 7)
/* 1 + x^3 + x^7 */
int pp[MM+1] = { 1, 0, 0, 1, 0, 0, 0, 1 };
#elif(MM == 8)
/* 1+x^2+x^3+x^4+x^8 */
int pp[MM+1] = { 1, 0, 1, 1, 1, 0, 0, 0, 1 };
#elif(MM == 9)
/* 1+x^4+x^9 */
int pp[MM+1] = { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
#elif(MM == 10)
/* 1+x^3+x^10 */
int pp[MM+1] = { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 };
#elif(MM == 11)
/* 1+x^2+x^11 */
int pp[MM+1] = { 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
#elif(MM == 12)
/* 1+x+x^4+x^6+x^12 */
int pp[MM+1] = { 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 };
#elif(MM == 13)
/* 1+x+x^3+x^4+x^13 */
int pp[MM+1] = { 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
#elif(MM == 14)
/* 1+x+x^6+x^10+x^14 */
int pp[MM+1] = { 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
#elif(MM == 15)
/* 1+x+x^15 */
int pp[MM+1] = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
#elif(MM == 16)
/* 1+x+x^3+x^12+x^16 */
int pp[MM+1] = { 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
#else
#error "MM must be in range 2-16"
#endif
int alpha_to[NN+1];
int index_of[NN+1];
int gg[NN-KK+1];
int recd[NN];
int err_flag;
dtype data[KK],bb[NN-KK];
//   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 i,j,u,q ;
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] ;
#ifdef PS
   int syndrome[NN-KK+1];
   int omega[NN-KK+2][NN-KK];
   int zx[TT+1];
#endif
 err_flag=0;
/* 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 */
#ifdef PS
   syndrome[i]=s[i];
#endif
     s[i] = index_of[s[i]] ;
    } ;
   if (syn_error)       /* if errors, try and correct */
    {
/* compute the error location polynomial via the Berlekamp iterative algorithm,
   following the terminology of Lin and Costello :   d[u] is the 'mu'th
   discrepancy, where u='mu'+1 and 'mu' (the Greek leTTer!) is the step number
   ranging from -1 to 2*TT (see L&C),  l[u] is the
   degree of the elp at that step, and u_l[u] is the difference between the
   step number and the degree of the elp.
*/
/* initialise table entries */
    err_flag=1;
      d[0] = 0 ;           /* index form */
      d[1] = s[1] ;        /* index form */
      elp[0][0] = 0 ;      /* index form */
      elp[1][0] = 1 ;      /* polynomial form */
      for (i=1; i<NN-KK; i++)
        { elp[0][i] = -1 ;   /* index form */
          elp[1][i] = 0 ;   /* polynomial form */
        }
      l[0] = 0 ;
      l[1] = 0 ;
      u_lu[0] = -1 ;
      u_lu[1] = 0 ;
      u = 0 ;
      do
      {
        u++ ;
        if (d[u]==-1)
          { l[u+1] = l[u] ;
            for (i=0; i<=l[u]; i++)
             {  elp[u+1][i] = elp[u][i] ;
#ifdef PS
 omega[u][i]=elp[u][i];
#endif
                elp[u][i] = index_of[elp[u][i]] ;
             }
          }
        else
/* search for words with greatest u_lu[q] for which d[q]!=0 */
          { q = u-1 ;
            while ((d[q]==-1) && (q>0)) q-- ;
/* have found first non-zero d[q]  */
            if (q>0)
             { j=q ;
               do
               { j-- ;
                 if ((d[j]!=-1) && (u_lu[q]<u_lu[j]))
                   q = j ;
               }while (j>0) ;
             } ;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲精品中文字幕| 久久久久88色偷偷免费| 免费不卡在线观看| 国产精品无遮挡| 欧美人伦禁忌dvd放荡欲情| 国产a视频精品免费观看| 亚洲丶国产丶欧美一区二区三区| 国产亚洲精品资源在线26u| 欧美亚洲一区二区在线观看| 国产中文字幕精品| 亚洲一区二区三区视频在线播放| 国产情人综合久久777777| 欧美日韩一区小说| 92国产精品观看| 国产激情一区二区三区四区| 日韩电影一二三区| 亚洲在线视频免费观看| 中文字幕精品一区二区三区精品| 欧美一级一区二区| 欧美日韩电影一区| 色婷婷综合久久久| www.99精品| 国产精品一区二区久久精品爱涩 | 国产成人在线视频网址| 亚洲6080在线| 一区二区三区在线免费观看 | 国产精品美女一区二区在线观看| 日韩欧美国产综合在线一区二区三区| 色婷婷av一区二区三区软件 | 日韩欧美123| 欧美日韩国产综合视频在线观看 | 1024成人网| 中文字幕av在线一区二区三区| www激情久久| 日韩欧美国产午夜精品| 91麻豆精品国产91久久久久| 欧美色网站导航| 91视频你懂的| 99久久国产综合精品女不卡| 成人黄色电影在线| 成人高清视频免费观看| 懂色av一区二区三区免费看| 风间由美一区二区三区在线观看 | 国产69精品一区二区亚洲孕妇| 国产麻豆成人传媒免费观看| 精品一区二区久久久| 美女脱光内衣内裤视频久久影院| 天天操天天综合网| 蜜臀精品一区二区三区在线观看| 日欧美一区二区| 麻豆精品在线视频| 精品一区二区免费| 国产成a人无v码亚洲福利| 国产91富婆露脸刺激对白 | 精品视频在线免费看| 欧美中文字幕一区二区三区 | 日本va欧美va欧美va精品| 欧美aaaaa成人免费观看视频| 秋霞国产午夜精品免费视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩美女一区二区三区四区| 精品sm捆绑视频| 日本一区二区久久| 亚洲欧美偷拍卡通变态| 一区二区三区日韩在线观看| 亚洲电影视频在线| 久久99久久精品| 成人aa视频在线观看| 欧洲精品视频在线观看| 日韩一区二区在线看片| 久久色.com| 亚洲精品国产品国语在线app| 偷拍自拍另类欧美| 国产精品99久久久久久有的能看| 99精品视频中文字幕| 欧美日韩精品一区二区三区蜜桃| 精品久久久久久亚洲综合网| 国产精品久久一级| 日韩国产欧美在线播放| 国产精品 欧美精品| 91视频在线看| 日韩欧美一区电影| 国产精品久久久久影院亚瑟| 亚洲福利视频导航| 国产伦精品一区二区三区视频青涩 | 亚洲一区影音先锋| 极品尤物av久久免费看| 色视频欧美一区二区三区| 日韩美女在线视频| 亚洲久草在线视频| 国产在线不卡一区| 欧美色综合天天久久综合精品| 26uuu国产在线精品一区二区| 亚洲狠狠丁香婷婷综合久久久| 久久99日本精品| 欧美亚洲动漫制服丝袜| 国产亚洲精品福利| 日韩激情一二三区| 色综合色狠狠天天综合色| 精品国产精品一区二区夜夜嗨| 亚洲综合清纯丝袜自拍| 国产成人免费9x9x人网站视频| 777午夜精品视频在线播放| 中文字幕一区二区日韩精品绯色| 久久精品久久99精品久久| 欧美亚洲禁片免费| 国产精品毛片高清在线完整版| 麻豆精品一区二区| 欧美午夜精品一区二区三区| 国产精品萝li| 国产精品18久久久久久久久| 69堂精品视频| 一区二区视频在线| 99麻豆久久久国产精品免费优播| 精品国产乱码久久久久久夜甘婷婷 | 91精品欧美综合在线观看最新 | 国产午夜精品一区二区三区嫩草 | av欧美精品.com| 久久久美女艺术照精彩视频福利播放| 日韩专区欧美专区| 欧美亚洲国产一区二区三区| 中文字幕一区二区三中文字幕| 国产尤物一区二区| 日韩视频不卡中文| 午夜视频在线观看一区二区| 91免费国产在线| 亚洲视频一区在线| 国产成人免费在线观看不卡| 欧美一级久久久久久久大片| 亚洲成人自拍一区| 欧美三区在线观看| 亚洲国产一二三| 精品视频一区二区三区免费| 亚洲免费资源在线播放| 色综合婷婷久久| 亚洲免费观看高清完整版在线观看 | 一区二区三区精品在线| av中文字幕不卡| 国产精品久久久久久久裸模| 成人夜色视频网站在线观看| 亚洲国产高清aⅴ视频| 高清久久久久久| 国产精品久久久久影院| 91日韩精品一区| 亚洲一二三级电影| 在线不卡免费欧美| 蜜桃视频免费观看一区| 精品国产一区二区三区久久久蜜月| 久草中文综合在线| 国产欧美日韩在线| av在线免费不卡| 亚洲影视资源网| 9191精品国产综合久久久久久| 卡一卡二国产精品 | 91精品婷婷国产综合久久竹菊| 日韩成人伦理电影在线观看| 欧美成人艳星乳罩| 国产一区二区三区免费播放| 国产精品女主播av| 91久久精品一区二区二区| 丝袜美腿亚洲综合| 欧美va亚洲va| 成人app软件下载大全免费| 一区二区视频在线| 日韩精品一区二区在线| 国产成人免费高清| 一区二区三区色| 日韩午夜激情视频| 国产成人av一区二区三区在线| 亚洲欧美国产三级| 欧美一区二区三区免费视频| 国产精品1区2区| 亚洲综合成人在线视频| 日韩三区在线观看| 成人高清在线视频| 日韩—二三区免费观看av| 久久久91精品国产一区二区三区| 色综合婷婷久久| 精品无人区卡一卡二卡三乱码免费卡 | 欧美日韩一区三区| 极品销魂美女一区二区三区| 亚洲特黄一级片| 69av一区二区三区| 国产成人精品三级麻豆| 亚洲一区二区三区三| 久久久精品天堂| 欧美色国产精品| 国产成人一级电影| 亚洲成人av在线电影| 亚洲国产精品成人久久综合一区| 欧美视频一区二区三区在线观看| 国产一区二区三区最好精华液| 亚洲综合久久av| 中文字幕乱码日本亚洲一区二区| 欧美日韩国产成人在线免费| 成人中文字幕合集| 日本在线不卡视频一二三区| 亚洲欧美一区二区三区久本道91| 精品成人在线观看| 777亚洲妇女|