INNER CODE UNIT · C++
a
aromanro/QCSim · QCSim/CliffordTests.cpp:476
const size_t a = rng() % n, b = (a + 1 + rng() % (n - 1)) % n;
const int gate = rng() % 15;
ApplyGate(sim, gate, int(a), int(b));
ref.ApplyGate(*GetGate(gate), a, b);
const auto probabilities = sim.AllProbabilities();
for (size_t state = 0; state < probabilities.size(); ++state)
if (!CliffordCheck(approxEqual(probabilities[state], ref.getBasisStateProbability(state)),
"Affine distribution vs state vector"))
return false;
const CliffordRegressionSimulator before(sim);
sim.SetSeed(77);
const auto shots = sim.SampleBasisStates(32);
sim.SetSeed(77);
if (!CliffordCheck(shots == sim.SampleBasisStates(32) && sim.SameTableau(before),
"Terminal sampling preserves state and seeded repeatability"))
return false;
for (const auto &shot : shots)
{