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

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

?? pdf417_enc.c

?? PDF417編碼的算法的源程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
 * If the number of channel errors is not greater than "t_after_eras" the * transmitted codeword will be recovered. Details of algorithm can be found * in R. Blahut's "Theory ... of Error-Correcting Codes". * Warning: the eras_pos[] array must not contain duplicate entries; decoder failure * will result. The decoder *could* check for this condition, but it would involve * extra time on every decoding operation. */interas_dec_rs (int data[NN], int eras_pos[NN - KK], int no_eras, int data_len,             int synd_len){  int deg_lambda, el, deg_omega;  int i, j, r, k;  int u, q, tmp, num1, num2, den, discr_r;  int lambda[2048 + 1], s[2048 + 1]; /* Err+Eras Locator poly                                        * and syndrome poly */  int b[2048 + 1], t[2048 + 1], omega[2048 + 1];  int root[2048], reg[2048 + 1], loc[2048];  int syn_error, count;  int ci;  int mismatch;  int error_val;  int fix_loc;  int debug;  debug = 0;  //if(!RS_init)  init_rs ();#define DEBUG 2#if DEBUG >= 1 && MM != 8  /* Check for illegal input values */  for (i = 0; i < data_len; i++)    if (data[i] > GPRIME)      return -1;#endif  //  if ( global == 1)  // {  //    debug = 1;  //  }  /* form the syndromes; i.e., evaluate data(x) at roots of g(x)   * namely @**(1+i)*PRIM, i = 0, ... ,(NN-KK-1)   */  for (i = 1; i <= synd_len; i++)    {      s[i] = data[data_len];    }  for (j = 1; j <= data_len; j++)    {      if (data[data_len - j] == 0)        continue;      tmp = Index_of[data[data_len - j]];      /*  s[i] ^= Alpha_to[modbase(tmp + (1+i-1)*j)]; */      for (i = 1; i <= synd_len; i++)        {          s[i] = (s[i] + Alpha_to[modbase (tmp + (i) * j)]) % GPRIME;        }    }  mismatch = FALSE;  for (j = 0; j < synd_len; j += 1)    {      if (s[j + 1] != synd_array[j])        {          printf ("Syndrome mismatch j = %d s[] = %d synd[] = %d \n",                  j, s[j + 1], synd_array[j]);          mismatch = TRUE;        }    }  if (mismatch == FALSE)    {      if (debug)        {          printf ("Correct syndromes \n");        }    }  /* Convert syndromes to index form, checking for nonzero condition */  syn_error = 0;  for (i = 1; i <= synd_len; i++)    {      syn_error |= s[i];      if (debug)        {          printf ("Raw syndrome = %d i = %d \n", s[i], i);        }      s[i] = Index_of[s[i]];    }  if (!syn_error)    {      /* if syndrome is zero, data[] is a codeword and there are no       * errors to correct. So return data[] unmodified       */      count = 0;      printf ("No errors \n");      goto finish;    }  // CLEAR(&lambda[1],synd_len);  for (ci = synd_len - 1; ci >= 0; ci--)    lambda[ci + 1] = 0;  lambda[0] = 1;  if (no_eras > 0)    {      /* Init lambda to be the erasure locator polynomial */      lambda[1] = Alpha_to[modbase (PRIM * eras_pos[0])];      for (i = 1; i < no_eras; i++)        {          u = modbase (PRIM * eras_pos[i]);          for (j = i + 1; j > 0; j--)            {              tmp = Index_of[lambda[j - 1]];              if (tmp != A0)                lambda[j] =                  (lambda[j] + Alpha_to[modbase (u + tmp)]) % GPRIME;            }        }#if DEBUG >= 1      /* Test code that verifies the erasure locator polynomial just constructed         Needed only for decoder debugging. */      /* find roots of the erasure location polynomial */      for (i = 1; i <= no_eras; i++)        reg[i] = Index_of[lambda[i]];      count = 0;                // usg NN = GPRIME-1?      for (i = 1, k = data_len - Ldec; i <= data_len + synd_len;           i++, k = modbase (data_len + k - Ldec))        {          q = 1;          for (j = 1; j <= no_eras; j++)            if (reg[j] != A0)              {                reg[j] = modbase (reg[j] + j);                q = (q + Alpha_to[reg[j]]) % GPRIME;              }          if (q != 0)            continue;          /* store root and error location number indices */          root[count] = i;          loc[count] = k;          count++;        }      if (count != no_eras)        {          // printf("\n lambda(x) is WRONG\n");          // count = -1;          //  goto finish;        }#if DEBUG >= 2      printf        ("\n Erasure positions as determined by roots of Eras Loc Poly:\n");      for (i = 0; i < count; i++)        printf ("loc  = %d ", loc[i]);      printf ("\n");#endif#endif    }  for (i = 0; i < synd_len + 1; i++)    b[i] = Index_of[lambda[i]];  /*   * Begin Berlekamp-Massey algorithm to determine error+erasure   * locator polynomial   */  r = no_eras;  el = no_eras;  while (++r <= synd_len)    {                           /* r is the step number */      /* Compute discrepancy at the r-th step in poly-form */      discr_r = 0;      for (i = 0; i < r; i++)        {          if ((lambda[i] != 0) && (s[r - i] != A0))            {              if (debug)                {                  printf ("do add Index_of[lambda[]] = %d \n",                          Index_of[lambda[i]]);                }              if (i % 2 == 1)                {                  discr_r = (discr_r +                             Alpha_to[modbase                                      ((Index_of[lambda[i]] +                                        s[r - i]))]) % GPRIME;                }              else                {                  discr_r = (discr_r + GPRIME -                             Alpha_to[modbase                                      ((Index_of[lambda[i]] +                                        s[r - i]))]) % GPRIME;                }              if (debug)                {                  printf                    ("In loop - discr = %d i = %d r = %d lambda[i] = %d s[r-i] = %d \n",                     discr_r, i, r, lambda[i], s[r - i]);                }            }        }      if (debug)        {          printf ("r = %d Discrepency = %d \n", r, discr_r);        }      discr_r = Index_of[discr_r]; /* Index form */      if (discr_r == A0)        {          /* 2 lines below: B(x) <-- x*B(x) */          //  COPYDOWN(&b[1],b,synd_len);          //          if (debug)            {              printf ("Discrepency = A0 \n");            }          for (ci = synd_len - 1; ci >= 0; ci--)            {              b[ci + 1] = b[ci];            }          b[0] = A0;        }      else        {          /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */          /*  the T(x) will become the next lambda */          t[0] = lambda[0];          for (i = 0; i < synd_len; i++)            {              if (debug)                {                  printf ("i = %d b[i] = %d \n", i, b[i]);                }              if (b[i] != A0)                {                  //  t[i+1] =  (lambda[i+1] + GPRIME -                  //              Alpha_to[modbase(discr_r + GPRIME - 1 -  b[i])]) % GPRIME;                  t[i + 1] = (lambda[i + 1] +                              Alpha_to[modbase (discr_r + b[i])]) % GPRIME;                  if (debug)                    {                      printf                        ("New t[i+1] = %d lambda[i+1] = %d b[i] = %d i = %d discr_r = %d\n",                         t[i + 1], lambda[i + 1], b[i], i, discr_r);                    }                }              else                {                  t[i + 1] = lambda[i + 1];                }              if (debug)                {                  printf ("i = %d t[i+1] = %d lambda[i+1] = %d \n", i,                          t[i + 1], lambda[i + 1]);                }            }          el = 0;          if (2 * el <= r + no_eras - 1)            {              if (debug)                {                  printf ("Reached the el stuff, inv  el = %d r = %d \n", el,                          r);                }              el = r + no_eras - el;              /*               * 2 lines below: B(x) <-- inv(discr_r) *               * lambda(x)               */              for (i = 0; i <= synd_len; i++)                {                  if (lambda[i] == 0)                    {                      b[i] = A0;                    }                  else                    {                      b[i] =                        modbase (Index_of[lambda[i]] - discr_r + GPRIME - 1);                      if (debug)                        {                          printf ("Inverting le  b[i] = %d i = %d \n", b[i],                                  i);                        }                    }                }            }          else            {              if (debug)                {                  printf ("Reached the el stuff, x mul,   el = %d r = %d \n",                          el, r);                }              /* 2 lines below: B(x) <-- x*B(x) */              //      COPYDOWN(&b[1],b,synd_len);              for (ci = synd_len - 1; ci >= 0; ci--)                {                  b[ci + 1] = b[ci];                }              b[0] = A0;            }          //      COPY(lambda,t,synd_len+1);          for (ci = synd_len + 1 - 1; ci >= 0; ci--)            {              lambda[ci] = t[ci];              if (debug)                {                  printf ("ci = %d Lambda = %d \n", ci, t[ci]);                }            }        }    }  /* Convert lambda to index form and compute deg(lambda(x)) */  deg_lambda = 0;  for (i = 0; i < synd_len + 1; i++)    {      lambda[i] = Index_of[lambda[i]];      if (lambda[i] != A0)        {          deg_lambda = i;        }      if (debug)        {          printf ("Lambda in index form = %d \n", lambda[i]);        }    }  if (debug)    {      printf ("Determination of deg_lambda = %d \n", deg_lambda);    }  /*   * Find roots of the error+erasure locator polynomial by Chien   * Search   */  for (ci = synd_len - 1; ci >= 0; ci--)    reg[ci + 1] = lambda[ci + 1];  count = 0;                    /* Number of roots of lambda(x) */  for (i = 1, k = data_len - 1; i <= GPRIME; i++)    {      q = 1;      if (debug)        {          printf (" Reg[j] = %d q = %d i = %d \n", reg[j], q, i);        }      for (j = deg_lambda; j > 0; j--)        {          if (reg[j] != A0)            {              if (debug)                {                  printf ("loop Reg[j] pre = %d \n", reg[j]);                }              reg[j] = modbase (reg[j] + j);              //      q = modbase( q +  Alpha_to[reg[j]]);              if (deg_lambda != 1)                {                  if (j % 2 == 0)                    {                      q = (q + Alpha_to[reg[j]]) % GPRIME;                    }                  else                    {                      q = (q + GPRIME - Alpha_to[reg[j]]) % GPRIME;                    }                }              else                {                  q = Alpha_to[reg[j]] % GPRIME;                  if (q == 1)                    {                      q = q - 1;                    }                }              if (debug)                {                  printf ("loop Reg[j] = %d q = %d i = %d j = %d %d = k\n",                          reg[j], q, i, j, k);                }            }        }      if (q == 0)        {          /* store root (index-form) and error location number */          root[count] = i;          loc[count] = GPRIME - 1 - i;          if (count < synd_len)            {              count += 1;            }          else            {              printf ("Error : Error count too big = %d \n", count);            }          if (debug)            {              printf ("root  = %d loc = %d \n", i, k);            }        }      if (k == 0)        {          k = data_len - 1;        }      else        {          k -= 1;        }      /* If we've already found max possible roots,       * abort the search to save time       */      if (count == deg_lambda)        {          break;        }    }  if (deg_lambda != count)    {      /*       * deg(lambda) unequal to number of roots => uncorrectable       * error detected       */      printf ("Uncorrectable error: root count = %d deg lambda = %d \n",              count, deg_lambda);      count = -1;      goto finish;    }  /*   * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo   * x**(synd_len)). in index form. Also find deg(omega).   */  deg_omega = 0;  for (i = 0; i < synd_len; i++)    {      tmp = 0;      j = (deg_lambda < i) ? deg_lambda : i;      if (debug)        {          printf ("j = %d deg_lambda = %d lambda[j] = %d \n",                  j, deg_lambda, lambda[j]);        }      for (; j >= 0; j--)        {          if ((s[i + 1 - j] != A0) && (lambda[j] != A0))            {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产日本韩| 91精品国产麻豆国产自产在线 | 欧美一级视频精品观看| 五月开心婷婷久久| 9191久久久久久久久久久| 美女一区二区在线观看| 久久青草国产手机看片福利盒子 | 久久精品男人天堂av| 国产激情视频一区二区在线观看| 久久美女艺术照精彩视频福利播放 | 欧美日韩中文精品| 视频一区二区三区中文字幕| 日韩欧美在线1卡| 国产a区久久久| 一区二区三区四区av| 欧美美女一区二区| 国模套图日韩精品一区二区| 中文字幕一区二区三区在线观看| 欧美性大战久久久久久久蜜臀| 日日摸夜夜添夜夜添国产精品| 久久色中文字幕| 91国偷自产一区二区开放时间 | 久久国产乱子精品免费女| 久久一区二区三区国产精品| 成人不卡免费av| 午夜精品影院在线观看| 国产日韩欧美精品综合| 99国产精品久久久久久久久久久 | xnxx国产精品| 91国在线观看| 国产69精品久久久久毛片| 午夜精品久久久久久久| 国产日韩精品视频一区| 美腿丝袜在线亚洲一区| 久久网这里都是精品| 国产成人精品aa毛片| 91福利国产成人精品照片| 日韩天堂在线观看| 亚洲成人一二三| av中文字幕一区| 精品国产麻豆免费人成网站| 亚洲一级片在线观看| 99久久er热在这里只有精品66| 欧美日韩性生活| 欧美zozo另类异族| 99视频一区二区| 国产在线观看免费一区| 亚洲一区二区四区蜜桃| 久久精品亚洲麻豆av一区二区| 欧美日韩一区二区在线视频| 大尺度一区二区| 免费在线观看日韩欧美| 亚洲高清视频在线| 中文字幕视频一区| 国产香蕉久久精品综合网| 欧美乱熟臀69xxxxxx| 色综合久久久网| 成人一区二区三区在线观看| 麻豆91精品视频| 三级不卡在线观看| 一区二区视频免费在线观看| 久久精品夜夜夜夜久久| 精品播放一区二区| 日韩一区二区免费在线电影| 欧美日韩在线精品一区二区三区激情| 国产成a人亚洲| 精品午夜一区二区三区在线观看| 亚洲成人综合在线| 一区二区三区四区不卡在线| 亚洲视频免费观看| 国产精品电影一区二区| 国产精品天美传媒| 亚洲国产成人在线| 国产欧美久久久精品影院| 337p日本欧洲亚洲大胆色噜噜| 日韩一区二区三区四区| 欧美一区二区三区日韩| 777奇米四色成人影色区| 欧美午夜片在线看| 欧美日韩国产免费| 3751色影院一区二区三区| 欧美午夜一区二区三区| 在线综合亚洲欧美在线视频| 欧美老女人在线| 欧美一级二级在线观看| 欧美一区在线视频| 日韩欧美电影在线| 久久先锋影音av| 亚洲国产精华液网站w | 粉嫩在线一区二区三区视频| 国产麻豆视频精品| 成人深夜视频在线观看| 成人午夜免费视频| 91老司机福利 在线| 欧美日韩亚洲另类| 精品区一区二区| www亚洲一区| 国产精品第13页| 亚洲一区影音先锋| 麻豆精品国产91久久久久久| 久久99精品久久久久久动态图 | 亚洲国产精品一区二区久久| 亚洲午夜精品久久久久久久久| 日本在线不卡一区| 国产主播一区二区三区| av亚洲产国偷v产偷v自拍| 色婷婷亚洲综合| 欧美一卡二卡在线| 国产精品成人一区二区艾草| 亚洲综合丝袜美腿| 黑人巨大精品欧美黑白配亚洲 | 99麻豆久久久国产精品免费| 日本高清不卡视频| 欧美电视剧在线看免费| 日韩一区欧美一区| 秋霞成人午夜伦在线观看| 成人av影视在线观看| 欧美图片一区二区三区| 久久久久久影视| 亚洲自拍另类综合| 国内一区二区在线| 欧美午夜精品久久久| 精品国产91久久久久久久妲己| 综合激情成人伊人| 激情av综合网| 欧美天天综合网| 欧美激情综合五月色丁香| 一二三四区精品视频| 国产精品一区二区三区99| 欧美色综合网站| 国产欧美精品一区二区色综合| 亚洲综合色噜噜狠狠| 国产一区不卡在线| 欧美一区2区视频在线观看| 亚洲乱码国产乱码精品精可以看| 九九精品一区二区| 欧美唯美清纯偷拍| 亚洲欧美激情一区二区| 国产精品伊人色| 日韩欧美在线影院| 午夜国产精品一区| 91理论电影在线观看| 欧美国产精品久久| 久久97超碰色| 91精品蜜臀在线一区尤物| 亚洲黄色免费网站| 成人av免费在线观看| 久久人人爽人人爽| 久久99精品久久久久婷婷| 91麻豆精品91久久久久久清纯| 亚洲精品成人精品456| 国产91丝袜在线播放九色| 欧美大片一区二区| 免费一级片91| 日韩一级大片在线| 日韩高清电影一区| 欧美美女视频在线观看| 亚洲国产一区二区视频| 色香色香欲天天天影视综合网| 亚洲视频一区在线| av亚洲精华国产精华精| 国产精品欧美一级免费| 国产精品资源在线| 久久久久综合网| 床上的激情91.| 国产精品久久久久永久免费观看 | 国产精品黄色在线观看| 国产一区不卡精品| 国产亚洲一区字幕| 国产91精品精华液一区二区三区| 国产日韩欧美制服另类| 国产精品一区二区x88av| 精品国产乱码久久久久久久| 九九视频精品免费| 久久久久久久久久美女| 国产盗摄精品一区二区三区在线| 久久久国产午夜精品| 国产精品一区二区无线| 欧美高清在线一区二区| 99精品黄色片免费大全| 一区二区三区四区不卡在线 | 欧美一区在线视频| 国产自产视频一区二区三区| 久久久五月婷婷| 99精品久久久久久| 午夜精品福利一区二区蜜股av| 日韩欧美高清一区| 国产成人综合网| 最新热久久免费视频| 欧美综合亚洲图片综合区| 美女一区二区在线观看| 久久精品网站免费观看| 99免费精品在线| 三级在线观看一区二区| 精品动漫一区二区三区在线观看| 成人免费毛片片v| 亚洲精品ww久久久久久p站| 欧美日韩国产另类不卡| 91成人在线精品| 久久99精品久久久久久久久久久久 |