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

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

?? zz_p.cpp

?? 大數運算類
?? CPP
字號:


#include <NTL/ZZ_p.h>
#include <NTL/FFT.h>

#include <NTL/new.h>


NTL_START_IMPL


ZZ_pInfoT::ZZ_pInfoT(const ZZ& NewP)
{
   if (NewP <= 1) Error("ZZ_pContext: p must be > 1");

   ref_count = 1;
   p = NewP;
   size = p.size();

   ExtendedModulusSize = 2*size + 
                 (NTL_BITS_PER_LONG + NTL_ZZ_NBITS - 1)/NTL_ZZ_NBITS;

   initialized = 0;
   x = 0;
   u = 0;
   tbl = 0;
   tbl1 = 0;

   long i;
   for (i = 0; i < MAX_ZZ_p_TEMPS; i++)
      temps[i] = 0;

   temps_top = 0;
}



void ZZ_pInfoT::init()
{
   ZZ B, M, M1, M2, M3;
   long n, i;
   long q, t;

   initialized = 1;

   sqr(B, p);

   LeftShift(B, B, NTL_FFTMaxRoot+NTL_FFTFudge);

   set(M);
   n = 0;
   while (M <= B) {
      UseFFTPrime(n);
      q = FFTPrime[n];
      n++;
      mul(M, M, q);
   }

   NumPrimes = n;
   MaxRoot = CalcMaxRoot(q);


   double fn = double(n);

   if (8.0*fn*(fn+32) > NTL_FDOUBLE_PRECISION)
      Error("modulus too big");


   if (8.0*fn*(fn+32) > NTL_FDOUBLE_PRECISION/double(NTL_SP_BOUND))
      QuickCRT = 0;
   else
      QuickCRT = 1;


   if (!(x = (double *) NTL_MALLOC(n, sizeof(double), 0)))
      Error("out of space");

   if (!(u = (long *) NTL_MALLOC(n,  sizeof(long), 0)))
      Error("out of space");

   ZZ_p_rem_struct_init(&rem_struct, n, p, FFTPrime);

   ZZ_p_crt_struct_init(&crt_struct, n, p, FFTPrime);

   if (ZZ_p_crt_struct_special(crt_struct)) return;

   ZZ qq, rr;

   DivRem(qq, rr, M, p);

   NegateMod(MinusMModP, rr, p);

   for (i = 0; i < n; i++) {
      q = FFTPrime[i];

      long tt = rem(qq, q);

      mul(M2, p, tt);
      add(M2, M2, rr); 
      div(M2, M2, q);  // = (M/q) rem p
      

      div(M1, M, q);
      t = rem(M1, q);
      t = InvMod(t, q);

      mul(M3, M2, t);
      rem(M3, M3, p);

      ZZ_p_crt_struct_insert(crt_struct, i, M3);


      x[i] = ((double) t)/((double) q);
      u[i] = t;
   }
}



ZZ_pInfoT::~ZZ_pInfoT()
{
   long i;

   for (i = 0; i < MAX_ZZ_p_TEMPS; i++)
      if (temps[i]) delete temps[i];

   if (initialized) {
      ZZ_p_rem_struct_free(rem_struct);
      ZZ_p_crt_struct_free(crt_struct);

      free(x);
      free(u);
   }
}


ZZ_pInfoT *ZZ_pInfo = 0; 

typedef ZZ_pInfoT *ZZ_pInfoPtr;


static 
void CopyPointer(ZZ_pInfoPtr& dst, ZZ_pInfoPtr src)
{
   if (src == dst) return;

   if (dst) {
      dst->ref_count--;

      if (dst->ref_count < 0) 
         Error("internal error: negative ZZ_pContext ref_count");

      if (dst->ref_count == 0) delete dst;
   }

   if (src) {
      if (src->ref_count == NTL_MAX_LONG)
         Error("internal error: ZZ_pContext ref_count overflow");

      src->ref_count++;
   }

   dst = src;
}
   


void ZZ_p::init(const ZZ& p)
{
   ZZ_pContext c(p);
   c.restore();
}


ZZ_pContext::ZZ_pContext(const ZZ& p)
{
   ptr = NTL_NEW_OP ZZ_pInfoT(p);
}

ZZ_pContext::ZZ_pContext(const ZZ_pContext& a)
{
   ptr = 0;
   CopyPointer(ptr, a.ptr);
}

ZZ_pContext& ZZ_pContext::operator=(const ZZ_pContext& a)
{
   CopyPointer(ptr, a.ptr);
   return *this;
}


ZZ_pContext::~ZZ_pContext()
{
   CopyPointer(ptr, 0);
}

void ZZ_pContext::save()
{
   CopyPointer(ptr, ZZ_pInfo);
}

void ZZ_pContext::restore() const
{
   CopyPointer(ZZ_pInfo, ptr);
}



ZZ_pBak::~ZZ_pBak()
{
   if (MustRestore)
      CopyPointer(ZZ_pInfo, ptr);

   CopyPointer(ptr, 0);
}

void ZZ_pBak::save()
{
   MustRestore = 1;
   CopyPointer(ptr, ZZ_pInfo);
}


void ZZ_pBak::restore()
{
   MustRestore = 0;
   CopyPointer(ZZ_pInfo, ptr);
}


ZZ_pTemp::ZZ_pTemp()
{
   if (ZZ_pInfo->temps_top == MAX_ZZ_p_TEMPS)
      Error("ZZ_p temporary: out of temps");

   pos = ZZ_pInfo->temps_top;
   ZZ_pInfo->temps_top++;
}

ZZ_pTemp::~ZZ_pTemp()
{
   ZZ_pInfo->temps_top--;
}

ZZ_p& ZZ_pTemp::val() const
{
   if (!ZZ_pInfo->temps[pos]) 
      ZZ_pInfo->temps[pos] = NTL_NEW_OP ZZ_p;

   return *(ZZ_pInfo->temps[pos]);
}




const ZZ_p& ZZ_p::zero()
{
   static ZZ_p z(ZZ_p_NoAlloc);
   return z;
}

ZZ_p::DivHandlerPtr ZZ_p::DivHandler = 0;

ZZ_p::ZZ_p()
{
   _ZZ_p__rep.SetSize(ModulusSize());
}
   

ZZ_p::ZZ_p(INIT_VAL_TYPE, const ZZ& a) 
{
   _ZZ_p__rep.SetSize(ModulusSize());
   conv(*this, a);
} 

ZZ_p::ZZ_p(INIT_VAL_TYPE, long a)
{
   _ZZ_p__rep.SetSize(ModulusSize());
   conv(*this, a);
}


void conv(ZZ_p& x, long a)
{
   if (a == 0)
      clear(x);
   else if (a == 1)
      set(x);
   else {
      static ZZ y;

      conv(y, a);
      conv(x, y);
   }
}

istream& operator>>(istream& s, ZZ_p& x)
{
   static ZZ y;

   s >> y;
   conv(x, y);

   return s;
}

void div(ZZ_p& x, const ZZ_p& a, const ZZ_p& b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val(); 

   inv(T, b);
   mul(x, a, T);
}

void inv(ZZ_p& x, const ZZ_p& a)
{
   if (InvModStatus(x._ZZ_p__rep, a._ZZ_p__rep, ZZ_p::modulus())) {
      if (IsZero(a._ZZ_p__rep))
         Error("ZZ_p: division by zero");
      else if (ZZ_p::DivHandler)
         (*ZZ_p::DivHandler)(a);
      else
         Error("ZZ_p: division by non-invertible element");
   }
}

long operator==(const ZZ_p& a, long b)
{
   if (b == 0)
      return IsZero(a);

   if (b == 1)
      return IsOne(a);

   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, b);
   return a == T;
}



void add(ZZ_p& x, const ZZ_p& a, long b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, b);
   add(x, a, T);
}

void sub(ZZ_p& x, const ZZ_p& a, long b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, b);
   sub(x, a, T);
}

void sub(ZZ_p& x, long a, const ZZ_p& b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, a);
   sub(x, T, b);
}

void mul(ZZ_p& x, const ZZ_p& a, long b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, b);
   mul(x, a, T);
}

void div(ZZ_p& x, const ZZ_p& a, long b)
{
   ZZ_pTemp TT; ZZ_p& T = TT.val();
   conv(T, b);
   div(x, a, T);
}

void div(ZZ_p& x, long a, const ZZ_p& b)
{
   if (a == 1) {
      inv(x, b);
   }
   else {
      ZZ_pTemp TT; ZZ_p& T = TT.val();
      conv(T, a);
      div(x, T, b);
   }
}

NTL_END_IMPL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品777| 韩国av一区二区三区在线观看| 欧美精品国产精品| 国产成人免费视频一区| 日韩电影免费在线| 亚洲三级在线观看| 国产女人18毛片水真多成人如厕 | 在线免费亚洲电影| 高清在线成人网| 蜜桃久久久久久| 香蕉乱码成人久久天堂爱免费| 国产精品高清亚洲| 久久久久久久久99精品| 日韩一级视频免费观看在线| 精品视频123区在线观看| 91网址在线看| www.欧美日韩国产在线| 国产.欧美.日韩| 国产精品99久久久久久久女警| 久久精品国产精品青草| 日本中文一区二区三区| 性做久久久久久久久| 玉足女爽爽91| 一区二区在线免费观看| 1024国产精品| 亚洲视频在线观看三级| 中文字幕一区二区三区乱码在线| 久久九九久久九九| 国产色产综合产在线视频| 欧美精品一区二区精品网| 欧美mv日韩mv国产网站| 欧美va亚洲va在线观看蝴蝶网| 欧美一区二区免费观在线| 欧美日韩成人在线| 欧美精品日韩精品| 91.xcao| 欧美猛男gaygay网站| 欧美日韩一区高清| 欧美精品日韩综合在线| 日韩一级大片在线观看| 日韩你懂的在线播放| 欧美白人最猛性xxxxx69交| 26uuu久久天堂性欧美| 久久久99久久| 国产精品毛片a∨一区二区三区| 亚洲国产经典视频| 亚洲视频每日更新| 一区二区三区在线播| 五月综合激情网| 麻豆国产精品777777在线| 狠狠色狠狠色综合系列| 国产麻豆精品久久一二三| 成人av资源网站| 欧美性色黄大片手机版| 51久久夜色精品国产麻豆| 日韩欧美视频在线| 欧美国产欧美综合| 亚洲成人在线免费| 日韩一区中文字幕| 亚洲第一会所有码转帖| 亚洲精品视频在线观看免费| 欧美成人video| 日韩久久久精品| 亚洲国产精品精华液ab| 在线不卡一区二区| 欧美日韩国产美女| 2014亚洲片线观看视频免费| 国产精品一区二区在线观看网站| 国产98色在线|日韩| 色视频成人在线观看免| 欧美日韩精品久久久| 久久免费偷拍视频| 亚洲免费电影在线| 精品一区二区精品| 91猫先生在线| xnxx国产精品| 亚洲一区二区三区四区在线观看| 免费不卡在线观看| 一本一道久久a久久精品| 精品理论电影在线观看| 综合久久久久综合| 美国精品在线观看| 91免费视频大全| 欧美成人一区二区三区| 亚洲精品五月天| 国产大陆精品国产| 91精品在线麻豆| 亚洲摸摸操操av| 国产酒店精品激情| 欧美精品tushy高清| 亚洲欧洲国产专区| 国内精品视频一区二区三区八戒| 日本韩国欧美一区| 欧美激情一区二区三区四区| 日韩av在线发布| 91丨九色丨蝌蚪丨老版| 久久久一区二区三区| 婷婷开心激情综合| 91色porny在线视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲一区av在线| 99视频国产精品| 久久久久久久久97黄色工厂| 日韩国产在线观看| 在线观看欧美精品| 中文字幕中文字幕在线一区| 韩国av一区二区三区四区| 91麻豆精品国产自产在线 | 91黄视频在线观看| 国产偷v国产偷v亚洲高清| 青青草精品视频| 欧美日韩专区在线| 一区二区在线观看不卡| 成人av在线资源网| 国产精品污污网站在线观看| 国内成人免费视频| 精品伦理精品一区| 久久成人免费网站| 日韩欧美国产三级电影视频| 日本中文字幕不卡| 3751色影院一区二区三区| 亚洲成人1区2区| 欧美三级视频在线播放| 亚洲综合男人的天堂| 色视频成人在线观看免| 夜夜揉揉日日人人青青一国产精品| 成人av动漫在线| 亚洲天堂中文字幕| 972aa.com艺术欧美| 中文字幕在线观看一区二区| 成人一区二区三区视频| 久久国产视频网| 日韩一区二区在线观看视频播放| 亚洲v精品v日韩v欧美v专区| 欧美日韩不卡一区二区| 日本人妖一区二区| 欧美一卡二卡三卡| 黑人巨大精品欧美一区| www精品美女久久久tv| 国产精品中文字幕欧美| 欧美国产激情一区二区三区蜜月| 大尺度一区二区| 一区视频在线播放| 欧美自拍偷拍一区| 亚洲成人av中文| 日韩精品一区二区三区视频播放 | 欧美一级二级在线观看| 久久精品99国产精品日本| 久久男人中文字幕资源站| 成人禁用看黄a在线| 亚洲欧美怡红院| 欧洲精品在线观看| 日韩1区2区日韩1区2区| 精品第一国产综合精品aⅴ| 国产经典欧美精品| 亚洲私人黄色宅男| 欧美日韩国产综合草草| 久久99久国产精品黄毛片色诱| 亚洲精品一区二区三区福利| 成人免费av在线| 亚洲综合男人的天堂| 欧美mv和日韩mv的网站| 成人av高清在线| 天堂午夜影视日韩欧美一区二区| 精品国产乱码久久久久久闺蜜| 国产69精品久久久久777| 一区二区在线观看不卡| 欧美v日韩v国产v| 91片在线免费观看| 美国欧美日韩国产在线播放| 国产精品每日更新| 91超碰这里只有精品国产| 国产精品亚洲专一区二区三区 | 天天操天天色综合| 国产亚洲1区2区3区| 欧美自拍偷拍午夜视频| 极品少妇xxxx精品少妇偷拍| 综合色中文字幕| 欧美xxxx在线观看| 在线观看91视频| 国产另类ts人妖一区二区| 亚洲夂夂婷婷色拍ww47| 国产日产欧美一区二区视频| 欧美三区在线观看| 成人一区二区三区视频| 日本强好片久久久久久aaa| 亚洲人成人一区二区在线观看 | 亚洲综合999| 国产女人18毛片水真多成人如厕 | 日本v片在线高清不卡在线观看| 国产精品久久久久久久蜜臀| 欧美日本在线一区| 91蜜桃在线免费视频| 狠狠色综合色综合网络| 香蕉影视欧美成人| 综合久久久久综合| 中文字幕精品—区二区四季| 3d动漫精品啪啪1区2区免费| 色综合久久久网| 99久久综合国产精品|