亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美大片一区二区| 亚洲高清免费一级二级三级| 日本韩国视频一区二区| 国产99久久久久久免费看农村| 亚洲一区二区五区| 亚洲一区在线视频| 亚洲国产精品久久久久婷婷884 | 亚洲老司机在线| 最新不卡av在线| 一区二区在线看| 一区二区三区国产精华| 一区二区三区丝袜| 亚洲国产精品嫩草影院| 亚洲国产日韩一级| 久久99精品一区二区三区 | 北条麻妃一区二区三区| 国产在线国偷精品免费看| 国产在线一区二区| 成人aaaa免费全部观看| 成人精品鲁一区一区二区| 成人av电影在线播放| 99re热这里只有精品视频| 色婷婷国产精品久久包臀| 一区二区三区四区五区视频在线观看| 久久久久国产精品人| 日本一区二区视频在线| 国产精品久久99| 亚洲va在线va天堂| 九一久久久久久| 99久久99久久久精品齐齐| 欧美日韩小视频| 国产视频一区在线观看| 亚洲免费视频成人| 国产在线视频一区二区| 色综合天天综合在线视频| 欧美男男青年gay1069videost| 日韩女同互慰一区二区| 国产精品全国免费观看高清 | 欧美女孩性生活视频| 日韩一区在线看| 一区二区三区日韩精品视频| 午夜激情一区二区三区| 国产伦精一区二区三区| 91蝌蚪porny| 日韩视频一区二区| 一区二区三区日韩欧美精品| 精品中文av资源站在线观看| www.在线欧美| 欧美tk—视频vk| 亚洲国产精品麻豆| a亚洲天堂av| 久久久不卡影院| 日韩av在线免费观看不卡| 99国产一区二区三精品乱码| 精品久久久久久最新网址| 一区二区国产盗摄色噜噜| 国产黄色成人av| 日韩免费高清电影| 香蕉成人伊视频在线观看| 日本不卡中文字幕| 香港成人在线视频| 成人免费看黄yyy456| 欧美精品一级二级三级| 亚洲天堂av老司机| 成人av资源网站| 中日韩av电影| 国产乱妇无码大片在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲日本中文字幕区| 成人免费看黄yyy456| 国产三级三级三级精品8ⅰ区| 蜜桃久久av一区| 日韩一区二区中文字幕| 日本一不卡视频| 欧美一级理论性理论a| 日韩福利视频导航| 日韩一二三四区| 久久国产福利国产秒拍| 91精品国产品国语在线不卡| 日韩国产精品久久| 国产日韩欧美制服另类| 国产激情精品久久久第一区二区| 欧美久久久久久久久久| 亚洲曰韩产成在线| 欧美亚日韩国产aⅴ精品中极品| 国产精品理伦片| 99久久婷婷国产综合精品电影| 国产精品国产三级国产aⅴ入口 | 日韩视频免费直播| 国精产品一区一区三区mba桃花| 日韩欧美你懂的| 国产一区91精品张津瑜| 欧美精品一区二区在线观看| 国产在线视频一区二区| 亚洲国产经典视频| 色天使久久综合网天天| 亚洲成人中文在线| 精品av综合导航| 成人动漫一区二区三区| 日韩成人免费电影| 91免费版pro下载短视频| 综合久久给合久久狠狠狠97色| 91视频在线看| 午夜久久久影院| 精品久久久久一区| 成人av在线资源| 日韩电影在线观看电影| 2023国产一二三区日本精品2022| 成人性色生活片| 亚洲国产美国国产综合一区二区 | 麻豆一区二区三区| 日本一区二区三区四区在线视频| 99re热这里只有精品免费视频| 五月激情丁香一区二区三区| 欧美不卡在线视频| 91极品美女在线| 国内成人精品2018免费看| 日韩一区在线播放| 精品国产91洋老外米糕| 不卡av在线网| 日韩1区2区3区| 一区二区中文字幕在线| 91精品福利在线一区二区三区 | 日韩三级视频中文字幕| 国产91清纯白嫩初高中在线观看| 亚洲1区2区3区4区| 亚洲视频在线一区| 国产精品视频你懂的| 精品少妇一区二区三区免费观看 | 久久疯狂做爰流白浆xx| 亚洲人成影院在线观看| 精品国产电影一区二区| 欧美日韩视频不卡| aaa欧美大片| 国产91清纯白嫩初高中在线观看 | 欧美日韩午夜影院| 最好看的中文字幕久久| 91福利视频久久久久| 久久se精品一区精品二区| 亚洲男人天堂av| 亚洲人成网站在线| 国产精品成人一区二区艾草| 亚洲精品在线免费观看视频| 欧美日韩视频第一区| 在线视频国内一区二区| 成人动漫一区二区在线| 国产成人精品三级麻豆| 久久精品国产99国产精品| 无码av免费一区二区三区试看| 亚洲蜜桃精久久久久久久| 欧美国产成人精品| 欧美激情自拍偷拍| 久久久久久久久伊人| 精品国产一区二区三区不卡| 在线不卡中文字幕播放| 欧美区在线观看| 欧美一级夜夜爽| 91精品国产高清一区二区三区| 欧美一区二区免费观在线| 欧美日韩在线播| 欧美精品日韩一本| 日韩欧美色电影| 久久综合色鬼综合色| 国产亚洲精品中文字幕| 国产日韩欧美激情| 国产精品久久久久一区| 中日韩免费视频中文字幕| 国产精品福利电影一区二区三区四区| 中文字幕亚洲一区二区va在线| 国产精品欧美一区喷水| 日韩美女视频一区| 亚洲一区中文日韩| 美女脱光内衣内裤视频久久网站 | 久久99国产乱子伦精品免费| 精品影视av免费| 北条麻妃一区二区三区| 欧美自拍丝袜亚洲| 日韩三区在线观看| 国产精品伦理一区二区| 一区二区三区四区激情| 日韩高清不卡一区二区三区| 国产在线观看一区二区| 99久久久国产精品免费蜜臀| 欧美性色黄大片| 久久综合色一综合色88| 中文字幕一区二区不卡| 亚洲电影中文字幕在线观看| 蜜桃久久久久久| 一本久久精品一区二区| 日韩一区二区三区在线视频| 欧美激情一区二区三区蜜桃视频 | 欧美精品在线观看一区二区| 欧美成人vps| 亚洲一级二级三级| 国产精品一区专区| 欧美日韩免费一区二区三区视频| 精品国精品自拍自在线| 一区二区三区四区激情| 福利电影一区二区| 51精品久久久久久久蜜臀|