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

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

?? make-gen.c

?? ldpc的11個程序 encode decode extract make-gen make-ldpc make-pchk print-gen print-pchk rand-src transm
?? C
字號:
/* MAKE-GEN.C - Make generator matrix from parity-check matrix. *//* Copyright (c) 2000, 2001 by Radford M. Neal  * * Permission is granted for anyone to copy, use, or modify this program  * for purposes of research or education, provided this copyright notice  * is retained, and note is made of any changes that have been made.  * * This program is distributed without any warranty, express or implied. * As this program was written for research purposes only, it has not been * tested to the degree that would be advisable in any important application. * All use of this program is entirely at the user's own risk. */#include <stdio.h>#include <stdlib.h>#include <math.h>#include "alloc.h"#include "intio.h"#include "open.h"#include "mod2sparse.h"#include "mod2dense.h"#include "mod2convert.h"#include "rcode.h"typedef enum { Sparse, Dense, Mixed } make_method;      /* Ways of making it */void make_dense_mixed (FILE *, make_method, char *);     /* Procs to make it */void make_sparse (FILE *, mod2sparse_strategy, int, int);void usage(void);/* MAIN PROGRAM. */int main( int argc,  char **argv){  char *pchk_file, *gen_file, *other_gen_file;  mod2sparse_strategy strategy;  int abandon_when, abandon_number;  make_method method;  char *meth;  char junk;  FILE *f;  /* Look at arguments. */  if (!(pchk_file = argv[1])   || !(gen_file = argv[2])   || !(meth = argv[3]))  { usage();  }    if (strcmp(meth,"sparse")==0)       { method = Sparse;    strategy = Mod2sparse_minprod;    abandon_number = 0;    if (argv[4])    { if (strcmp(argv[4],"first")==0)        strategy = Mod2sparse_first;      else if (strcmp(argv[4],"mincol")==0)  strategy = Mod2sparse_mincol;      else if (strcmp(argv[4],"minprod")==0) strategy = Mod2sparse_minprod;      else       { usage();      }      if (argv[5])      { if (sscanf(argv[5],"%d%c",&abandon_number,&junk)!=1 || abandon_number<=0         || !argv[6]          || sscanf(argv[6],"%d%c",&abandon_when,&junk)!=1 || abandon_when<=0         || argv[7])        { usage();        }      }    }  }  else if (strcmp(meth,"dense")==0)   { method = Dense;    other_gen_file = argv[4];    if (other_gen_file && argv[5])    { usage();    }  }  else if (strcmp(meth,"mixed")==0)   { method = Mixed;    other_gen_file = argv[4];    if (other_gen_file && argv[5])    { usage();    }  }  else   { usage();  }  /* Read parity check matrix. */  read_pchk(pchk_file);  if (N<=M)  { fprintf(stderr,     "Can't encode if number of bits (%d) isn't greater than number of checks (%d)\n",N,M);    exit(1);  }  /* Create generator matrix file. */  f = open_file_std(gen_file,"wb");  if (f==NULL)  { fprintf(stderr,"Can't create generator matrix file: %s\n",gen_file);    exit(1);  }  /* Allocate space for row and column permutations. */  cols = chk_alloc (N, sizeof *cols);  rows = chk_alloc (M, sizeof *rows);  /* Create generator matrix with specified method. */  switch (method)  { case Sparse:     { make_sparse(f,strategy,abandon_number,abandon_when);       break;    }    case Dense: case Mixed:    { make_dense_mixed(f,method,other_gen_file);      break;    }    default: abort();  }  /* Check for error writing file. */  if (ferror(f) || fclose(f)!=0)  { fprintf(stderr,"Error writing to generator matrix file\n");    exit(1);  }  return 0;}/* MAKE DENSE OR MIXED REPRESENTATION OF GENERATOR MATRIX. */void make_dense_mixed( FILE *f,  make_method method,  char *other_gen_file){   mod2dense *DH, *A, *A2, *AI, *B;  int i, j, c, c2, n;  int *rows_inv;  DH = mod2dense_allocate(M,N);  AI = mod2dense_allocate(M,M);  B  = mod2dense_allocate(M,N-M);  G  = mod2dense_allocate(M,N-M);  mod2sparse_to_dense(H,DH);  /* If another generator matrix was specified, invert using the set of     columns it specifies. */  if (other_gen_file)  {     read_gen(other_gen_file,1,0);    A = mod2dense_allocate(M,M);    mod2dense_copycols(DH,A,cols);    if (!mod2dense_invert(A,AI))    { fprintf(stderr,       "Couldn't invert sub-matrix with column order given in other file\n");      exit(1);    }    mod2dense_copycols(DH,B,cols+M);  }  /* If no other generator matrix was specified, invert using whatever      selection of rows/columns is needed to get a non-singular sub-matrix. */  if (!other_gen_file)  {    A  = mod2dense_allocate(M,N);    A2 = mod2dense_allocate(M,N);    n = mod2dense_invert_selected(DH,A2,rows,cols);    mod2sparse_to_dense(H,DH);  /* DH was destroyed by invert_selected */    if (n>0)    { fprintf(stderr,"Note: Parity check matrix has %d redundant checks\n",n);    }    rows_inv = chk_alloc (M, sizeof *rows_inv);    for (i = 0; i<M; i++)    { rows_inv[rows[i]] = i;    }    mod2dense_copyrows(A2,A,rows);    mod2dense_copycols(A,A2,cols);    mod2dense_copycols(A2,AI,rows_inv);    mod2dense_copycols(DH,B,cols+M);  }  /* Form final generator matrix. */  if (method==Dense)   { mod2dense_multiply(AI,B,G);  }  else if (method==Mixed)  { G = AI;  }  else  { abort();  }  /* Compute and print number of 1s. */  if (method==Dense)    { c = 0;    for (i = 0; i<M; i++)    { for (j = 0; j<N-M; j++)      { c += mod2dense_get(G,i,j);      }    }    fprintf(stderr,      "Number of 1s per check in Inv(A) X B is %.1f\n", (double)c/M);  }  if (method==Mixed)  { c = 0;    for (i = 0; i<M; i++)    { for (j = 0; j<M; j++)      { c += mod2dense_get(G,i,j);      }    }    c2 = 0;    for (i = M; i<N; i++)     { c2 += mod2sparse_count_col(H,cols[i]);    }    fprintf(stderr,     "Number of 1s per check in Inv(A) is %.1f, in B is %.1f, total is %.1f\n",     (double)c/M, (double)c2/M, (double)(c+c2)/M);  }  /* Write the represention of the generator matrix to the file. */  intio_write(f,('G'<<8)+0x80);  if (method==Dense)        { fwrite ("d", 1, 1, f);  }  if (method==Mixed)   { fwrite ("m", 1, 1, f);  }  intio_write(f,M);  intio_write(f,N);  for (i = 0; i<N; i++)   { intio_write(f,cols[i]);  }  mod2dense_write (f, G);}/* MAKE SPARSE REPRESENTATION OF GENERATOR MATRIX. */void make_sparse( FILE *f,  mod2sparse_strategy strategy,  int abandon_number,  int abandon_when){  int n, cL, cU, cB;  int i;  /* Find LU decomposition. */  L = mod2sparse_allocate(M,M);  U = mod2sparse_allocate(M,N);  n = mod2sparse_decomp(H,M,L,U,rows,cols,strategy,abandon_number,abandon_when);  if (n!=0 && abandon_number==0)  { fprintf(stderr,"Note: Parity check matrix has %d redundant checks\n",n);  }  if (n!=0 && abandon_number>0)  { fprintf(stderr,  "Note: Have %d dependent columns, but this could be due to abandonment.\n",n);    fprintf(stderr,  "      Try again with lower abandonment number.\n");    exit(1);  }  /* Compute and print number of 1s. */  cL = cU = cB = 0;  for (i = 0; i<M; i++) cL += mod2sparse_count_row(L,i);  for (i = 0; i<M; i++) cU += mod2sparse_count_row(U,i);  for (i = M; i<N; i++) cB += mod2sparse_count_col(H,cols[i]);  fprintf(stderr,   "Number of 1s per check in L is %.1f, U is %.1f, B is %.1f, total is %.1f\n",    (double)cU/M, (double)cL/M, (double)cB/M, (double)(cL+cU+cB)/M);  /* Write it all to the generator matrix file. */  intio_write(f,('G'<<8)+0x80);  fwrite ("s", 1, 1, f);  intio_write(f,M);  intio_write(f,N);  for (i = 0; i<N; i++)   { intio_write(f,cols[i]);  }  for (i = 0; i<M; i++)   { intio_write(f,rows[i]);  }  mod2sparse_write (f, L);  mod2sparse_write (f, U);}/* PRINT USAGE MESSAGE AND EXIT. */void usage(void){ fprintf (stderr,    "Usage:  make-gen pchk-file gen-file method\n");  fprintf (stderr,    "Method: sparse [ \"first\" | \"mincol\" | \"minprod\" ] [ abandon_num abandon_when ]\n");  fprintf (stderr,    "    or: dense [ other-gen-file ]\n");  fprintf (stderr,    "    or: mixed [ other-gen-file ]\n");  exit(1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区免费看| 国产成人亚洲综合a∨婷婷| 欧美经典一区二区三区| 欧美成人官网二区| 精品裸体舞一区二区三区| 欧美一区二区三区视频在线观看 | 国精品**一区二区三区在线蜜桃| 天天做天天摸天天爽国产一区| 亚洲香蕉伊在人在线观| 天天做天天摸天天爽国产一区| 亚洲电影第三页| 免费人成黄页网站在线一区二区 | 国产一区二区三区国产| 国产伦精品一区二区三区免费迷 | 亚洲欧洲av在线| 夜夜精品视频一区二区| 午夜私人影院久久久久| 麻豆精品久久精品色综合| 国内精品自线一区二区三区视频| 国产成人鲁色资源国产91色综| 99精品视频在线观看| 欧美少妇一区二区| 久久一日本道色综合| 中文字幕一区三区| 日韩精品一区第一页| 国产一区二区女| 在线视频欧美精品| 精品少妇一区二区三区免费观看| 久久久91精品国产一区二区三区| 国产精品情趣视频| 日韩电影免费在线看| 国产精品中文字幕日韩精品| 色综合夜色一区| 日韩欧美国产小视频| 亚洲欧洲日韩综合一区二区| 丝袜脚交一区二区| 成人高清免费观看| 欧美大尺度电影在线| 国产精品美女久久久久aⅴ国产馆| 亚洲精品视频在线看| 蜜桃传媒麻豆第一区在线观看| 成人网在线播放| 91精品国产91热久久久做人人 | 美腿丝袜一区二区三区| 成+人+亚洲+综合天堂| 91精品国模一区二区三区| 中文字幕精品在线不卡| 蜜桃av一区二区在线观看| 91美女在线视频| 久久亚洲一区二区三区四区| 亚洲精品中文字幕在线观看| 国产精品888| 制服丝袜中文字幕亚洲| 综合婷婷亚洲小说| 国产福利一区二区| 欧美大肚乱孕交hd孕妇| 日本中文字幕一区| 欧美日韩免费观看一区二区三区| 国产精品成人在线观看| 国产在线精品一区二区夜色 | 国产亚洲人成网站| 美女视频黄频大全不卡视频在线播放| av不卡在线观看| 国产精品欧美综合在线| 国产成人小视频| 久久综合国产精品| 国产伦精品一区二区三区免费迷 | 亚洲乱码中文字幕| 成人免费av网站| 欧美韩日一区二区三区四区| 国产乱妇无码大片在线观看| 2023国产精华国产精品| 精品一区二区在线免费观看| 日韩欧美一区二区不卡| 久久精品国产澳门| 欧美一级久久久| 久久国产剧场电影| 久久久国产精华| 成人精品视频一区二区三区尤物| 国产三级欧美三级| caoporm超碰国产精品| 亚洲美女在线一区| 欧美在线观看一二区| 亚洲一区二区三区四区五区中文| 欧美性猛片xxxx免费看久爱| 五月天久久比比资源色| 欧美一卡在线观看| 国产伦精品一区二区三区视频青涩 | 国产精品成人网| 色婷婷综合五月| 亚洲超碰精品一区二区| 欧美一区二区三区公司| 国产一区二区在线电影| 综合亚洲深深色噜噜狠狠网站| 色吧成人激情小说| 亚洲aaa精品| 久久精品网站免费观看| 99re这里都是精品| 石原莉奈在线亚洲二区| 久久久久9999亚洲精品| 色偷偷久久一区二区三区| 奇米综合一区二区三区精品视频| 精品成人在线观看| 成人av在线电影| 午夜成人免费视频| 国产日韩欧美在线一区| 欧美视频中文一区二区三区在线观看| 亚洲18女电影在线观看| 2017欧美狠狠色| 在线观看成人免费视频| 久久国产精品99久久久久久老狼 | 日韩一区二区三区视频在线观看| 国产一区二区三区观看| 亚洲自拍与偷拍| 久久久久国产精品厨房| 欧美日韩在线播放三区| 国产伦精一区二区三区| 亚洲国产精品一区二区www在线| 精品成人一区二区三区四区| 日本韩国精品在线| 国产综合久久久久久久久久久久| 亚洲在线视频一区| 中文字幕第一区二区| 日韩亚洲欧美一区| 欧美专区亚洲专区| 成人午夜激情视频| 久久99久久精品| 一区二区三区四区在线播放| 久久这里都是精品| 欧美一区二区三区成人| 色美美综合视频| 成人动漫一区二区三区| 久草中文综合在线| 日本亚洲免费观看| 亚洲男人天堂一区| 国产精品久久久久久户外露出| 9191久久久久久久久久久| 色老汉一区二区三区| 97精品久久久久中文字幕 | 日本欧美久久久久免费播放网| 中文字幕一区二区三区av| 久久久久国产免费免费| 日韩一级在线观看| 91精品欧美综合在线观看最新| 色哟哟日韩精品| 色素色在线综合| 欧美写真视频网站| 欧美中文字幕一区| 欧美日韩综合在线免费观看| 波波电影院一区二区三区| 粉嫩在线一区二区三区视频| 国产一区二区影院| 粉嫩一区二区三区在线看| 成人永久免费视频| 91免费观看国产| 色狠狠桃花综合| 91精品国产综合久久久蜜臀图片| 欧美人狂配大交3d怪物一区| 制服丝袜av成人在线看| 欧美一区二区三区电影| 精品国产99国产精品| 国产欧美一区视频| 中文字幕制服丝袜一区二区三区 | 日韩欧美国产系列| 久久综合成人精品亚洲另类欧美| 久久久久久久久久久久久久久99| 国产亚洲精品久| 中文字幕一区二区三区蜜月| 亚洲精品免费电影| 日韩精品五月天| 国产精品99久久久| 91麻豆6部合集magnet| 欧美日韩国产另类一区| 日韩欧美久久久| 国产精品久线在线观看| 亚洲一区在线播放| 精品无码三级在线观看视频| av电影天堂一区二区在线观看| 欧美性色黄大片手机版| 精品国产一区二区精华| 亚洲特黄一级片| 日本中文一区二区三区| 成人av在线播放网址| 欧美一区二区三区小说| 国产精品灌醉下药二区| 日韩国产精品久久久| 丁香激情综合五月| 欧美日韩亚洲丝袜制服| 亚洲国产激情av| 日韩在线卡一卡二| 91蜜桃网址入口| 国产无人区一区二区三区| 亚洲一区二区影院| 成人综合婷婷国产精品久久蜜臀| 欧美亚洲一区二区三区四区| 久久久亚洲精品石原莉奈| 夜夜揉揉日日人人青青一国产精品| 国产美女在线精品| 678五月天丁香亚洲综合网| 国产精品乱码妇女bbbb|