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

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

?? zz_px.h

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


#ifndef NTL_ZZ_pX__H
#define NTL_ZZ_pX__H

#include <NTL/vector.h>
#include <NTL/ZZ_p.h>
#include <NTL/vec_ZZ.h>
#include <NTL/vec_ZZ_p.h>
#include <NTL/FFT.h>

NTL_OPEN_NNS




// some cross-over points
// macros are used so as to be consistent with zz_pX 

#define NTL_ZZ_pX_FFT_CROSSOVER (20)  
#define NTL_ZZ_pX_NEWTON_CROSSOVER (45)
#define NTL_ZZ_pX_DIV_CROSSOVER (90)
#define NTL_ZZ_pX_HalfGCD_CROSSOVER (25)
#define NTL_ZZ_pX_GCD_CROSSOVER (180)
#define NTL_ZZ_pX_BERMASS_CROSSOVER (90)
#define NTL_ZZ_pX_TRACE_CROSSOVER (90)



/************************************************************

                         ZZ_pX

The class ZZ_pX implements polynomial arithmetic modulo p.
Polynomials are represented as vec_ZZ_p's.
If f is a ZZ_pX, then f.rep is a vec_ZZ_p.
The zero polynomial is represented as a zero length vector.
Otherwise. f.rep[0] is the constant-term, and f.rep[f.rep.length()-1]
is the leading coefficient, which is always non-zero.
The member f.rep is public, so the vector representation is fully
accessible.
Use the member function normalize() to strip leading zeros.

**************************************************************/


class ZZ_pX {

public:

typedef vec_ZZ_p VectorBaseType; 


vec_ZZ_p rep;


/***************************************************************

          Constructors, Destructors, and Assignment

****************************************************************/


ZZ_pX()
//  initial value 0

   { }


ZZ_pX(INIT_SIZE_TYPE, long n) { rep.SetMaxLength(n); }

ZZ_pX(const ZZ_pX& a) : rep(a.rep) { }
// initial value is a


ZZ_pX& operator=(const ZZ_pX& a) 
   { rep = a.rep; return *this; }

~ZZ_pX() { }

void normalize();
// strip leading zeros

void SetMaxLength(long n) 
// pre-allocate space for n coefficients.
// Value is unchanged

   { rep.SetMaxLength(n); }


void kill() 
// free space held by this polynomial.  Value becomes 0.

   { rep.kill(); }

static const ZZ_pX& zero();


ZZ_pX(ZZ_pX& x, INIT_TRANS_TYPE) : rep(x.rep, INIT_TRANS) { }

inline ZZ_pX(long i, const ZZ_p& c);
inline ZZ_pX(long i, long c);

ZZ_pX& operator=(long a);
ZZ_pX& operator=(const ZZ_p& a);


};




/********************************************************************

                           input and output

I/O format:

   [a_0 a_1 ... a_n],

represents the polynomial a_0 + a_1*X + ... + a_n*X^n.

On output, all coefficients will be integers between 0 and p-1,
amd a_n not zero (the zero polynomial is [ ]).
On input, the coefficients are arbitrary integers which are
then reduced modulo p, and leading zeros stripped.

*********************************************************************/


NTL_SNS istream& operator>>(NTL_SNS istream& s, ZZ_pX& x);
NTL_SNS ostream& operator<<(NTL_SNS ostream& s, const ZZ_pX& a);




/**********************************************************

                   Some utility routines

***********************************************************/


inline long deg(const ZZ_pX& a) { return a.rep.length() - 1; }
// degree of a polynomial.
// note that the zero polynomial has degree -1.

const ZZ_p& coeff(const ZZ_pX& a, long i);
// zero if i not in range

void GetCoeff(ZZ_p& x, const ZZ_pX& a, long i);
// x = a[i], or zero if i not in range

const ZZ_p& LeadCoeff(const ZZ_pX& a);
// zero if a == 0

const ZZ_p& ConstTerm(const ZZ_pX& a);
// zero if a == 0

void SetCoeff(ZZ_pX& x, long i, const ZZ_p& a);
// x[i] = a, error is raised if i < 0

void SetCoeff(ZZ_pX& x, long i, long a);

void SetCoeff(ZZ_pX& x, long i);
// x[i] = 1, error is raised if i < 0

inline ZZ_pX::ZZ_pX(long i, const ZZ_p& a)
   { SetCoeff(*this, i, a); } 

inline ZZ_pX::ZZ_pX(long i, long a)
   { SetCoeff(*this, i, a); } 

void SetX(ZZ_pX& x);
// x is set to the monomial X

long IsX(const ZZ_pX& a);
// test if a = X

inline void clear(ZZ_pX& x) 
// x = 0

   { x.rep.SetLength(0); }

inline void set(ZZ_pX& x)
// x = 1

   { x.rep.SetLength(1); set(x.rep[0]); }

inline void swap(ZZ_pX& x, ZZ_pX& y)
// swap x & y (only pointers are swapped)

   { swap(x.rep, y.rep); }

void random(ZZ_pX& x, long n);
inline ZZ_pX random_ZZ_pX(long n)
   { ZZ_pX x; random(x, n); NTL_OPT_RETURN(ZZ_pX, x); }
// generate a random polynomial of degree < n 

void trunc(ZZ_pX& x, const ZZ_pX& a, long m);
// x = a % X^m

inline ZZ_pX trunc(const ZZ_pX& a, long m)
   { ZZ_pX x; trunc(x, a, m); NTL_OPT_RETURN(ZZ_pX, x); }

void RightShift(ZZ_pX& x, const ZZ_pX& a, long n);
// x = a/X^n

inline ZZ_pX RightShift(const ZZ_pX& a, long n)
   { ZZ_pX x; RightShift(x, a, n); NTL_OPT_RETURN(ZZ_pX, x); }

void LeftShift(ZZ_pX& x, const ZZ_pX& a, long n);
// x = a*X^n

inline ZZ_pX LeftShift(const ZZ_pX& a, long n)
   { ZZ_pX x; LeftShift(x, a, n); NTL_OPT_RETURN(ZZ_pX, x); }

#ifndef NTL_TRANSITION

inline ZZ_pX operator>>(const ZZ_pX& a, long n)
   { ZZ_pX x; RightShift(x, a, n); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator<<(const ZZ_pX& a, long n)
   { ZZ_pX x; LeftShift(x, a, n); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX& operator<<=(ZZ_pX& x, long n)
   { LeftShift(x, x, n); return x; }

inline ZZ_pX& operator>>=(ZZ_pX& x, long n)
   { RightShift(x, x, n); return x; }

#endif



void diff(ZZ_pX& x, const ZZ_pX& a);
// x = derivative of a

inline ZZ_pX diff(const ZZ_pX& a)
   { ZZ_pX x; diff(x, a); NTL_OPT_RETURN(ZZ_pX, x); }


void MakeMonic(ZZ_pX& x);

void reverse(ZZ_pX& c, const ZZ_pX& a, long hi);

inline ZZ_pX reverse(const ZZ_pX& a, long hi)
   { ZZ_pX x; reverse(x, a, hi); NTL_OPT_RETURN(ZZ_pX, x); }

inline void reverse(ZZ_pX& c, const ZZ_pX& a)
{  reverse(c, a, deg(a)); }

inline ZZ_pX reverse(const ZZ_pX& a)
   { ZZ_pX x; reverse(x, a); NTL_OPT_RETURN(ZZ_pX, x); }

inline void VectorCopy(vec_ZZ_p& x, const ZZ_pX& a, long n)
   { VectorCopy(x, a.rep, n); }

inline vec_ZZ_p VectorCopy(const ZZ_pX& a, long n)
   { return VectorCopy(a.rep, n); }




/*******************************************************************

                        conversion routines

********************************************************************/



void conv(ZZ_pX& x, long a);
void conv(ZZ_pX& x, const ZZ& a);
void conv(ZZ_pX& x, const ZZ_p& a);
void conv(ZZ_pX& x, const vec_ZZ_p& a);

inline ZZ_pX to_ZZ_pX(long a)
   { ZZ_pX x; conv(x, a); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX to_ZZ_pX(const ZZ& a)
   { ZZ_pX x; conv(x, a); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX to_ZZ_pX(const ZZ_p& a)
   { ZZ_pX x; conv(x, a); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX to_ZZ_pX(const vec_ZZ_p& a)
   { ZZ_pX x; conv(x, a); NTL_OPT_RETURN(ZZ_pX, x); }



/*************************************************************

                        Comparison

**************************************************************/

long IsZero(const ZZ_pX& a); 

long IsOne(const ZZ_pX& a);

inline long operator==(const ZZ_pX& a, const ZZ_pX& b)
{
   return a.rep == b.rep;
}

inline long operator!=(const ZZ_pX& a, const ZZ_pX& b)
{
   return !(a == b);
}

long operator==(const ZZ_pX& a, long b);
long operator==(const ZZ_pX& a, const ZZ_p& b);

inline long operator==(long a, const ZZ_pX& b) { return b == a; }
inline long operator==(const ZZ_p& a, const ZZ_pX& b) { return b == a; }

inline long operator!=(const ZZ_pX& a, long b) { return !(a == b); }
inline long operator!=(const ZZ_pX& a, const ZZ_p& b) { return !(a == b); }

inline long operator!=(long a, const ZZ_pX& b) { return !(a == b); }
inline long operator!=(const ZZ_p& a, const ZZ_pX& b) { return !(a == b); }


/***************************************************************

                         Addition

****************************************************************/

void add(ZZ_pX& x, const ZZ_pX& a, const ZZ_pX& b);
// x = a + b

void sub(ZZ_pX& x, const ZZ_pX& a, const ZZ_pX& b);
// x = a - b

void negate(ZZ_pX& x, const ZZ_pX& a);
// x = -a

// scalar versions

void add(ZZ_pX& x, const ZZ_pX& a, const ZZ_p& b); // x = a + b
void add(ZZ_pX& x, const ZZ_pX& a, long b);

inline void add(ZZ_pX& x, const ZZ_p& a, const ZZ_pX& b) { add(x, b, a); }
inline void add(ZZ_pX& x, long a, const ZZ_pX& b) { add(x, b, a); }


void sub(ZZ_pX & x, const ZZ_pX& a, const ZZ_p& b); // x = a - b

void sub(ZZ_pX& x, const ZZ_pX& a, long b);
void sub(ZZ_pX& x, const ZZ_pX& a, const ZZ_p& b);

void sub(ZZ_pX& x, long a, const ZZ_pX& b);
void sub(ZZ_pX& x, const ZZ_p& a, const ZZ_pX& b);

inline ZZ_pX operator+(const ZZ_pX& a, const ZZ_pX& b)
   { ZZ_pX x; add(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator+(const ZZ_pX& a, const ZZ_p& b)
   { ZZ_pX x; add(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator+(const ZZ_pX& a, long b)
   { ZZ_pX x; add(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator+(const ZZ_p& a, const ZZ_pX& b)
   { ZZ_pX x; add(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator+(long a, const ZZ_pX& b)
   { ZZ_pX x; add(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }


inline ZZ_pX operator-(const ZZ_pX& a, const ZZ_pX& b)
   { ZZ_pX x; sub(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator-(const ZZ_pX& a, const ZZ_p& b)
   { ZZ_pX x; sub(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator-(const ZZ_pX& a, long b)
   { ZZ_pX x; sub(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator-(const ZZ_p& a, const ZZ_pX& b)
   { ZZ_pX x; sub(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX operator-(long a, const ZZ_pX& b)
   { ZZ_pX x; sub(x, a, b); NTL_OPT_RETURN(ZZ_pX, x); }


inline ZZ_pX& operator+=(ZZ_pX& x, const ZZ_pX& b)
   { add(x, x, b); return x; }

inline ZZ_pX& operator+=(ZZ_pX& x, const ZZ_p& b)
   { add(x, x, b); return x; }

inline ZZ_pX& operator+=(ZZ_pX& x, long b)
   { add(x, x, b); return x; }

inline ZZ_pX& operator-=(ZZ_pX& x, const ZZ_pX& b)
   { sub(x, x, b); return x; }

inline ZZ_pX& operator-=(ZZ_pX& x, const ZZ_p& b)
   { sub(x, x, b); return x; }

inline ZZ_pX& operator-=(ZZ_pX& x, long b)
   { sub(x, x, b); return x; }


inline ZZ_pX operator-(const ZZ_pX& a) 
   { ZZ_pX x; negate(x, a); NTL_OPT_RETURN(ZZ_pX, x); }

inline ZZ_pX& operator++(ZZ_pX& x) { add(x, x, 1); return x; }
inline void operator++(ZZ_pX& x, int) { add(x, x, 1); }
inline ZZ_pX& operator--(ZZ_pX& x) { sub(x, x, 1); return x; }
inline void operator--(ZZ_pX& x, int) { sub(x, x, 1); }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清hd18日本| 在线不卡免费av| 国产精品18久久久久久久久久久久| 亚洲高清一区二区三区| 亚洲影院免费观看| 亚洲一区二区在线免费看| 亚洲精选免费视频| 一区二区久久久久| 午夜精品成人在线视频| 青草av.久久免费一区| 久久精品999| 粉嫩蜜臀av国产精品网站| av在线播放不卡| 在线免费观看日本欧美| 欧美精选一区二区| 精品国产在天天线2019| 国产日韩在线不卡| 亚洲免费大片在线观看| 日韩在线a电影| 国产乱码一区二区三区| kk眼镜猥琐国模调教系列一区二区 | 日本韩国视频一区二区| 在线观看国产精品网站| 欧美一区二区国产| 国产精品久久久久久久久久免费看| 成人免费一区二区三区视频 | 国产99久久久国产精品潘金| 成人免费视频网站在线观看| 色综合一个色综合| 欧美电影免费观看完整版| 日本一区二区三区高清不卡| 亚洲无人区一区| 国产不卡在线播放| 91精品国产综合久久精品麻豆 | 黄色精品一二区| 日本高清不卡aⅴ免费网站| 91精品国产综合久久国产大片| 久久亚区不卡日本| 性做久久久久久免费观看| 高清不卡一区二区在线| 在线电影一区二区三区| 一区精品在线播放| 久88久久88久久久| 欧美蜜桃一区二区三区| 国产精品无码永久免费888| 天天综合网 天天综合色| 懂色av中文字幕一区二区三区| 欧美日韩三级视频| 亚洲日本电影在线| 国产·精品毛片| 久久综合五月天婷婷伊人| 丝袜美腿高跟呻吟高潮一区| 色婷婷国产精品| 国产欧美一区二区精品性| 蜜桃久久av一区| 欧美伊人久久久久久午夜久久久久| 久久久久久久免费视频了| 免费一级片91| 欧美日韩一级大片网址| 综合电影一区二区三区| 国产99精品视频| 精品日韩在线观看| 老司机免费视频一区二区三区| 欧美主播一区二区三区| 亚洲老妇xxxxxx| 色综合色综合色综合色综合色综合 | 91亚洲永久精品| 国产亚洲污的网站| 精品一区二区三区的国产在线播放 | 99久久伊人精品| 一色桃子久久精品亚洲| 99久久婷婷国产综合精品电影| 久久久亚洲精华液精华液精华液 | 亚洲免费观看高清完整版在线观看 | 午夜天堂影视香蕉久久| 欧美中文字幕一区二区三区亚洲| 国产精品激情偷乱一区二区∴| 成人av电影观看| 亚洲日本青草视频在线怡红院| 成人福利视频在线| 最新国产の精品合集bt伙计| 97精品电影院| 午夜天堂影视香蕉久久| 欧美一级在线免费| 国精品**一区二区三区在线蜜桃| wwwwww.欧美系列| 99久久免费精品高清特色大片| 亚洲免费av观看| 日韩一区二区在线观看视频| 美日韩一区二区三区| 久久精品亚洲精品国产欧美| 99久久婷婷国产综合精品| 亚洲午夜私人影院| 精品国产三级a在线观看| 岛国精品在线播放| 一区二区免费看| 欧美电影免费观看高清完整版在线| 国产福利91精品| 一区二区三区免费| 91精品国产入口| 99综合电影在线视频| 亚洲国产精品一区二区尤物区| 欧美sm极限捆绑bd| 91美女精品福利| 国产在线播精品第三| 亚洲三级在线免费| 日韩亚洲欧美高清| 91免费看视频| 狠狠色综合播放一区二区| 国产精品久久久久久久久图文区| 欧美日韩精品高清| 成人免费视频视频| 喷水一区二区三区| 伊人婷婷欧美激情| 欧美国产精品一区二区| 911精品产国品一二三产区| 国产aⅴ精品一区二区三区色成熟| 亚洲国产欧美日韩另类综合 | 欧美国产综合色视频| 69p69国产精品| 91在线播放网址| 国产精品911| 日韩精品视频网站| 一二三区精品福利视频| 国产日产欧美一区二区视频| 91麻豆精品国产91久久久久久久久| 成人av影院在线| 国产黄色精品视频| 日韩精品久久理论片| 亚洲另类色综合网站| 国产农村妇女毛片精品久久麻豆 | 色狠狠色狠狠综合| 大白屁股一区二区视频| 久久国内精品视频| 亚洲成人av一区二区| 亚洲综合免费观看高清在线观看| 久久久不卡影院| 久久先锋资源网| 精品久久人人做人人爰| 日韩欧美亚洲国产另类| 91精品国产全国免费观看| 欧美日高清视频| 欧美日韩激情在线| 欧美三级日韩在线| 欧美色图12p| 欧美男男青年gay1069videost| 91福利在线播放| 欧美影院午夜播放| 欧美色图天堂网| 欧美嫩在线观看| 欧美日韩免费视频| 欧美高清激情brazzers| 欧美一区二区三区在| 欧美一区二区三区四区在线观看| 欧美精品电影在线播放| 欧美日韩国产高清一区二区三区 | 亚洲综合偷拍欧美一区色| 亚洲久本草在线中文字幕| 亚洲精品国产成人久久av盗摄| 亚洲精品视频一区| 亚洲成a人v欧美综合天堂 | 欧美精品一区二区三区视频| 日韩一区二区精品葵司在线| 日韩欧美在线网站| 精品福利一二区| 中文字幕高清不卡| 亚洲综合成人在线| 一区二区三国产精华液| 日韩一区精品视频| 国产精品一区二区男女羞羞无遮挡| 国产精品一区二区免费不卡| 99在线视频精品| 欧美精品一级二级三级| 精品国产sm最大网站| 国产精品色噜噜| 亚洲一区二区三区在线播放| 九色porny丨国产精品| av亚洲精华国产精华| 91 com成人网| 国产精品热久久久久夜色精品三区 | 亚洲午夜免费视频| 激情文学综合丁香| 99re8在线精品视频免费播放| 欧洲一区在线电影| 久久精品无码一区二区三区| 一区二区三区日韩欧美精品| 毛片av一区二区| 97久久超碰精品国产| 欧美电视剧在线观看完整版| 综合中文字幕亚洲| 极品少妇xxxx精品少妇| 色综合久久88色综合天天6| 日韩欧美黄色影院| 一区二区在线观看免费| 国产精品资源在线看| 欧美日韩成人综合天天影院| 中文字幕亚洲视频| 国产一区二区视频在线播放| 欧美色图激情小说| 综合欧美亚洲日本|