INNER CODE UNIT · C++
expected
aromanro/QCSim · QCSim/DensityMatrixTests.cpp:287
const Eigen::MatrixXcd expected = embedded * initial * embedded.adjoint();
QC::DensityMatrix<> direct(nrQubits);
direct.setDensityMatrix(initial);
direct.ApplyGate(gate, qubits[0], qubits.size() > 1 ? qubits[1] : 0, qubits.size() > 2 ? qubits[2] : 0);
QC::DensityMatrix<> recorded(nrQubits);
recorded.setDensityMatrix(initial);
recorded.ApplyGate(QC::Gates::AppliedGate<>(gate.getRawOperatorMatrix(), qubits[0],
qubits.size() > 1 ? qubits[1] : 0,
qubits.size() > 2 ? qubits[2] : 0));
if ((direct.getDensityMatrix() - expected).norm() > 1E-9 ||
(recorded.getDensityMatrix() - expected).norm() > 1E-9)
{
std::cout << "Dense gate reference mismatch for a " << qubits.size() << "-qubit gate on";
for (const size_t qubit : qubits)
std::cout << " " << qubit;