13 typedef unsigned long long value_t;
34 return std::make_pair(z-m*m,m);
37 return std::make_pair(m, m*(m+2)-z);
42 auto m = std::max(x,y);
49 return std::make_pair(0,0);
52 return std::make_pair(x, (z-x)/k);
88 value_t
pop(value_t modulus) {
97 assert(before <= value &&
"*** Overflow in encoding IntegerizedStack::push");
100 void push(value_t x, value_t modulus) {
103 assert(before <= value &&
"*** Overflow in encoding IntegerizedStack::push");
114 std::vector<value_t>
split(
size_t n) {
115 std::vector<value_t> out(n);
116 for(
size_t i=0;i<n-1;i++) {
value_t pop()
Definition: IntegerizedStack.h:82
value_t pop(value_t modulus)
Definition: IntegerizedStack.h:88
std::ostream & operator<<(std::ostream &o, const IntegerizedStack &n)
Definition: IntegerizedStack.h:146
value_t value
Definition: IntegerizedStack.h:16
static enumerationidx_t mod_pop(enumerationidx_t &z, const enumerationidx_t k)
Definition: IntegerizedStack.h:75
value_t get_value() const
Definition: IntegerizedStack.h:124
std::vector< value_t > split(size_t n)
Split into n children – this is the same as looping and popping, but provides a nicer interface NOTE...
Definition: IntegerizedStack.h:114
static enumerationidx_t mod_encode(const enumerationidx_t x, const enumerationidx_t y, const enumerationidx_t k)
Definition: IntegerizedStack.h:55
void operator+=(value_t x)
Definition: IntegerizedStack.h:141
static std::pair< enumerationidx_t, enumerationidx_t > rosenberg_strong_decode(const enumerationidx_t z)
Definition: IntegerizedStack.h:30
IntegerizedStack(value_t v=0)
Definition: IntegerizedStack.h:19
void push(value_t x, value_t modulus)
Definition: IntegerizedStack.h:100
void push(value_t x)
Definition: IntegerizedStack.h:94
static enumerationidx_t rosenberg_strong_encode(const enumerationidx_t x, const enumerationidx_t y)
Definition: IntegerizedStack.h:41
void operator=(value_t z)
Definition: IntegerizedStack.h:133
void operator-=(value_t x)
Definition: IntegerizedStack.h:137
static enumerationidx_t rosenberg_strong_pop(enumerationidx_t &z)
Definition: IntegerizedStack.h:61
static std::pair< enumerationidx_t, enumerationidx_t > mod_decode(const enumerationidx_t z, const enumerationidx_t k)
Definition: IntegerizedStack.h:46
size_t enumerationidx_t
Definition: IntegerizedStack.h:3
Definition: IntegerizedStack.h:12
bool empty() const
Definition: IntegerizedStack.h:128