⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 integer.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 2 页
字号:
}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 + -