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

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

?? gf2x.c

?? 密碼大家Shoup寫的數論算法c語言實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include <NTL/GF2X.h>#include <NTL/vec_long.h>#include <NTL/new.h>NTL_START_IMPLlong GF2X::HexOutput = 0;void GF2X::SetMaxLength(long n){   if (n < 0) Error("GF2X::SetMaxLength: negative length");   if (n >= (1L << (NTL_BITS_PER_LONG-4)))      Error("GF2X::SetMaxLength: excessive length");   long w = (n + NTL_BITS_PER_LONG - 1)/NTL_BITS_PER_LONG;   xrep.SetMaxLength(w);}GF2X::GF2X(INIT_SIZE_TYPE, long n){   SetMaxLength(n);}const GF2X& GF2X::zero(){   static GF2X z;   return z;}void GF2X::normalize(){   long n;   const _ntl_ulong *p;   n = xrep.length();   if (n == 0) return;   p = xrep.elts() + (n-1);   while (n > 0 && (*p) == 0) {      p--;      n--;   }   xrep.QuickSetLength(n);}long IsZero(const GF2X& a)    { return a.xrep.length() == 0; }long IsOne(const GF2X& a)   { return a.xrep.length() == 1 && a.xrep[0] == 1; }long IsX(const GF2X& a){   return a.xrep.length() == 1 && a.xrep[0] == 2;}GF2 coeff(const GF2X& a, long i){   if (i < 0) return to_GF2(0);   long wi = i/NTL_BITS_PER_LONG;   if (wi >= a.xrep.length()) return to_GF2(0);   long bi = i - wi*NTL_BITS_PER_LONG;   return to_GF2((a.xrep[wi] & (1UL << bi)) != 0);}GF2 LeadCoeff(const GF2X& a){   if (IsZero(a))      return to_GF2(0);   else      return to_GF2(1);}GF2 ConstTerm(const GF2X& a){   if (IsZero(a))      return to_GF2(0);   else      return to_GF2((a.xrep[0] & 1) != 0);}void set(GF2X& x){   x.xrep.SetLength(1);   x.xrep[0] = 1;}void SetX(GF2X& x){   x.xrep.SetLength(1);   x.xrep[0] = 2;}void SetCoeff(GF2X& x, long i){   if (i < 0) {      Error("SetCoeff: negative index");      return;   }   long n, j;   n = x.xrep.length();   long wi = i/NTL_BITS_PER_LONG;   if (wi >= n) {      x.xrep.SetLength(wi+1);      for (j = n; j <= wi; j++)         x.xrep[j] = 0;   }   long bi = i - wi*NTL_BITS_PER_LONG;   x.xrep[wi] |= (1UL << bi);}   void SetCoeff(GF2X& x, long i, long val){   if (i < 0) {      Error("SetCoeff: negative index");      return;   }   val = val & 1;   if (val) {      SetCoeff(x, i);      return;   }   // we want to clear position i   long n;   n = x.xrep.length();   long wi = i/NTL_BITS_PER_LONG;   if (wi >= n)       return;   long bi = i - wi*NTL_BITS_PER_LONG;   x.xrep[wi] &= ~(1UL << bi);   if (wi == n-1) x.normalize();}void SetCoeff(GF2X& x, long i, GF2 a){   SetCoeff(x, i, rep(a));}void swap(GF2X& a, GF2X& b){   swap(a.xrep, b.xrep);}long deg(const GF2X& aa){   long n = aa.xrep.length();   if (n == 0)      return -1;   _ntl_ulong a = aa.xrep[n-1];   long i = 0;   if (a == 0) Error("GF2X: unnormalized polynomial detected in deg");   while (a>=256)      i += 8, a >>= 8;   if (a >=16)      i += 4, a >>= 4;   if (a >= 4)      i += 2, a >>= 2;   if (a >= 2)      i += 2;   else if (a >= 1)      i++;   return NTL_BITS_PER_LONG*(n-1) + i - 1;}   long operator==(const GF2X& a, const GF2X& b){   return a.xrep == b.xrep;}long operator==(const GF2X& a, long b){   if (b & 1)       return IsOne(a);   else      return IsZero(a);}long operator==(const GF2X& a, GF2 b){   if (b == 1)       return IsOne(a);   else      return IsZero(a);}staticlong FromHex(long c){   if (c >= '0' && c <= '9')      return c - '0';   if (c >= 'A' && c <= 'F')      return 10 + c - 'A';   if (c >= 'a' && c <= 'f')      return 10 + c - 'a';   Error("FromHex: bad arg");   return 0;}staticistream & HexInput(istream& s, GF2X& a){   long n;   long c;   long i;   long val;   GF2X ibuf;   n = 0;   clear(ibuf);   c = s.peek();   while ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') ||           (c >= 'a' && c <= 'f'))    {      val = FromHex(c);      for (i = 0; i < 4; i++)         if (val & (1L << i))            SetCoeff(ibuf, n+i);      n += 4;      s.get();      c = s.peek();   }   a = ibuf;   return s;}               istream & operator>>(istream& s, GF2X& a)   {      static ZZ ival;   long c;      if (!s) Error("bad GF2X input");       c = s.peek();     while (c == ' ' || c == '\n' || c == '\t') {        s.get();        c = s.peek();     }     if (c == '0') {      s.get();      c = s.peek();      if (c == 'x' || c == 'X') {         s.get();         return HexInput(s, a);      }      else {         Error("bad GF2X input");      }   }   if (c != '[') {        Error("bad GF2X input");     }     GF2X ibuf;     long n;         n = 0;      clear(ibuf);         s.get();     c = s.peek();     while (c == ' ' || c == '\n' || c == '\t') {        s.get();        c = s.peek();     }     while (c != ']' && c != EOF) {         if (!(s >> ival)) Error("bad GF2X input");      SetCoeff(ibuf, n, to_GF2(ival));      n++;      c = s.peek();        while (c == ' ' || c == '\n' || c == '\t') {           s.get();           c = s.peek();        }     }      if (c == EOF) Error("bad GF2X input");     s.get();       a = ibuf;    return s;   }    staticchar ToHex(long val){   if (val >= 0 && val <= 9)      return char('0' + val);   if (val >= 10 && val <= 15)      return char('a' + val - 10);   Error("ToHex: bad arg");   return 0;}staticostream & HexOutput(ostream& s, const GF2X& a){   s << "0x";   long da = deg(a);   if (da < 0) {      s << '0';      return s;   }   long i, n, val;   val = 0;   n = 0;   for (i = 0; i <= da; i++) {      val = val | (rep(coeff(a, i)) << n);      n++;      if (n == 4) {         s << ToHex(val);         val = 0;         n = 0;      }   }   if (val)       s << ToHex(val);   return s;}ostream& operator<<(ostream& s, const GF2X& a)   {      if (GF2X::HexOutput)      return HexOutput(s, a);   long i, da;      GF2 c;     da = deg(a);      s << '[';         for (i = 0; i <= da; i++) {         c = coeff(a, i);      if (c == 0)         s << "0";      else         s << "1";      if (i < da) s << " ";      }         s << ']';            return s;   }   void random(GF2X& x, long n){   if (n < 0) Error("GF2X random: negative length");   if (n >= (1L << (NTL_BITS_PER_LONG-4)))      Error("GF2X random: excessive length");   long wl = (n+NTL_BITS_PER_LONG-1)/NTL_BITS_PER_LONG;   x.xrep.SetLength(wl);   long i;   for (i = 0; i < wl-1; i++) {      x.xrep[i] = RandomWord();   }   if (n > 0) {      long pos = n % NTL_BITS_PER_LONG;      if (pos == 0) pos = NTL_BITS_PER_LONG;      x.xrep[wl-1] = RandomBits_ulong(pos);   }   x.normalize();}void add(GF2X& x, const GF2X& a, const GF2X& b){   long sa = a.xrep.length();   long sb = b.xrep.length();   long i;   if (sa == sb) {      x.xrep.SetLength(sa);      if (sa == 0) return;      _ntl_ulong *xp = x.xrep.elts();      const _ntl_ulong *ap = a.xrep.elts();      const _ntl_ulong *bp = b.xrep.elts();      for (i = 0; i < sa; i++)         xp[i] = ap[i] ^ bp[i];      i = sa-1;      while (i >= 0 && !xp[i]) i--;      x.xrep.QuickSetLength(i+1);   }      else if (sa < sb) {      x.xrep.SetLength(sb);      _ntl_ulong *xp = x.xrep.elts();      const _ntl_ulong *ap = a.xrep.elts();      const _ntl_ulong *bp = b.xrep.elts();      for (i = 0; i < sa; i++)         xp[i] = ap[i] ^ bp[i];      for (; i < sb; i++)         xp[i] = bp[i];   }   else { // sa > sb      x.xrep.SetLength(sa);      _ntl_ulong *xp = x.xrep.elts();      const _ntl_ulong *ap = a.xrep.elts();      const _ntl_ulong *bp = b.xrep.elts();      for (i = 0; i < sb; i++)         xp[i] = ap[i] ^ bp[i];      for (; i < sa; i++)         xp[i] = ap[i];   }}// This mul1 routine (for 32 x 32 bit multiplies) // was arrived at after a good deal of experimentation.// Several people have advocated that the "best" way// is to reduce it via karastuba to 9 8x8 multiplies, implementing// the latter via table look-up (a huge table).  Although such a mul1// would indeed have fewer machine instructions, my// experiments on a PowerPC and on a Pentium indicate// that the memory accesses slow it down.  On these machines// the following mul1 is faster by a factor of about 1.5.// inlining mul1 seems to help with g++; morever,// the IBM xlC compiler inlines it anyway.inlinevoid mul1(_ntl_ulong *c, _ntl_ulong a, _ntl_ulong b){   _ntl_ulong hi, lo;   _ntl_ulong A[4];   A[0] = 0;   A[1] = a & ((1UL << (NTL_BITS_PER_LONG-1))-1UL);   A[2] = a << 1;   A[3] = A[1] ^ A[2];   lo = A[b>>(NTL_BITS_PER_LONG-2)];   hi = lo >> (NTL_BITS_PER_LONG-2);    lo = (lo << 2) ^ A[(b >> (NTL_BITS_PER_LONG-4)) & 3];   // The following code is included from mach_desc.h   // and handles *any* word size   NTL_BB_MUL_CODE   hi = (hi << 2)|(lo >> (NTL_BITS_PER_LONG-2));    lo = (lo << 2) ^ A[b & 3];   if (a >> (NTL_BITS_PER_LONG-1)) {      hi = hi ^ (b >> 1);      lo = lo ^ (b << (NTL_BITS_PER_LONG-1));   }   c[0] = lo;   c[1] = hi;}inlinevoid mul_half(_ntl_ulong *c, _ntl_ulong a, _ntl_ulong b){   _ntl_ulong hi, lo;   _ntl_ulong A[4];   A[0] = 0;   A[1] = a & ((1UL << (NTL_BITS_PER_LONG-1))-1UL);   A[2] = a << 1;   A[3] = A[1] ^ A[2];   lo = A[b>>(NTL_BITS_PER_LONG/2-2)];   hi = lo >> (NTL_BITS_PER_LONG-2);    lo = (lo << 2) ^ A[(b >> (NTL_BITS_PER_LONG/2-4)) & 3];   NTL_BB_HALF_MUL_CODE   hi = (hi << 2)|(lo >> (NTL_BITS_PER_LONG-2));    lo = (lo << 2) ^ A[b & 3];   if (a >> (NTL_BITS_PER_LONG-1)) {      hi = hi ^ (b >> 1);      lo = lo ^ (b << (NTL_BITS_PER_LONG-1));   }   c[0] = lo;   c[1] = hi;}// mul2...mul8 hard-code 2x2...8x8 word multiplies.// I adapted these routines from LiDIA.// Inlining these seems to hurt, not help.staticvoid mul2(_ntl_ulong *c, const _ntl_ulong *a, const _ntl_ulong *b){   _ntl_ulong hs0, hs1;   _ntl_ulong hl2[2];   hs0 = a[0] ^ a[1];   hs1 = b[0] ^ b[1];   mul1(c, a[0], b[0]);   mul1(c+2, a[1], b[1]);   mul1(hl2, hs0, hs1);   hl2[0] = hl2[0] ^ c[0] ^ c[2];   hl2[1] = hl2[1] ^ c[1] ^ c[3];   c[1] ^= hl2[0];   c[2] ^= hl2[1];}staticvoid mul3 (_ntl_ulong *c, const _ntl_ulong *a, const _ntl_ulong *b){   _ntl_ulong hs0[2], hs1[2];   _ntl_ulong hl2[4];   hs0[0] = a[0] ^ a[2];    hs0[1] = a[1];   hs1[0] = b[0] ^ b[2];    hs1[1] = b[1];   mul2(c, a, b);    mul1(c+4, a[2], b[2]);   mul2(hl2, hs0, hs1);    hl2[0] = hl2[0] ^ c[0] ^ c[4];    hl2[1] = hl2[1] ^ c[1] ^ c[5];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利电影一区二区三区| 国产精品欧美久久久久一区二区| 午夜日韩在线电影| 欧美日韩欧美一区二区| 日韩中文字幕91| 欧美不卡一区二区| 国产剧情在线观看一区二区 | 日韩欧美中文字幕精品| 开心九九激情九九欧美日韩精美视频电影 | 91精品在线观看入口| 六月婷婷色综合| 国产亚洲视频系列| 99久久国产免费看| 午夜精品一区二区三区三上悠亚| 91.成人天堂一区| 国产精品一区二区黑丝| 中文字幕制服丝袜一区二区三区| 色妹子一区二区| 青青青爽久久午夜综合久久午夜| 久久久精品中文字幕麻豆发布| 粉嫩aⅴ一区二区三区四区| 亚洲最新视频在线播放| 91精品国产91久久综合桃花 | 日韩国产高清影视| www亚洲一区| 一本在线高清不卡dvd| 免费在线观看一区| 国产日韩欧美亚洲| 欧美日韩精品一二三区| 国内精品免费**视频| 亚洲品质自拍视频网站| 日韩三级在线观看| 99久久精品国产导航| 蜜桃一区二区三区四区| 中文字幕av资源一区| 3atv一区二区三区| 99精品视频一区| 精品一区二区三区影院在线午夜| 亚洲视频一二三| 精品国产伦一区二区三区观看方式 | 国产精品区一区二区三区| 欧美日韩在线播放一区| 国产成人综合视频| 日韩不卡免费视频| 亚洲欧洲综合另类在线| wwww国产精品欧美| 精品视频一区 二区 三区| 国产不卡在线播放| 日本vs亚洲vs韩国一区三区二区| 国产精品天天看| 欧美不卡在线视频| 91成人免费在线| 成人短视频下载| 蜜桃精品视频在线| 午夜久久福利影院| 亚洲欧美一区二区三区孕妇| 久久久三级国产网站| 欧美一区二区三区在线电影| 91在线播放网址| 成人app软件下载大全免费| 久久99精品久久久久| 亚欧色一区w666天堂| 亚洲欧美日韩在线播放| 国产精品久久久久影院老司| 久久精品夜色噜噜亚洲aⅴ| 欧美一卡二卡在线| 这里只有精品视频在线观看| 欧美色窝79yyyycom| 日本电影欧美片| 成人av资源下载| 国产福利一区在线| 国产精品综合二区| 国产精品综合av一区二区国产馆| 精品无人码麻豆乱码1区2区| 蜜臀精品久久久久久蜜臀| 天堂成人国产精品一区| 婷婷丁香久久五月婷婷| 亚洲成年人影院| 天天做天天摸天天爽国产一区 | 色综合中文字幕| 99re热这里只有精品视频| av男人天堂一区| 99久久国产综合色|国产精品| a级精品国产片在线观看| 成人免费av资源| 成人福利在线看| 99国产精品久久久久久久久久久| 成人黄色电影在线| 色香蕉成人二区免费| 欧美吻胸吃奶大尺度电影| 欧美日韩在线播放| 日韩一区二区免费电影| 精品国产乱码久久久久久免费 | bt欧美亚洲午夜电影天堂| 91视频你懂的| 欧美老女人第四色| 日韩精品一区二区三区视频在线观看| 精品久久人人做人人爽| 欧美国产欧美综合| 亚洲视频1区2区| 亚洲v精品v日韩v欧美v专区| 日本三级韩国三级欧美三级| 国模套图日韩精品一区二区 | 色94色欧美sute亚洲线路一久| 91国偷自产一区二区开放时间| 欧美挠脚心视频网站| 日韩欧美中文字幕制服| 国产欧美日韩精品a在线观看| 亚洲美女区一区| 免费成人av在线| 成人一区在线看| 欧美在线观看禁18| 精品黑人一区二区三区久久| 国产精品理论片| 日韩专区一卡二卡| 国产91精品欧美| 欧美三级日韩三级国产三级| 精品国产成人系列| 亚洲欧美激情视频在线观看一区二区三区| 亚洲777理论| 成人sese在线| 精品日韩在线一区| 亚洲人123区| 精品综合免费视频观看| 91蜜桃传媒精品久久久一区二区| 日韩欧美一区在线| 一区二区在线观看免费| 美国欧美日韩国产在线播放 | 欧美色欧美亚洲另类二区| 精品国产免费一区二区三区四区| 日韩毛片视频在线看| 欧美三级电影网| 欧美激情中文字幕| 免费成人在线视频观看| 色综合久久久网| 国产午夜精品久久久久久久 | 综合激情成人伊人| 国产最新精品免费| 9191国产精品| 一区二区三区欧美亚洲| 国产成人夜色高潮福利影视| 欧美男生操女生| 久久电影国产免费久久电影| 91女人视频在线观看| 国产亚洲一本大道中文在线| 日韩成人午夜电影| 欧美色涩在线第一页| 最新热久久免费视频| 国产精品996| 欧美大片日本大片免费观看| 性感美女极品91精品| 色综合久久综合中文综合网| 国产欧美精品国产国产专区| 国产在线不卡一区| 精品国产网站在线观看| 日韩国产欧美三级| 欧美人动与zoxxxx乱| 亚洲激情自拍视频| 色丁香久综合在线久综合在线观看 | 成人h动漫精品一区二区| 精品国产一区二区精华| 日本不卡一二三| 56国语精品自产拍在线观看| 婷婷综合在线观看| 欧美日韩久久不卡| 性做久久久久久| 欧美日韩成人在线| 午夜精品久久久久久久99樱桃| 欧美亚洲自拍偷拍| 亚洲图片欧美一区| 欧美午夜电影网| 首页国产丝袜综合| 91精品视频网| 久久精品99久久久| 久久久三级国产网站| 国产成人精品免费看| 国产精品美女久久久久久久久| 成人精品在线视频观看| 国产精品剧情在线亚洲| 91丨九色丨尤物| 亚洲国产三级在线| 欧美一区二区三区在线电影| 国内精品写真在线观看| 久久久99精品久久| 91尤物视频在线观看| 一区二区高清免费观看影视大全| 欧美日韩一区三区四区| 日本不卡123| 国产女主播视频一区二区| 97久久精品人人做人人爽| 夜夜亚洲天天久久| 日韩免费在线观看| 成人免费高清视频| 亚洲一区在线观看免费 | 色婷婷亚洲综合| 日韩高清一区在线| 亚洲国产精品激情在线观看| 在线视频欧美区| 久久99精品一区二区三区三区| 国产日韩欧美精品综合|