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

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

?? lll_xd.c

?? 密碼大家Shoup寫的數論算法c語言實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <NTL/LLL.h>#include <NTL/fileio.h>#include <NTL/vec_xdouble.h>#include <NTL/vec_double.h>#include <NTL/new.h>NTL_START_IMPLstatic xdouble InnerProduct(xdouble *a, xdouble *b, long n){   xdouble s;   long i;   s = 0;   for (i = 1; i <= n; i++)       MulAdd(s, s, a[i], b[i]);   return s;}static void RowTransform(vec_ZZ& A, vec_ZZ& B, const ZZ& MU1)// x = x - y*MU{   static ZZ T, MU;   long k;   long n = A.length();   long i;   MU = MU1;   if (MU == 1) {      for (i = 1; i <= n; i++)         sub(A(i), A(i), B(i));      return;   }   if (MU == -1) {      for (i = 1; i <= n; i++)         add(A(i), A(i), B(i));      return;   }   if (MU == 0) return;   if (NumTwos(MU) >= NTL_ZZ_NBITS)       k = MakeOdd(MU);   else      k = 0;   if (MU.WideSinglePrecision()) {      long mu1;      conv(mu1, MU);      for (i = 1; i <= n; i++) {         mul(T, B(i), mu1);         if (k > 0) LeftShift(T, T, k);         sub(A(i), A(i), T);      }   }   else {      for (i = 1; i <= n; i++) {         mul(T, B(i), MU);         if (k > 0) LeftShift(T, T, k);         sub(A(i), A(i), T);      }   }}static void RowTransform2(vec_ZZ& A, vec_ZZ& B, const ZZ& MU1)// x = x + y*MU{   static ZZ T, MU;   long k;   long n = A.length();   long i;   MU = MU1;   if (MU == 1) {      for (i = 1; i <= n; i++)         add(A(i), A(i), B(i));      return;   }   if (MU == -1) {      for (i = 1; i <= n; i++)         sub(A(i), A(i), B(i));      return;   }   if (MU == 0) return;   if (NumTwos(MU) >= NTL_ZZ_NBITS)       k = MakeOdd(MU);   else      k = 0;   if (MU.WideSinglePrecision()) {      long mu1;      conv(mu1, MU);      for (i = 1; i <= n; i++) {         mul(T, B(i), mu1);         if (k > 0) LeftShift(T, T, k);         add(A(i), A(i), T);      }   }   else {      for (i = 1; i <= n; i++) {         mul(T, B(i), MU);         if (k > 0) LeftShift(T, T, k);         add(A(i), A(i), T);      }   }}staticvoid ComputeGS(mat_ZZ& B, xdouble **B1, xdouble **mu, xdouble *b,                xdouble *c, long k, xdouble bound, long st, xdouble *buf){   long n = B.NumCols();   long i, j;   xdouble s, t1, y, t;   ZZ T1;   xdouble *mu_k = mu[k];   if (st < k) {      for (i = 1; i < st; i++)         buf[i] = mu_k[i]*c[i];   }   for (j = st; j <= k-1; j++) {      if (b[k]*b[j] < NTL_FDOUBLE_PRECISION*NTL_FDOUBLE_PRECISION) {         double z = 0;         xdouble *B1_k = B1[k];         xdouble *B1_j = B1[j];         for (i = 1; i <= n; i++)            z += B1_k[i].x * B1_j[i].x;         s = z;      }      else {         s = InnerProduct(B1[k], B1[j], n);            if (s*s <= b[k]*b[j]/bound) {            InnerProduct(T1, B(k), B(j));            conv(s, T1);         }      }      xdouble *mu_j = mu[j];      t1 = 0;      for (i = 1; i <= j-1; i++)         MulAdd(t1, t1, mu_j[i], buf[i]);      mu_k[j] = (buf[j] = (s - t1))/c[j];   }   s = 0;   for (j = 1; j <= k-1; j++)      MulAdd(s, s, mu_k[j], buf[j]);   c[k] = b[k] - s;}static xdouble red_fudge = to_xdouble(0);static long log_red = 0;static void init_red_fudge(){   long i;   log_red = long(0.50*NTL_DOUBLE_PRECISION);   red_fudge = 1;   for (i = log_red; i > 0; i--)      red_fudge = red_fudge*0.5;}static void inc_red_fudge(){   red_fudge = red_fudge * 2;   log_red--;   cerr << "LLL_XD: warning--relaxing reduction (" << log_red << ")\n";   if (log_red < 4)      Error("LLL_XD: can not continue...sorry");}static long verbose = 0;static unsigned long NumSwaps = 0;static double StartTime = 0;static double LastTime = 0;static void LLLStatus(long max_k, double t, long m, const mat_ZZ& B){   cerr << "---- LLL_XD status ----\n";   cerr << "elapsed time: ";   PrintTime(cerr, t-StartTime);   cerr << ", stage: " << max_k;   cerr << ", rank: " << m;   cerr << ", swaps: " << NumSwaps << "\n";   ZZ t1;   long i;   double prodlen = 0;   for (i = 1; i <= m; i++) {      InnerProduct(t1, B(i), B(i));      if (!IsZero(t1))         prodlen += log(t1);   }   cerr << "log of prod of lengths: " << prodlen/(2.0*log(2.0)) << "\n";   if (LLLDumpFile) {      cerr << "dumping to " << LLLDumpFile << "...";      ofstream f;      OpenWrite(f, LLLDumpFile);            f << "[";      for (i = 1; i <= m; i++) {         f << B(i) << "\n";      }      f << "]\n";      f.close();      cerr << "\n";   }   LastTime = t;   }staticlong ll_LLL_XD(mat_ZZ& B, mat_ZZ* U, xdouble delta, long deep,            LLLCheckFct check, xdouble **B1, xdouble **mu,            xdouble *b, xdouble *c,           long m, long init_k, long &quit){   long n = B.NumCols();   long i, j, k, Fc1;   ZZ MU;   xdouble mu1;   xdouble t1;   ZZ T1;   xdouble *tp;   static xdouble bound = to_xdouble(0);   if (bound == 0) {      // we tolerate a 15% loss of precision in computing      // inner products in ComputeGS.      bound = 1;      for (i = 2*long(0.15*NTL_DOUBLE_PRECISION); i > 0; i--) {         bound = bound * 2;      }   }   xdouble half = to_xdouble(0.5);   xdouble half_plus_fudge = 0.5 + red_fudge;   quit = 0;   k = init_k;   vec_long st_mem;   st_mem.SetLength(m+2);   long *st = st_mem.elts();   for (i = 1; i < k; i++)      st[i] = i;   for (i = k; i <= m+1; i++)      st[i] = 1;   xdouble *buf;   buf = NTL_NEW_OP xdouble [m+1];   if (!buf) Error("out of memory in lll_LLL_XD");   long rst;   long counter;   long trigger_index;   long small_trigger;   long cnt;   long max_k = 0;   double tt;   while (k <= m) {      if (k > max_k) {         max_k = k;      }      if (verbose) {         tt = GetTime();         if (tt > LastTime + LLLStatusInterval)            LLLStatus(max_k, tt, m, B);      }      if (st[k] == k)         rst = 1;      else         rst = k;      if (st[k] < st[k+1]) st[k+1] = st[k];      ComputeGS(B, B1, mu, b, c, k, bound, st[k], buf);      st[k] = k;      counter = 0;      trigger_index = k;      small_trigger = 0;      cnt = 0;      do {         // size reduction         counter++;         if (counter > 10000) {            cerr << "LLL_XD: warning--possible infinite loop\n";            counter = 0;         }         Fc1 = 0;            for (j = rst-1; j >= 1; j--) {            t1 = fabs(mu[k][j]);            if (t1 > half_plus_fudge) {               if (!Fc1) {                  if (j > trigger_index ||                      (j == trigger_index && small_trigger)) {                     cnt++;                     if (cnt > 10) {                        inc_red_fudge();                        half_plus_fudge = 0.5 + red_fudge;                        cnt = 0;                     }                  }                  trigger_index = j;                  small_trigger = (t1 < 4);               }               Fc1 = 1;                  mu1 = mu[k][j];               if (mu1 >= 0)                  mu1 = ceil(mu1-half);               else                  mu1 = floor(mu1+half);                     xdouble *mu_k = mu[k];               xdouble *mu_j = mu[j];                 if (mu1 == 1) {                  for (i = 1; i <= j-1; i++)                     mu_k[i] -= mu_j[i];               }               else if (mu1 == -1) {                  for (i = 1; i <= j-1; i++)                     mu_k[i] += mu_j[i];               }               else {                  for (i = 1; i <= j-1; i++)                     MulSub(mu_k[i], mu_k[i], mu1, mu_j[i]);               }                 mu_k[j] -= mu1;               conv(MU, mu1);               // cout << j << " " << MU << "\n";                  RowTransform(B(k), B(j), MU);               if (U) RowTransform((*U)(k), (*U)(j), MU);            }         }         if (Fc1) {            for (i = 1; i <= n; i++)               conv(B1[k][i], B(k, i));               b[k] = InnerProduct(B1[k], B1[k], n);            ComputeGS(B, B1, mu, b, c, k, bound, 1, buf);         }      } while (Fc1);      if (check && (*check)(B(k)))          quit = 1;      if (b[k] == 0) {         for (i = k; i < m; i++) {            // swap i, i+1            swap(B(i), B(i+1));            tp = B1[i]; B1[i] = B1[i+1]; B1[i+1] = tp;            t1 = b[i]; b[i] = b[i+1]; b[i+1] = t1;            if (U) swap((*U)(i), (*U)(i+1));         }         for (i = k; i <= m+1; i++) st[i] = 1;         m--;         if (quit) break;         continue;      }      if (quit) break;      if (deep > 0) {         // deep insertions            xdouble cc = b[k];         long l = 1;         while (l <= k-1 && delta*c[l] <= cc) {            cc = cc - mu[k][l]*mu[k][l]*c[l];            l++;         }            if (l <= k-1 && (l <= deep || k-l <= deep)) {            // deep insertion at position l               for (i = k; i > l; i--) {               // swap rows i, i-1               swap(B(i), B(i-1));               tp = B1[i]; B1[i] = B1[i-1]; B1[i-1] = tp;               tp = mu[i]; mu[i] = mu[i-1]; mu[i-1] = tp;               t1 = b[i]; b[i] = b[i-1]; b[i-1] = t1;               if (U) swap((*U)(i), (*U)(i-1));            }               k = l;            continue;         }      } // end deep insertions      // test LLL reduction condition      if (k > 1 && delta*c[k-1] > c[k] + mu[k][k-1]*mu[k][k-1]*c[k-1]) {         // swap rows k, k-1         swap(B(k), B(k-1));         tp = B1[k]; B1[k] = B1[k-1]; B1[k-1] = tp;         tp = mu[k]; mu[k] = mu[k-1]; mu[k-1] = tp;         t1 = b[k]; b[k] = b[k-1]; b[k-1] = t1;         if (U) swap((*U)(k), (*U)(k-1));         k--;         NumSwaps++;         // cout << "- " << k << "\n";      }      else {         k++;         // cout << "+ " << k << "\n";      }   }   if (verbose) {      LLLStatus(m+1, GetTime(), m, B);   }   delete [] buf;   return m;}staticlong LLL_XD(mat_ZZ& B, mat_ZZ* U, xdouble delta, long deep,            LLLCheckFct check){   long m = B.NumRows();   long n = B.NumCols();   long i, j;   long new_m, dep, quit;   xdouble s;   ZZ MU;   xdouble mu1;   xdouble t1;   ZZ T1;   init_red_fudge();   if (U) ident(*U, m);   xdouble **B1;  // approximates B   typedef xdouble *xdoubleptr;   B1 = NTL_NEW_OP xdoubleptr[m+1];   if (!B1) Error("LLL_XD: out of memory");   for (i = 1; i <= m; i++) {      B1[i] = NTL_NEW_OP xdouble[n+1];      if (!B1[i]) Error("LLL_XD: out of memory");   }   xdouble **mu;   mu = NTL_NEW_OP xdoubleptr[m+1];   if (!mu) Error("LLL_XD: out of memory");   for (i = 1; i <= m; i++) {      mu[i] = NTL_NEW_OP xdouble[m+1];      if (!mu[i]) Error("LLL_XD: out of memory");   }   xdouble *c; // squared lengths of Gramm-Schmidt basis vectors   c = NTL_NEW_OP xdouble[m+1];   if (!c) Error("LLL_XD: out of memory");   xdouble *b; // squared lengths of basis vectors   b = NTL_NEW_OP xdouble[m+1];   if (!b) Error("LLL_XD: out of memory");   for (i = 1; i <=m; i++)      for (j = 1; j <= n; j++)          conv(B1[i][j], B(i, j));            for (i = 1; i <= m; i++) {      b[i] = InnerProduct(B1[i], B1[i], n);   }   new_m = ll_LLL_XD(B, U, delta, deep, check, B1, mu, b, c, m, 1, quit);   dep = m - new_m;   m = new_m;   if (dep > 0) {      // for consistency, we move all of the zero rows to the front      for (i = 0; i < m; i++) {         swap(B(m+dep-i), B(m-i));         if (U) swap((*U)(m+dep-i), (*U)(m-i));      }   }   // clean-up   for (i = 1; i <= m; i++) {      delete [] B1[i];   }   delete [] B1;   for (i = 1; i <= m; i++) {      delete [] mu[i];   }   delete [] mu;   delete [] c;   delete [] b;   return m;}         long LLL_XD(mat_ZZ& B, double delta, long deep,             LLLCheckFct check, long verb){   verbose = verb;   NumSwaps = 0;   if (verbose) {      StartTime = GetTime();      LastTime = StartTime;   }   if (delta < 0.50 || delta >= 1) Error("LLL_XD: bad delta");   if (deep < 0) Error("LLL_XD: bad deep");   return LLL_XD(B, 0, to_xdouble(delta), deep, check);}long LLL_XD(mat_ZZ& B, mat_ZZ& U, double delta, long deep,            LLLCheckFct check, long verb){   verbose = verb;   NumSwaps = 0;   if (verbose) {      StartTime = GetTime();      LastTime = StartTime;   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久不卡影院| 国产69精品久久久久毛片| 激情综合亚洲精品| 日本国产一区二区| 国产校园另类小说区| 日韩精品欧美成人高清一区二区| 成人毛片老司机大片| 日韩视频中午一区| 亚洲国产日韩a在线播放性色| 国产一区二区三区四| 欧美久久久久久久久久| 日韩伦理av电影| 国产福利一区在线| 久久久久高清精品| 首页欧美精品中文字幕| 91亚洲国产成人精品一区二三| 精品成人私密视频| 免费人成黄页网站在线一区二区 | 五月天网站亚洲| 色综合天天性综合| 欧美激情在线一区二区三区| 精品一区二区三区在线观看 | 91在线视频18| 国产农村妇女毛片精品久久麻豆 | 美国十次了思思久久精品导航| 91精品1区2区| 一区二区三区在线高清| 99精品久久99久久久久| 综合精品久久久| jlzzjlzz欧美大全| 亚洲婷婷综合久久一本伊一区| 成人精品鲁一区一区二区| 国产精品视频一区二区三区不卡| 国产一区亚洲一区| 国产视频911| 成人性生交大片免费| 欧美国产一区二区| 97精品超碰一区二区三区| 国产精品三级av在线播放| 99视频一区二区| 夜夜嗨av一区二区三区四季av| 欧美性色黄大片| 美日韩一区二区| 久久久久久久久久久久久夜| 国产白丝精品91爽爽久久| 综合久久国产九一剧情麻豆| 色就色 综合激情| 日韩精品欧美精品| 国产亚洲成aⅴ人片在线观看 | 最新成人av在线| 色94色欧美sute亚洲线路一ni| 一区二区免费视频| 欧美一区二区福利视频| 国产米奇在线777精品观看| 国产精品无圣光一区二区| 91免费国产视频网站| 亚洲高清免费在线| 久久综合狠狠综合久久激情 | 国产老妇另类xxxxx| 国产精品国产三级国产aⅴ入口 | 天堂久久一区二区三区| 欧美成人高清电影在线| 成人动漫一区二区在线| 亚洲不卡一区二区三区| 国产精品色在线| 色94色欧美sute亚洲线路一久| 日本中文字幕一区二区视频| 久久精品人人做人人爽人人| 日本精品一区二区三区四区的功能| 日本最新不卡在线| 国产精品久久久99| 日韩亚洲国产中文字幕欧美| 成人黄色av电影| 美腿丝袜一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 国产精品一级片在线观看| 亚洲柠檬福利资源导航| 精品美女一区二区| 91国偷自产一区二区使用方法| 久久成人免费日本黄色| 亚洲国产精品欧美一二99| 久久精品在线免费观看| 91精品久久久久久蜜臀| jlzzjlzz国产精品久久| 国产一区二区三区视频在线播放| 亚洲福利电影网| 国产精品久久久久久久久久久免费看 | 91成人免费网站| 国产成人av电影在线| 日本aⅴ免费视频一区二区三区| 中文成人av在线| 日韩欧美国产一区二区在线播放 | 日韩综合小视频| 亚洲伦理在线精品| 久久免费国产精品| 日韩一区二区三区观看| 欧美色精品在线视频| 99久久精品国产观看| 国产成a人亚洲精品| 国产一区二区三区精品欧美日韩一区二区三区 | 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲成a人v欧美综合天堂| 亚洲视频精选在线| 中文字幕亚洲视频| 国产精品私人影院| 国产精品你懂的在线欣赏| 久久婷婷国产综合精品青草| 日韩欧美一级二级| 日韩精品专区在线影院重磅| 91精品国产91久久久久久一区二区 | 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美日韩黄色影视| 欧美图片一区二区三区| 欧美日韩一区二区三区在线看| 91丨九色porny丨蝌蚪| 97精品久久久午夜一区二区三区| 成人av网址在线观看| 99精品在线观看视频| 99精品久久99久久久久| 一本大道久久a久久综合| 91啪亚洲精品| 欧美日韩中文字幕一区| 欧美日本一区二区| 日韩欧美国产麻豆| 久久久久久久久久看片| 国产精品视频九色porn| 亚洲美女免费视频| 亚洲v中文字幕| 黄页网站大全一区二区| 国产精品18久久久久久vr| heyzo一本久久综合| 色av一区二区| 欧美一区二区三区男人的天堂| 精品伦理精品一区| 欧美国产日韩亚洲一区| 亚洲永久精品大片| 日本美女视频一区二区| 国产盗摄一区二区三区| 91免费国产在线观看| 9191久久久久久久久久久| 精品福利av导航| 亚洲日穴在线视频| 午夜精品福利在线| 国产91在线观看丝袜| 欧美午夜电影一区| 久久久精品tv| 一区二区三区 在线观看视频| 蜜乳av一区二区三区| 91在线视频官网| 日韩一区二区影院| 综合在线观看色| 蜜桃久久久久久| 91热门视频在线观看| 欧美videos中文字幕| 亚洲乱码一区二区三区在线观看| 久久精品国产亚洲aⅴ| 91免费观看国产| 久久精品一区二区三区不卡| 亚洲国产成人av网| 成人性生交大合| 欧美电视剧免费观看| 亚洲欧美日韩小说| 国产福利视频一区二区三区| 欧美精品丝袜中出| 亚洲欧洲国产日韩| 国产一区二区h| 91精品国产综合久久香蕉的特点| 国产精品久久久久影视| 麻豆成人免费电影| 欧美日韩在线播| 国产精品久久久久久久久免费樱桃| 麻豆精品视频在线观看视频| 色国产综合视频| 中文字幕国产一区| 久热成人在线视频| 欧美精品乱码久久久久久按摩| 亚洲欧洲精品一区二区三区不卡| 久久av资源站| 91.com视频| 亚洲尤物在线视频观看| av电影在线不卡| 国产亚洲欧美一区在线观看| 美女视频黄免费的久久| 69堂国产成人免费视频| 亚洲aⅴ怡春院| 欧美性色欧美a在线播放| 一区二区三区高清不卡| 欧美在线啊v一区| 亚洲欧美国产77777| thepron国产精品| 国产欧美一区二区精品久导航 | 欧美视频在线一区| 亚洲免费色视频| 色综合天天综合网国产成人综合天 | 精品视频一区二区不卡| 亚洲与欧洲av电影| 欧美日韩在线播放三区四区| 亚洲综合自拍偷拍| 在线亚洲一区二区| 一区二区三区日韩欧美精品|