}
float *psisquared_sorted = malloc(sizeof(float) * qubitCountPow2);
unsigned short *sorting = malloc(sizeof(unsigned short) * qubitCountPow2);
+ unsigned short *rsorting = malloc(sizeof(unsigned short) * qubitCountPow2);
for (int i = 0; i < qubitCountPow2; i++) psisquared_sorted[i] = 0;
for (int i = 0; i < qubitCountPow2; i++)
{
}
psisquared_sorted[i] = max;
sorting[i] = maxi;
+ rsorting[maxi] = i;
psisquared[maxi] = -1;
}
+ for (int i = 0; i < qubitCountPow2; i++) printf("]%i -> %i: %f[\n", rsorting[i], sorting[i], psisquared_sorted[i]);
free(psisquared);
unsigned short *stats = malloc(sizeof(unsigned short) * qubitCountPow2);
for (int i = 0; i < qubitCountPow2; i++) stats[i] = 0;
{
float r = (ctx->hidden_variable) ? qansel_rand_h() : qansel_rand_t(ctx);
float j = 0;
+ //printf("--------------------------------\n");
for (unsigned int j = 0; j < qubitCountPow2; j++)
{
+ //printf("%f >= %f\n", psisquared_sorted[j], r);
if (psisquared_sorted[j] >= r)
{
stats[j]++;
+ //printf("%i _/\n", j);
break;
}
r -= psisquared_sorted[j];
if (j == qubitCountPow2 - 1)
{
stats[j]++;
+ //printf("%i _/\n", j);
}
}
}
putchar('0' + (tmp >> (qubitCount - 1) & 1));
tmp <<= 1;
}
- printf("\t%i\t%.2f%%\n", stats[sorting[j]], ((float)stats[sorting[j]] / (float)(ctx->bsampling_shots)) * (float)100);
+ //printf("%i -> %i\n", j, sorting[j]);
+ printf("\t%i\t%.2f%%\n", stats[rsorting[j]], ((float)stats[rsorting[j]] / (float)(ctx->bsampling_shots)) * (float)100);
}
free(psisquared_sorted);
free(stats);
free(sorting);
+ free(rsorting);
}
else if (q0 <= QANSEL_QBOUND_UPPER)
{