69 inline int128 (
const int128 & a)
throw () : lo (a.lo), hi (a.hi) {};
71 inline int128 (
const unsigned int & a)
throw () : lo (a), hi (0ll) {};
72 inline int128 (
const signed int & a)
throw () : lo (a), hi (0ll) {
73 if (a < 0) this->hi = -1ll;
76 inline int128 (
const int64u & a)
throw () : lo (a), hi (0ll) {};
77 inline int128 (
const int64s & a)
throw () : lo (a), hi (0ll) {
78 if (a < 0) this->hi = -1ll;
81 int128 (
const float a)
throw ();
82 int128 (
const double & a)
throw ();
83 int128 (
const long double & a)
throw ();
85 int128 (
const char * sz)
throw ();
92 int128 (
const int64u & a,
const int64s & b)
throw ()
99 int128 operator - () const throw ();
100 int128 operator ~ () const throw ();
110 int128 & operator >>= (
unsigned int n) throw ();
111 int128 & operator <<= (
unsigned int n) throw ();
118 inline const
int128 & operator + () const throw () {
return *
this; };
122 return *
this += (-b);
126 *
this = this->
div (b, dummy);
130 this->
div (b, *
this);
135 int toInt ()
const throw () {
return (
int) this->lo; };
136 int64s
toInt64 ()
const throw () {
return (int64s) this->lo; };
138 const char *
toString (
unsigned int radix = 10)
const throw ();
139 float toFloat () const throw ();
147 bool bit (
unsigned int n) const throw ();
148 void bit (
unsigned int n,
bool val) throw ();
151 __attribute__ ((__aligned__ (16), __packed__))
158 bool operator < (
const int128 & a,
const int128 & b)
throw ();
159 bool operator == (
const int128 & a,
const int128 & b)
throw ();
160 bool operator || (
const int128 & a,
const int128 & b)
throw ();
161 bool operator && (
const int128 & a,
const int128 & b)
throw ();
165 inline int128
operator + (
const int128 & a,
const int128 & b)
throw () {
166 return int128 (a) += b; };
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; };
173 inline int128
operator % (
const int128 & a,
const int128 & b)
throw () {
174 return int128 (a) %= b; };
176 inline int128
operator >> (
const int128 & a,
unsigned int n)
throw () {
177 return int128 (a) >>= n; };
178 inline int128
operator << (
const int128 & a,
unsigned int n)
throw () {
179 return int128 (a) <<= n; };
181 inline int128
operator & (
const int128 & a,
const int128 & b)
throw () {
182 return int128 (a) &= b; };
183 inline int128
operator | (
const int128 & a,
const int128 & b)
throw () {
184 return int128 (a) |= b; };
185 inline int128
operator ^ (
const int128 & a,
const int128 & b)
throw () {
186 return int128 (a) ^= b; };
188 inline bool operator > (
const int128 & a,
const int128 & b)
throw () {
190 inline bool operator <= (
const int128 & a,
const int128 & b)
throw () {
192 inline bool operator >= (
const int128 & a,
const int128 & b)
throw () {
194 inline bool operator != (
const int128 & a,
const int128 & b)
throw () {