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

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

?? mod2dense.c

?? ldpc的11個程序 encode decode extract make-gen make-ldpc make-pchk print-gen print-pchk rand-src transm
?? C
?? 第 1 頁 / 共 2 頁
字號:
    }  }}/* ADD TWO DENSE MOD2 MATRICES. */void mod2dense_add( mod2dense *m1,	/* Left operand of add */  mod2dense *m2,	/* Right operand of add */  mod2dense *r		/* Place to store result of add */){  int j, k;  if (mod2dense_rows(m1)!=mod2dense_rows(r)    || mod2dense_cols(m1)!=mod2dense_cols(r)    || mod2dense_rows(m2)!=mod2dense_rows(r)   || mod2dense_cols(m2)!=mod2dense_cols(r))  { fprintf(stderr,"mod2dense_add: Matrices have different dimensions\n");    exit(1);  }  for (j = 0; j<mod2dense_cols(r); j++)  { for (k = 0; k<r->n_words; k++)    { r->col[j][k] = m1->col[j][k] ^ m2->col[j][k];    }  }}/* MULTIPLY TWO DENSE MOD2 MATRICES.    The algorithm used runs faster if the second matrix (right operand of the   multiply) is sparse, but it is also appropriate for dense matrices.  This   procedure could be speeded up a bit by replacing the call of mod2dense_get   with in-line code that avoids division, but this doesn't seem worthwhile   at the moment. */void mod2dense_multiply ( mod2dense *m1, 	/* Left operand of multiply */  mod2dense *m2,	/* Right operand of multiply */  mod2dense *r		/* Place to store result of multiply */){  int i, j, k;  if (mod2dense_cols(m1)!=mod2dense_rows(m2)    || mod2dense_rows(m1)!=mod2dense_rows(r)    || mod2dense_cols(m2)!=mod2dense_cols(r))  { fprintf(stderr,     "mod2dense_multiply: Matrices have incompatible dimensions\n");    exit(1);  }  if (r==m1 || r==m2)  { fprintf(stderr,      "mod2dense_multiply: Result matrix is the same as one of the operands\n");    exit(1);  }  mod2dense_clear(r);  for (j = 0; j<mod2dense_cols(r); j++)  { for (i = 0; i<mod2dense_rows(m2); i++)    { if (mod2dense_get(m2,i,j))      { for (k = 0; k<r->n_words; k++)        { r->col[j][k] ^= m1->col[i][k];        }      }    }  }}/* SEE WHETHER TWO DENSE MOD2 MATRICES ARE EQUAL. */int mod2dense_equal( mod2dense *m1,  mod2dense *m2){  int k, j, w;  mod2word m;  if (mod2dense_rows(m1)!=mod2dense_rows(m2)    || mod2dense_cols(m1)!=mod2dense_cols(m2))  { fprintf(stderr,"mod2dense_equal: Matrices have different dimensions\n");    exit(1);  }  w = m1->n_words;  /* Form a mask that has 1s in the lower bit positions corresponding to     bits that contain information in the last word of a matrix column. */  m = (1 << (mod2_wordsize - (w*mod2_wordsize-m1->n_rows))) - 1;    for (j = 0; j<mod2dense_cols(m1); j++)  {    for (k = 0; k<w-1; k++)    { if (m1->col[j][k] != m2->col[j][k]) return 0;    }    if ((m1->col[j][k]&m) != (m2->col[j][k]&m)) return 0;  }  return 1;}/* INVERT A DENSE MOD2 MATRIX. */int mod2dense_invert ( mod2dense *m,		/* The matrix to find the inverse of (destroyed) */  mod2dense *r		/* Place to store the inverse */){  mod2word *s, *t;  int i, j, k, n, w, k0, b0;  if (mod2dense_rows(m)!=mod2dense_cols(m))  { fprintf(stderr,"mod2dense_invert: Matrix to invert is not square\n");    exit(1);  }  if (r==m)  { fprintf(stderr,       "mod2dense_invert: Result matrix is the same as the operand\n");    exit(1);  }  n = mod2dense_rows(m);  w = m->n_words;  if (mod2dense_rows(r)!=n || mod2dense_cols(r)!=n)  { fprintf(stderr,     "mod2dense_invert: Matrix to receive inverse has wrong dimensions\n");    exit(1);  }  mod2dense_clear(r);  for (i = 0; i<n; i++)   { mod2dense_set(r,i,i,1);  }  for (i = 0; i<n; i++)  {     k0 = i >> mod2_wordsize_shift;    b0 = i & mod2_wordsize_mask;    for (j = i; j<n; j++)     { if (mod2_getbit(m->col[j][k0],b0)) break;    }    if (j==n) return 0;    if (j!=i)    {      t = m->col[i];      m->col[i] = m->col[j];      m->col[j] = t;      t = r->col[i];      r->col[i] = r->col[j];      r->col[j] = t;    }    for (j = 0; j<n; j++)    { if (j!=i && mod2_getbit(m->col[j][k0],b0))      { s = m->col[j];        t = m->col[i];        for (k = k0; k<w; k++) s[k] ^= t[k];        s = r->col[j];        t = r->col[i];        for (k = 0; k<w; k++) s[k] ^= t[k];      }    }  }  return 1;}/* INVERT A DENSE MOD2 MATRIX WITH ROWS & COLUMNS SELECTED FROM BIGGER MATRIX.*/int mod2dense_invert_selected( mod2dense *m,		/* Matrix from which to pick a submatrix to invert */  mod2dense *r,		/* Place to store the inverse */  int *rows,		/* Set to indexes of rows used and not used */  int *cols		/* Set to indexes of columns used and not used */){  mod2word *s, *t;  int i, j, k, n, n2, w, k0, b0, c, R;  if (r==m)  { fprintf(stderr,       "mod2dense_invert_selected2: Result matrix is the same as the operand\n");    exit(1);  }  n = mod2dense_rows(m);  w = m->n_words;  n2 = mod2dense_cols(m);  if (mod2dense_rows(r)!=n || mod2dense_cols(r)!=n2)  { fprintf(stderr,"mod2dense_invert_selected2: Matrix to receive inverse has wrong dimensions\n");    exit(1);  }  mod2dense_clear(r);  for (i = 0; i<n; i++)  { rows[i] = i;  }  for (j = 0; j<n2; j++)  { cols[j] = j;  }  R = 0;  i = 0;  for (;;)  {     while (i<n-R)    {      k0 = rows[i] >> mod2_wordsize_shift;      b0 = rows[i] & mod2_wordsize_mask;      for (j = i; j<n2; j++)       { if (mod2_getbit(m->col[cols[j]][k0],b0)) break;      }      if (j<n2) break;      R += 1;      c = rows[i];      rows[i] = rows[n-R];      rows[n-R] = c;    }    if (i==n-R) break;    c = cols[j];    cols[j] = cols[i];    cols[i] = c;    mod2dense_set(r,rows[i],c,1);    for (j = 0; j<n2; j++)    { if (j!=c && mod2_getbit(m->col[j][k0],b0))      { s = m->col[j];        t = m->col[c];        for (k = 0; k<w; k++) s[k] ^= t[k];        s = r->col[j];        t = r->col[c];        for (k = 0; k<w; k++) s[k] ^= t[k];      }    }    i += 1;  }  for (j = n-R; j<n; j++)  { s = r->col[cols[j]];    for (k = 0; k<w; k++) s[k] = 0;  }  return R;}/* FORCIBLY INVERT A DENSE MOD2 MATRIX. */int mod2dense_forcibly_invert ( mod2dense *m, 	/* The matrix to find the inverse of (destroyed) */  mod2dense *r,		/* Place to store the inverse */  int *a_row,		/* Place to store row indexes of altered elements */  int *a_col		/* Place to store column indexes of altered elements */){  mod2word *s, *t;  int i, j, k, n, w, k0, b0;  int u, c;  if (mod2dense_rows(m)!=mod2dense_cols(m))  { fprintf(stderr,      "mod2dense_forcibly_invert: Matrix to invert is not square\n");    exit(1);  }  if (r==m)  { fprintf(stderr,       "mod2dense_forcibly_invert: Result matrix is the same as the operand\n");    exit(1);  }  n = mod2dense_rows(m);  w = m->n_words;  if (mod2dense_rows(r)!=n || mod2dense_cols(r)!=n)  { fprintf(stderr, "mod2dense_forcibly_invert: Matrix to receive inverse has wrong dimensions\n");    exit(1);  }  mod2dense_clear(r);  for (i = 0; i<n; i++)   { mod2dense_set(r,i,i,1);  }  for (i = 0; i<n; i++)  { a_row[i] = -1;    a_col[i] = i;  }  for (i = 0; i<n; i++)  {     k0 = i >> mod2_wordsize_shift;    b0 = i & mod2_wordsize_mask;    for (j = i; j<n; j++)     { if (mod2_getbit(m->col[j][k0],b0)) break;    }    if (j==n)    { j = i;      mod2dense_set(m,i,j,1);      a_row[i] = i;    }    if (j!=i)    {       t = m->col[i];      m->col[i] = m->col[j];      m->col[j] = t;      t = r->col[i];      r->col[i] = r->col[j];      r->col[j] = t;      u = a_col[i];      a_col[i] = a_col[j];      a_col[j] = u;    }    for (j = 0; j<n; j++)    { if (j!=i && mod2_getbit(m->col[j][k0],b0))      { s = m->col[j];        t = m->col[i];        for (k = k0; k<w; k++) s[k] ^= t[k];        s = r->col[j];        t = r->col[i];        for (k = 0; k<w; k++) s[k] ^= t[k];      }    }  }  c = 0;  for (i = 0; i<n; i++)  { if (a_row[i]!=-1)    { a_row[c] = a_row[i];      a_col[c] = a_col[i];      c += 1;    }  }  return c;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产1区2区| 麻豆精品视频在线| 毛片av一区二区| 91在线观看污| 欧美成人video| 亚洲一区二区美女| 成人一区二区在线观看| 日韩亚洲欧美综合| 一区二区三区日韩欧美| 成人av网址在线观看| 精品久久人人做人人爱| 日韩黄色免费网站| 欧美熟乱第一页| 亚洲天堂av老司机| 成人中文字幕合集| 久久蜜桃av一区精品变态类天堂 | 国产午夜精品理论片a级大结局 | 中文字幕亚洲一区二区av在线 | 亚洲精品va在线观看| 国产成人精品亚洲日本在线桃色| 欧美日韩成人综合在线一区二区| 亚洲欧美怡红院| 福利一区在线观看| 久久日韩精品一区二区五区| 秋霞影院一区二区| 91精品国产综合久久久蜜臀粉嫩 | 国产精品久久久久久久久免费丝袜 | 欧美网站一区二区| 亚洲精品视频一区| 99国内精品久久| 国产精品久久免费看| 国产盗摄精品一区二区三区在线| 在线不卡a资源高清| 亚洲一区免费观看| 一本大道av一区二区在线播放| 日韩视频国产视频| 亚洲国产精品精华液网站| 色综合久久久久久久久| 亚洲三级免费观看| 亚洲永久免费av| 99久久精品免费| 亚洲欧洲av另类| 国产成人精品亚洲午夜麻豆| 久久久精品2019中文字幕之3| 久99久精品视频免费观看| 在线不卡欧美精品一区二区三区| 偷拍日韩校园综合在线| 欧美日韩精品欧美日韩精品一| 亚洲国产精品嫩草影院| 欧美少妇bbb| 日韩精品欧美成人高清一区二区| 欧美日韩中文一区| 天堂av在线一区| 欧美一区二区三区四区在线观看| 日韩电影一区二区三区| 欧美一区二区久久| 久久97超碰色| 国产亚洲精品资源在线26u| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 奇米综合一区二区三区精品视频 | 懂色中文一区二区在线播放| 国产日本亚洲高清| 99国产精品一区| 一区二区三区**美女毛片| 欧美日本不卡视频| 蜜桃在线一区二区三区| 久久精品男人的天堂| 国产91丝袜在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| av成人动漫在线观看| 亚洲午夜久久久久久久久电影院| 欧美三级韩国三级日本三斤| 免费观看日韩av| 国产亚洲一本大道中文在线| av电影一区二区| 亚洲第一久久影院| 26uuu精品一区二区| 成人免费三级在线| 亚洲一二三四在线观看| 日韩午夜在线影院| 成人在线视频一区| 香蕉成人啪国产精品视频综合网| 日韩精品一区国产麻豆| 99视频超级精品| 日欧美一区二区| 久久精品亚洲麻豆av一区二区 | 国产一区二区主播在线| 一色屋精品亚洲香蕉网站| 欧美三级韩国三级日本一级| 国产一区二区精品久久99| 最好看的中文字幕久久| 欧美精品三级在线观看| 国产精品66部| 亚洲午夜激情网页| 久久久久久综合| 欧美性高清videossexo| 国产美女在线精品| 亚洲一级在线观看| 国产视频视频一区| 欧美系列日韩一区| 国产精品18久久久久| 亚洲大片精品永久免费| 久久精品一区二区三区不卡牛牛| 欧美色老头old∨ideo| 国产成人精品亚洲日本在线桃色| 亚洲成av人片在线观看无码| 欧美国产国产综合| 日韩欧美国产麻豆| 在线观看三级视频欧美| 国产成人免费在线| 亚洲成a天堂v人片| 国产欧美1区2区3区| 制服丝袜中文字幕亚洲| 91女神在线视频| 国模无码大尺度一区二区三区| 一区二区三区欧美激情| 国产欧美日韩三级| 日韩欧美在线123| 91成人在线免费观看| 高潮精品一区videoshd| 久久精品国产久精国产| 亚洲一区二区中文在线| 国产日韩欧美激情| 日韩三级av在线播放| 91久久精品一区二区三区| 国产91露脸合集magnet| 久久精品免费观看| 一区二区三区欧美视频| 国产欧美一区二区三区网站| 日韩欧美另类在线| 欧美天天综合网| 91免费在线播放| 成人午夜精品在线| 韩国女主播成人在线观看| 人人狠狠综合久久亚洲| 亚洲一区二区三区三| 亚洲欧美aⅴ...| 国产精品午夜免费| 久久九九国产精品| 久久久www免费人成精品| 日韩欧美一级二级| 欧美妇女性影城| 欧美日韩大陆一区二区| 一本久久精品一区二区| kk眼镜猥琐国模调教系列一区二区| 韩国在线一区二区| 免费欧美在线视频| 午夜婷婷国产麻豆精品| 一区二区在线免费| 一区二区三区在线视频免费| 亚洲视频一二三| 亚洲视频综合在线| 中文字幕在线一区| 国产精品嫩草影院av蜜臀| 国产亚洲精久久久久久| 精品国精品国产尤物美女| 日韩午夜三级在线| 91精品国产综合久久福利| 欧美肥妇bbw| 在线不卡一区二区| 欧美一区日本一区韩国一区| 欧美日韩免费一区二区三区视频| 欧美午夜电影在线播放| 欧美日韩国产高清一区二区三区 | 一区二区高清在线| 亚洲制服丝袜av| 天堂精品中文字幕在线| 轻轻草成人在线| 久88久久88久久久| 国产91在线观看| 91丝袜国产在线播放| 国产精品一二二区| 中文一区在线播放| 国产一区二区三区黄视频| 日韩欧美亚洲国产另类| 国产精一区二区三区| 久久婷婷成人综合色| 久久免费美女视频| 色噜噜狠狠色综合中国| 日韩中文字幕1| 偷窥少妇高潮呻吟av久久免费| 日韩一级黄色片| 欧美影视一区在线| 欧美xxxxxxxx| 一卡二卡三卡日韩欧美| 国产成人a级片| 欧美电视剧在线观看完整版| 精品国产一区二区三区四区四| 亚洲欧美一区二区三区极速播放| 亚洲国产高清aⅴ视频| 天堂在线亚洲视频| 亚洲午夜久久久久中文字幕久| 精品欧美一区二区三区精品久久| 国产日韩视频一区二区三区| 国产精品人妖ts系列视频| 中文字幕一区视频| 韩国av一区二区三区四区| 91麻豆精东视频| 欧美成人欧美edvon| 亚洲综合在线免费观看|