Macaulay2 Engine
Loading...
Searching...
No Matches

◆ decode()

void Subsets::decode ( size_t val,
Subset & result )

Definition at line 96 of file comb.cpp.

97{
98 size_t tmp = val;
99 size_t subsetSize = result.size();
100 assert(val <= binom(mNumElements, subsetSize));
101
102 size_t len = mNumElements;
103
104 for (size_t i = subsetSize; i > 0; i--)
105 {
106 size_t bit;
107 size_t bot = 0;
108 while (bit = len % 2, len >>= 1)
109 {
110 if (binom(bot + len, i) <= tmp)
111 {
112 bot += len;
113 len += bit;
114 }
115 }
116 result[i - 1] = bot;
117 tmp -= binom(bot, i);
118 len = bot + 1;
119 }
120
121 assert(isValid(result));
122}
size_t mNumElements
Definition comb.hpp:125
bool isValid(const Subset &a)
Definition comb.cpp:41
size_t binom(size_t n, size_t p)
Definition comb.hpp:117
VALGRIND_MAKE_MEM_DEFINED & result(result)

References binom(), isValid(), mNumElements, and result().

Referenced by Matrix::koszul(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and Matrix::wedge_product().