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

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

?? c_lip_impl.h

?? 一個比較通用的大數運算庫
?? H
?? 第 1 頁 / 共 5 頁
字號:
      }

      if (sa < sb) {
         i = sa;
         maxab = sb;
      }
      else {
         i = sb;
         maxab = sa;
      }

      if (MustAlloc(c, maxab+1)) {
         _ntl_zsetlength(&c, maxab + 1);
         if (a_alias) a = c; 
         if (b_alias) b = c; 
         *cc = c;
      }

      pc = c;
      carry = 0;

      do {
         long t = (*(++a)) + (*(++b)) + carry;
         carry = t >> NTL_NBITS;
         *(++pc) = t & NTL_RADIXM;
         i--;
      } while (i);

      i = sa-sb;
      if (!i) goto i_exit;

      if (i < 0) {
         i = -i;
         a = b;
      }

      if (!carry) goto carry_exit;

      for (;;) {
         long t = (*(++a)) + 1;
         carry = t >> NTL_NBITS;
         *(++pc) = t & NTL_RADIXM;
         i--;
         if (!i) goto i_exit;
         if (!carry) goto carry_exit;
      }

      i_exit:
      if (carry) {
         *(++pc) = 1;
         maxab++;
      }
      *c = anegative ? -maxab : maxab;
      return;

      carry_exit:
      if (pc != a) {
         do {
            *(++pc) = *(++a);
            i--;
         } while (i);
      }
      *c = anegative ? -maxab : maxab;
   }
   else {
      /* signs a and b are different...use _ntl_zsub */

      if (anegative) {
         a[0] = -sa;
         _ntl_zsub(b, a, cc);
         if (!a_alias) a[0] = sa;
      }
      else {
         b[0] = -sb;
         _ntl_zsub(a, b, cc);
         if (!b_alias) b[0] = sb;
      }
   }
}

void
_ntl_zsub(_ntl_verylong a, _ntl_verylong b, _ntl_verylong *cc)
{
   long sa;
   long sb;
   long anegative;
   long a_alias, b_alias;
   _ntl_verylong c;

   if (!b) {
      if (a)
         _ntl_zcopy(a, cc);
      else
         _ntl_zzero(cc);
      return;
   }

   if (!a) {
      _ntl_zcopy(b, cc);
      _ntl_znegate(cc);
      return;
   }

   c = *cc;
   a_alias = (a == c);
   b_alias = (b == c);

   if ((anegative = ((sa = a[0]) < 0)) == ((sb = b[0]) < 0)) {
      /* signs agree */

      long i, carry, *pc;

      if (anegative) {
         sa = -sa;
         sb = -sb;
      }

      carry = sa - sb;
      if (!carry) {
         long *aa = a + sa;
         long *bb = b + sa;
         
         i = sa;
         while (i && !(carry = (*aa - *bb))) {
            aa--; bb--; i--;
         }
      }

      if (!carry) {
         _ntl_zzero(cc);
         return;
      }

      if (carry < 0) {
         { long t = sa; sa = sb; sb = t; }
         { long t = a_alias; a_alias = b_alias; b_alias = t; }
         { long *t = a; a = b; b = t; }
         anegative = !anegative;
      }

      if (MustAlloc(c, sa)) {
         _ntl_zsetlength(&c, sa);
         /* must have !a_alias */
         if (b_alias) b = c;
         *cc = c;
      }

      i = sb;
      carry = 0;
      pc = c;

      do {
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
         long t = (*(++a)) - (*(++b)) - carry;
         carry = (t < 0);
#else
         long t = (*(++a)) - (*(++b)) + carry;
         carry = t >> NTL_NBITS;
#endif
         *(++pc) = t & NTL_RADIXM;
         i--;
      } while (i);

      i = sa-sb;
      while (carry) {
         long t = (*(++a)) - 1;
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
         carry = (t < 0);
#else
         carry = t >> NTL_NBITS;
#endif
         *(++pc) = t & NTL_RADIXM;
         i--;
      }

      if (i) {
         if (pc != a) {
            do {
               *(++pc) = *(++a);
               i--;
            } while (i);
         }
      }
      else {
         while (sa > 1 && *pc == 0) { sa--; pc--; } 
      }

      if (anegative) sa = -sa;
      *c = sa;
   }
   else {
      /* signs of a and b are different...use _ntl_zadd */

      if (anegative) {
         a[0] = -sa;
         _ntl_zadd(a, b, cc);
         if (!a_alias) a[0] = sa;
         c = *cc;
         c[0] = -c[0];
      }
      else {
         b[0] = -sb;
         _ntl_zadd(a, b, cc);
         if (!b_alias) b[0] = sb;
      }
   }
}


void
_ntl_zsmul(_ntl_verylong a, long d, _ntl_verylong *bb)
{
   long sa;
   long anegative, bnegative;
   _ntl_verylong b;
   long a_alias;


   if (d == 2) {
      _ntl_z2mul(a, bb);
      return;
   }


   if ((d >= NTL_RADIX) || (d <= -NTL_RADIX)) {
      static _ntl_verylong x = 0;
      _ntl_zintoz(d,&x);
      _ntl_zmul(a, x, bb);
      return;
   }

   if (!a || (a[0] == 1 && a[1] == 0)) {
      _ntl_zzero(bb);
      return;
   }

   if (!d) {
      _ntl_zzero(bb);
      return;
   }

   /* both inputs non-zero */

   anegative = 0;
   bnegative = 0;

   if ((sa = a[0]) < 0) {
      anegative = 1;
      a[0] = sa = (-sa);
      if (d < 0)
         d = (-d);
      else
         bnegative = 1;
   }
   else if (bnegative = (d < 0))
      d = (-d);

   b = *bb;
   a_alias = (a == b);

   if (MustAlloc(b, sa + 1)) {
      _ntl_zsetlength(&b, sa + 1);
      if (a_alias) a = b;
      *bb = b;
   }

   zsxmul(d, b+1, a);

   sa++;
   while ((sa > 1) && (!(b[sa])))
      sa--;
   b[0] = sa;

   if (bnegative)
      b[0] = (-b[0]);

   if (anegative && !a_alias)
      a[0] = -a[0];
}

void _ntl_zsubpos(_ntl_verylong a, _ntl_verylong b, _ntl_verylong *cc)
{
   long sa;
   long sb;

   long *c, *pc;
   long i, carry;

   long b_alias;

   if (!b) {
      if (a)
         _ntl_zcopy(a, cc);
      else
         _ntl_zzero(cc);
      return;
   }

   if (!a) {
      _ntl_zzero(cc);
      return;
   }

   sa = a[0];
   sb = b[0];

   c = *cc;
   b_alias = (b == c);

   if (MustAlloc(c, sa)) {
      _ntl_zsetlength(&c, sa);
      if (b_alias) b = c;
      *cc = c;
   }

   i = sb;
   carry = 0;
   pc = c;

   while (i) {
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
      long t = (*(++a)) - (*(++b)) - carry;
      carry = (t < 0);
#else
      long t = (*(++a)) - (*(++b)) + carry;
      carry = t >> NTL_NBITS;
#endif
      *(++pc) = t & NTL_RADIXM;
      i--;
   }

   i = sa-sb;
   while (carry) {
      long t = (*(++a)) - 1;
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
      carry = (t < 0);
#else
      carry = t >> NTL_NBITS;
#endif
      *(++pc) = t & NTL_RADIXM;
      i--;
   }

   if (i) {
      if (pc != a) {
         do {
            *(++pc) = *(++a);
            i--;
         } while (i);
      }
   }
   else {
      while (sa > 1 && *pc == 0) { sa--; pc--; } 
   }

   *c = sa;
}





static long *kmem = 0;     /* globals for Karatsuba */
static long max_kmem = 0;


/* These cross-over points were estimated using
   a Sparc-10, a Sparc-20, and a Pentium-90. */

#if (defined(NTL_SINGLE_MUL))
#define KARX (18)
#else
#define KARX (16) 
#endif

/* Auxilliary routines for Karatsuba */


static
void kar_fold(long *T, long *b, long hsa)
{
   long sb, *p2, *p3, i, carry;

   sb = *b;
   p2 = b + hsa;
   p3 = T;
   carry = 0;

   for (i = sb-hsa; i>0; i--) {
      long t = (*(++b)) + (*(++p2)) + carry;
      carry = t >> NTL_NBITS;
      *(++p3) = t & NTL_RADIXM;
   }

   for (i = (hsa << 1) - sb; i>0; i--) {
      long t = (*(++b)) + carry;
      carry = t >> NTL_NBITS;
      *(++p3) = t & NTL_RADIXM;
   }

   if (carry) {
      *(++p3) = carry;
      *T = hsa + 1;
   }
   else
      *T = hsa;
}

static
void kar_sub(long *T, long *c)
{
   long i, carry;

   i = *c;
   carry = 0;

   while (i>0) {
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
      long t = (*(++T)) - (*(++c)) - carry;
      carry = (t < 0);
#else
      long t = (*(++T)) - (*(++c)) + carry;
      carry = t >> NTL_NBITS;
#endif
      *T = t & NTL_RADIXM;
      i--;
   }

   while (carry) {
      long t = (*(++T)) - 1;
#if (!NTL_ARITH_RIGHT_SHIFT || defined(NTL_CLEAN_INT))
      carry = (t < 0);
#else
      carry = t >> NTL_NBITS;
#endif
      *T = t & NTL_RADIXM;
   }
}


static
void kar_add(long *c, long *T, long hsa)
{
   long i, carry;

   c += hsa;
   i = *T;
   while (T[i] == 0 && i > 0) i--;
   carry = 0;

   while (i>0) {
      long t = (*(++c)) + (*(++T)) + carry;
      carry = t >> NTL_NBITS;
      *c = t & NTL_RADIXM;
      i--;
   }

   while (carry) {
      long t = (*(++c)) + 1;
      carry = t >> NTL_NBITS;
      *c = t & NTL_RADIXM;
   }
}

static
void kar_fix(long *c, long *T, long hsa)
{
   long i, carry, s;

   s = *T;

   i = hsa;
   while (i>0) {
      *(++c) = *(++T);
      i--;
   }


   i = s - hsa;
   carry = 0;

   while (i > 0) {
      long t = (*(++c)) + (*(++T)) + carry;
      carry = t >> NTL_NBITS;
      *c = t & NTL_RADIXM;
      i--;
   }

   while (carry) {
      long t = (*(++c)) + 1;
      carry = t >> NTL_NBITS;
      *c = t & NTL_RADIXM;
   }
}
      
   

static
void kar_mul(long *c, long *a, long *b, long *stk)
{
   long sa, sb, sc;

   if (*a < *b) { long *t = a; a = b; b = t; }

   sa = *a;
   sb = *b;
   sc = sa + sb;

   if (sb < KARX) {
      /* classic algorithm */

      long *pc, i, *pb;

      pc = c;
      for (i = sc; i; i--) {
         pc++;
         *pc = 0;
      }
   
      pc = c;
      pb = b;
      for (i = sb; i; i--) {
         pb++;
         pc++;
         zaddmul(*pb, pc, a);
      }
   }
   else {
      long hsa = (sa + 1) >> 1;

      if (hsa < sb) {
         /* normal case */

         long *T1, *T2, *T3;

         /* allocate space */

         T1 = stk;  stk += hsa + 2;
         T2 = stk;  stk += hsa + 2;
         T3 = stk;  stk += (hsa << 1) + 3;

         if (stk-kmem > max_kmem) zhalt("internal error: kmem overflow");

         /* compute T1 = a_lo + a_hi */

         kar_fold(T1, a, hsa);

         /* compute T2 = b_lo + b_hi */

         kar_fold(T2, b, hsa);
         
         /* recursively compute T3 = T1 * T2 */

         kar_mul(T3, T1, T2, stk);

         /* recursively compute a_hi * b_hi into high part of c */
         /* and subtract from T3 */

         {
            long olda, oldb;

            olda = a[hsa];  a[hsa] = sa-hsa;
            oldb = b[hsa];  b[hsa] = sb-hsa;

            kar_mul(c + (hsa << 1), a + hsa, b + hsa, stk);
            kar_sub(T3, c + (hsa << 1));

            a[hsa] = olda;
            b[hsa] = oldb;
         }

         /* recursively compute a_lo*b_lo into low part of c */
         /* and subtract from T3 */

         *a = hsa;
         *b = hsa;

         kar_mul(c, a, b, stk);
         kar_sub(T3, c);

         *a = sa;
         *b = sb;

         /* finally, add T3 * NTL_RADIX^{hsa} to c */

         kar_add(c, T3, hsa);
      }
      else {
         /* degenerate case */

         long *T;
         
         T = stk;  stk += sb + hsa + 1;

         if (stk-kmem > max_kmem) zhalt("internal error: kmem overflow");

         /* recursively compute b*a_hi into high part of c */
         {
            long olda;

            olda = a[hsa];  a[hsa] = sa-hsa;
            kar_mul(c + hsa, a + hsa, b, stk);
            a[hsa] = olda;
         }

         /* recursively compute b*a_lo into T 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色av电影| 久久九九99视频| 日韩欧美一二区| 日韩写真欧美这视频| 精品久久五月天| 国产精品毛片久久久久久久 | 国产精品一区二区久久精品爱涩| 99久久婷婷国产| 在线电影院国产精品| 国产欧美一区二区三区鸳鸯浴 | 99久久精品国产观看| 欧美狂野另类xxxxoooo| 国产视频一区二区在线| 亚洲综合激情小说| 老司机精品视频在线| 色综合视频一区二区三区高清| 91精品福利在线一区二区三区| 日本乱码高清不卡字幕| 欧美成人a视频| 亚洲欧美综合网| 久久国产三级精品| 在线观看欧美日本| 精品国产乱码久久久久久牛牛| 国产精品不卡视频| 免费人成精品欧美精品| 97se狠狠狠综合亚洲狠狠| 欧美大片在线观看一区二区| 自拍av一区二区三区| 麻豆精品视频在线观看免费| www.亚洲在线| 2023国产精品自拍| 婷婷开心激情综合| 99久久精品国产一区二区三区| 日韩一区二区三区高清免费看看 | 色乱码一区二区三区88| 久久在线观看免费| 亚欧色一区w666天堂| 99久久777色| 久久精品日产第一区二区三区高清版| 亚洲高清一区二区三区| av电影在线观看不卡| 久久久久久久综合狠狠综合| av在线播放不卡| 精品日韩在线观看| 午夜电影一区二区| 色婷婷综合久久久中文一区二区 | 成人激情小说乱人伦| 26uuu久久综合| 男人的天堂亚洲一区| 精品视频一区二区不卡| 日韩美女视频一区| 成人免费av资源| 久久久久久久久久久99999| 蜜臀av性久久久久蜜臀av麻豆| 欧美影院一区二区三区| 日韩码欧中文字| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩亚洲欧美成人一区| 天堂va蜜桃一区二区三区| 色菇凉天天综合网| 亚洲视频一区二区在线观看| 成人精品国产免费网站| 国产亚洲一二三区| 国产精品一级片| 久久久久久久久久久久久女国产乱| 麻豆freexxxx性91精品| 日韩欧美视频在线| 欧美96一区二区免费视频| 欧美一区二区三区视频在线观看| 午夜天堂影视香蕉久久| 欧美三级电影在线观看| 亚洲高清免费观看| 日本精品视频一区二区| 亚洲综合偷拍欧美一区色| 色综合久久精品| 亚洲欧洲综合另类在线| 日本韩国一区二区三区视频| 亚洲一区二区三区四区五区黄 | 天天综合色天天综合色h| 欧美性大战xxxxx久久久| 亚洲精品日韩专区silk| 色婷婷精品久久二区二区蜜臂av| 一区二区成人在线观看| 久久久久久**毛片大全| 国产+成+人+亚洲欧洲自线| 久久久精品日韩欧美| 国产a区久久久| 亚洲日本乱码在线观看| 在线区一区二视频| 日韩主播视频在线| 亚洲精品一区二区三区四区高清| 国产乱国产乱300精品| 国产精品丝袜91| 色系网站成人免费| 水蜜桃久久夜色精品一区的特点| 欧美一级在线免费| 国产夫妻精品视频| 亚洲人成网站影音先锋播放| 欧美在线制服丝袜| 免费的国产精品| 久久精品亚洲乱码伦伦中文| 不卡电影免费在线播放一区| 亚洲最大的成人av| 日韩欧美国产wwwww| 国产成人高清视频| 一区二区三区四区在线| 91精品国产综合久久蜜臀| 国产iv一区二区三区| 亚洲一区二区三区视频在线播放| 日韩小视频在线观看专区| 国产成人一区二区精品非洲| 一区二区三区.www| 欧美va日韩va| 91香蕉视频黄| 日本视频免费一区| 国产精品美女久久久久久久久| 欧美三日本三级三级在线播放| 奇米影视一区二区三区| 国产精品亲子伦对白| 欧美人与性动xxxx| 国产成人综合精品三级| 亚洲一区二区三区激情| 久久嫩草精品久久久久| 欧美无砖砖区免费| 国产精品18久久久久久久久 | 欧美精品tushy高清| 国产精品一区二区在线观看不卡| 亚洲欧美国产高清| 久久综合狠狠综合久久激情| 在线观看视频91| 国产精品夜夜爽| 亚洲综合男人的天堂| 久久久久国产精品厨房| 欧美日韩国产综合视频在线观看| 国产一区二区三区电影在线观看| 亚洲精品国产视频| 精品福利一区二区三区 | 免费成人美女在线观看| 亚洲桃色在线一区| 久久日一线二线三线suv| 欧美日韩国产小视频在线观看| 国产精品一区专区| 免费久久99精品国产| 一区二区高清视频在线观看| 国产精品三级av在线播放| 日韩三级在线免费观看| 欧美日韩大陆在线| 91香蕉视频在线| 国产99精品在线观看| 久久国产精品第一页| 午夜在线成人av| 自拍偷拍欧美精品| 中文字幕第一页久久| 2020国产精品自拍| 日韩久久精品一区| 欧美日韩免费观看一区二区三区 | 亚洲免费视频中文字幕| 欧美国产日韩亚洲一区| 久久美女高清视频| 日韩欧美激情一区| 91麻豆精品国产91久久久久久| 欧美韩国一区二区| 精品国产免费久久| 日韩欧美在线网站| 91精品中文字幕一区二区三区| 欧美色图天堂网| 91福利精品第一导航| 91美女片黄在线观看| 成人亚洲一区二区一| 国产精品亚洲一区二区三区在线| 免费看日韩精品| 老司机一区二区| 激情五月婷婷综合| 精品一区二区三区在线播放| 日本不卡一二三区黄网| 日本美女一区二区| 石原莉奈在线亚洲二区| 亚欧色一区w666天堂| 亚洲1区2区3区视频| 丝袜亚洲另类欧美综合| 爽爽淫人综合网网站| 秋霞电影网一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 2024国产精品| 色成年激情久久综合| 国内精品写真在线观看| 久久精品网站免费观看| 91国产视频在线观看| 一区二区三区日韩在线观看| 欧美日韩免费电影| 热久久一区二区| 久久久久久99久久久精品网站| 欧美日韩国产在线播放网站| 亚洲国产精品麻豆| 欧美精品久久久久久久多人混战| 水蜜桃久久夜色精品一区的特点| 国产日韩欧美电影| 久久综合九色综合欧美98| 久久蜜桃av一区二区天堂| 欧美国产综合一区二区|