Abhinandan-Pal / qiwi

Quantum Programming Language
MIT License
2 stars 0 forks source link

Qiwi

Rust Implementation: Link

Running

See python -m qiwi --help for available options.

Example

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