Unverified Commit 9e548287 authored by Mccaskey, Alex's avatar Mccaskey, Alex Committed by GitHub
Browse files

Merge pull request #27 from tnguyen-ornl/tnguyen/circuit-opt

Added runtime circuit optimization
parents e70f27e2 f27f7cdb
Loading
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
// Run a suite of circuit optimization benchmarks.
#include "qcor.hpp"

// Need to pass -DTEST_SOURCE_FILE=\"test_case_filename\" and -I resources/ to
// the qcor compiler: e.g.
// qcor -qpu qpp -DTEST_SOURCE_FILE=\"adder_8.qasm\" -I resources/
// circuit_opt_benchmark.cpp

#ifdef TEST_SOURCE_FILE
__qpu__ void testKernel(qreg q) {
  using qcor::openqasm;
#include TEST_SOURCE_FILE
}

int main() {

  // Allocate just 1 qubit, we don't actually want to run the simulation.
  auto q = qalloc(1);

  // Run the kernel
  testKernel(q);
}
#endif
 No newline at end of file

benchmarks/driver.py

0 → 100644
+29 −0
Original line number Diff line number Diff line
# Run circuit optimization benchmarks
import glob
import os
import sys
import subprocess
import pathlib
qcorExe = str(pathlib.Path.home()) + "/.xacc/bin/qcor"

# Configurations:
# Optimization level to run:
OPT_LEVEL = 1

dirPath = os.path.dirname(os.path.realpath(__file__))
listOfSrcFiles = glob.glob(dirPath + "/resources/*.qasm")
listOfTestCases = []
for srcFile in listOfSrcFiles:
  testCaseName = os.path.splitext(os.path.basename(srcFile))[0] + ".out"
  listOfTestCases.append(testCaseName)
  print("Compile test case: ", testCaseName)

  process = subprocess.Popen([qcorExe, "-DTEST_SOURCE_FILE=\"" + srcFile + "\"", "-o", testCaseName, "-opt", str(OPT_LEVEL), "-print-opt-stats", "circuit_opt_benchmark.cpp"],
                             stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE)
  stdout, stderr = process.communicate()

for testCase in listOfTestCases:
  print("Run Benchmark: ", testCase)
  testExe = dirPath + "/" + testCase
  process = subprocess.run([testExe], stdout=sys.stdout, stderr=subprocess.PIPE)
+140 −0
Original line number Diff line number Diff line
OPENQASM 2.0;
include "qelib1.inc";

qreg qubits[24];
cx qubits[3],qubits[2];
cx qubits[8],qubits[7];
cx qubits[14],qubits[13];
cx qubits[21],qubits[20];
cx qubits[3],qubits[4];
cx qubits[8],qubits[9];
cx qubits[14],qubits[15];
cx qubits[21],qubits[22];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
ccx qubits[18],qubits[19],qubits[21];
ccx qubits[2],qubits[3],qubits[4];
ccx qubits[7],qubits[8],qubits[9];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[15];
ccx qubits[13],qubits[14],qubits[16];
ccx qubits[20],qubits[21],qubits[22];
ccx qubits[20],qubits[21],qubits[23];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
cx qubits[19],qubits[18];
cx qubits[5],qubits[8];
cx qubits[11],qubits[14];
cx qubits[18],qubits[21];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
ccx qubits[20],qubits[21],qubits[23];
ccx qubits[16],qubits[23],qubits[17];
ccx qubits[15],qubits[23],qubits[22];
ccx qubits[4],qubits[10],qubits[9];
ccx qubits[9],qubits[17],qubits[22];
ccx qubits[9],qubits[16],qubits[15];
ccx qubits[16],qubits[23],qubits[17];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
ccx qubits[20],qubits[21],qubits[23];
cx qubits[5],qubits[8];
cx qubits[11],qubits[14];
cx qubits[18],qubits[21];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
cx qubits[19],qubits[18];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
ccx qubits[20],qubits[21],qubits[23];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
ccx qubits[18],qubits[19],qubits[21];
cx qubits[3],qubits[2];
cx qubits[8],qubits[7];
cx qubits[14],qubits[13];
cx qubits[21],qubits[20];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
cx qubits[19],qubits[18];
cx qubits[6],qubits[8];
cx qubits[12],qubits[14];
cx qubits[19],qubits[21];
cx qubits[4],qubits[6];
cx qubits[9],qubits[12];
cx qubits[15],qubits[19];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
ccx qubits[18],qubits[19],qubits[21];
cx qubits[3],qubits[2];
cx qubits[8],qubits[7];
cx qubits[14],qubits[13];
cx qubits[21],qubits[20];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
ccx qubits[18],qubits[19],qubits[21];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
cx qubits[19],qubits[18];
cx qubits[4],qubits[6];
cx qubits[9],qubits[12];
cx qubits[15],qubits[19];
cx qubits[6],qubits[8];
cx qubits[12],qubits[14];
cx qubits[19],qubits[21];
cx qubits[1],qubits[0];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
cx qubits[19],qubits[18];
x qubits[0];
x qubits[2];
x qubits[5];
x qubits[7];
x qubits[11];
x qubits[13];
cx qubits[3],qubits[2];
cx qubits[8],qubits[7];
cx qubits[14],qubits[13];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
cx qubits[5],qubits[8];
cx qubits[11],qubits[14];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
ccx qubits[9],qubits[16],qubits[15];
ccx qubits[4],qubits[10],qubits[9];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
cx qubits[5],qubits[8];
cx qubits[11],qubits[14];
ccx qubits[7],qubits[8],qubits[10];
ccx qubits[13],qubits[14],qubits[16];
cx qubits[6],qubits[5];
cx qubits[12],qubits[11];
ccx qubits[7],qubits[8],qubits[9];
ccx qubits[13],qubits[14],qubits[15];
ccx qubits[2],qubits[3],qubits[4];
ccx qubits[0],qubits[1],qubits[3];
ccx qubits[5],qubits[6],qubits[8];
ccx qubits[11],qubits[12],qubits[14];
cx qubits[3],qubits[4];
cx qubits[8],qubits[9];
cx qubits[14],qubits[15];
cx qubits[3],qubits[2];
cx qubits[8],qubits[7];
cx qubits[14],qubits[13];
x qubits[0];
x qubits[2];
x qubits[5];
x qubits[7];
x qubits[11];
x qubits[13];
+163 −0
Original line number Diff line number Diff line
OPENQASM 2.0;
include "qelib1.inc";

qreg qubits[9];
x qubits[5];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
h qubits[5];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[4],qubits[8],qubits[5];
ccx qubits[3],qubits[7],qubits[8];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
ccx qubits[0],qubits[1],qubits[6];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[3],qubits[7],qubits[4];
ccx qubits[2],qubits[6],qubits[7];
ccx qubits[0],qubits[1],qubits[6];
x qubits[4];
x qubits[0];
x qubits[1];
x qubits[2];
x qubits[3];
h qubits[0];
h qubits[1];
h qubits[2];
h qubits[3];
h qubits[4];
+299 −0
Original line number Diff line number Diff line
OPENQASM 2.0;
include "qelib1.inc";

qreg qubits[28];
cx qubits[9],qubits[19];
ccx qubits[8],qubits[18],qubits[19];
cx qubits[8],qubits[18];
ccx qubits[7],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[7],qubits[17],qubits[20];
ccx qubits[7],qubits[17],qubits[18];
cx qubits[7],qubits[17];
ccx qubits[6],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[6],qubits[16],qubits[21];
ccx qubits[6],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[6],qubits[16],qubits[20];
ccx qubits[6],qubits[16],qubits[17];
cx qubits[6],qubits[16];
ccx qubits[5],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[5],qubits[15],qubits[22];
ccx qubits[5],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[5],qubits[15],qubits[21];
ccx qubits[5],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[5],qubits[15],qubits[20];
ccx qubits[5],qubits[15],qubits[16];
cx qubits[5],qubits[15];
ccx qubits[4],qubits[14],qubits[23];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[4],qubits[14],qubits[23];
ccx qubits[4],qubits[14],qubits[22];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[4],qubits[14],qubits[22];
ccx qubits[4],qubits[14],qubits[21];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[4],qubits[14],qubits[21];
ccx qubits[4],qubits[14],qubits[20];
ccx qubits[20],qubits[15],qubits[16];
ccx qubits[4],qubits[14],qubits[20];
ccx qubits[4],qubits[14],qubits[15];
cx qubits[4],qubits[14];
ccx qubits[3],qubits[13],qubits[24];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[3],qubits[13],qubits[24];
ccx qubits[3],qubits[13],qubits[23];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[3],qubits[13],qubits[23];
ccx qubits[3],qubits[13],qubits[22];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[3],qubits[13],qubits[22];
ccx qubits[3],qubits[13],qubits[21];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[20],qubits[15],qubits[16];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[3],qubits[13],qubits[21];
ccx qubits[3],qubits[13],qubits[20];
ccx qubits[20],qubits[14],qubits[15];
ccx qubits[3],qubits[13],qubits[20];
ccx qubits[3],qubits[13],qubits[14];
cx qubits[3],qubits[13];
ccx qubits[2],qubits[12],qubits[25];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[2],qubits[12],qubits[25];
ccx qubits[2],qubits[12],qubits[24];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[2],qubits[12],qubits[24];
ccx qubits[2],qubits[12],qubits[23];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[2],qubits[12],qubits[23];
ccx qubits[2],qubits[12],qubits[22];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[20],qubits[15],qubits[16];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[2],qubits[12],qubits[22];
ccx qubits[2],qubits[12],qubits[21];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[20],qubits[14],qubits[15];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[2],qubits[12],qubits[21];
ccx qubits[2],qubits[12],qubits[20];
ccx qubits[20],qubits[13],qubits[14];
ccx qubits[2],qubits[12],qubits[20];
ccx qubits[2],qubits[12],qubits[13];
cx qubits[2],qubits[12];
ccx qubits[1],qubits[11],qubits[26];
ccx qubits[26],qubits[12],qubits[25];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[26],qubits[12],qubits[25];
ccx qubits[1],qubits[11],qubits[26];
ccx qubits[1],qubits[11],qubits[25];
ccx qubits[25],qubits[12],qubits[24];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[25],qubits[12],qubits[24];
ccx qubits[1],qubits[11],qubits[25];
ccx qubits[1],qubits[11],qubits[24];
ccx qubits[24],qubits[12],qubits[23];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[24],qubits[12],qubits[23];
ccx qubits[1],qubits[11],qubits[24];
ccx qubits[1],qubits[11],qubits[23];
ccx qubits[23],qubits[12],qubits[22];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[20],qubits[15],qubits[16];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[23],qubits[12],qubits[22];
ccx qubits[1],qubits[11],qubits[23];
ccx qubits[1],qubits[11],qubits[22];
ccx qubits[22],qubits[12],qubits[21];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[20],qubits[14],qubits[15];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[22],qubits[12],qubits[21];
ccx qubits[1],qubits[11],qubits[22];
ccx qubits[1],qubits[11],qubits[21];
ccx qubits[21],qubits[12],qubits[20];
ccx qubits[20],qubits[13],qubits[14];
ccx qubits[21],qubits[12],qubits[20];
ccx qubits[1],qubits[11],qubits[21];
ccx qubits[1],qubits[11],qubits[20];
ccx qubits[20],qubits[12],qubits[13];
ccx qubits[1],qubits[11],qubits[20];
ccx qubits[1],qubits[11],qubits[12];
cx qubits[1],qubits[11];
ccx qubits[0],qubits[10],qubits[27];
ccx qubits[27],qubits[11],qubits[26];
ccx qubits[26],qubits[12],qubits[25];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[20],qubits[18],qubits[19];
ccx qubits[21],qubits[17],qubits[20];
ccx qubits[22],qubits[16],qubits[21];
ccx qubits[23],qubits[15],qubits[22];
ccx qubits[24],qubits[14],qubits[23];
ccx qubits[25],qubits[13],qubits[24];
ccx qubits[26],qubits[12],qubits[25];
ccx qubits[27],qubits[11],qubits[26];
ccx qubits[0],qubits[10],qubits[27];
ccx qubits[0],qubits[10],qubits[26];
ccx qubits[26],qubits[11],qubits[25];
ccx qubits[25],qubits[12],qubits[24];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[20],qubits[17],qubits[18];
ccx qubits[21],qubits[16],qubits[20];
ccx qubits[22],qubits[15],qubits[21];
ccx qubits[23],qubits[14],qubits[22];
ccx qubits[24],qubits[13],qubits[23];
ccx qubits[25],qubits[12],qubits[24];
ccx qubits[26],qubits[11],qubits[25];
ccx qubits[0],qubits[10],qubits[26];
ccx qubits[0],qubits[10],qubits[25];
ccx qubits[25],qubits[11],qubits[24];
ccx qubits[24],qubits[12],qubits[23];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[20],qubits[16],qubits[17];
ccx qubits[21],qubits[15],qubits[20];
ccx qubits[22],qubits[14],qubits[21];
ccx qubits[23],qubits[13],qubits[22];
ccx qubits[24],qubits[12],qubits[23];
ccx qubits[25],qubits[11],qubits[24];
ccx qubits[0],qubits[10],qubits[25];
ccx qubits[0],qubits[10],qubits[24];
ccx qubits[24],qubits[11],qubits[23];
ccx qubits[23],qubits[12],qubits[22];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[20],qubits[15],qubits[16];
ccx qubits[21],qubits[14],qubits[20];
ccx qubits[22],qubits[13],qubits[21];
ccx qubits[23],qubits[12],qubits[22];
ccx qubits[24],qubits[11],qubits[23];
ccx qubits[0],qubits[10],qubits[24];
ccx qubits[0],qubits[10],qubits[23];
ccx qubits[23],qubits[11],qubits[22];
ccx qubits[22],qubits[12],qubits[21];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[20],qubits[14],qubits[15];
ccx qubits[21],qubits[13],qubits[20];
ccx qubits[22],qubits[12],qubits[21];
ccx qubits[23],qubits[11],qubits[22];
ccx qubits[0],qubits[10],qubits[23];
ccx qubits[0],qubits[10],qubits[22];
ccx qubits[22],qubits[11],qubits[21];
ccx qubits[21],qubits[12],qubits[20];
ccx qubits[20],qubits[13],qubits[14];
ccx qubits[21],qubits[12],qubits[20];
ccx qubits[22],qubits[11],qubits[21];
ccx qubits[0],qubits[10],qubits[22];
ccx qubits[0],qubits[10],qubits[21];
ccx qubits[21],qubits[11],qubits[20];
ccx qubits[20],qubits[12],qubits[13];
ccx qubits[21],qubits[11],qubits[20];
ccx qubits[0],qubits[10],qubits[21];
ccx qubits[0],qubits[10],qubits[20];
ccx qubits[20],qubits[11],qubits[12];
ccx qubits[0],qubits[10],qubits[20];
ccx qubits[0],qubits[10],qubits[11];
cx qubits[0],qubits[10];
Loading