Rust Implementation: Link
See python -m qiwi --help
for available options.
example.qiwi
fn add(lhs: qN, persist rhs: qN) {
(lhs + rhs)
}
fn add(persist lhs: qN, rhs: qN) {
(rhs + lhs)
}
fn main() {
num1: q3 = 3;
num2: q3 = 2;
add(add(num1, num2), num2)
}
$ python -m qiwi example.qiwi -d
┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐
q_0: ┤ X ├─────┤ X ├──────────────────────■─────────────────────────────────────────────────────────┤ X ├────────────■──┤ X ├───────■────────────────────────────────────────────────────┤ X ├───────■──
└─┬─┘ └─┬─┘┌───┐ ┌───┐ │ ┌───┐└─┬─┘┌───┐ │ └─┬─┘ │ ┌───┐└─┬─┘ │
q_1: ──┼─────────┼──┤ X ├─────┤ X ├───────┼─────────■─────────────────────────────■────────────┤ X ├──┼──┤ X ├───────┼────┼─────────┼─────────■─────────────────────────────■───────┤ X ├──┼─────────┼──
│ ┌───┐ │ └─┬─┘┌───┐└─┬─┘ │ │ ┌───┐ │ ┌───┐ └─┬─┘ │ └─┬─┘ │ │ │ │ ┌───┐ │ └─┬─┘ │ │
q_2: ──┼──┤ X ├──┼────┼──┤ X ├──┼─────────┼─────────┼─────────■────■───────┤ X ├──┼──┤ X ├───────┼────┼────┼─────────┼────┼─────────┼─────────┼─────────■────■───────┤ X ├──┼─────────┼────┼─────────┼──
│ └─┬─┘ │ │ └─┬─┘ │ │ │ │ │ └─┬─┘ │ └─┬─┘ │ │ │ │ │ ┌─┴─┐┌───┐ │ │ │ └─┬─┘ │ ┌───┐ │ │ ┌─┴─┐
q_3: ──■────┼────┼────┼────┼────┼─────────┼─────────┼─────────┼────┼─────────┼────┼────┼─────────┼────┼────┼─────────┼────■────■──┤ X ├┤ X ├──■─────────┼────┼─────────┼────■──┤ X ├──■────■────■──┤ X ├
┌───┐ │ │ │ │ │ ┌─┴─┐┌───┐ │ │ │ │ │ │ ┌───┐ │ │ │ ┌─┴─┐ │ └─┬─┘└─┬─┘ │ │ │ │ │ └─┬─┘ │ └─┬─┘
q_4: ┤ X ├──┼────■────┼────┼────┼────■──┤ X ├┤ X ├──■─────────┼────┼─────────┼────■────┼──┤ X ├──■────■────┼────■──┤ X ├───────┼────┼────┼────┼─────────┼────┼─────────┼────┼────┼──────────────┼────┼──
├───┤ │ │ │ │ │ └─┬─┘└─┬─┘ │ │ │ │ │ │ └─┬─┘ │ │ └─┬─┘ │ │ │ ┌─┴─┐┌───┐ │ │ ┌───┐ │ ┌─┴─┐ │ │ │
q_5: ┤ X ├──┼─────────■────┼────┼────┼────┼────┼────┼─────────┼────┼─────────┼────┼────┼────┼──────────────■────┼────┼─────────┼────┼────■──┤ X ├┤ X ├──■────■──┤ X ├──■──┤ X ├──■──────────────┼────┼──
├───┤ │ │ │ │ │ │ ┌─┴─┐┌───┐ │ │ ┌───┐ │ ┌─┴─┐ │ │ │ │ │ │ └───┘└─┬─┘ │ │ └─┬─┘ └───┘ │ │
q_6: ┤ X ├──┼──────────────┼────■────┼────┼────■──┤ X ├┤ X ├──■────■──┤ X ├──■──┤ X ├──┼────■───────────────────┼────┼─────────┼────┼──────────────┼────┼────┼────┼─────────────────────────────┼────┼──
└───┘ │ │ │ │ └───┘└─┬─┘ │ │ └─┬─┘ └───┘ │ │ │ │ │ │ ┌─┴─┐┌─┴─┐ │ │ │
q_7: ───────■──────────────┼─────────┼────┼──────────────┼────┼────┼────┼──────────────■────────────────────────┼────┼─────────┼────┼──────────────■──┤ X ├┤ X ├──■─────────────────────────────┼────┼──
│ │ │ │ ┌─┴─┐┌─┴─┐ │ │ │ │ │ └───┘└───┘ │ │
q_8: ──────────────────────■─────────┼────┼──────────────■──┤ X ├┤ X ├──■───────────────────────────────────────┼────┼─────────┼────┼───────────────────────────────────────────────────────────┼────┼──
│ │ └───┘└───┘ │ │ ┌─┴─┐ │ ┌─┴─┐ │
q_9: ────────────────────────────────┼────┼─────────────────────────────────────────────────────────────────────┼────┼───────┤ X ├──■─────────────────────────────────────────────────────────┤ X ├──■──
┌─┴─┐ │ ┌─┴─┐ │ └───┘ └───┘
q_10: ──────────────────────────────┤ X ├──■───────────────────────────────────────────────────────────────────┤ X ├──■──────────────────────────────────────────────────────────────────────────────────
└───┘ └───┘
OPENQASM 2.0;
include "qelib1.inc";
qreg q[11];
x q[4];
x q[6];
x q[5];
cx q[3], q[0];
cx q[5], q[1];
cx q[7], q[2];
cx q[4], q[0];
cx q[4], q[10];
ccx q[10], q[0], q[4];
cx q[6], q[1];
cx q[6], q[4];
ccx q[4], q[1], q[6];
cx q[8], q[2];
cx q[8], q[6];
ccx q[6], q[2], q[8];
ccx q[6], q[2], q[8];
cx q[8], q[6];
cx q[6], q[2];
ccx q[4], q[1], q[6];
cx q[6], q[4];
cx q[4], q[1];
cx q[4], q[0];
cx q[4], q[10];
ccx q[10], q[0], q[4];
cx q[3], q[0];
cx q[3], q[9];
ccx q[9], q[0], q[3];
cx q[5], q[1];
cx q[5], q[3];
ccx q[3], q[1], q[5];
cx q[7], q[2];
cx q[7], q[5];
ccx q[5], q[2], q[7];
ccx q[5], q[2], q[7];
cx q[7], q[5];
cx q[5], q[2];
ccx q[3], q[1], q[5];
cx q[5], q[3];
cx q[3], q[1];
cx q[3], q[0];
cx q[3], q[9];
ccx q[9], q[0], q[3];
Output lines: 0, 1, 2