}
-void supplement(long stabStateIndices[], int T)
+void supplement(long stabStateIndices[], int T, double fractionSupplement)
{
int K = round(log(T)/log(2)); // T = 2^K
unsigned long bitstring;
int bitstringCounter = 1; // bitstringCounter starts at 1 since 0 is the given bitstring
+ int bitstringCounterMax = floor(fractionSupplement*T);
int i;
+ if(bitstringCounter > bitstringCounterMax) return;
+
// first added bitstring is alpha ... alpha for alpha = 01
bitstring = 1;
for(i=1; i<T/2; i++) {
//printf("%lu\n", bitstring);
stabStateIndices[bitstringCounter] = given^(bitstring);
bitstringCounter++;
+ if(bitstringCounter > bitstringCounterMax) return;
// second added bitstring is beta ... beta for beta = 10
bitstring = 2;
//printf("%lu\n", bitstring);
stabStateIndices[bitstringCounter] = given^bitstring;
bitstringCounter++;
+ if(bitstringCounter > bitstringCounterMax) return;
maskList[0] = round(pow(2,pow(2,K)))-1;
//printf("new bitstring=");
//printBinary(stabStateIndices[bitstringCounter], T);
bitstringCounter++;
+ if(bitstringCounter > bitstringCounterMax) return;
}
maskList[treeDepth] = levelMask;
stabStateIndices[0] = (int)(pow(2,T))-1;
- supplement(&stabStateIndices[0], T);
+ supplement(&stabStateIndices[0], T, 1.0);
int i;
for(i=0; i<T+1; i++)