45 for (
int i=0; i<sz; i++)
57 for (
int i=0; i<sz-1; i++)
70 for (
int i=0; i<sz-1; i++)
83 for (
int i=0; i<sz-1; i++)
96 for (
int i=0; i<sz-1; i++)
109 for (
int i=0; i<sz-1; i++)
122 for (
int i=0; i<sz-1; i++)
135 for (
int i=0; i<sz; i++)
142 for (
int i=0; i<sz; i++)
143 integer[i]=x.integer[i];
156 for (
int i=0; i<sz; i++)
157 integer[i]=x.integer[i];
169 for (
int i=sz-1; i>=0; i--)
170 r.integer[i]=integer[i] | x.integer[i];
183 for (
int i=sz-1; i>=0; i--)
184 r.integer[i]=integer[i] & x.integer[i];
201 int s=
CMath::min(shift, 8*((
int)
sizeof(T))-1);
203 for (
int i=0; i<sz; i++)
207 overflow = r.integer[i+1] >> (
sizeof(T)*8 - s);
208 r.integer[i]= (r.integer[i] << s) | overflow;
229 int s=
CMath::min(shift, 8*((
int)
sizeof(T))-1);
231 for (
int i=sz-1; i>=0; i--)
235 overflow = (r.integer[i-1] << (
sizeof(T)*8 - s));
236 r.integer[i]= (r.integer[i] >> s) | overflow;
253 for (
int i=sz-1; i>=0; i--)
254 r.integer[i]=integer[i] ^ x.integer[i];
268 for (
int i=sz-1; i>=0; i--)
270 r.integer[i]=integer[i]+x.integer[i]+overflow;
271 if (r.integer[i] <
CMath::max(integer[i], x.integer[i]))
349 for (
int i=sz-1; i>=0; i--)
351 if (integer[i]!=x.integer[i])
364 for (
int i=0; i<sz; i++)
366 if (integer[i]>x.integer[i])
368 if (integer[i]<x.integer[i])
378 bool operator<=(const CDynInt<T,sz> &x)
const 380 for (
int i=0; i<sz; i++)
382 if (integer[i]<x.integer[i])
384 if (integer[i]>x.integer[i])
396 for (
int i=0; i<sz; i++)
398 if (integer[i]>x.integer[i])
400 if (integer[i]<x.integer[i])
410 bool operator<(const CDynInt<T,sz> &x)
const 412 for (
int i=0; i<sz; i++)
414 if (integer[i]<x.integer[i])
416 if (integer[i]>x.integer[i])
428 for (
int i=sz-1; i>=0; i--)
430 if (integer[i]!=x.integer[i])
444 for (
int i=sz-1; i>=0; i--)
445 integer[i]|=x.integer[i];
458 for (
int i=sz-1; i>=0; i--)
459 integer[i]&=x.integer[i];
472 for (
int i=sz-1; i>=0; i--)
473 integer[i]^=x.integer[i];
505 for (
int i=sz-1; i>=0; i--)
506 integer[i]= ~integer[i];
511 operator T() {
return integer[sz-1]; }
517 for (
int i=sz-1; i>=0; i--)
519 T x = integer[i]-1-overflow;
532 for (
int i=sz-1; i>=0; i--)
534 T x = integer[i]+1+overflow;
546 for (
int i=0; i<sz; i++)
547 SG_SPRINT(
"%.16llx", (uint64_t) integer[i])
577 #endif // __DYNINT_H__ CDynInt< T, sz > & operator/=(const CDynInt< T, sz > &x)
CDynInt< T, sz > & operator~()
const CDynInt< T, sz > operator+(const CDynInt< T, sz > &x) const
bool operator>(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator|=(const CDynInt< T, sz > &x)
const CDynInt< T, sz > operator*(const CDynInt< T, sz > &x) const
bool operator>=(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator*=(const CDynInt< T, sz > &x)
CDynInt< uint64_t, 4 > uint256_t
256 bit integer constructed out of 4 64bit uint64_t's
CDynInt< T, sz > operator>>(int shift)
const CDynInt< T, sz > operator-(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator--()
const CDynInt< T, sz > operator &(const CDynInt< T, sz > &x) const
CDynInt< uint64_t, 3 > uint192_t
192 bit integer constructed out of 3 64bit uint64_t's
CDynInt< uint64_t, 8 > uint512_t
512 bit integer constructed out of 8 64bit uint64_t's
CDynInt< T, sz > & operator^=(const CDynInt< T, sz > &x)
CDynInt< T, sz > & operator-=(const CDynInt< T, sz > &x)
CDynInt< T, sz > & operator+=(const CDynInt< T, sz > &x)
CDynInt< T, sz > operator<<(int shift)
static T max(T a, T b)
return the maximum of two integers
static void display_bits(T word, int32_t width=8 *sizeof(T))
display bits (useful for debugging)
CDynInt< T, sz > & operator>>=(int shift)
all of classes and functions are contained in the shogun namespace
CDynInt< uint64_t, 16 > uint1024_t
1024 bit integer constructed out of 16 64bit uint64_t's
CDynInt< T, sz > & operator<<=(int shift)
const CDynInt< T, sz > operator|(const CDynInt< T, sz > &x) const
static T min(T a, T b)
return the minimum of two integers
const CDynInt< T, sz > operator^(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator++()
const CDynInt< T, sz > operator/(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator=(const CDynInt< T, sz > &x)
bool operator==(const CDynInt< T, sz > &x) const
integer type of dynamic size
CDynInt(const CDynInt< T, sz > &x)
bool operator!=(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator &=(const CDynInt< T, sz > &x)