INNER CODE UNIT · C++

twoQubitsGate

aromanro/QCSim · QCSim/DensityMatrixTests.cpp:173

                const bool twoQubitsGate = gates[g]->getQubitsNumber() == 2;
                if (twoQubitsGate && nrQubits < 2)
                    continue;

                int qubit1 = twoQubitsGate ? qubitDistr2(gen) : qubitDistr(gen);
                int qubit2 = qubit1 + 1;
                if (twoQubitsGate && dist_bool(gen))
                    std::swap(qubit1, qubit2);

                dm.ApplyGate(*gates[g], qubit1, qubit2);
                reg.ApplyGate(*gates[g], qubit1, qubit2);

                if (!CompareWithStatevector(dm, reg, nrQubits))
                    return false;
            }

            // sanity: a pure state must have unit trace and purity 1
            if (!approxEqual(dm.Trace().real(), 1., 1E-9) || !approxEqual(dm.Trace().imag(), 0., 1E-9))

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…