亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品天干天干在观线| 欧美性色aⅴ视频一区日韩精品| 亚洲成人精品一区| 亚洲欧美一区二区三区国产精品| 亚洲欧洲www| 亚洲欧美日韩在线不卡| 亚洲精品日韩一| 亚洲精品国产视频| 亚洲五码中文字幕| 天天综合色天天| 美腿丝袜亚洲一区| 国内精品视频666| 国产毛片精品国产一区二区三区| 成人一级片在线观看| 99久久婷婷国产综合精品| 欧美在线看片a免费观看| 91麻豆国产福利精品| 欧美性受极品xxxx喷水| 日韩你懂的在线播放| 精品国产成人在线影院| 久久久久久毛片| 亚洲丝袜另类动漫二区| 婷婷综合另类小说色区| 国产在线精品一区二区三区不卡 | 91亚洲资源网| 色悠悠久久综合| 91精品一区二区三区久久久久久| 日韩精品一区二区三区四区视频 | 欧美一区二区三区四区高清| 日韩视频免费观看高清完整版在线观看| 日韩一区二区中文字幕| 国产精品天干天干在观线| 亚洲午夜久久久久| 国产91精品在线观看| 欧美自拍丝袜亚洲| 久久久久免费观看| 亚洲一区在线电影| 高潮精品一区videoshd| 欧美日韩一级片在线观看| 久久综合资源网| 亚洲bdsm女犯bdsm网站| 成人一级黄色片| 91精品国模一区二区三区| 亚洲国产高清aⅴ视频| 日韩成人伦理电影在线观看| www.欧美.com| 久久精品视频一区二区| 午夜精品久久久久久久蜜桃app| 高清国产一区二区| 欧美高清一级片在线| 一色屋精品亚洲香蕉网站| 精品一区在线看| 精品国产3级a| 亚洲一区二区在线观看视频| 国产成人午夜视频| 欧美成人精品1314www| 亚洲一区中文日韩| 91丨九色porny丨蝌蚪| 久久先锋影音av| 麻豆91精品视频| 欧美另类高清zo欧美| 一区二区三区日本| 91麻豆自制传媒国产之光| 中文字幕成人网| 国产精品资源在线| 久久老女人爱爱| 国产一区二区三区四区五区美女| 欧美大黄免费观看| 男女视频一区二区| 欧美一级黄色片| 蜜臀久久99精品久久久久久9| 欧美揉bbbbb揉bbbbb| 亚洲综合免费观看高清在线观看| 色诱亚洲精品久久久久久| 亚洲日本青草视频在线怡红院| 菠萝蜜视频在线观看一区| 欧美激情综合在线| 不卡视频一二三| 亚洲日本在线a| 欧美主播一区二区三区| 丝瓜av网站精品一区二区| 在线电影欧美成精品| 美女视频第一区二区三区免费观看网站| 555夜色666亚洲国产免| 麻豆中文一区二区| 久久久精品人体av艺术| 国产很黄免费观看久久| 国产精品每日更新| 欧美在线999| 肉色丝袜一区二区| 欧美成人乱码一区二区三区| 国产成人精品免费视频网站| 国产精品久久久久久久久久免费看| 99精品国产91久久久久久| 一区二区三区日本| 国产欧美精品国产国产专区| 丰满亚洲少妇av| 亚洲人成7777| 欧美一区午夜视频在线观看| 国产一区二区三区在线观看免费| 国产精品久久久久影院亚瑟| 欧美性做爰猛烈叫床潮| 久久精品国产亚洲高清剧情介绍| 中文在线资源观看网站视频免费不卡 | 亚洲欧美激情小说另类| 欧美性受极品xxxx喷水| 国产一区二区精品久久| 亚洲欧美视频在线观看| 欧美成人a∨高清免费观看| 成人综合婷婷国产精品久久免费| 亚洲在线观看免费视频| 精品久久久久久久一区二区蜜臀| 91老师国产黑色丝袜在线| 人人精品人人爱| 综合色天天鬼久久鬼色| 日韩视频免费观看高清完整版在线观看 | 国产一区欧美日韩| 亚洲一区二区3| 国产精品无码永久免费888| 欧美美女激情18p| 97久久超碰国产精品| 久久激五月天综合精品| 亚洲午夜在线视频| 国产性色一区二区| 欧美一区二区三区免费观看视频| 91香蕉视频在线| 国产高清久久久| 久久爱www久久做| 日韩va欧美va亚洲va久久| 亚洲男人的天堂网| 国产精品入口麻豆九色| 日韩天堂在线观看| 欧美日韩在线直播| 欧美日韩一区二区三区高清| 成人免费视频视频在线观看免费 | www国产成人免费观看视频 深夜成人网| 在线观看亚洲a| av在线不卡免费看| 国产福利一区二区三区视频在线 | 91香蕉视频mp4| a美女胸又www黄视频久久| 国产精品99久久久久| 蜜臀a∨国产成人精品| 亚洲动漫第一页| 亚洲一区二区中文在线| 亚洲一区日韩精品中文字幕| 亚洲精品高清在线观看| 亚洲精品写真福利| 亚洲欧美日韩国产综合| 亚洲麻豆国产自偷在线| 综合激情网...| 综合欧美亚洲日本| 亚洲欧美日韩在线| 亚洲宅男天堂在线观看无病毒| 亚洲摸摸操操av| 樱桃国产成人精品视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品麻豆欧美日韩ww| 中文字幕乱码日本亚洲一区二区 | 亚洲精品视频在线| 亚洲一区二区三区四区不卡| 一二三区精品福利视频| 五月天亚洲婷婷| 美腿丝袜亚洲一区| 狠狠色丁香久久婷婷综合_中| 国产精品中文欧美| 成人性生交大合| 91视频免费观看| 欧美三片在线视频观看| 欧美一区二区三区四区五区| 欧美精品一区二区三区在线| 中文字幕久久午夜不卡| 一区二区三区日韩欧美| 日本午夜精品一区二区三区电影| 久久精品久久精品| 成人精品电影在线观看| 欧美日韩免费视频| 亚洲精品一区二区三区福利| 中文字幕免费一区| 亚洲高清不卡在线| 国产精品123| 91福利在线观看| 日韩欧美在线一区二区三区| 中文字幕不卡在线观看| 午夜精品久久久久久久久久| 国产成人免费视频精品含羞草妖精| 97se亚洲国产综合自在线观| 欧美一区二区精美| 中文字幕 久热精品 视频在线| 亚洲成人激情av| 成人精品视频一区二区三区| 欧美日韩国产成人在线免费| 久久久久久**毛片大全| 亚洲国产综合人成综合网站| 国产精品1区二区.| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久影院亚瑟| 美女www一区二区| 欧美怡红院视频| 国产精品女人毛片|