📄 integer.h
字号:
}inline int operator > (const Integer& x, long y){ return compare(x, y) > 0; }inline int operator >= (const Integer& x, const Integer& y){ return compare(x, y) >= 0; }inline int operator >= (const Integer& x, long y){ return compare(x, y) >= 0; }inline void Integer::operator += (const Integer& y){ add(*this, y, *this);}inline void Integer::operator += (long y){ add(*this, y, *this);}inline void Integer::operator ++ (){ add(*this, 1, *this);}inline void Integer::operator -= (const Integer& y){ sub(*this, y, *this);}inline void Integer::operator -= (long y){ sub(*this, y, *this);}inline void Integer::operator -- (){ add(*this, -1, *this);}inline void Integer::operator *= (const Integer& y){ mul(*this, y, *this);}inline void Integer::operator *= (long y){ mul(*this, y, *this);}inline void Integer::operator &= (const Integer& y){ and(*this, y, *this);}inline void Integer::operator &= (long y){ and(*this, y, *this);}inline void Integer::operator |= (const Integer& y){ or(*this, y, *this);}inline void Integer::operator |= (long y){ or(*this, y, *this);}inline void Integer::operator ^= (const Integer& y){ xor(*this, y, *this);}inline void Integer::operator ^= (long y){ xor(*this, y, *this);}inline void Integer::operator /= (const Integer& y){ div(*this, y, *this);}inline void Integer::operator /= (long y){ div(*this, y, *this);}inline void Integer::operator %= (const Integer& y){ *this = *this % y; // mod(*this, y, *this) doesn't work.}inline void Integer::operator %= (long y){ *this = *this % y; // mod(*this, y, *this) doesn't work.}inline void Integer::operator <<= (const Integer& y){ lshift(*this, y, *this);}inline void Integer::operator <<= (long y){ lshift(*this, y, *this);}inline void Integer::operator >>= (const Integer& y){ rshift(*this, y, *this);}inline void Integer::operator >>= (long y){ rshift(*this, y, *this);}#ifdef __GNUG__inline Integer operator <? (const Integer& x, const Integer& y){ return (compare(x.rep, y.rep) <= 0) ? x : y;}inline Integer operator >? (const Integer& x, const Integer& y){ return (compare(x.rep, y.rep) >= 0)? x : y;}#endifinline void Integer::abs(){ ::abs(*this, *this);}inline void Integer::negate(){ ::negate(*this, *this);}inline void Integer::complement(){ ::complement(*this, *this);}inline int sign(const Integer& x){ return (x.rep->len == 0) ? 0 : ( (x.rep->sgn == 1) ? 1 : -1 );}inline int even(const Integer& y){ return y.rep->len == 0 || !(y.rep->s[0] & 1);}inline int odd(const Integer& y){ return y.rep->len > 0 && (y.rep->s[0] & 1);}inline char* Itoa(const Integer& y, int base, int width){ return Itoa(y.rep, base, width);}inline long lg(const Integer& x) { return lg(x.rep);}// constructive operations #if defined(__GNUG__) && !defined(NO_NRV)inline Integer operator + (const Integer& x, const Integer& y) return r{ add(x, y, r);}inline Integer operator + (const Integer& x, long y) return r{ add(x, y, r);}inline Integer operator + (long x, const Integer& y) return r{ add(x, y, r);}inline Integer operator - (const Integer& x, const Integer& y) return r{ sub(x, y, r);}inline Integer operator - (const Integer& x, long y) return r{ sub(x, y, r);}inline Integer operator - (long x, const Integer& y) return r{ sub(x, y, r);}inline Integer operator * (const Integer& x, const Integer& y) return r{ mul(x, y, r);}inline Integer operator * (const Integer& x, long y) return r{ mul(x, y, r);}inline Integer operator * (long x, const Integer& y) return r{ mul(x, y, r);}inline Integer sqr(const Integer& x) return r{ mul(x, x, r);}inline Integer operator & (const Integer& x, const Integer& y) return r{ and(x, y, r);}inline Integer operator & (const Integer& x, long y) return r{ and(x, y, r);}inline Integer operator & (long x, const Integer& y) return r{ and(x, y, r);}inline Integer operator | (const Integer& x, const Integer& y) return r{ or(x, y, r);}inline Integer operator | (const Integer& x, long y) return r{ or(x, y, r);}inline Integer operator | (long x, const Integer& y) return r{ or(x, y, r);}inline Integer operator ^ (const Integer& x, const Integer& y) return r{ xor(x, y, r);}inline Integer operator ^ (const Integer& x, long y) return r{ xor(x, y, r);}inline Integer operator ^ (long x, const Integer& y) return r{ xor(x, y, r);}inline Integer operator / (const Integer& x, const Integer& y) return r{ div(x, y, r);}inline Integer operator / (const Integer& x, long y) return r{ div(x, y, r);}inline Integer operator % (const Integer& x, const Integer& y) return r{ mod(x, y, r);}inline Integer operator % (const Integer& x, long y) return r{ mod(x, y, r);}inline Integer operator << (const Integer& x, const Integer& y) return r{ lshift(x, y, r);}inline Integer operator << (const Integer& x, long y) return r{ lshift(x, y, r);}inline Integer operator >> (const Integer& x, const Integer& y) return r;{ rshift(x, y, r);}inline Integer operator >> (const Integer& x, long y) return r{ rshift(x, y, r);}inline Integer pow(const Integer& x, long y) return r{ pow(x, y, r);}inline Integer Ipow(long x, long y) return r(x){ pow(r, y, r);}inline Integer pow(const Integer& x, const Integer& y) return r{ pow(x, y, r);}inline Integer abs(const Integer& x) return r{ abs(x, r);}inline Integer operator - (const Integer& x) return r{ negate(x, r);}inline Integer operator ~ (const Integer& x) return r{ complement(x, r);}inline Integer atoI(const char* s, int base) return r{ r.rep = atoIntRep(s, base);}inline Integer gcd(const Integer& x, const Integer& y) return r{ r.rep = gcd(x.rep, y.rep);}#else /* NO_NRV */inline Integer operator + (const Integer& x, const Integer& y) { Integer r; add(x, y, r); return r;}inline Integer operator + (const Integer& x, long y) { Integer r; add(x, y, r); return r;}inline Integer operator + (long x, const Integer& y) { Integer r; add(x, y, r); return r;}inline Integer operator - (const Integer& x, const Integer& y) { Integer r; sub(x, y, r); return r;}inline Integer operator - (const Integer& x, long y) { Integer r; sub(x, y, r); return r;}inline Integer operator - (long x, const Integer& y) { Integer r; sub(x, y, r); return r;}inline Integer operator * (const Integer& x, const Integer& y) { Integer r; mul(x, y, r); return r;}inline Integer operator * (const Integer& x, long y) { Integer r; mul(x, y, r); return r;}inline Integer operator * (long x, const Integer& y) { Integer r; mul(x, y, r); return r;}inline Integer sqr(const Integer& x) { Integer r; mul(x, x, r); return r;}inline Integer operator & (const Integer& x, const Integer& y) { Integer r; and(x, y, r); return r;}inline Integer operator & (const Integer& x, long y) { Integer r; and(x, y, r); return r;}inline Integer operator & (long x, const Integer& y) { Integer r; and(x, y, r); return r;}inline Integer operator | (const Integer& x, const Integer& y) { Integer r; or(x, y, r); return r;}inline Integer operator | (const Integer& x, long y) { Integer r; or(x, y, r); return r;}inline Integer operator | (long x, const Integer& y) { Integer r; or(x, y, r); return r;}inline Integer operator ^ (const Integer& x, const Integer& y) { Integer r; xor(x, y, r); return r;}inline Integer operator ^ (const Integer& x, long y) { Integer r; xor(x, y, r); return r;}inline Integer operator ^ (long x, const Integer& y) { Integer r; xor(x, y, r); return r;}inline Integer operator / (const Integer& x, const Integer& y) { Integer r; div(x, y, r); return r;}inline Integer operator / (const Integer& x, long y) { Integer r; div(x, y, r); return r;}inline Integer operator % (const Integer& x, const Integer& y) { Integer r; mod(x, y, r); return r;}inline Integer operator % (const Integer& x, long y) { Integer r; mod(x, y, r); return r;}inline Integer operator << (const Integer& x, const Integer& y) { Integer r; lshift(x, y, r); return r;}inline Integer operator << (const Integer& x, long y) { Integer r; lshift(x, y, r); return r;}inline Integer operator >> (const Integer& x, const Integer& y) { Integer r; rshift(x, y, r); return r;}inline Integer operator >> (const Integer& x, long y) { Integer r; rshift(x, y, r); return r;}inline Integer pow(const Integer& x, long y) { Integer r; pow(x, y, r); return r;}inline Integer Ipow(long x, long y) { Integer r(x); pow(r, y, r); return r;}inline Integer pow(const Integer& x, const Integer& y) { Integer r; pow(x, y, r); return r;}inline Integer abs(const Integer& x) { Integer r; abs(x, r); return r;}inline Integer operator - (const Integer& x) { Integer r; negate(x, r); return r;}inline Integer operator ~ (const Integer& x) { Integer r; complement(x, r); return r;}inline Integer atoI(const char* s, int base) { Integer r; r.rep = atoIntRep(s, base); return r;}inline Integer gcd(const Integer& x, const Integer& y) { Integer r; r.rep = gcd(x.rep, y.rep); return r;}#endif /* NO_NRV */#endif /* !_Integer_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -