54 inline int128 () throw () : lo(0), hi(0) {};
55 inline int128 (
const int128 & a)
throw () : lo (a.lo), hi (a.hi) {};
57 inline int128 (
const unsigned int & a)
throw () : lo (a), hi (0ll) {};
58 inline int128 (
const signed int & a)
throw () : lo (a), hi (0ll) {
59 if (a < 0) this->hi = -1ll;
62 inline int128 (
const int64u & a)
throw () : lo (a), hi (0ll) {};
63 inline int128 (
const int64s & a)
throw () : lo (a), hi (0ll) {
64 if (a < 0) this->hi = -1ll;
67 int128 (
const float a)
throw ();
68 int128 (
const double & a)
throw ();
69 int128 (
const long double & a)
throw ();
71 int128 (
const char * sz)
throw ();
78 int128 (
const int64u & a,
const int64s & b)
throw ()
85 int128 operator - () const throw ();
86 int128 operator ~ () const throw ();
96 int128 & operator >>= (
unsigned int n) throw ();
97 int128 & operator <<= (
unsigned int n) throw ();
104 inline const
int128 & operator + () const throw () {
return *
this; };
108 return *
this += (-b);
112 *
this = this->
div (b, dummy);
116 this->
div (b, *
this);
121 int toInt ()
const throw () {
return (
int) this->lo; };
122 int64s
toInt64 ()
const throw () {
return (int64s) this->lo; };
124 const char *
toString (
unsigned int radix = 10)
const throw ();
125 float toFloat () const throw ();
133 bool bit (
unsigned int n) const throw ();
134 void bit (
unsigned int n,
bool val) throw ();
137 __attribute__ ((__aligned__ (16), __packed__))
144 bool operator < (
const int128 & a,
const int128 & b)
throw ();
145 bool operator == (
const int128 & a,
const int128 & b)
throw ();
146 bool operator || (
const int128 & a,
const int128 & b)
throw ();
147 bool operator && (
const int128 & a,
const int128 & b)
throw ();
151 inline int128
operator + (
const int128 & a,
const int128 & b)
throw () {
152 return int128 (a) += b; };
153 inline int128
operator - (
const int128 & a,
const int128 & b)
throw () {
154 return int128 (a) -= b; };
155 inline int128
operator * (
const int128 & a,
const int128 & b)
throw () {
156 return int128 (a) *= b; };
157 inline int128
operator / (
const int128 & a,
const int128 & b)
throw () {
158 return int128 (a) /= b; };
159 inline int128
operator % (
const int128 & a,
const int128 & b)
throw () {
160 return int128 (a) %= b; };
162 inline int128
operator >> (
const int128 & a,
unsigned int n)
throw () {
163 return int128 (a) >>= n; };
164 inline int128
operator << (
const int128 & a,
unsigned int n)
throw () {
165 return int128 (a) <<= n; };
167 inline int128
operator & (
const int128 & a,
const int128 & b)
throw () {
168 return int128 (a) &= b; };
169 inline int128
operator | (
const int128 & a,
const int128 & b)
throw () {
170 return int128 (a) |= b; };
171 inline int128
operator ^ (
const int128 & a,
const int128 & b)
throw () {
172 return int128 (a) ^= b; };
174 inline bool operator > (
const int128 & a,
const int128 & b)
throw () {
176 inline bool operator <= (
const int128 & a,
const int128 & b)
throw () {
178 inline bool operator >= (
const int128 & a,
const int128 & b)
throw () {
180 inline bool operator != (
const int128 & a,
const int128 & b)
throw () {