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;

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…