47 for (
int i=0; i<sz; i++)
59 for (
int i=0; i<sz-1; i++)
72 for (
int i=0; i<sz-1; i++)
85 for (
int i=0; i<sz-1; i++)
98 for (
int i=0; i<sz-1; i++)
100 integer[sz-1]= (T) x;
111 for (
int i=0; i<sz-1; i++)
124 for (
int i=0; i<sz-1; i++)
137 for (
int i=0; i<sz; i++)
144 for (
int i=0; i<sz; i++)
145 integer[i]=x.integer[i];
158 for (
int i=0; i<sz; i++)
159 integer[i]=x.integer[i];
171 for (
int i=sz-1; i>=0; i--)
172 r.integer[i]=integer[i] | x.integer[i];
185 for (
int i=sz-1; i>=0; i--)
186 r.integer[i]=integer[i] & x.integer[i];
203 int s=
CMath::min(shift, 8*((
int)
sizeof(T))-1);
205 for (
int i=0; i<sz; i++)
209 overflow = r.integer[i+1] >> (
sizeof(T)*8 - s);
210 r.integer[i]= (r.integer[i] << s) | overflow;
231 int s=
CMath::min(shift, 8*((
int)
sizeof(T))-1);
233 for (
int i=sz-1; i>=0; i--)
237 overflow = (r.integer[i-1] << (
sizeof(T)*8 - s));
238 r.integer[i]= (r.integer[i] >> s) | overflow;
255 for (
int i=sz-1; i>=0; i--)
256 r.integer[i]=integer[i] ^ x.integer[i];
270 for (
int i=sz-1; i>=0; i--)
272 r.integer[i]=integer[i]+x.integer[i]+overflow;
273 if (r.integer[i] <
CMath::max(integer[i], x.integer[i]))
351 for (
int i=sz-1; i>=0; i--)
353 if (integer[i]!=x.integer[i])
366 for (
int i=0; i<sz; i++)
368 if (integer[i]>x.integer[i])
370 if (integer[i]<x.integer[i])
380 bool operator<=(const CDynInt<T,sz> &x)
const
382 for (
int i=0; i<sz; i++)
384 if (integer[i]<x.integer[i])
386 if (integer[i]>x.integer[i])
398 for (
int i=0; i<sz; i++)
400 if (integer[i]>x.integer[i])
402 if (integer[i]<x.integer[i])
412 bool operator<(const CDynInt<T,sz> &x)
const
414 for (
int i=0; i<sz; i++)
416 if (integer[i]<x.integer[i])
418 if (integer[i]>x.integer[i])
430 for (
int i=sz-1; i>=0; i--)
432 if (integer[i]!=x.integer[i])
446 for (
int i=sz-1; i>=0; i--)
447 integer[i]|=x.integer[i];
460 for (
int i=sz-1; i>=0; i--)
461 integer[i]&=x.integer[i];
474 for (
int i=sz-1; i>=0; i--)
475 integer[i]^=x.integer[i];
507 for (
int i=sz-1; i>=0; i--)
508 integer[i]= ~integer[i];
513 operator T() {
return integer[sz-1]; }
519 for (
int i=sz-1; i>=0; i--)
521 T x = integer[i]-1-overflow;
534 for (
int i=sz-1; i>=0; i--)
536 T x = integer[i]+1+overflow;
548 for (
int i=0; i<sz; i++)
549 SG_SPRINT(
"%.16llx", (uint64_t) integer[i])
579 #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
const CDynInt< T, sz > 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
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)
bool operator!=(const CDynInt< T, sz > &x) const
CDynInt< T, sz > & operator--()
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)
const CDynInt< T, sz > operator-(const CDynInt< T, sz > &x) const
CDynInt< T, sz > operator<<(int shift)
const CDynInt< T, sz > operator^(const CDynInt< T, sz > &x) const
static void display_bits(T word, int32_t width=8 *sizeof(T))
CDynInt< T, sz > & operator>>=(int shift)
const CDynInt< T, sz > operator&(const CDynInt< T, sz > &x) const
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)
CDynInt< T, sz > & operator++()
CDynInt< T, sz > & operator&=(const CDynInt< T, sz > &x)
CDynInt< T, sz > & operator=(const CDynInt< T, sz > &x)
integer type of dynamic size
const CDynInt< T, sz > operator/(const CDynInt< T, sz > &x) const
bool operator>=(const CDynInt< T, sz > &x) const
CDynInt(const CDynInt< T, sz > &x)