INNER CODE UNIT · C++
qubit2
aromanro/QCSim · QCSim/DensityMatrixTests.cpp:178
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))
{
std::cout << "Trace is not 1 for a pure state: " << dm.Trace() << std::endl;
return false;
}