03 : N-qubit gates

Todo

Writing

TLDR

#include <tweedledum/tweedledum.hpp>

int main()
{
    using namespace tweedledum;
    netlist<w3_op> circuit;
    wire::id q0 = circuit.create_qubit("q0");
    wire::id q1 = circuit.create_qubit("q1");
    wire::id q2 = circuit.create_qubit("q2");
    wire::id c0 = circuit.create_cbit("c0");
    circuit.create_op(gate_lib::ncx, q1, q2, q0);
    circuit.create_op(gate_lib::measure_z, q0, c0);
    write_utf8(circuit);
}

The output:

c0 : ══════════■═══
               ║
               ║
q2 : ─────●────╫───
          │    ║
          │    ║
q1 : ─────●────╫───
          │    ║
        ┌─┴─┐┌─╨──┐
q0 : ───┤ X ├┤ Mz ├
        └───┘└────┘