From 9f62ec55e81c66c4dc45695a5214d15e4040987e Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Mon, 13 Jan 2025 15:00:04 -0800 Subject: [PATCH 01/18] remove unused QASM generation functions --- benchmarks/scripts/generate_qasm.py | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/benchmarks/scripts/generate_qasm.py b/benchmarks/scripts/generate_qasm.py index 57b1447..19f251a 100644 --- a/benchmarks/scripts/generate_qasm.py +++ b/benchmarks/scripts/generate_qasm.py @@ -5,13 +5,13 @@ # Prepare an N-qubit GHZ state and select the all ones state. from write_qasm import write_qasm -from cirq_circuits import VQE_ansatz, cirq_prep_select -from qiskit_circuits import qcnn_circuit, qaoa_ising_ansatz +from cirq_circuits import cirq_prep_select +from qiskit_circuits import qcnn_circuit from numpy import log2, ceil # ### Prepare & Select -num_qubits = 25 +num_qubits = 10 target_state="1" * num_qubits circuit = cirq_prep_select(num_qubits, target_state=target_state) @@ -23,7 +23,7 @@ ) # ### QCNN circuit -num_qubits = 100 +num_qubits = 10 num_layers = int(ceil(log2(num_qubits))) seed = 12345 @@ -34,22 +34,3 @@ write_qasm(circuit, circuit_name=filename, basis_gates=['rz', 'rx', 'ry', 'h', 'cx']) - -# ### Parameterized VQE ansatz -num_qubits = 50 -num_layers = num_qubits * 2 -num_layers = num_qubits * 2 - -circuit = VQE_ansatz(num_qubits, num_layers) -filename = f"VQE_ansatz_N{num_qubits}_{num_layers}layers" - -write_qasm(circuit, circuit_name=filename, version='3') - -# ### QAOA neighest neighbors Ising mode -num_qubits = 50 -num_layers = num_qubits * 3 - -circuit = qaoa_ising_ansatz(num_qubits, num_layers) -filename = f"QAOA_Ising_ansatz_N{num_qubits}_{num_layers}layers" - -write_qasm(circuit, circuit_name=filename, version='3') From 47632ad65d8ade49d613f655446044a84a153818 Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Mon, 13 Jan 2025 15:34:30 -0800 Subject: [PATCH 02/18] Bug fixes for save --- benchmarks/scripts/write_qasm.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/benchmarks/scripts/write_qasm.py b/benchmarks/scripts/write_qasm.py index 960cfbb..7b7f543 100644 --- a/benchmarks/scripts/write_qasm.py +++ b/benchmarks/scripts/write_qasm.py @@ -1,11 +1,9 @@ - -from qbraid.transpiler import transpile as translate +from qbraid.transpiler import transpile from qiskit import transpile as qiskit_transpile -from os.path import join - +import os def write_qasm(circuit, circuit_name, version='2', basis_gates=[], folder="../qasm_circuits"): - qiskit_circuit = translate(circuit, 'qiskit') + qiskit_circuit = transpile(circuit, 'qiskit') if basis_gates: decomp_circuit = qiskit_transpile( qiskit_circuit, @@ -15,14 +13,22 @@ def write_qasm(circuit, circuit_name, version='2', basis_gates=[], folder="../qa decomp_circuit = qiskit_circuit # Generate QASM string - qasm_string = translate(decomp_circuit, 'qasm' + version) - - # Write the string to a .qasm file + qasm_string = transpile(decomp_circuit, 'qasm' + version) - filename = join(folder, f"/qasm{version}/ucc/{circuit_name}") + # Get the absolute path of the current script + script_dir = os.path.dirname(os.path.abspath(__file__)) + + # Create the absolute path for the folder where QASM files will be saved + abs_folder = os.path.abspath(os.path.join(script_dir, folder)) + + # Construct the filename with the given circuit name and version + filename = os.path.join(abs_folder, f"qasm{version}/ucc/{circuit_name}") + + # Append basis gates to the filename if they are provided if basis_gates: filename += f"_basis_{'_'.join(basis_gates)}" + os.makedirs(os.path.dirname(filename), exist_ok=True) + with open(filename + ".qasm", "w") as file: file.write(qasm_string) - From c7dcd186d4450b4a0de8551bbae84a466d66a91c Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Mon, 13 Jan 2025 15:38:38 -0800 Subject: [PATCH 03/18] Add N=10 qubits QCNN file --- .../qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 benchmarks/qasm_circuits/qasm2/ucc/qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm diff --git a/benchmarks/qasm_circuits/qasm2/ucc/qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm b/benchmarks/qasm_circuits/qasm2/ucc/qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm new file mode 100644 index 0000000..e3c9c25 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/ucc/qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm @@ -0,0 +1,147 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[10]; +h q[0]; +h q[1]; +cx q[0],q[1]; +rz(0.22733602246716966) q[1]; +cx q[0],q[1]; +h q[0]; +ry(0.31675833970975287) q[0]; +h q[0]; +h q[1]; +ry(0.7973654573327341) q[1]; +h q[1]; +h q[2]; +h q[3]; +cx q[2],q[3]; +rz(0.6762546707509746) q[3]; +cx q[2],q[3]; +h q[2]; +ry(0.391109550601909) q[2]; +h q[2]; +cx q[1],q[2]; +rz(0.8864799193275177) q[2]; +cx q[1],q[2]; +h q[1]; +ry(0.6974534998820221) q[1]; +h q[2]; +ry(0.3264728640701121) q[2]; +h q[2]; +cx q[0],q[2]; +rz(0.12946907617720027) q[2]; +cx q[0],q[2]; +h q[0]; +ry(0.09166475154493592) q[0]; +h q[0]; +h q[2]; +ry(0.5985680136649132) q[2]; +h q[2]; +h q[3]; +ry(0.33281392786638453) q[3]; +h q[3]; +h q[4]; +h q[5]; +cx q[4],q[5]; +rz(0.5983087535871898) q[5]; +cx q[4],q[5]; +h q[4]; +ry(0.18673418560371335) q[4]; +h q[4]; +cx q[3],q[4]; +rz(0.7339281633300665) q[4]; +cx q[3],q[4]; +h q[3]; +ry(0.22013495554548623) q[3]; +h q[4]; +ry(0.08159456954220812) q[4]; +h q[4]; +h q[5]; +ry(0.6727560440146213) q[5]; +h q[5]; +h q[6]; +h q[7]; +cx q[6],q[7]; +rz(0.9418028652699372) q[7]; +cx q[6],q[7]; +h q[6]; +ry(0.248245714629571) q[6]; +h q[6]; +cx q[5],q[6]; +rz(0.15989560107504752) q[6]; +cx q[5],q[6]; +h q[5]; +ry(0.3401001849547053) q[5]; +h q[6]; +ry(0.46519315370205094) q[6]; +h q[6]; +cx q[4],q[6]; +rz(0.8547419043740013) q[6]; +cx q[4],q[6]; +h q[4]; +ry(0.6016212416937131) q[4]; +h q[4]; +cx q[2],q[4]; +rz(0.7247813610920201) q[4]; +cx q[2],q[4]; +h q[2]; +ry(0.8605513173932924) q[2]; +h q[4]; +ry(0.9293378015753163) q[4]; +h q[4]; +cx q[0],q[4]; +rz(0.2737731824899875) q[4]; +cx q[0],q[4]; +h q[0]; +ry(0.4517787074747607) q[0]; +h q[0]; +h q[4]; +ry(0.6650389233995303) q[4]; +h q[4]; +h q[6]; +ry(0.9319883611359835) q[6]; +h q[6]; +h q[7]; +ry(0.9488811518333182) q[7]; +h q[7]; +h q[8]; +h q[9]; +cx q[8],q[9]; +rz(0.6672374531003724) q[9]; +cx q[8],q[9]; +h q[8]; +ry(0.09589793559411208) q[8]; +h q[8]; +cx q[7],q[8]; +rz(0.26642102829077097) q[8]; +cx q[7],q[8]; +h q[7]; +ry(0.815776403424807) q[7]; +h q[8]; +ry(0.1932943892894945) q[8]; +h q[8]; +cx q[6],q[8]; +rz(0.546186009082353) q[8]; +cx q[6],q[8]; +h q[6]; +ry(0.9376729587677569) q[6]; +h q[8]; +ry(0.4949879400788243) q[8]; +h q[8]; +cx q[4],q[8]; +rz(0.33089093046705464) q[8]; +cx q[4],q[8]; +h q[4]; +ry(0.9034540068082391) q[4]; +h q[8]; +ry(0.2570741752765343) q[8]; +h q[8]; +cx q[0],q[8]; +rz(0.33982833761031983) q[8]; +cx q[0],q[8]; +h q[0]; +ry(0.25885339864292733) q[0]; +h q[8]; +ry(0.355446479944286) q[8]; +h q[9]; +ry(0.4418396661678128) q[9]; \ No newline at end of file From 1ed386c6d8a9957b79d45405f8811f4daf705a50 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Mon, 13 Jan 2025 18:05:49 -0800 Subject: [PATCH 04/18] refactor expval benchmark to run single iteration --- benchmarks/scripts/expval_benchmark.py | 115 +++++++++++++------------ benchmarks/scripts/run_benchmarks.sh | 13 +++ 2 files changed, 75 insertions(+), 53 deletions(-) diff --git a/benchmarks/scripts/expval_benchmark.py b/benchmarks/scripts/expval_benchmark.py index 9399a32..cf9e711 100644 --- a/benchmarks/scripts/expval_benchmark.py +++ b/benchmarks/scripts/expval_benchmark.py @@ -1,56 +1,68 @@ +import sys + import cirq import pytket import qiskit -from cirq.contrib.qasm_import import circuit_from_qasm from qiskit import qasm2 from qiskit.quantum_info import Operator, Statevector from qiskit_aer import AerSimulator from qiskit_aer.noise import NoiseModel, depolarizing_error import numpy as np -from common import cirq_compile, pytket_compile, qiskit_compile, save_results +from common import cirq_compile, pytket_compile, qiskit_compile, save_results, get_native_rep from ucc import compile as ucc_compile +if len(sys.argv) < 4: + print("Usage: python expval_benchmark.py ") + sys.exit(1) + +qasm_path: str = sys.argv[1] +compiler_alias: str = sys.argv[2] +results_folder: str = sys.argv[3] # New argument for results folder -with open("../circuits/qasm2/ucc/prep_select_N10_ghz.qasm") as f: +with open(qasm_path) as f: qasm_string = f.read() -def generate_compiled_circuits(qasm: str) -> dict[str, qiskit.QuantumCircuit]: - """Compiles the circuit represented in a QASM string using different - compilers before converting them all to Qiskit circuits. +def compile_for_simulation(circuit, compiler_alias: str) -> qiskit.QuantumCircuit: + """Compiles the circuit and converts it to qiskit so it can be run on the AerSimulator. Args: - qasm: The QASM string representing the quantum circuit to be compiled. + circuit: The circuit to be compiled. Can be any of the supported + circuit representations (cirq, qiskit, pytket) + compiler_alias: The alias of the compiler to be used for compilation. + Can be one of "ucc", "qiskit", "cirq", "pytket", or "none". Returns: - A dictionary containing the compiled quantum circuits with keys: - uncompiled, ucc, cirq, qiskit, pytket. + A compiled circuit having used the compiler affiliated with the + compiler_alias. """ - uncompiled_circuit = qasm2.loads(qasm) - qiskit_compiled = qiskit_compile(uncompiled_circuit) - uncompiled_circuit.save_density_matrix() - qiskit_compiled.save_density_matrix() - - ucc_compiled = ucc_compile(qasm, return_format="qiskit") - ucc_compiled.save_density_matrix() - - cirq_compiled = cirq.qasm(cirq_compile(circuit_from_qasm(qasm))) - cirq_compiled_qiskit = qasm2.loads(cirq_compiled) - cirq_compiled_qiskit.save_density_matrix() - - pytket_compiled = pytket.qasm.circuit_to_qasm_str( - pytket_compile(pytket.qasm.circuit_from_qasm_str(qasm_string)) - ) - pytket_compiled_qiskit = qasm2.loads(pytket_compiled) - pytket_compiled_qiskit.save_density_matrix() - - return { - "uncompiled": uncompiled_circuit, - "ucc": ucc_compiled, - "cirq": cirq_compiled_qiskit, - "qiskit": qiskit_compiled, - "pytket": pytket_compiled_qiskit, - } + match compiler_alias: + case "ucc": + ucc_compiled = ucc_compile(circuit, return_format="qiskit") + ucc_compiled.save_density_matrix() + return ucc_compiled + + case "pytket": + pytket_compiled = pytket.qasm.circuit_to_qasm_str( + pytket_compile(circuit) + ) + pytket_compiled_qiskit = qasm2.loads(pytket_compiled) + pytket_compiled_qiskit.save_density_matrix() + return pytket_compiled_qiskit + + case "qiskit": + qiskit_compiled = qiskit_compile(circuit) + qiskit_compiled.save_density_matrix() + return qiskit_compiled + + case "cirq": + cirq_compiled_qasm = cirq.qasm(cirq_compile(circuit)) + cirq_compiled_qiskit = qasm2.loads(cirq_compiled_qasm) + cirq_compiled_qiskit.save_density_matrix() + return cirq_compiled_qiskit + + case _: + raise ValueError(f"Unknown compiler alias: {compiler_alias}") def simulate_density_matrix(circuit: qiskit.QuantumCircuit) -> np.ndarray: @@ -64,32 +76,29 @@ def simulate_density_matrix(circuit: qiskit.QuantumCircuit) -> np.ndarray: return simulator.run(circuit).result().data()["density_matrix"] -density_matrices = { - compiler: simulate_density_matrix(circuit) - for compiler, circuit in generate_compiled_circuits(qasm_string).items() -} - +native_circuit = get_native_rep(qasm_string, compiler_alias) +compiled_circuit = compile_for_simulation(native_circuit, compiler_alias) +density_matrix = simulate_density_matrix(compiled_circuit) -observable = Operator.from_label("ZZZZZZZZZZ") +obs_str = "ZZZZZZZZZZ" +observable = Operator.from_label(obs_str) -expectation_values = { - compiler: np.real(dm.expectation_value(observable)) - for compiler, dm in density_matrices.items() -} +compiled_ev = np.real(density_matrix.expectation_value(observable)) -ideal_circuit = qasm2.loads(qasm_string) +ideal_circuit = get_native_rep(qasm_string, "qiskit") ideal_state = Statevector.from_instruction(ideal_circuit) -ideal_expval = np.real(ideal_state.expectation_value(observable)) +ideal_ev = np.real(ideal_state.expectation_value(observable)) results = [{ - "compiler":compiler, - "expval": expval, - "absoluate_error": abs(ideal_expval - expval), - "relative_error": abs(ideal_expval - expval) / abs(ideal_expval), - "ideal": ideal_expval, + "compiler": compiler_alias, + "circuit_name": qasm_path.split('/')[-1].split('_N')[0], + "observable": obs_str, + "expval": compiled_ev, + "absoluate_error": abs(ideal_ev - compiled_ev), + "relative_error": abs(ideal_ev - compiled_ev) / abs(ideal_ev), + "ideal_expval": ideal_ev, } - for compiler, expval in expectation_values.items() ] -save_results(results, "expval") +save_results(results, benchmark_name="expval", folder=results_folder, append=True) diff --git a/benchmarks/scripts/run_benchmarks.sh b/benchmarks/scripts/run_benchmarks.sh index 0e67945..bb704f0 100755 --- a/benchmarks/scripts/run_benchmarks.sh +++ b/benchmarks/scripts/run_benchmarks.sh @@ -46,5 +46,18 @@ for qasm_file in "${QASM_FILES[@]}"; do done done +QASM_EXPVAL_FILES=() # TODO +for qasm_file in "${QASM_EXPVAL_FILES[@]}"; do + for compiler in "${COMPILERS[@]}"; do + # Combine the common folder path with the QASM file + full_qasm_file="${QASM_FOLDER}${qasm_file}" + + # Build the command, passing the results folder as an argument + command="python3 $(dirname "$0")/expval_benchmark.py \"$full_qasm_file\" \"$compiler\" \"$RESULTS_FOLDER\"" + + commands+=("$command") + done +done + # Execute all the commands in parallel up to the specified number of parallel jobs parallel -j "$PARALLELISM" ::: "${commands[@]}" From 019a23254b3016af0598a5fc7230d1d594adf648 Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Tue, 14 Jan 2025 09:55:40 -0800 Subject: [PATCH 05/18] Copy benchpress QASM 2 files for N=10 and N=9 qubits --- ...si_albert_N10_3reps_basis_rz_rx_ry_cx.qasm | 197 ++ .../qft_N010_basis_rz_rx_ry_cx.qasm | 263 ++ .../qv_N010_12345_basis_rz_rx_ry_cx.qasm | 2153 +++++++++++++++++ ...quare_heisenberg_N9_basis_rz_rx_ry_cx.qasm | 516 ++++ 4 files changed, 3129 insertions(+) create mode 100644 benchmarks/qasm_circuits/qasm2/benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm create mode 100644 benchmarks/qasm_circuits/qasm2/benchpress/qft_N010_basis_rz_rx_ry_cx.qasm create mode 100644 benchmarks/qasm_circuits/qasm2/benchpress/qv_N010_12345_basis_rz_rx_ry_cx.qasm create mode 100644 benchmarks/qasm_circuits/qasm2/benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm diff --git a/benchmarks/qasm_circuits/qasm2/benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm b/benchmarks/qasm_circuits/qasm2/benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm new file mode 100644 index 0000000..dd43174 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm @@ -0,0 +1,197 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[10]; +ry(pi/2) q[0]; +rx(pi) q[0]; +ry(pi/2) q[1]; +rx(pi) q[1]; +cx q[0],q[1]; +rz(1.5846238651156088) q[1]; +cx q[0],q[1]; +ry(pi/2) q[2]; +rx(pi) q[2]; +cx q[0],q[2]; +rz(1.5846238651156088) q[2]; +cx q[0],q[2]; +rx(1.9993980494552113) q[2]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[0],q[3]; +rz(1.5846238651156088) q[3]; +cx q[0],q[3]; +rx(1.9993980494552113) q[0]; +cx q[1],q[3]; +rz(1.5846238651156088) q[3]; +cx q[1],q[3]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[1],q[4]; +rz(1.5846238651156088) q[4]; +cx q[1],q[4]; +cx q[3],q[4]; +rz(1.5846238651156088) q[4]; +cx q[3],q[4]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[1],q[5]; +rz(1.5846238651156088) q[5]; +cx q[1],q[5]; +cx q[3],q[5]; +rz(1.5846238651156088) q[5]; +cx q[3],q[5]; +ry(pi/2) q[6]; +rx(pi) q[6]; +cx q[4],q[6]; +rz(1.5846238651156088) q[6]; +cx q[4],q[6]; +cx q[5],q[6]; +rz(1.5846238651156088) q[6]; +cx q[5],q[6]; +rx(1.9993980494552113) q[6]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[3],q[7]; +rz(1.5846238651156088) q[7]; +cx q[3],q[7]; +cx q[4],q[7]; +rz(1.5846238651156088) q[7]; +cx q[4],q[7]; +rx(1.9993980494552113) q[4]; +rx(1.9993980494552113) q[7]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[3],q[8]; +rz(1.5846238651156088) q[8]; +cx q[3],q[8]; +cx q[5],q[8]; +rz(1.5846238651156088) q[8]; +cx q[5],q[8]; +rx(1.9993980494552113) q[5]; +rx(1.9993980494552113) q[8]; +ry(pi/2) q[9]; +rx(pi) q[9]; +cx q[1],q[9]; +rz(1.5846238651156088) q[9]; +cx q[1],q[9]; +rx(1.9993980494552113) q[1]; +cx q[0],q[1]; +rz(0.8199726992929931) q[1]; +cx q[0],q[1]; +cx q[0],q[2]; +rz(0.8199726992929931) q[2]; +cx q[0],q[2]; +rx(9.808607416083087) q[2]; +cx q[3],q[9]; +rz(1.5846238651156088) q[9]; +cx q[3],q[9]; +rx(1.9993980494552113) q[3]; +cx q[0],q[3]; +rz(0.8199726992929931) q[3]; +cx q[0],q[3]; +rx(9.808607416083087) q[0]; +cx q[1],q[3]; +rz(0.8199726992929931) q[3]; +cx q[1],q[3]; +cx q[1],q[4]; +rz(0.8199726992929931) q[4]; +cx q[1],q[4]; +cx q[1],q[5]; +cx q[3],q[4]; +rz(0.8199726992929931) q[4]; +cx q[3],q[4]; +cx q[4],q[6]; +rz(0.8199726992929931) q[5]; +cx q[1],q[5]; +cx q[3],q[5]; +rz(0.8199726992929931) q[5]; +cx q[3],q[5]; +cx q[3],q[7]; +rz(0.8199726992929931) q[6]; +cx q[4],q[6]; +cx q[5],q[6]; +rz(0.8199726992929931) q[6]; +cx q[5],q[6]; +rx(9.808607416083087) q[6]; +rz(0.8199726992929931) q[7]; +cx q[3],q[7]; +cx q[3],q[8]; +cx q[4],q[7]; +rz(0.8199726992929931) q[7]; +cx q[4],q[7]; +rx(9.808607416083087) q[4]; +rx(9.808607416083087) q[7]; +rz(0.8199726992929931) q[8]; +cx q[3],q[8]; +cx q[5],q[8]; +rz(0.8199726992929931) q[8]; +cx q[5],q[8]; +rx(9.808607416083087) q[5]; +rx(9.808607416083087) q[8]; +rx(1.9993980494552113) q[9]; +cx q[1],q[9]; +rz(0.8199726992929931) q[9]; +cx q[1],q[9]; +rx(9.808607416083087) q[1]; +cx q[0],q[1]; +rz(1.2724239654332838) q[1]; +cx q[0],q[1]; +cx q[0],q[2]; +rz(1.2724239654332838) q[2]; +cx q[0],q[2]; +rx(4.304211127616218) q[2]; +cx q[3],q[9]; +rz(0.8199726992929931) q[9]; +cx q[3],q[9]; +rx(9.808607416083087) q[3]; +cx q[0],q[3]; +rz(1.2724239654332838) q[3]; +cx q[0],q[3]; +rx(4.304211127616218) q[0]; +cx q[1],q[3]; +rz(1.2724239654332838) q[3]; +cx q[1],q[3]; +cx q[1],q[4]; +rz(1.2724239654332838) q[4]; +cx q[1],q[4]; +cx q[1],q[5]; +cx q[3],q[4]; +rz(1.2724239654332838) q[4]; +cx q[3],q[4]; +cx q[4],q[6]; +rz(1.2724239654332838) q[5]; +cx q[1],q[5]; +cx q[3],q[5]; +rz(1.2724239654332838) q[5]; +cx q[3],q[5]; +cx q[3],q[7]; +rz(1.2724239654332838) q[6]; +cx q[4],q[6]; +cx q[5],q[6]; +rz(1.2724239654332838) q[6]; +cx q[5],q[6]; +rx(4.304211127616218) q[6]; +rz(1.2724239654332838) q[7]; +cx q[3],q[7]; +cx q[3],q[8]; +cx q[4],q[7]; +rz(1.2724239654332838) q[7]; +cx q[4],q[7]; +rx(4.304211127616218) q[4]; +rx(4.304211127616218) q[7]; +rz(1.2724239654332838) q[8]; +cx q[3],q[8]; +cx q[5],q[8]; +rz(1.2724239654332838) q[8]; +cx q[5],q[8]; +rx(4.304211127616218) q[5]; +rx(4.304211127616218) q[8]; +rx(9.808607416083087) q[9]; +cx q[1],q[9]; +rz(1.2724239654332838) q[9]; +cx q[1],q[9]; +rx(4.304211127616218) q[1]; +cx q[3],q[9]; +rz(1.2724239654332838) q[9]; +cx q[3],q[9]; +rx(4.304211127616218) q[3]; +rx(4.304211127616218) q[9]; \ No newline at end of file diff --git a/benchmarks/qasm_circuits/qasm2/benchpress/qft_N010_basis_rz_rx_ry_cx.qasm b/benchmarks/qasm_circuits/qasm2/benchpress/qft_N010_basis_rz_rx_ry_cx.qasm new file mode 100644 index 0000000..f307a16 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/benchpress/qft_N010_basis_rz_rx_ry_cx.qasm @@ -0,0 +1,263 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[10]; +ry(pi/2) q[9]; +rx(pi) q[9]; +rz(pi/4) q[9]; +cx q[9],q[8]; +rz(-pi/4) q[8]; +cx q[9],q[8]; +rz(pi/4) q[8]; +ry(pi/2) q[8]; +rx(pi) q[8]; +rz(pi/4) q[8]; +rz(pi/8) q[9]; +cx q[9],q[7]; +rz(-pi/8) q[7]; +cx q[9],q[7]; +rz(pi/8) q[7]; +cx q[8],q[7]; +rz(-pi/4) q[7]; +cx q[8],q[7]; +rz(pi/4) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +rz(pi/4) q[7]; +rz(pi/8) q[8]; +rz(pi/16) q[9]; +cx q[9],q[6]; +rz(-pi/16) q[6]; +cx q[9],q[6]; +rz(pi/16) q[6]; +cx q[8],q[6]; +rz(-pi/8) q[6]; +cx q[8],q[6]; +rz(pi/8) q[6]; +cx q[7],q[6]; +rz(-pi/4) q[6]; +cx q[7],q[6]; +rz(pi/4) q[6]; +ry(pi/2) q[6]; +rx(pi) q[6]; +rz(pi/4) q[6]; +rz(pi/8) q[7]; +rz(pi/16) q[8]; +rz(pi/32) q[9]; +cx q[9],q[5]; +rz(-pi/32) q[5]; +cx q[9],q[5]; +rz(pi/32) q[5]; +cx q[8],q[5]; +rz(-pi/16) q[5]; +cx q[8],q[5]; +rz(pi/16) q[5]; +cx q[7],q[5]; +rz(-pi/8) q[5]; +cx q[7],q[5]; +rz(pi/8) q[5]; +cx q[6],q[5]; +rz(-pi/4) q[5]; +cx q[6],q[5]; +rz(pi/4) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +rz(pi/4) q[5]; +rz(pi/8) q[6]; +rz(pi/16) q[7]; +rz(pi/32) q[8]; +rz(pi/64) q[9]; +cx q[9],q[4]; +rz(-pi/64) q[4]; +cx q[9],q[4]; +rz(pi/64) q[4]; +cx q[8],q[4]; +rz(-pi/32) q[4]; +cx q[8],q[4]; +rz(pi/32) q[4]; +cx q[7],q[4]; +rz(-pi/16) q[4]; +cx q[7],q[4]; +rz(pi/16) q[4]; +cx q[6],q[4]; +rz(-pi/8) q[4]; +cx q[6],q[4]; +rz(pi/8) q[4]; +cx q[5],q[4]; +rz(-pi/4) q[4]; +cx q[5],q[4]; +rz(pi/4) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rz(pi/4) q[4]; +rz(pi/8) q[5]; +rz(pi/16) q[6]; +rz(pi/32) q[7]; +rz(pi/64) q[8]; +rz(pi/128) q[9]; +cx q[9],q[3]; +rz(-pi/128) q[3]; +cx q[9],q[3]; +rz(pi/128) q[3]; +cx q[8],q[3]; +rz(-pi/64) q[3]; +cx q[8],q[3]; +rz(pi/64) q[3]; +cx q[7],q[3]; +rz(-pi/32) q[3]; +cx q[7],q[3]; +rz(pi/32) q[3]; +cx q[6],q[3]; +rz(-pi/16) q[3]; +cx q[6],q[3]; +rz(pi/16) q[3]; +cx q[5],q[3]; +rz(-pi/8) q[3]; +cx q[5],q[3]; +rz(pi/8) q[3]; +cx q[4],q[3]; +rz(-pi/4) q[3]; +cx q[4],q[3]; +rz(pi/4) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rz(pi/4) q[3]; +rz(pi/8) q[4]; +rz(pi/16) q[5]; +rz(pi/32) q[6]; +rz(pi/64) q[7]; +rz(pi/128) q[8]; +rz(pi/256) q[9]; +cx q[9],q[2]; +rz(-pi/256) q[2]; +cx q[9],q[2]; +rz(pi/256) q[2]; +cx q[8],q[2]; +rz(-pi/128) q[2]; +cx q[8],q[2]; +rz(pi/128) q[2]; +cx q[7],q[2]; +rz(-pi/64) q[2]; +cx q[7],q[2]; +rz(pi/64) q[2]; +cx q[6],q[2]; +rz(-pi/32) q[2]; +cx q[6],q[2]; +rz(pi/32) q[2]; +cx q[5],q[2]; +rz(-pi/16) q[2]; +cx q[5],q[2]; +rz(pi/16) q[2]; +cx q[4],q[2]; +rz(-pi/8) q[2]; +cx q[4],q[2]; +rz(pi/8) q[2]; +cx q[3],q[2]; +rz(-pi/4) q[2]; +cx q[3],q[2]; +rz(pi/4) q[2]; +ry(pi/2) q[2]; +rx(pi) q[2]; +rz(pi/4) q[2]; +rz(pi/8) q[3]; +rz(pi/16) q[4]; +rz(pi/32) q[5]; +rz(pi/64) q[6]; +rz(pi/128) q[7]; +rz(pi/256) q[8]; +rz(pi/512) q[9]; +cx q[9],q[1]; +rz(-pi/512) q[1]; +cx q[9],q[1]; +rz(pi/512) q[1]; +cx q[8],q[1]; +rz(-pi/256) q[1]; +cx q[8],q[1]; +rz(pi/256) q[1]; +cx q[7],q[1]; +rz(-pi/128) q[1]; +cx q[7],q[1]; +rz(pi/128) q[1]; +cx q[6],q[1]; +rz(-pi/64) q[1]; +cx q[6],q[1]; +rz(pi/64) q[1]; +cx q[5],q[1]; +rz(-pi/32) q[1]; +cx q[5],q[1]; +rz(pi/32) q[1]; +cx q[4],q[1]; +rz(-pi/16) q[1]; +cx q[4],q[1]; +rz(pi/16) q[1]; +cx q[3],q[1]; +rz(-pi/8) q[1]; +cx q[3],q[1]; +rz(pi/8) q[1]; +cx q[2],q[1]; +rz(-pi/4) q[1]; +cx q[2],q[1]; +rz(pi/4) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rz(pi/4) q[1]; +rz(pi/8) q[2]; +rz(pi/16) q[3]; +rz(pi/32) q[4]; +rz(pi/64) q[5]; +rz(pi/128) q[6]; +rz(pi/256) q[7]; +rz(pi/512) q[8]; +rz(pi/1024) q[9]; +cx q[9],q[0]; +rz(-pi/1024) q[0]; +cx q[9],q[0]; +rz(pi/1024) q[0]; +cx q[8],q[0]; +rz(-pi/512) q[0]; +cx q[8],q[0]; +rz(pi/512) q[0]; +cx q[7],q[0]; +rz(-pi/256) q[0]; +cx q[7],q[0]; +rz(pi/256) q[0]; +cx q[6],q[0]; +rz(-pi/128) q[0]; +cx q[6],q[0]; +rz(pi/128) q[0]; +cx q[5],q[0]; +rz(-pi/64) q[0]; +cx q[5],q[0]; +rz(pi/64) q[0]; +cx q[4],q[0]; +rz(-pi/32) q[0]; +cx q[4],q[0]; +rz(pi/32) q[0]; +cx q[3],q[0]; +rz(-pi/16) q[0]; +cx q[3],q[0]; +rz(pi/16) q[0]; +cx q[2],q[0]; +rz(-pi/8) q[0]; +cx q[2],q[0]; +rz(pi/8) q[0]; +cx q[1],q[0]; +rz(-pi/4) q[0]; +cx q[1],q[0]; +rz(pi/4) q[0]; +ry(pi/2) q[0]; +rx(pi) q[0]; +cx q[0],q[9]; +cx q[1],q[8]; +cx q[2],q[7]; +cx q[3],q[6]; +cx q[4],q[5]; +cx q[5],q[4]; +cx q[4],q[5]; +cx q[6],q[3]; +cx q[3],q[6]; +cx q[7],q[2]; +cx q[2],q[7]; +cx q[8],q[1]; +cx q[1],q[8]; +cx q[9],q[0]; +cx q[0],q[9]; \ No newline at end of file diff --git a/benchmarks/qasm_circuits/qasm2/benchpress/qv_N010_12345_basis_rz_rx_ry_cx.qasm b/benchmarks/qasm_circuits/qasm2/benchpress/qv_N010_12345_basis_rz_rx_ry_cx.qasm new file mode 100644 index 0000000..0333ab7 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/benchpress/qv_N010_12345_basis_rz_rx_ry_cx.qasm @@ -0,0 +1,2153 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[10]; +rz(-3.0673070686906154) q[0]; +rx(pi/2) q[0]; +rz(3.782930158394535) q[0]; +rx(pi/2) q[0]; +rz(10.513978951850419) q[0]; +rz(1.5371257432008747) q[1]; +rx(pi/2) q[1]; +rz(4.396658944222205) q[1]; +rx(pi/2) q[1]; +rz(7.733223002822721) q[1]; +rz(0.6848989036061588) q[2]; +rx(pi/2) q[2]; +rz(4.2160619387304) q[2]; +rx(pi/2) q[2]; +rz(9.024887790565257) q[2]; +rz(0.6861132726800268) q[3]; +rx(pi/2) q[3]; +rz(4.226611082696678) q[3]; +rx(pi/2) q[3]; +rz(10.023986740879565) q[3]; +rz(-1.8030416288638973) q[4]; +rx(pi/2) q[4]; +rz(4.895848992768486) q[4]; +rx(pi/2) q[4]; +rz(9.824412526248228) q[4]; +cx q[4],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(5.788641500109124) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.8797600164316615) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[4],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.282002336776216) q[4]; +rx(pi/2) q[4]; +rz(2*pi) q[4]; +cx q[4],q[3]; +rz(0.7006662095962772) q[3]; +rx(pi/2) q[3]; +rz(4.339944760795791) q[3]; +rx(pi/2) q[3]; +rz(12.258514038319372) q[3]; +rz(-0.26121410472345463) q[3]; +rx(pi/2) q[3]; +rz(4.627121028496647) q[3]; +rx(pi/2) q[3]; +rz(10.456218060996132) q[3]; +rz(1.1350752772796069) q[4]; +rx(pi/2) q[4]; +rz(5.798089628610775) q[4]; +rx(pi/2) q[4]; +rz(10.7695187481252) q[4]; +rz(0.09360218197981496) q[4]; +rx(pi/2) q[4]; +rz(3.593401086225133) q[4]; +rx(pi/2) q[4]; +rz(7.000310502837674) q[4]; +rz(-1.9575207573534525) q[5]; +rx(pi/2) q[5]; +rz(3.7991190434386266) q[5]; +rx(pi/2) q[5]; +rz(8.298365012052109) q[5]; +cx q[2],q[5]; +rz(pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.450225420112159) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(6.096040886732734) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +cx q[2],q[5]; +rz(pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.1670797657626313) q[2]; +rx(pi/2) q[2]; +rz(3*pi) q[2]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[2],q[5]; +rz(-1.7502154405461159) q[2]; +rx(pi/2) q[2]; +rz(6.058772501358245) q[2]; +rx(pi/2) q[2]; +rz(9.487396744732843) q[2]; +rz(1.949974487788472) q[2]; +rx(pi/2) q[2]; +rz(3.2965961547643943) q[2]; +rx(pi/2) q[2]; +rz(12.228777473941612) q[2]; +rz(0.6901134291543709) q[5]; +rx(pi/2) q[5]; +rz(4.692942343044622) q[5]; +rx(pi/2) q[5]; +rz(11.700351640380248) q[5]; +rz(1.2212896436339884) q[5]; +rx(pi/2) q[5]; +rz(3.9217818932136796) q[5]; +rx(pi/2) q[5]; +rz(11.576310858468197) q[5]; +rz(2.39597612547296) q[6]; +rx(pi/2) q[6]; +rz(3.9408179655095843) q[6]; +rx(pi/2) q[6]; +rz(10.396308295639159) q[6]; +rz(-0.34958934255000873) q[7]; +rx(pi/2) q[7]; +rz(4.624758447713386) q[7]; +rx(pi/2) q[7]; +rz(8.249077509689302) q[7]; +cx q[7],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(6.233772163051435) q[0]; +rx(pi/2) q[0]; +rz(7*pi/2) q[0]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(4.276796595343855) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[7],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(3*pi/2) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.480269583002169) q[7]; +rx(pi/2) q[7]; +rz(3*pi) q[7]; +cx q[7],q[0]; +rz(-2.1596681888507145) q[0]; +rx(pi/2) q[0]; +rz(3.5211900260029023) q[0]; +rx(pi/2) q[0]; +rz(8.464037570076538) q[0]; +rz(0.3289394496265885) q[0]; +rx(pi/2) q[0]; +rz(3.619625857406397) q[0]; +rx(pi/2) q[0]; +rz(7.581488061721318) q[0]; +cx q[4],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(5.8682328467072224) q[0]; +rx(pi/2) q[0]; +rz(7*pi/2) q[0]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.621347626323601) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[4],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(3*pi/2) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.3205877600531206) q[4]; +rx(pi/2) q[4]; +rz(3*pi) q[4]; +cx q[4],q[0]; +rz(-2.7201402610358443) q[0]; +rx(pi/2) q[0]; +rz(5.398878338613494) q[0]; +rx(pi/2) q[0]; +rz(11.538185868265623) q[0]; +rz(-0.766844089317857) q[0]; +rx(pi/2) q[0]; +rz(4.53563834772563) q[0]; +rx(pi/2) q[0]; +rz(7.16586376480745) q[0]; +rz(-0.47504172152089597) q[4]; +rx(pi/2) q[4]; +rz(5.214840987008459) q[4]; +rx(pi/2) q[4]; +rz(12.169821567773699) q[4]; +rz(-1.2214310938435795) q[4]; +rx(pi/2) q[4]; +rz(4.080817454129736) q[4]; +rx(pi/2) q[4]; +rz(11.965282157063228) q[4]; +rz(0.6928081927913547) q[7]; +rx(pi/2) q[7]; +rz(5.6358287735591475) q[7]; +rx(pi/2) q[7]; +rz(9.144810441811407) q[7]; +rz(0.5922730100577365) q[7]; +rx(pi/2) q[7]; +rz(4.032480757812074) q[7]; +rx(pi/2) q[7]; +rz(9.769704033030306) q[7]; +rz(2.8673116620635124) q[8]; +rx(pi/2) q[8]; +rz(3.4700438160202793) q[8]; +rx(pi/2) q[8]; +rz(12.301364682987447) q[8]; +cx q[1],q[8]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(4.209059800468267) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(5.95376806021514) q[8]; +rx(pi/2) q[8]; +rz(7*pi/2) q[8]; +cx q[1],q[8]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.763636752178499) q[1]; +rx(pi/2) q[1]; +rz(3*pi) q[1]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(3*pi/2) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[1],q[8]; +rz(-0.1540572371865352) q[1]; +rx(pi/2) q[1]; +rz(4.04085342041693) q[1]; +rx(pi/2) q[1]; +rz(9.918065135500466) q[1]; +rz(0.5142006447010288) q[1]; +rx(pi/2) q[1]; +rz(5.21401153169365) q[1]; +rx(pi/2) q[1]; +rz(11.724130525862266) q[1]; +cx q[1],q[2]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(4.002070822459008) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.100245774738921) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +cx q[1],q[2]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.5547994849311673) q[1]; +rx(pi/2) q[1]; +rz(3*pi) q[1]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +cx q[1],q[2]; +rz(-0.6086463292949587) q[1]; +rx(pi/2) q[1]; +rz(5.022195874250255) q[1]; +rx(pi/2) q[1]; +rz(11.303650433256017) q[1]; +rz(-0.9492836352914535) q[1]; +rx(pi/2) q[1]; +rz(4.703411555087573) q[1]; +rx(pi/2) q[1]; +rz(7.789564651641953) q[1]; +rz(2.8907835912650093) q[2]; +rx(pi/2) q[2]; +rz(4.406233050924853) q[2]; +rx(pi/2) q[2]; +rz(12.241998291755202) q[2]; +rz(2.9927788453608155) q[2]; +rx(pi/2) q[2]; +rz(5.485543655413371) q[2]; +rx(pi/2) q[2]; +rz(11.186534197905274) q[2]; +rz(-2.578734847772078) q[8]; +rx(pi/2) q[8]; +rz(5.891926897093361) q[8]; +rx(pi/2) q[8]; +rz(12.343366976261608) q[8]; +rz(-0.3102265124744261) q[8]; +rx(pi/2) q[8]; +rz(4.354157377821155) q[8]; +rx(pi/2) q[8]; +rz(11.307720514423385) q[8]; +cx q[8],q[5]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(6.19544411445175) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.637497282197825) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[8],q[5]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.3063091309102592) q[8]; +rx(pi/2) q[8]; +rz(3*pi) q[8]; +cx q[8],q[5]; +rz(-1.0691003296891282) q[5]; +rx(pi/2) q[5]; +rz(5.0121063333333575) q[5]; +rx(pi/2) q[5]; +rz(9.246377306700609) q[5]; +rz(-3.1065894346087726) q[5]; +rx(pi/2) q[5]; +rz(5.303663988548047) q[5]; +rx(pi/2) q[5]; +rz(10.950836767298608) q[5]; +cx q[0],q[5]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.7393040931086823) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(5.88696076117529) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +cx q[0],q[5]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.3485670400226013) q[0]; +rx(pi/2) q[0]; +rz(3*pi) q[0]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[0],q[5]; +rz(-1.1119633885607607) q[0]; +rx(pi/2) q[0]; +rz(5.68101342680224) q[0]; +rx(pi/2) q[0]; +rz(10.627013341859028) q[0]; +rz(-3.106273131979422) q[0]; +rx(pi/2) q[0]; +rz(4.960091655996299) q[0]; +rx(pi/2) q[0]; +rz(10.233489417560563) q[0]; +rz(1.691082148917964) q[5]; +rx(pi/2) q[5]; +rz(5.498362219715325) q[5]; +rx(pi/2) q[5]; +rz(9.820735507338123) q[5]; +rz(-2.5395957005829466) q[5]; +rx(pi/2) q[5]; +rz(4.594729881938735) q[5]; +rx(pi/2) q[5]; +rz(6.324160404239089) q[5]; +rz(-2.672905421021162) q[8]; +rx(pi/2) q[8]; +rz(3.7527965214696364) q[8]; +rx(pi/2) q[8]; +rz(7.607501075389155) q[8]; +rz(1.7283245250925408) q[8]; +rx(pi/2) q[8]; +rz(3.9469159963196727) q[8]; +rx(pi/2) q[8]; +rz(12.292985266451769) q[8]; +rz(0.5077148566756282) q[9]; +rx(pi/2) q[9]; +rz(3.6548997704015393) q[9]; +rx(pi/2) q[9]; +rz(7.6113494681707055) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(5.929663225365005) q[6]; +rx(pi/2) q[6]; +rz(7*pi/2) q[6]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.843317906455849) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(3*pi/2) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +rz(-pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.235860205898142) q[9]; +rx(pi/2) q[9]; +rz(2*pi) q[9]; +cx q[9],q[6]; +rz(1.2323107650346543) q[6]; +rx(pi/2) q[6]; +rz(4.679543444809652) q[6]; +rx(pi/2) q[6]; +rz(6.88896590466879) q[6]; +rz(0.38655028861854923) q[6]; +rx(pi/2) q[6]; +rz(4.923289722435795) q[6]; +rx(pi/2) q[6]; +rz(6.326623275139907) q[6]; +cx q[6],q[7]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.9034774655811817) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(5.690747979409057) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +cx q[6],q[7]; +rz(-pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.201792714237516) q[6]; +rx(pi/2) q[6]; +rz(2*pi) q[6]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[6],q[7]; +rz(1.4596771532927164) q[6]; +rx(pi/2) q[6]; +rz(4.9318021950194275) q[6]; +rx(pi/2) q[6]; +rz(10.772520365455986) q[6]; +rz(-2.3791550489815236) q[6]; +rx(pi/2) q[6]; +rz(4.263523128278077) q[6]; +rx(pi/2) q[6]; +rz(7.021527473686218) q[6]; +cx q[6],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(6.1774008334313955) q[1]; +rx(pi/2) q[1]; +rz(7*pi/2) q[1]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(4.074573897539015) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[6],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(3*pi/2) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.357937182544742) q[6]; +rx(pi/2) q[6]; +rz(3*pi) q[6]; +cx q[6],q[1]; +rz(-1.3820307753547858) q[1]; +rx(pi/2) q[1]; +rz(4.39764500117286) q[1]; +rx(pi/2) q[1]; +rz(11.796294908179224) q[1]; +rz(-2.372744079774094) q[1]; +rx(pi/2) q[1]; +rz(4.583965410084868) q[1]; +rx(pi/2) q[1]; +rz(8.514447880080235) q[1]; +rz(0.8546030387785892) q[6]; +rx(pi/2) q[6]; +rz(6.000366533132572) q[6]; +rx(pi/2) q[6]; +rz(12.190734570364851) q[6]; +rz(0.7388411802379444) q[6]; +rx(pi/2) q[6]; +rz(5.345394512255046) q[6]; +rx(pi/2) q[6]; +rz(9.751406733037944) q[6]; +rz(-2.42209036075623) q[7]; +rx(pi/2) q[7]; +rz(3.900358141228549) q[7]; +rx(pi/2) q[7]; +rz(8.91393086665133) q[7]; +rz(-2.36377594290314) q[7]; +rx(pi/2) q[7]; +rz(5.391348705860969) q[7]; +rx(pi/2) q[7]; +rz(12.387541941213026) q[7]; +cx q[4],q[7]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.656984385968414) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(5.719976313972014) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +cx q[4],q[7]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.4296112645756764) q[4]; +rx(pi/2) q[4]; +rz(3*pi) q[4]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[4],q[7]; +rz(0.02446697771412376) q[4]; +rx(pi/2) q[4]; +rz(5.8208238279795665) q[4]; +rx(pi/2) q[4]; +rz(7.948329614750841) q[4]; +rz(-2.4875842397898866) q[4]; +rx(pi/2) q[4]; +rz(3.4377007618507927) q[4]; +rx(pi/2) q[4]; +rz(8.49867174942185) q[4]; +rz(1.176136735380788) q[7]; +rx(pi/2) q[7]; +rz(5.405840098628246) q[7]; +rx(pi/2) q[7]; +rz(10.69951213491554) q[7]; +rz(0.3272877755747121) q[7]; +rx(pi/2) q[7]; +rz(6.041375122970079) q[7]; +rx(pi/2) q[7]; +rz(9.286028046868925) q[7]; +cx q[7],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(6.085837111096188) q[1]; +rx(pi/2) q[1]; +rz(7*pi/2) q[1]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.9616529016440207) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[7],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(3*pi/2) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.2938900499727466) q[7]; +rx(pi/2) q[7]; +rz(2*pi) q[7]; +cx q[7],q[1]; +rz(2.9984708083738676) q[1]; +rx(pi/2) q[1]; +rz(3.9224136327073458) q[1]; +rx(pi/2) q[1]; +rz(6.6958760234955506) q[1]; +rz(-1.7305900431105474) q[1]; +rx(pi/2) q[1]; +rz(4.254694055890743) q[1]; +rx(pi/2) q[1]; +rz(7.131013337509434) q[1]; +rz(-0.764487309043941) q[7]; +rx(pi/2) q[7]; +rz(5.59586009487799) q[7]; +rx(pi/2) q[7]; +rz(11.058068299674673) q[7]; +rz(3.0290618014726514) q[7]; +rx(pi/2) q[7]; +rz(3.5222725146954454) q[7]; +rx(pi/2) q[7]; +rz(9.524909893574096) q[7]; +rz(1.5835776139508493) q[9]; +rx(pi/2) q[9]; +rz(4.245225888669975) q[9]; +rx(pi/2) q[9]; +rz(6.784747798670634) q[9]; +rz(1.9044999216934393) q[9]; +rx(pi/2) q[9]; +rz(4.856753759178281) q[9]; +rx(pi/2) q[9]; +rz(8.887623472278737) q[9]; +cx q[9],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(5.92377814463933) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.637975326090153) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.484869743030668) q[9]; +rx(pi/2) q[9]; +rz(3*pi) q[9]; +cx q[9],q[3]; +rz(-2.9466687533105898) q[3]; +rx(pi/2) q[3]; +rz(3.812369924407559) q[3]; +rx(pi/2) q[3]; +rz(11.402908263378764) q[3]; +rz(-0.1585613735014526) q[3]; +rx(pi/2) q[3]; +rz(5.692237772526825) q[3]; +rx(pi/2) q[3]; +rz(9.464143600162126) q[3]; +cx q[3],q[8]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.9327471044254043) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(6.183939303509296) q[8]; +rx(pi/2) q[8]; +rz(7*pi/2) q[8]; +cx q[3],q[8]; +rz(-pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.6221620507608643) q[3]; +rx(pi/2) q[3]; +rz(2*pi) q[3]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(3*pi/2) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[3],q[8]; +rz(-0.7421082895368509) q[3]; +rx(pi/2) q[3]; +rz(5.24694892797399) q[3]; +rx(pi/2) q[3]; +rz(11.88824223939025) q[3]; +rz(1.03793850115422) q[3]; +rx(pi/2) q[3]; +rz(4.929586887672396) q[3]; +rx(pi/2) q[3]; +rz(10.443800472353558) q[3]; +cx q[3],q[6]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.882673281803376) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(5.740875486115826) q[6]; +rx(pi/2) q[6]; +rz(7*pi/2) q[6]; +cx q[3],q[6]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.5428081881223026) q[3]; +rx(pi/2) q[3]; +rz(3*pi) q[3]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(3*pi/2) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[3],q[6]; +rz(1.7106224920757551) q[3]; +rx(pi/2) q[3]; +rz(5.2938823875320535) q[3]; +rx(pi/2) q[3]; +rz(11.636959046358543) q[3]; +rz(-0.028076509228726287) q[3]; +rx(pi/2) q[3]; +rz(5.917163093458003) q[3]; +rx(pi/2) q[3]; +rz(6.755578996854389) q[3]; +rz(0.40396453745202976) q[6]; +rx(pi/2) q[6]; +rz(5.172572501275388) q[6]; +rx(pi/2) q[6]; +rz(7.0034823321535855) q[6]; +rz(1.7747305370572608) q[6]; +rx(pi/2) q[6]; +rz(3.7774483255537126) q[6]; +rx(pi/2) q[6]; +rz(12.128078313014077) q[6]; +rz(0.7782078447260439) q[8]; +rx(pi/2) q[8]; +rz(4.839893415869608) q[8]; +rx(pi/2) q[8]; +rz(12.489138759288792) q[8]; +rz(-1.6595319194212879) q[8]; +rx(pi/2) q[8]; +rz(4.6630473309708) q[8]; +rx(pi/2) q[8]; +rz(6.954776241235616) q[8]; +cx q[8],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(6.202047645376174) q[0]; +rx(pi/2) q[0]; +rz(7*pi/2) q[0]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.999936633458147) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[8],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(3*pi/2) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.1883698926623616) q[8]; +rx(pi/2) q[8]; +rz(3*pi) q[8]; +cx q[8],q[0]; +rz(-1.2853244409428244) q[0]; +rx(pi/2) q[0]; +rz(3.685495415340723) q[0]; +rx(pi/2) q[0]; +rz(8.057369309924958) q[0]; +rz(-1.634847119703128) q[0]; +rx(pi/2) q[0]; +rz(5.561660555759014) q[0]; +rx(pi/2) q[0]; +rz(11.226398628423574) q[0]; +cx q[0],q[3]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(4.104377617225445) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(6.235102763152259) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +cx q[0],q[3]; +rz(-pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.4218439969323797) q[0]; +rx(pi/2) q[0]; +rz(2*pi) q[0]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +cx q[0],q[3]; +rz(2.3779255751730313) q[0]; +rx(pi/2) q[0]; +rz(5.191200838058672) q[0]; +rx(pi/2) q[0]; +rz(11.610848727086795) q[0]; +rz(-0.3588282829727971) q[0]; +rx(pi/2) q[0]; +rz(5.651139614596208) q[0]; +rx(pi/2) q[0]; +rz(6.784713405652749) q[0]; +rz(2.2262364149529157) q[3]; +rx(pi/2) q[3]; +rz(4.807565051261593) q[3]; +rx(pi/2) q[3]; +rz(9.250984873670127) q[3]; +rz(0.9752142368012189) q[3]; +rx(pi/2) q[3]; +rz(3.5705168632629762) q[3]; +rx(pi/2) q[3]; +rz(9.256702145741908) q[3]; +rz(3.1325635676700596) q[8]; +rx(pi/2) q[8]; +rz(4.795854621397512) q[8]; +rx(pi/2) q[8]; +rz(7.448232510945921) q[8]; +rz(1.8098192710555194) q[8]; +rx(pi/2) q[8]; +rz(4.673844263816028) q[8]; +rx(pi/2) q[8]; +rz(10.523801938951658) q[8]; +rz(-2.913244408836081) q[9]; +rx(pi/2) q[9]; +rz(5.801602005995704) q[9]; +rx(pi/2) q[9]; +rz(10.820731126032785) q[9]; +rz(-1.4684987466583732) q[9]; +rx(pi/2) q[9]; +rz(4.292435424759254) q[9]; +rx(pi/2) q[9]; +rz(7.490770238325439) q[9]; +cx q[9],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.0591285103308685) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.898766725191934) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.669662870440665) q[9]; +rx(pi/2) q[9]; +rz(2*pi) q[9]; +cx q[9],q[2]; +rz(2.7070784451717778) q[2]; +rx(pi/2) q[2]; +rz(4.1052274958622235) q[2]; +rx(pi/2) q[2]; +rz(6.473548130682943) q[2]; +rz(-1.2674831172570578) q[2]; +rx(pi/2) q[2]; +rz(4.3666744628577625) q[2]; +rx(pi/2) q[2]; +rz(11.044542837394431) q[2]; +cx q[2],q[4]; +rz(pi/2) q[2]; +rx(pi/2) q[2]; +rz(4.187316831707978) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(5.989195053011277) q[4]; +rx(pi/2) q[4]; +rz(7*pi/2) q[4]; +cx q[2],q[4]; +rz(-pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.392852656799633) q[2]; +rx(pi/2) q[2]; +rz(2*pi) q[2]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(3*pi/2) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[2],q[4]; +rz(1.8826265608922137) q[2]; +rx(pi/2) q[2]; +rz(3.564759392837539) q[2]; +rx(pi/2) q[2]; +rz(7.260827388635621) q[2]; +rz(1.4111959002686492) q[2]; +rx(pi/2) q[2]; +rz(3.9227885157853235) q[2]; +rx(pi/2) q[2]; +rz(11.410557588448707) q[2]; +rz(-0.31882039580727906) q[4]; +rx(pi/2) q[4]; +rz(4.397562508615393) q[4]; +rx(pi/2) q[4]; +rz(12.260586503195485) q[4]; +rz(-0.8642417300855305) q[4]; +rx(pi/2) q[4]; +rz(3.659274383715142) q[4]; +rx(pi/2) q[4]; +rz(10.346891911517357) q[4]; +cx q[4],q[7]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.9219780563725557) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[6],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.106499174146221) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(4.303769516104843) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[6],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.52952898951977) q[6]; +rx(pi/2) q[6]; +rz(2*pi) q[6]; +cx q[6],q[2]; +rz(0.2963355818986604) q[2]; +rx(pi/2) q[2]; +rz(5.479316486651856) q[2]; +rx(pi/2) q[2]; +rz(10.171070639386725) q[2]; +rz(1.130767426324832) q[2]; +rx(pi/2) q[2]; +rz(4.880640709850164) q[2]; +rx(pi/2) q[2]; +rz(12.145359288129093) q[2]; +cx q[0],q[2]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.9575286084469727) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.059931320708438) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +cx q[0],q[2]; +rz(-pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.617858290956349) q[0]; +rx(pi/2) q[0]; +rz(2*pi) q[0]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +cx q[0],q[2]; +rz(-1.1541041789663087) q[0]; +rx(pi/2) q[0]; +rz(4.801216729235179) q[0]; +rx(pi/2) q[0]; +rz(8.05175925196691) q[0]; +rz(0.6193635419109267) q[0]; +rx(pi/2) q[0]; +rz(4.87187021738748) q[0]; +rx(pi/2) q[0]; +rz(11.929649763929946) q[0]; +rz(1.659398313377988) q[2]; +rx(pi/2) q[2]; +rz(4.3858714262498815) q[2]; +rx(pi/2) q[2]; +rz(9.07418503218948) q[2]; +rz(-2.8433706027558125) q[2]; +rx(pi/2) q[2]; +rz(5.3951064023847914) q[2]; +rx(pi/2) q[2]; +rz(8.764080063993779) q[2]; +rz(-0.15423632050615854) q[6]; +rx(pi/2) q[6]; +rz(4.920361110888052) q[6]; +rx(pi/2) q[6]; +rz(10.244077777545295) q[6]; +rz(-0.5834636233147288) q[6]; +rx(pi/2) q[6]; +rz(5.274839616819989) q[6]; +rx(pi/2) q[6]; +rz(8.80375463246725) q[6]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(5.917244558673374) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +cx q[4],q[7]; +rz(-pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.3728619427218405) q[4]; +rx(pi/2) q[4]; +rz(2*pi) q[4]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[4],q[7]; +rz(-0.9887319920976352) q[4]; +rx(pi/2) q[4]; +rz(5.084836471213554) q[4]; +rx(pi/2) q[4]; +rz(10.598276601699101) q[4]; +rz(-0.6300781182081163) q[4]; +rx(pi/2) q[4]; +rz(4.605249267988133) q[4]; +rx(pi/2) q[4]; +rz(8.580479028807147) q[4]; +rz(-1.026560633102946) q[7]; +rx(pi/2) q[7]; +rz(4.708099970046375) q[7]; +rx(pi/2) q[7]; +rz(6.978756228825645) q[7]; +rz(3.1087177160042616) q[7]; +rx(pi/2) q[7]; +rz(5.265818089029384) q[7]; +rx(pi/2) q[7]; +rz(9.66365341527802) q[7]; +rz(-1.724327216732392) q[9]; +rx(pi/2) q[9]; +rz(4.68341042028603) q[9]; +rx(pi/2) q[9]; +rz(10.191369415287568) q[9]; +rz(-2.4308736390218124) q[9]; +rx(pi/2) q[9]; +rz(3.8240098386416093) q[9]; +rx(pi/2) q[9]; +rz(7.21935890842432) q[9]; +cx q[5],q[9]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(4.0561323008527745) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(6.1553038543349565) q[9]; +rx(pi/2) q[9]; +rz(7*pi/2) q[9]; +cx q[5],q[9]; +rz(-pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.234741419015517) q[5]; +rx(pi/2) q[5]; +rz(2*pi) q[5]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(3*pi/2) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[5],q[9]; +rz(-0.7197170028129394) q[5]; +rx(pi/2) q[5]; +rz(4.424423535324273) q[5]; +rx(pi/2) q[5]; +rz(7.457186806334174) q[5]; +rz(2.174249606026631) q[5]; +rx(pi/2) q[5]; +rz(4.3813603102252845) q[5]; +rx(pi/2) q[5]; +rz(10.411297173583051) q[5]; +cx q[1],q[5]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(4.20359876105899) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(6.1919956264400735) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +cx q[1],q[5]; +rz(-pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.2397435626837194) q[1]; +rx(pi/2) q[1]; +rz(2*pi) q[1]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[1],q[5]; +rz(-2.9977046334173814) q[1]; +rx(pi/2) q[1]; +rz(3.655751505100631) q[1]; +rx(pi/2) q[1]; +rz(11.974430690087893) q[1]; +rz(-0.8148545600089809) q[1]; +rx(pi/2) q[1]; +rz(3.8720723637581815) q[1]; +rx(pi/2) q[1]; +rz(8.132496433544897) q[1]; +cx q[1],q[4]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.8754310843152755) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(6.012363783046247) q[4]; +rx(pi/2) q[4]; +rz(7*pi/2) q[4]; +cx q[1],q[4]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.432706785521728) q[1]; +rx(pi/2) q[1]; +rz(3*pi) q[1]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(3*pi/2) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[1],q[4]; +rz(1.2207510241579618) q[1]; +rx(pi/2) q[1]; +rz(5.533205774147415) q[1]; +rx(pi/2) q[1]; +rz(7.6070549436659665) q[1]; +rz(-2.1753411729831393) q[1]; +rx(pi/2) q[1]; +rz(4.06261418486538) q[1]; +rx(pi/2) q[1]; +rz(6.866087077520222) q[1]; +rz(-1.778590421918972) q[4]; +rx(pi/2) q[4]; +rz(4.665403063441124) q[4]; +rx(pi/2) q[4]; +rz(8.295018303589101) q[4]; +rz(-2.3791550489815236) q[4]; +rx(pi/2) q[4]; +rz(4.263523128278077) q[4]; +rx(pi/2) q[4]; +rz(7.021527473686218) q[4]; +rz(1.7924070375450167) q[5]; +rx(pi/2) q[5]; +rz(5.5961267408238795) q[5]; +rx(pi/2) q[5]; +rz(6.648328185624996) q[5]; +rz(-1.4104918133523539) q[5]; +rx(pi/2) q[5]; +rz(3.350994542903671) q[5]; +rx(pi/2) q[5]; +rz(11.43998931342509) q[5]; +cx q[5],q[7]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.9745508283372546) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(6.257843731668256) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +cx q[5],q[7]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.1847432554417985) q[5]; +rx(pi/2) q[5]; +rz(3*pi) q[5]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[5],q[7]; +rz(0.5249260420963191) q[5]; +rx(pi/2) q[5]; +rz(5.768966557720875) q[5]; +rx(pi/2) q[5]; +rz(10.110384328458547) q[5]; +rz(0.8828920826077331) q[5]; +rx(pi/2) q[5]; +rz(5.363860193274806) q[5]; +rx(pi/2) q[5]; +rz(11.149255480644815) q[5]; +rz(2.8140963359480793) q[7]; +rx(pi/2) q[7]; +rz(3.3009047585309537) q[7]; +rx(pi/2) q[7]; +rz(11.631704819654878) q[7]; +rz(-2.0896420568666993) q[7]; +rx(pi/2) q[7]; +rz(5.212370329040338) q[7]; +rx(pi/2) q[7]; +rz(7.827773455566359) q[7]; +cx q[7],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(5.6488135360625495) q[0]; +rx(pi/2) q[0]; +rz(7*pi/2) q[0]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.7014908719228146) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[7],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(3*pi/2) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.2052589900426494) q[7]; +rx(pi/2) q[7]; +rz(3*pi) q[7]; +cx q[7],q[0]; +rz(-0.39666547765414784) q[0]; +rx(pi/2) q[0]; +rz(4.006654624994971) q[0]; +rx(pi/2) q[0]; +rz(9.403686751354753) q[0]; +rz(-0.2931738865034297) q[0]; +rx(pi/2) q[0]; +rz(4.523489181910268) q[0]; +rx(pi/2) q[0]; +rz(9.444290781712604) q[0]; +rz(-1.2504117968012327) q[7]; +rx(pi/2) q[7]; +rz(4.720900379059273) q[7]; +rx(pi/2) q[7]; +rz(9.194026875613357) q[7]; +rz(-1.5139354048784934) q[7]; +rx(pi/2) q[7]; +rz(3.668837046126459) q[7]; +rx(pi/2) q[7]; +rz(11.719992402948161) q[7]; +rz(2.4035835468118254) q[9]; +rx(pi/2) q[9]; +rz(3.7486252510023377) q[9]; +rx(pi/2) q[9]; +rz(7.843334330261391) q[9]; +rz(2.737228934259683) q[9]; +rx(pi/2) q[9]; +rz(4.541115455276579) q[9]; +rx(pi/2) q[9]; +rz(12.496299808203752) q[9]; +cx q[8],q[9]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(4.180717415189061) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(6.130684710059303) q[9]; +rx(pi/2) q[9]; +rz(7*pi/2) q[9]; +cx q[8],q[9]; +rz(-pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.401787074333825) q[8]; +rx(pi/2) q[8]; +rz(2*pi) q[8]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(3*pi/2) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[8],q[9]; +rz(-1.4404731284058236) q[8]; +rx(pi/2) q[8]; +rz(5.433708945109966) q[8]; +rx(pi/2) q[8]; +rz(8.504372790727007) q[8]; +rz(0.44611602135707873) q[8]; +rx(pi/2) q[8]; +rz(4.07927039373211) q[8]; +rx(pi/2) q[8]; +rz(10.867548415735122) q[8]; +cx q[8],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(6.1831965942765645) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.318567331218746) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[8],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.2638458856769628) q[8]; +rx(pi/2) q[8]; +rz(2*pi) q[8]; +cx q[8],q[3]; +rz(-1.258422815495953) q[3]; +rx(pi/2) q[3]; +rz(4.093879597190219) q[3]; +rx(pi/2) q[3]; +rz(11.704954230616012) q[3]; +rz(3.0902141107252756) q[3]; +rx(pi/2) q[3]; +rz(5.474632312540473) q[3]; +rx(pi/2) q[3]; +rz(11.53222275245425) q[3]; +cx q[3],q[5]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.574671550273678) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(5.792106449986104) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +cx q[3],q[5]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.309691755038882) q[3]; +rx(pi/2) q[3]; +rz(3*pi) q[3]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[3],q[5]; +rz(0.906255508851399) q[3]; +rx(pi/2) q[3]; +rz(3.5734945847714377) q[3]; +rx(pi/2) q[3]; +rz(8.686536348619997) q[3]; +rz(0.46821296498079956) q[3]; +rx(pi/2) q[3]; +rz(3.95017340414908) q[3]; +rx(pi/2) q[3]; +rz(12.435259257231044) q[3]; +rz(-2.6032577671345) q[5]; +rx(pi/2) q[5]; +rz(4.845178266659752) q[5]; +rx(pi/2) q[5]; +rz(10.610004668757824) q[5]; +rz(-1.2747741154761318) q[5]; +rx(pi/2) q[5]; +rz(4.563374849173151) q[5]; +rx(pi/2) q[5]; +rz(10.595067179443603) q[5]; +rz(0.7125918609156141) q[8]; +rx(pi/2) q[8]; +rz(4.7068943538503545) q[8]; +rx(pi/2) q[8]; +rz(7.976025690643124) q[8]; +rz(-0.9492836352914535) q[8]; +rx(pi/2) q[8]; +rz(4.703411555087573) q[8]; +rx(pi/2) q[8]; +rz(7.789564651641953) q[8]; +cx q[4],q[8]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(4.074573897539015) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(6.1774008334313955) q[8]; +rx(pi/2) q[8]; +rz(7*pi/2) q[8]; +cx q[4],q[8]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.357937182544742) q[4]; +rx(pi/2) q[4]; +rz(3*pi) q[4]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(3*pi/2) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[4],q[8]; +rz(0.8546030387785892) q[4]; +rx(pi/2) q[4]; +rz(6.000366533132572) q[4]; +rx(pi/2) q[4]; +rz(12.190734570364851) q[4]; +rz(2.5545054164982846) q[4]; +rx(pi/2) q[4]; +rz(4.264154227750736) q[4]; +rx(pi/2) q[4]; +rz(6.860740010578594) q[4]; +cx q[4],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(6.178502539478071) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(4.209342304920579) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[4],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.2063578052656183) q[4]; +rx(pi/2) q[4]; +rz(2*pi) q[4]; +cx q[4],q[3]; +rz(-2.577673807739197) q[3]; +rx(pi/2) q[3]; +rz(6.117153440979221) q[3]; +rx(pi/2) q[3]; +rz(9.395584559943872) q[3]; +rz(-2.426106751743447) q[3]; +rx(pi/2) q[3]; +rz(3.6879806485761746) q[3]; +rx(pi/2) q[3]; +rz(10.275052469193973) q[3]; +rz(-2.5639032464425373) q[4]; +rx(pi/2) q[4]; +rz(5.155971964657715) q[4]; +rx(pi/2) q[4]; +rz(11.42309998165258) q[4]; +rz(-1.6832043189226493) q[4]; +rx(pi/2) q[4]; +rz(5.484191754733052) q[4]; +rx(pi/2) q[4]; +rz(9.633641293685203) q[4]; +rz(-1.3820307753547858) q[8]; +rx(pi/2) q[8]; +rz(4.39764500117286) q[8]; +rx(pi/2) q[8]; +rz(11.796294908179224) q[8]; +rz(-1.5075449455582448) q[8]; +rx(pi/2) q[8]; +rz(3.7869102645875135) q[8]; +rx(pi/2) q[8]; +rz(11.644366905840124) q[8]; +cx q[8],q[5]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(5.816026984669341) q[5]; +rx(pi/2) q[5]; +rz(7*pi/2) q[5]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.9087992598142645) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[8],q[5]; +rz(-pi) q[5]; +rx(pi/2) q[5]; +rz(3*pi/2) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.69703447373628) q[8]; +rx(pi/2) q[8]; +rz(3*pi) q[8]; +cx q[8],q[5]; +rz(1.177110399396252) q[5]; +rx(pi/2) q[5]; +rz(4.3033959988916095) q[5]; +rx(pi/2) q[5]; +rz(10.912541681587888) q[5]; +rz(-3.1236354255386445) q[5]; +rx(pi/2) q[5]; +rz(3.7282707395164296) q[5]; +rx(pi/2) q[5]; +rz(6.872787378189184) q[5]; +rz(1.0463578400346023) q[8]; +rx(pi/2) q[8]; +rz(4.791441184480258) q[8]; +rx(pi/2) q[8]; +rz(8.770511932062972) q[8]; +rz(-1.3334808797367683) q[8]; +rx(pi/2) q[8]; +rz(4.462962194485416) q[8]; +rx(pi/2) q[8]; +rz(11.740139687369695) q[8]; +rz(1.0332678327832934) q[9]; +rx(pi/2) q[9]; +rz(5.051395727739923) q[9]; +rx(pi/2) q[9]; +rz(9.572344334540693) q[9]; +rz(2.9296346762391394) q[9]; +rx(pi/2) q[9]; +rz(5.776774261517295) q[9]; +rx(pi/2) q[9]; +rz(9.207529971683883) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(5.919991508669133) q[6]; +rx(pi/2) q[6]; +rz(7*pi/2) q[6]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.7873569187776566) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(3*pi/2) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +rz(-pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.1510603316008936) q[9]; +rx(pi/2) q[9]; +rz(2*pi) q[9]; +cx q[9],q[6]; +rz(1.4701600958742365) q[6]; +rx(pi/2) q[6]; +rz(5.117559105687977) q[6]; +rx(pi/2) q[6]; +rz(7.330051904972207) q[6]; +rz(-2.7036481320163963) q[6]; +rx(pi/2) q[6]; +rz(5.483994879318434) q[6]; +rx(pi/2) q[6]; +rz(12.163640728678619) q[6]; +cx q[2],q[6]; +rz(pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.977903468514331) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(6.0059136056803295) q[6]; +rx(pi/2) q[6]; +rz(7*pi/2) q[6]; +cx q[2],q[6]; +rz(-pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.6818858639345144) q[2]; +rx(pi/2) q[2]; +rz(2*pi) q[2]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(3*pi/2) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[2],q[6]; +rz(1.3737738145713791) q[2]; +rx(pi/2) q[2]; +rz(4.176313184097546) q[2]; +rx(pi/2) q[2]; +rz(8.719038775424597) q[2]; +rz(2.4038422728972666) q[2]; +rx(pi/2) q[2]; +rz(5.688522290000293) q[2]; +rx(pi/2) q[2]; +rz(6.968060442091021) q[2]; +rz(1.6445759044905612) q[6]; +rx(pi/2) q[6]; +rz(4.135503870825191) q[6]; +rx(pi/2) q[6]; +rz(10.134819946210012) q[6]; +rz(2.264217839427733) q[6]; +rx(pi/2) q[6]; +rz(3.4962590890575376) q[6]; +rx(pi/2) q[6]; +rz(8.534502918863677) q[6]; +cx q[7],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.2784032994696055) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +rz(pi/2) q[7]; +rx(pi/2) q[7]; +rz(4.057738149925683) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[7],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi/2) q[7]; +rx(pi/2) q[7]; +rz(3.3472102279600264) q[7]; +rx(pi/2) q[7]; +rz(2*pi) q[7]; +cx q[7],q[2]; +rz(2.261170119243366) q[2]; +rx(pi/2) q[2]; +rz(4.5202172819706545) q[2]; +rx(pi/2) q[2]; +rz(8.806195660443734) q[2]; +rz(2.2923267561055543) q[2]; +rx(pi/2) q[2]; +rz(5.939238876885774) q[2]; +rx(pi/2) q[2]; +rz(6.831005827576224) q[2]; +cx q[2],q[4]; +rz(pi/2) q[2]; +rx(pi/2) q[2]; +rz(4.01739791708728) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(5.720416649086053) q[4]; +rx(pi/2) q[4]; +rz(7*pi/2) q[4]; +cx q[2],q[4]; +rz(-pi/2) q[2]; +rx(pi/2) q[2]; +rz(3.5172372096539775) q[2]; +rx(pi/2) q[2]; +rz(2*pi) q[2]; +rz(-pi) q[4]; +rx(pi/2) q[4]; +rz(3*pi/2) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +cx q[2],q[4]; +rz(-2.453399945183023) q[2]; +rx(pi/2) q[2]; +rz(5.574063693618544) q[2]; +rx(pi/2) q[2]; +rz(11.935106037210282) q[2]; +rz(-0.639038177598422) q[2]; +rx(pi/2) q[2]; +rz(4.487798740652055) q[2]; +rx(pi/2) q[2]; +rz(10.443022156712162) q[2]; +rz(-1.5313177501468584) q[4]; +rx(pi/2) q[4]; +rz(4.6648647055668055) q[4]; +rx(pi/2) q[4]; +rz(10.151034022878909) q[4]; +rz(-0.8148545600089809) q[4]; +rx(pi/2) q[4]; +rz(3.8720723637581815) q[4]; +rx(pi/2) q[4]; +rz(8.132496433544897) q[4]; +rz(-1.5302038311950708) q[7]; +rx(pi/2) q[7]; +rz(4.106617314828496) q[7]; +rx(pi/2) q[7]; +rz(10.974919082472947) q[7]; +rz(2.7202415946460343) q[7]; +rx(pi/2) q[7]; +rz(5.58551030445679) q[7]; +rx(pi/2) q[7]; +rz(6.330039667371583) q[7]; +cx q[8],q[7]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(6.19489952575511) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(4.162016201892106) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +cx q[8],q[7]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +rz(pi/2) q[8]; +rx(pi/2) q[8]; +rz(3.1858133642396513) q[8]; +rx(pi/2) q[8]; +rz(3*pi) q[8]; +cx q[8],q[7]; +rz(1.6046340157399808) q[7]; +rx(pi/2) q[7]; +rz(5.923709963316627) q[7]; +rx(pi/2) q[7]; +rz(9.047791228939074) q[7]; +rz(-0.6300781182081163) q[7]; +rx(pi/2) q[7]; +rz(4.605249267988133) q[7]; +rx(pi/2) q[7]; +rz(8.580479028807147) q[7]; +cx q[4],q[7]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.8754310843152755) q[4]; +rx(pi/2) q[4]; +rz(5*pi/2) q[4]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(6.012363783046247) q[7]; +rx(pi/2) q[7]; +rz(7*pi/2) q[7]; +cx q[4],q[7]; +rz(pi/2) q[4]; +rx(pi/2) q[4]; +rz(3.432706785521728) q[4]; +rx(pi/2) q[4]; +rz(3*pi) q[4]; +rz(-pi) q[7]; +rx(pi/2) q[7]; +rz(3*pi/2) q[7]; +rx(pi/2) q[7]; +rz(5*pi/2) q[7]; +cx q[4],q[7]; +rz(1.2207510241579618) q[4]; +rx(pi/2) q[4]; +rz(5.533205774147415) q[4]; +rx(pi/2) q[4]; +rz(7.6070549436659665) q[4]; +rz(-1.778590421918972) q[7]; +rx(pi/2) q[7]; +rz(4.665403063441124) q[7]; +rx(pi/2) q[7]; +rz(8.295018303589101) q[7]; +rz(-0.792955483178686) q[8]; +rx(pi/2) q[8]; +rz(4.337468526883976) q[8]; +rx(pi/2) q[8]; +rz(10.076614180569148) q[8]; +rz(0.12712550088712682) q[8]; +rx(pi/2) q[8]; +rz(4.911764864993774) q[8]; +rx(pi/2) q[8]; +rz(12.300289803228436) q[8]; +rz(0.17409701542631684) q[9]; +rx(pi/2) q[9]; +rz(4.3412471887675155) q[9]; +rx(pi/2) q[9]; +rz(8.477498165103103) q[9]; +rz(-0.3734060187968109) q[9]; +rx(pi/2) q[9]; +rz(4.498319906853075) q[9]; +rx(pi/2) q[9]; +rz(6.311225410921914) q[9]; +cx q[1],q[9]; +rz(pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.6588548018016427) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(6.133405992053074) q[9]; +rx(pi/2) q[9]; +rz(7*pi/2) q[9]; +cx q[1],q[9]; +rz(-pi/2) q[1]; +rx(pi/2) q[1]; +rz(3.280973649251388) q[1]; +rx(pi/2) q[1]; +rz(2*pi) q[1]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(3*pi/2) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[1],q[9]; +rz(-2.615610899686622) q[1]; +rx(pi/2) q[1]; +rz(4.186163393161592) q[1]; +rx(pi/2) q[1]; +rz(8.281681289783062) q[1]; +rz(-0.5329999904079115) q[1]; +rx(pi/2) q[1]; +rz(3.7468258881467387) q[1]; +rx(pi/2) q[1]; +rz(10.494115483764876) q[1]; +cx q[0],q[1]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.895222017240471) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(6.127848162891217) q[1]; +rx(pi/2) q[1]; +rz(7*pi/2) q[1]; +cx q[0],q[1]; +rz(-pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.223458909413513) q[0]; +rx(pi/2) q[0]; +rz(2*pi) q[0]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(3*pi/2) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +cx q[0],q[1]; +rz(-0.04341710932993603) q[0]; +rx(pi/2) q[0]; +rz(4.652063896395341) q[0]; +rx(pi/2) q[0]; +rz(10.531107778593219) q[0]; +rz(0.8610181604323719) q[0]; +rx(pi/2) q[0]; +rz(5.490119277799781) q[0]; +rx(pi/2) q[0]; +rz(10.02282990583818) q[0]; +rz(-0.15624833654013148) q[1]; +rx(pi/2) q[1]; +rz(4.6806641659995964) q[1]; +rx(pi/2) q[1]; +rz(6.787359152302862) q[1]; +rz(1.6511390103636874) q[1]; +rx(pi/2) q[1]; +rz(3.5784631439083254) q[1]; +rx(pi/2) q[1]; +rz(7.534877318692424) q[1]; +cx q[5],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(5.921072124009589) q[1]; +rx(pi/2) q[1]; +rz(7*pi/2) q[1]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.8992295324755863) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[5],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(3*pi/2) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.529380176029392) q[5]; +rx(pi/2) q[5]; +rz(3*pi) q[5]; +cx q[5],q[1]; +rz(0.9401877204064117) q[1]; +rx(pi/2) q[1]; +rz(4.507909065956957) q[1]; +rx(pi/2) q[1]; +rz(7.590550392260905) q[1]; +rz(-0.5572103532504391) q[1]; +rx(pi/2) q[1]; +rz(5.162420051767484) q[1]; +rx(pi/2) q[1]; +rz(6.811550792922068) q[1]; +rz(1.0979489689085167) q[5]; +rx(pi/2) q[5]; +rz(5.10698101999876) q[5]; +rx(pi/2) q[5]; +rz(10.415736948082223) q[5]; +rz(-0.6978532722085156) q[5]; +rx(pi/2) q[5]; +rz(3.575028168304914) q[5]; +rx(pi/2) q[5]; +rz(8.579761002443771) q[5]; +rz(1.3416131415136654) q[9]; +rx(pi/2) q[9]; +rz(4.389892968975028) q[9]; +rx(pi/2) q[9]; +rz(8.818427188345682) q[9]; +rz(-2.7567061032781375) q[9]; +rx(pi/2) q[9]; +rz(4.703766593570463) q[9]; +rx(pi/2) q[9]; +rz(8.656773922339598) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(5.782881286211606) q[6]; +rx(pi/2) q[6]; +rz(7*pi/2) q[6]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(4.060664737771891) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[6]; +rz(-pi) q[6]; +rx(pi/2) q[6]; +rz(3*pi/2) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +rz(-pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.716635517982203) q[9]; +rx(pi/2) q[9]; +rz(2*pi) q[9]; +cx q[9],q[6]; +rz(2.7424618322838246) q[6]; +rx(pi/2) q[6]; +rz(5.2438442139649535) q[6]; +rx(pi/2) q[6]; +rz(9.220347825663241) q[6]; +rz(1.9598256763230166) q[6]; +rx(pi/2) q[6]; +rz(3.8586487873509907) q[6]; +rx(pi/2) q[6]; +rz(7.64139179102288) q[6]; +cx q[6],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(6.250305193641029) q[3]; +rx(pi/2) q[3]; +rz(7*pi/2) q[3]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.7470163745631364) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[6],q[3]; +rz(-pi) q[3]; +rx(pi/2) q[3]; +rz(3*pi/2) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +rz(-pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.392820499672636) q[6]; +rx(pi/2) q[6]; +rz(2*pi) q[6]; +cx q[6],q[3]; +rz(0.9319154584149176) q[3]; +rx(pi/2) q[3]; +rz(5.16563971965559) q[3]; +rx(pi/2) q[3]; +rz(10.191187244618117) q[3]; +rz(-0.20439839707644136) q[3]; +rx(pi/2) q[3]; +rz(5.280775822180873) q[3]; +rx(pi/2) q[3]; +rz(8.44514484699088) q[3]; +cx q[3],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(6.038822812584957) q[2]; +rx(pi/2) q[2]; +rz(7*pi/2) q[2]; +rz(pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.651269518694947) q[3]; +rx(pi/2) q[3]; +rz(5*pi/2) q[3]; +cx q[3],q[2]; +rz(-pi) q[2]; +rx(pi/2) q[2]; +rz(3*pi/2) q[2]; +rx(pi/2) q[2]; +rz(5*pi/2) q[2]; +rz(-pi/2) q[3]; +rx(pi/2) q[3]; +rz(3.267217237826081) q[3]; +rx(pi/2) q[3]; +rz(2*pi) q[3]; +cx q[3],q[2]; +rz(1.9263230723181808) q[2]; +rx(pi/2) q[2]; +rz(5.505902593604718) q[2]; +rx(pi/2) q[2]; +rz(10.864704224324448) q[2]; +rz(-1.3134195406345128) q[3]; +rx(pi/2) q[3]; +rz(4.418676018079369) q[3]; +rx(pi/2) q[3]; +rz(11.300087418942141) q[3]; +rz(1.7184879601801795) q[6]; +rx(pi/2) q[6]; +rz(4.279189097230962) q[6]; +rx(pi/2) q[6]; +rz(7.3349881618812685) q[6]; +rz(0.6127768185261866) q[6]; +rx(pi/2) q[6]; +rz(5.253823439765444) q[6]; +rx(pi/2) q[6]; +rz(9.382154716967051) q[6]; +cx q[6],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(5.8636220740966145) q[1]; +rx(pi/2) q[1]; +rz(7*pi/2) q[1]; +rz(pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.802028198541043) q[6]; +rx(pi/2) q[6]; +rz(5*pi/2) q[6]; +cx q[6],q[1]; +rz(-pi) q[1]; +rx(pi/2) q[1]; +rz(3*pi/2) q[1]; +rx(pi/2) q[1]; +rz(5*pi/2) q[1]; +rz(-pi/2) q[6]; +rx(pi/2) q[6]; +rz(3.3815269703927586) q[6]; +rx(pi/2) q[6]; +rz(2*pi) q[6]; +cx q[6],q[1]; +rz(-2.2814441150867273) q[1]; +rx(pi/2) q[1]; +rz(5.592827429415653) q[1]; +rx(pi/2) q[1]; +rz(10.758692308222667) q[1]; +rz(-2.716340872446655) q[6]; +rx(pi/2) q[6]; +rz(3.577269471960127) q[6]; +rx(pi/2) q[6]; +rz(6.9248252986949534) q[6]; +rz(-1.6659860019198471) q[9]; +rx(pi/2) q[9]; +rz(5.239723227484556) q[9]; +rx(pi/2) q[9]; +rz(6.328843043779825) q[9]; +rz(2.4921145786362597) q[9]; +rx(pi/2) q[9]; +rz(4.665979688785408) q[9]; +rx(pi/2) q[9]; +rz(6.821120807384889) q[9]; +cx q[0],q[9]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.9792929944184414) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(6.190919514924575) q[9]; +rx(pi/2) q[9]; +rz(7*pi/2) q[9]; +cx q[0],q[9]; +rz(pi/2) q[0]; +rx(pi/2) q[0]; +rz(3.1658300556797254) q[0]; +rx(pi/2) q[0]; +rz(3*pi) q[0]; +rz(-pi) q[9]; +rx(pi/2) q[9]; +rz(3*pi/2) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[0],q[9]; +rz(1.0699094394320454) q[0]; +rx(pi/2) q[0]; +rz(4.072789844022863) q[0]; +rx(pi/2) q[0]; +rz(8.87406983059167) q[0]; +rz(2.1999093433647063) q[0]; +rx(pi/2) q[0]; +rz(4.30263165611192) q[0]; +rx(pi/2) q[0]; +rz(10.345175389820485) q[0]; +cx q[5],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(6.013146777254852) q[0]; +rx(pi/2) q[0]; +rz(7*pi/2) q[0]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(4.346862202571138) q[5]; +rx(pi/2) q[5]; +rz(5*pi/2) q[5]; +cx q[5],q[0]; +rz(-pi) q[0]; +rx(pi/2) q[0]; +rz(3*pi/2) q[0]; +rx(pi/2) q[0]; +rz(5*pi/2) q[0]; +rz(pi/2) q[5]; +rx(pi/2) q[5]; +rz(3.479250394524052) q[5]; +rx(pi/2) q[5]; +rz(3*pi) q[5]; +cx q[5],q[0]; +rz(2.952376156830068) q[0]; +rx(pi/2) q[0]; +rz(4.7854940375412145) q[0]; +rx(pi/2) q[0]; +rz(7.235437078373666) q[0]; +rz(-1.2024679674714314) q[5]; +rx(pi/2) q[5]; +rz(5.027158165877749) q[5]; +rx(pi/2) q[5]; +rz(8.872945822627784) q[5]; +rz(-1.3811138242107222) q[9]; +rx(pi/2) q[9]; +rz(4.964059960706147) q[9]; +rx(pi/2) q[9]; +rz(8.003652334675113) q[9]; +rz(0.7969368271889579) q[9]; +rx(pi/2) q[9]; +rz(4.886041243080369) q[9]; +rx(pi/2) q[9]; +rz(6.424494194276486) q[9]; +cx q[9],q[8]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(6.082073011928831) q[8]; +rx(pi/2) q[8]; +rz(7*pi/2) q[8]; +rz(pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.7860624238797222) q[9]; +rx(pi/2) q[9]; +rz(5*pi/2) q[9]; +cx q[9],q[8]; +rz(-pi) q[8]; +rx(pi/2) q[8]; +rz(3*pi/2) q[8]; +rx(pi/2) q[8]; +rz(5*pi/2) q[8]; +rz(-pi/2) q[9]; +rx(pi/2) q[9]; +rz(3.519549572792569) q[9]; +rx(pi/2) q[9]; +rz(2*pi) q[9]; +cx q[9],q[8]; +rz(2.4555023009602692) q[8]; +rx(pi/2) q[8]; +rz(3.8569918058237262) q[8]; +rx(pi/2) q[8]; +rz(12.020068522028286) q[8]; +rz(0.5855257799248035) q[9]; +rx(pi/2) q[9]; +rz(5.1005663312294365) q[9]; +rx(pi/2) q[9]; +rz(9.524587879369816) q[9]; \ No newline at end of file diff --git a/benchmarks/qasm_circuits/qasm2/benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm b/benchmarks/qasm_circuits/qasm2/benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm new file mode 100644 index 0000000..845b8d3 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm @@ -0,0 +1,516 @@ +OPENQASM 2.0; +include "qelib1.inc"; +qreg q[9]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +rx(pi/2) q[0]; +rx(pi/2) q[3]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +rx(-pi/2) q[0]; +ry(pi/2) q[0]; +rx(pi) q[0]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +ry(pi/2) q[0]; +rx(pi) q[0]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +rx(pi/2) q[0]; +rx(pi/2) q[3]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +rx(-pi/2) q[0]; +ry(pi/2) q[0]; +rx(pi) q[0]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[0],q[3]; +rz(1.0) q[3]; +cx q[0],q[3]; +ry(pi/2) q[0]; +rx(pi) q[0]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +rx(pi/2) q[0]; +rx(pi/2) q[1]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +rx(-pi/2) q[0]; +ry(pi/2) q[0]; +rx(pi) q[0]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +ry(pi/2) q[0]; +rx(pi) q[0]; +ry(pi/2) q[1]; +rx(pi) q[1]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +rx(pi/2) q[0]; +rx(pi/2) q[1]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +rx(-pi/2) q[0]; +ry(pi/2) q[0]; +rx(pi) q[0]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +cx q[0],q[1]; +rz(1.0) q[1]; +cx q[0],q[1]; +ry(pi/2) q[0]; +rx(pi) q[0]; +rz(-0.4833583353015487) q[0]; +ry(pi/2) q[1]; +rx(pi) q[1]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +rx(pi/2) q[1]; +rx(pi/2) q[4]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +ry(pi/2) q[1]; +rx(pi) q[1]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +rx(pi/2) q[1]; +rx(pi/2) q[4]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[1],q[4]; +rz(1.0) q[4]; +cx q[1],q[4]; +ry(pi/2) q[1]; +rx(pi) q[1]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +rx(pi/2) q[1]; +rx(pi/2) q[2]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rx(-pi/2) q[2]; +ry(pi/2) q[2]; +rx(pi) q[2]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +ry(pi/2) q[1]; +rx(pi) q[1]; +ry(pi/2) q[2]; +rx(pi) q[2]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +rx(pi/2) q[1]; +rx(pi/2) q[2]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +rx(-pi/2) q[1]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rx(-pi/2) q[2]; +ry(pi/2) q[2]; +rx(pi) q[2]; +cx q[1],q[2]; +rz(1.0) q[2]; +cx q[1],q[2]; +ry(pi/2) q[1]; +rx(pi) q[1]; +rz(-1.311081899823388) q[1]; +ry(pi/2) q[2]; +rx(pi) q[2]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +rx(pi/2) q[2]; +rx(pi/2) q[5]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +rx(-pi/2) q[2]; +ry(pi/2) q[2]; +rx(pi) q[2]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +ry(pi/2) q[2]; +rx(pi) q[2]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +rx(pi/2) q[2]; +rx(pi/2) q[5]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +rx(-pi/2) q[2]; +ry(pi/2) q[2]; +rx(pi) q[2]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[2],q[5]; +rz(1.0) q[5]; +cx q[2],q[5]; +ry(pi/2) q[2]; +rx(pi) q[2]; +rz(-1.4170141939906804) q[2]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +rx(pi/2) q[3]; +rx(pi/2) q[6]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rx(-pi/2) q[6]; +ry(pi/2) q[6]; +rx(pi) q[6]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +ry(pi/2) q[3]; +rx(pi) q[3]; +ry(pi/2) q[6]; +rx(pi) q[6]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +rx(pi/2) q[3]; +rx(pi/2) q[6]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rx(-pi/2) q[6]; +ry(pi/2) q[6]; +rx(pi) q[6]; +cx q[3],q[6]; +rz(1.0) q[6]; +cx q[3],q[6]; +ry(pi/2) q[3]; +rx(pi) q[3]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +rx(pi/2) q[3]; +rx(pi/2) q[4]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +ry(pi/2) q[3]; +rx(pi) q[3]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +rx(pi/2) q[3]; +rx(pi/2) q[4]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +rx(-pi/2) q[3]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[3],q[4]; +rz(1.0) q[4]; +cx q[3],q[4]; +ry(pi/2) q[3]; +rx(pi) q[3]; +rz(-1.7697309322476698) q[3]; +ry(pi/2) q[4]; +rx(pi) q[4]; +ry(pi/2) q[6]; +rx(pi) q[6]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +rx(pi/2) q[4]; +rx(pi/2) q[7]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +ry(pi/2) q[4]; +rx(pi) q[4]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +rx(pi/2) q[4]; +rx(pi/2) q[7]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[4],q[7]; +rz(1.0) q[7]; +cx q[4],q[7]; +ry(pi/2) q[4]; +rx(pi) q[4]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +rx(pi/2) q[4]; +rx(pi/2) q[5]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +ry(pi/2) q[4]; +rx(pi) q[4]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +rx(pi/2) q[4]; +rx(pi/2) q[5]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +rx(-pi/2) q[4]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +cx q[4],q[5]; +rz(1.0) q[5]; +cx q[4],q[5]; +ry(pi/2) q[4]; +rx(pi) q[4]; +rz(-1.560914598304639) q[4]; +ry(pi/2) q[5]; +rx(pi) q[5]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +rx(pi/2) q[6]; +rx(pi/2) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +rx(-pi/2) q[6]; +ry(pi/2) q[6]; +rx(pi) q[6]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +ry(pi/2) q[6]; +rx(pi) q[6]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +rx(pi/2) q[6]; +rx(pi/2) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +rx(-pi/2) q[6]; +ry(pi/2) q[6]; +rx(pi) q[6]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[6],q[7]; +rz(1.0) q[7]; +cx q[6],q[7]; +ry(pi/2) q[6]; +rx(pi) q[6]; +rz(-0.36313694747249103) q[6]; +ry(pi/2) q[7]; +rx(pi) q[7]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +rx(pi/2) q[5]; +rx(pi/2) q[8]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +rx(-pi/2) q[8]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +ry(pi/2) q[5]; +rx(pi) q[5]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +rx(pi/2) q[5]; +rx(pi/2) q[8]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +rx(-pi/2) q[5]; +ry(pi/2) q[5]; +rx(pi) q[5]; +rx(-pi/2) q[8]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[5],q[8]; +rz(1.0) q[8]; +cx q[5],q[8]; +ry(pi/2) q[5]; +rx(pi) q[5]; +rz(-0.21235126602212873) q[5]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +rx(pi/2) q[7]; +rx(pi/2) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +rx(-pi/2) q[8]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +ry(pi/2) q[7]; +rx(pi) q[7]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +rx(pi/2) q[7]; +rx(pi/2) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +rx(-pi/2) q[7]; +ry(pi/2) q[7]; +rx(pi) q[7]; +rx(-pi/2) q[8]; +ry(pi/2) q[8]; +rx(pi) q[8]; +cx q[7],q[8]; +rz(1.0) q[8]; +cx q[7],q[8]; +ry(pi/2) q[7]; +rx(pi) q[7]; +rz(0.8354896414891244) q[7]; +ry(pi/2) q[8]; +rx(pi) q[8]; +rz(0.3311538078660634) q[8]; \ No newline at end of file From c32ee7c576632d8f814a4c3274391d5dd39360ff Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Tue, 14 Jan 2025 10:39:19 -0800 Subject: [PATCH 06/18] Rename qasm file to include basis --- .../qasm2/ucc/prep_select_N10_ghz.qasm | 1500 ----------------- ...ep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm | 1491 ++++++++++++++++ 2 files changed, 1491 insertions(+), 1500 deletions(-) delete mode 100644 benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz.qasm create mode 100644 benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm diff --git a/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz.qasm b/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz.qasm deleted file mode 100644 index cfdccef..0000000 --- a/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz.qasm +++ /dev/null @@ -1,1500 +0,0 @@ -// Generated from qBraid v0.7.3 - -OPENQASM 2.0; -include "qelib1.inc"; - - -// Qubits: [q(0), q(1), q(2), q(3), q(4), q(5), q(6), q(7), q(8), q(9)] -qreg q[10]; - - -h q[0]; -h q[1]; -h q[2]; -h q[3]; -h q[4]; -h q[5]; -h q[6]; -h q[7]; -h q[8]; -h q[9]; - -// Operation: CCCCCCCCCZ(q(0), q(1), q(2), q(3), q(4), q(5), q(6), q(7), q(8), q(9)) -t q[8]; -u3(0,pi*1.25,pi*0.5) q[9]; -cx q[8],q[9]; -u3(0,pi*1.25,pi*0.5) q[9]; -cx q[8],q[9]; -u3(0,0,pi*0.5) q[9]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -tdg q[8]; -u3(0,pi*1.75,pi*0.5) q[9]; -cx q[8],q[9]; -u3(0,pi*1.75,pi*0.5) q[9]; -cx q[8],q[9]; -u3(0,pi*1.0,pi*0.5) q[9]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[9]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ccx q[9],q[1],q[8]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ry(pi*-0.25) q[1]; -cx q[0],q[1]; -ry(pi*-0.25) q[1]; -cx q[7],q[1]; -ry(pi*0.25) q[1]; -cx q[0],q[1]; -ry(pi*0.25) q[1]; -rz(pi*0.125) q[7]; -u3(0,pi*1.375,pi*0.5) q[9]; -cx q[7],q[9]; -u3(0,pi*1.375,pi*0.5) q[9]; -cx q[7],q[9]; -u3(0,pi*1.75,pi*0.5) q[9]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -rz(pi*-0.125) q[7]; -u3(0,pi*1.625,pi*0.5) q[9]; -cx q[7],q[9]; -u3(0,pi*1.625,pi*0.5) q[9]; -cx q[7],q[9]; -u3(0,pi*1.25,pi*0.5) q[9]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[4],q[7],q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[3],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -ccx q[8],q[0],q[7]; -ry(pi*-0.25) q[0]; -cx q[6],q[0]; -ry(pi*-0.25) q[0]; -cx q[5],q[0]; -ry(pi*0.25) q[0]; -cx q[6],q[0]; -ry(pi*0.25) q[0]; -rz(pi*0.0625) q[6]; -u3(0,pi*1.4375,pi*0.5) q[9]; -cx q[6],q[9]; -u3(0,pi*1.4375,pi*0.5) q[9]; -cx q[6],q[9]; -u3(0,pi*1.625,pi*0.5) q[9]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[5],q[7],q[6]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[5],q[7],q[6]; -rz(pi*-0.0625) q[6]; -u3(0,pi*1.5625,pi*0.5) q[9]; -cx q[6],q[9]; -u3(0,pi*1.5625,pi*0.5) q[9]; -cx q[6],q[9]; -u3(0,pi*1.375,pi*0.5) q[9]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[5],q[7],q[6]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[7]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[8]; -cx q[6],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[6],q[8]; -ry(pi*0.25) q[8]; -ccx q[5],q[7],q[6]; -rz(pi*0.03125) q[5]; -u3(0,pi*1.46875,pi*0.5) q[9]; -cx q[5],q[9]; -u3(0,pi*1.46875,pi*0.5) q[9]; -cx q[5],q[9]; -u3(0,pi*1.5625,pi*0.5) q[9]; -ccx q[4],q[8],q[5]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[1],q[6]; -ry(pi*-0.25) q[6]; -cx q[0],q[6]; -ry(pi*0.25) q[6]; -cx q[1],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[5]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[1],q[6]; -ry(pi*-0.25) q[6]; -cx q[0],q[6]; -ry(pi*0.25) q[6]; -cx q[1],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -rz(pi*-0.03125) q[5]; -u3(0,pi*1.53125,pi*0.5) q[9]; -cx q[5],q[9]; -u3(0,pi*1.53125,pi*0.5) q[9]; -cx q[5],q[9]; -u3(0,pi*1.4375,pi*0.5) q[9]; -ccx q[4],q[8],q[5]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[1],q[6]; -ry(pi*-0.25) q[6]; -cx q[0],q[6]; -ry(pi*0.25) q[6]; -cx q[1],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ccx q[4],q[8],q[5]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[6]; -cx q[1],q[6]; -ry(pi*-0.25) q[6]; -cx q[0],q[6]; -ry(pi*0.25) q[6]; -cx q[1],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[7]; -cx q[6],q[7]; -ry(pi*-0.25) q[7]; -cx q[2],q[7]; -ry(pi*0.25) q[7]; -cx q[6],q[7]; -ry(pi*0.25) q[7]; -ry(pi*-0.25) q[8]; -cx q[7],q[8]; -ry(pi*-0.25) q[8]; -cx q[3],q[8]; -ry(pi*0.25) q[8]; -cx q[7],q[8]; -ry(pi*0.25) q[8]; -rz(pi*0.015625) q[4]; -u3(0,pi*1.484375,pi*0.5) q[9]; -cx q[4],q[9]; -u3(0,pi*1.484375,pi*0.5) q[9]; -cx q[4],q[9]; -u3(0,pi*1.53125,pi*0.5) q[9]; -ccx q[3],q[6],q[4]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ccx q[3],q[6],q[4]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -rz(pi*-0.015625) q[4]; -u3(0,pi*1.515625,pi*0.5) q[9]; -cx q[4],q[9]; -u3(0,pi*1.515625,pi*0.5) q[9]; -cx q[4],q[9]; -u3(0,pi*1.46875,pi*0.5) q[9]; -ccx q[3],q[6],q[4]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ccx q[3],q[6],q[4]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -ry(pi*-0.25) q[5]; -cx q[1],q[5]; -ry(pi*-0.25) q[5]; -cx q[0],q[5]; -ry(pi*0.25) q[5]; -cx q[1],q[5]; -ry(pi*0.25) q[5]; -ry(pi*-0.25) q[6]; -cx q[5],q[6]; -ry(pi*-0.25) q[6]; -cx q[2],q[6]; -ry(pi*0.25) q[6]; -cx q[5],q[6]; -ry(pi*0.25) q[6]; -rz(pi*0.0078125) q[3]; -u3(0,pi*1.4921875,pi*0.5) q[9]; -cx q[3],q[9]; -u3(0,pi*1.4921875,pi*0.5) q[9]; -cx q[3],q[9]; -u3(0,pi*1.515625,pi*0.5) q[9]; -ccx q[2],q[4],q[3]; -ry(pi*-0.25) q[4]; -cx q[1],q[4]; -ry(pi*-0.25) q[4]; -cx q[0],q[4]; -ry(pi*0.25) q[4]; -cx q[1],q[4]; -ry(pi*0.25) q[4]; -ccx q[2],q[4],q[3]; -ry(pi*-0.25) q[4]; -cx q[1],q[4]; -ry(pi*-0.25) q[4]; -cx q[0],q[4]; -ry(pi*0.25) q[4]; -cx q[1],q[4]; -ry(pi*0.25) q[4]; -rz(pi*-0.0078125) q[3]; -u3(0,pi*1.5078125,pi*0.5) q[9]; -cx q[3],q[9]; -u3(0,pi*1.5078125,pi*0.5) q[9]; -cx q[3],q[9]; -u3(0,pi*1.484375,pi*0.5) q[9]; -ccx q[2],q[4],q[3]; -ry(pi*-0.25) q[4]; -cx q[1],q[4]; -ry(pi*-0.25) q[4]; -cx q[0],q[4]; -ry(pi*0.25) q[4]; -cx q[1],q[4]; -ry(pi*0.25) q[4]; -ccx q[2],q[4],q[3]; -ry(pi*-0.25) q[4]; -cx q[1],q[4]; -ry(pi*-0.25) q[4]; -cx q[0],q[4]; -ry(pi*0.25) q[4]; -cx q[1],q[4]; -ry(pi*0.25) q[4]; -rz(pi*0.00390625) q[2]; -u3(0,pi*1.49609375,pi*0.5) q[9]; -cx q[2],q[9]; -u3(0,pi*1.49609375,pi*0.5) q[9]; -cx q[2],q[9]; -u3(0,pi*1.5078125,pi*0.5) q[9]; -ccx q[0],q[1],q[2]; -rz(pi*-0.00390625) q[2]; -u3(0,pi*1.50390625,pi*0.5) q[9]; -cx q[2],q[9]; -u3(0,pi*1.50390625,pi*0.5) q[9]; -cx q[2],q[9]; -u3(0,pi*1.4921875,pi*0.5) q[9]; -ccx q[0],q[1],q[2]; -rz(pi*0.001953125) q[1]; -u3(0,pi*1.498046875,pi*0.5) q[9]; -cx q[1],q[9]; -u3(0,pi*1.498046875,pi*0.5) q[9]; -cx q[1],q[9]; -u3(0,pi*1.50390625,pi*0.5) q[9]; -cx q[0],q[1]; -rz(pi*-0.001953125) q[1]; -u3(0,pi*1.501953125,pi*0.5) q[9]; -cx q[1],q[9]; -u3(0,pi*1.501953125,pi*0.5) q[9]; -cx q[1],q[9]; -u3(0,pi*1.49609375,pi*0.5) q[9]; -cx q[0],q[1]; -rz(pi*0.001953125) q[0]; -u3(0,pi*1.498046875,pi*0.5) q[9]; -cx q[0],q[9]; -u3(0,pi*1.498046875,pi*0.5) q[9]; -cx q[0],q[9]; -u3(0,pi*1.50390625,pi*0.5) q[9]; diff --git a/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm b/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm new file mode 100644 index 0000000..175b561 --- /dev/null +++ b/benchmarks/qasm_circuits/qasm2/ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm @@ -0,0 +1,1491 @@ + OPENQASM 2.0; +include "qelib1.inc"; +qreg q[10]; +h q[0]; +h q[1]; +h q[2]; +h q[3]; +h q[4]; +h q[5]; +h q[6]; +h q[7]; +h q[8]; +h q[9]; +t q[8]; +u3(0,5*pi/4,pi/2) q[9]; +cx q[8],q[9]; +u3(0,5*pi/4,pi/2) q[9]; +cx q[8],q[9]; +u3(0,0,pi/2) q[9]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +tdg q[8]; +u3(0,7*pi/4,pi/2) q[9]; +cx q[8],q[9]; +u3(0,7*pi/4,pi/2) q[9]; +cx q[8],q[9]; +u3(0,pi,pi/2) q[9]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[9]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ccx q[9],q[1],q[8]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ry(-pi/4) q[1]; +cx q[0],q[1]; +ry(-pi/4) q[1]; +cx q[7],q[1]; +ry(pi/4) q[1]; +cx q[0],q[1]; +ry(pi/4) q[1]; +rz(pi/8) q[7]; +u3(0,11*pi/8,pi/2) q[9]; +cx q[7],q[9]; +u3(0,11*pi/8,pi/2) q[9]; +cx q[7],q[9]; +u3(0,7*pi/4,pi/2) q[9]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +rz(-pi/8) q[7]; +u3(0,13*pi/8,pi/2) q[9]; +cx q[7],q[9]; +u3(0,13*pi/8,pi/2) q[9]; +cx q[7],q[9]; +u3(0,5*pi/4,pi/2) q[9]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[4],q[7],q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[3],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +ccx q[8],q[0],q[7]; +ry(-pi/4) q[0]; +cx q[6],q[0]; +ry(-pi/4) q[0]; +cx q[5],q[0]; +ry(pi/4) q[0]; +cx q[6],q[0]; +ry(pi/4) q[0]; +rz(pi/16) q[6]; +u3(0,4.516039439535327,pi/2) q[9]; +cx q[6],q[9]; +u3(0,4.516039439535327,pi/2) q[9]; +cx q[6],q[9]; +u3(0,13*pi/8,pi/2) q[9]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[5],q[7],q[6]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[5],q[7],q[6]; +rz(-pi/16) q[6]; +u3(0,4.908738521234052,pi/2) q[9]; +cx q[6],q[9]; +u3(0,4.908738521234052,pi/2) q[9]; +cx q[6],q[9]; +u3(0,11*pi/8,pi/2) q[9]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[5],q[7],q[6]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[7]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[8]; +cx q[6],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[6],q[8]; +ry(pi/4) q[8]; +ccx q[5],q[7],q[6]; +rz(pi/32) q[5]; +u3(0,4.614214209960009,pi/2) q[9]; +cx q[5],q[9]; +u3(0,4.614214209960009,pi/2) q[9]; +cx q[5],q[9]; +u3(0,4.908738521234052,pi/2) q[9]; +ccx q[4],q[8],q[5]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[1],q[6]; +ry(-pi/4) q[6]; +cx q[0],q[6]; +ry(pi/4) q[6]; +cx q[1],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[5]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[1],q[6]; +ry(-pi/4) q[6]; +cx q[0],q[6]; +ry(pi/4) q[6]; +cx q[1],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +rz(-pi/32) q[5]; +u3(0,4.81056375080937,pi/2) q[9]; +cx q[5],q[9]; +u3(0,4.81056375080937,pi/2) q[9]; +cx q[5],q[9]; +u3(0,4.516039439535327,pi/2) q[9]; +ccx q[4],q[8],q[5]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[1],q[6]; +ry(-pi/4) q[6]; +cx q[0],q[6]; +ry(pi/4) q[6]; +cx q[1],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ccx q[4],q[8],q[5]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[6]; +cx q[1],q[6]; +ry(-pi/4) q[6]; +cx q[0],q[6]; +ry(pi/4) q[6]; +cx q[1],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[7]; +cx q[6],q[7]; +ry(-pi/4) q[7]; +cx q[2],q[7]; +ry(pi/4) q[7]; +cx q[6],q[7]; +ry(pi/4) q[7]; +ry(-pi/4) q[8]; +cx q[7],q[8]; +ry(-pi/4) q[8]; +cx q[3],q[8]; +ry(pi/4) q[8]; +cx q[7],q[8]; +ry(pi/4) q[8]; +rz(pi/64) q[4]; +u3(0,4.663301595172349,pi/2) q[9]; +cx q[4],q[9]; +u3(0,4.663301595172349,pi/2) q[9]; +cx q[4],q[9]; +u3(0,4.81056375080937,pi/2) q[9]; +ccx q[3],q[6],q[4]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ccx q[3],q[6],q[4]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +rz(-pi/64) q[4]; +u3(0,4.76147636559703,pi/2) q[9]; +cx q[4],q[9]; +u3(0,4.76147636559703,pi/2) q[9]; +cx q[4],q[9]; +u3(0,4.614214209960009,pi/2) q[9]; +ccx q[3],q[6],q[4]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ccx q[3],q[6],q[4]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +ry(-pi/4) q[5]; +cx q[1],q[5]; +ry(-pi/4) q[5]; +cx q[0],q[5]; +ry(pi/4) q[5]; +cx q[1],q[5]; +ry(pi/4) q[5]; +ry(-pi/4) q[6]; +cx q[5],q[6]; +ry(-pi/4) q[6]; +cx q[2],q[6]; +ry(pi/4) q[6]; +cx q[5],q[6]; +ry(pi/4) q[6]; +rz(pi/128) q[3]; +u3(0,4.6878452877785195,pi/2) q[9]; +cx q[3],q[9]; +u3(0,4.6878452877785195,pi/2) q[9]; +cx q[3],q[9]; +u3(0,4.76147636559703,pi/2) q[9]; +ccx q[2],q[4],q[3]; +ry(-pi/4) q[4]; +cx q[1],q[4]; +ry(-pi/4) q[4]; +cx q[0],q[4]; +ry(pi/4) q[4]; +cx q[1],q[4]; +ry(pi/4) q[4]; +ccx q[2],q[4],q[3]; +ry(-pi/4) q[4]; +cx q[1],q[4]; +ry(-pi/4) q[4]; +cx q[0],q[4]; +ry(pi/4) q[4]; +cx q[1],q[4]; +ry(pi/4) q[4]; +rz(-pi/128) q[3]; +u3(0,4.73693267299086,pi/2) q[9]; +cx q[3],q[9]; +u3(0,4.73693267299086,pi/2) q[9]; +cx q[3],q[9]; +u3(0,4.663301595172349,pi/2) q[9]; +ccx q[2],q[4],q[3]; +ry(-pi/4) q[4]; +cx q[1],q[4]; +ry(-pi/4) q[4]; +cx q[0],q[4]; +ry(pi/4) q[4]; +cx q[1],q[4]; +ry(pi/4) q[4]; +ccx q[2],q[4],q[3]; +ry(-pi/4) q[4]; +cx q[1],q[4]; +ry(-pi/4) q[4]; +cx q[0],q[4]; +ry(pi/4) q[4]; +cx q[1],q[4]; +ry(pi/4) q[4]; +rz(pi/256) q[2]; +u3(0,4.700117134081604,pi/2) q[9]; +cx q[2],q[9]; +u3(0,4.700117134081604,pi/2) q[9]; +cx q[2],q[9]; +u3(0,4.73693267299086,pi/2) q[9]; +ccx q[0],q[1],q[2]; +rz(-pi/256) q[2]; +u3(0,4.724660826687775,pi/2) q[9]; +cx q[2],q[9]; +u3(0,4.724660826687775,pi/2) q[9]; +cx q[2],q[9]; +u3(0,4.6878452877785195,pi/2) q[9]; +ccx q[0],q[1],q[2]; +rz(pi/512) q[1]; +u3(0,4.706253057233147,pi/2) q[9]; +cx q[1],q[9]; +u3(0,4.706253057233147,pi/2) q[9]; +cx q[1],q[9]; +u3(0,4.724660826687775,pi/2) q[9]; +cx q[0],q[1]; +rz(-pi/512) q[1]; +u3(0,4.718524903536232,pi/2) q[9]; +cx q[1],q[9]; +u3(0,4.718524903536232,pi/2) q[9]; +cx q[1],q[9]; +u3(0,4.700117134081604,pi/2) q[9]; +cx q[0],q[1]; +rz(pi/512) q[0]; +u3(0,4.706253057233147,pi/2) q[9]; +cx q[0],q[9]; +u3(0,4.706253057233147,pi/2) q[9]; +cx q[0],q[9]; +u3(0,4.724660826687775,pi/2) q[9]; \ No newline at end of file From dcb4322ea6bc0bd6332e4a1d9b2530e9b33ff5ff Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Tue, 14 Jan 2025 10:39:47 -0800 Subject: [PATCH 07/18] Add filenames to expal run --- benchmarks/scripts/run_benchmarks.sh | 31 +++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/benchmarks/scripts/run_benchmarks.sh b/benchmarks/scripts/run_benchmarks.sh index bb704f0..1ac985b 100755 --- a/benchmarks/scripts/run_benchmarks.sh +++ b/benchmarks/scripts/run_benchmarks.sh @@ -32,21 +32,28 @@ echo "Running with parallelism: $PARALLELISM" # Function to handle the kill signal trap 'echo "All jobs killed"; exit' SIGINT SIGTERM -# Prepare the list of commands to run in parallel -commands=() -for qasm_file in "${QASM_FILES[@]}"; do - for compiler in "${COMPILERS[@]}"; do - # Combine the common folder path with the QASM file - full_qasm_file="${QASM_FOLDER}${qasm_file}" +# # Prepare the list of commands to run in parallel +# commands=() +# for qasm_file in "${QASM_FILES[@]}"; do +# for compiler in "${COMPILERS[@]}"; do +# # Combine the common folder path with the QASM file +# full_qasm_file="${QASM_FOLDER}${qasm_file}" - # Build the command, passing the results folder as an argument - command="python3 $(dirname "$0")/benchmark_script.py \"$full_qasm_file\" \"$compiler\" \"$RESULTS_FOLDER\"" +# # Build the command, passing the results folder as an argument +# command="python3 $(dirname "$0")/benchmark_script.py \"$full_qasm_file\" \"$compiler\" \"$RESULTS_FOLDER\"" - commands+=("$command") - done -done +# commands+=("$command") +# done +# done -QASM_EXPVAL_FILES=() # TODO +QASM_EXPVAL_FILES=( + "benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm" + "benchpress/qv_N100_12345_basis_rz_rx_ry_cx.qasm" + "benchpress/qft_N010_basis_rz_rx_ry_cx.qasm" + "benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm" + "ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm" + "ucc/qcnn_N10_4layers_basis_rz_rx_ry_h_cx.qasm" +) for qasm_file in "${QASM_EXPVAL_FILES[@]}"; do for compiler in "${COMPILERS[@]}"; do # Combine the common folder path with the QASM file From 1c28fd3e5367ee3cebe8266ad84e62d623782fe7 Mon Sep 17 00:00:00 2001 From: jordandsullivan Date: Tue, 14 Jan 2025 10:50:29 -0800 Subject: [PATCH 08/18] Fix filenames --- benchmarks/scripts/run_benchmarks.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/scripts/run_benchmarks.sh b/benchmarks/scripts/run_benchmarks.sh index 1ac985b..9330c93 100755 --- a/benchmarks/scripts/run_benchmarks.sh +++ b/benchmarks/scripts/run_benchmarks.sh @@ -48,7 +48,7 @@ trap 'echo "All jobs killed"; exit' SIGINT SIGTERM QASM_EXPVAL_FILES=( "benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm" - "benchpress/qv_N100_12345_basis_rz_rx_ry_cx.qasm" + "benchpress/qv_N010_12345_basis_rz_rx_ry_cx.qasm" "benchpress/qft_N010_basis_rz_rx_ry_cx.qasm" "benchpress/square_heisenberg_N9_basis_rz_rx_ry_cx.qasm" "ucc/prep_select_N10_ghz_basis_rz_rx_ry_h_cx.qasm" From 22a35a758727fe5b9465065a21af1edef6b8d323 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 20:39:07 -0800 Subject: [PATCH 09/18] ensure observable matches circuit size --- benchmarks/scripts/expval_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/scripts/expval_benchmark.py b/benchmarks/scripts/expval_benchmark.py index cf9e711..56d84c4 100644 --- a/benchmarks/scripts/expval_benchmark.py +++ b/benchmarks/scripts/expval_benchmark.py @@ -80,7 +80,7 @@ def simulate_density_matrix(circuit: qiskit.QuantumCircuit) -> np.ndarray: compiled_circuit = compile_for_simulation(native_circuit, compiler_alias) density_matrix = simulate_density_matrix(compiled_circuit) -obs_str = "ZZZZZZZZZZ" +obs_str = "Z" * compiled_circuit.num_qubits observable = Operator.from_label(obs_str) compiled_ev = np.real(density_matrix.expectation_value(observable)) From 5353c4b52fc6d1c67221a25d404af50cda45b86b Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 20:40:23 -0800 Subject: [PATCH 10/18] add qisit aer to requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 8db8b38..3dc7924 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ ply>=3.11 pytest>=6.0 pytest-cov>=2.10 sphinx>=8.1.3 +qiskit-aer==0.15.1 From 683310f6d39283917c705f014e0f16be58791efe Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 20:44:18 -0800 Subject: [PATCH 11/18] remove old expval data the new data isn't the same format --- benchmarks/results/expval_2024-11-27_12-41-04.csv | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 benchmarks/results/expval_2024-11-27_12-41-04.csv diff --git a/benchmarks/results/expval_2024-11-27_12-41-04.csv b/benchmarks/results/expval_2024-11-27_12-41-04.csv deleted file mode 100644 index 7ae5732..0000000 --- a/benchmarks/results/expval_2024-11-27_12-41-04.csv +++ /dev/null @@ -1,7 +0,0 @@ -# Compiler versions: qiskit=1.2.0, cirq=1.4.1, pytket=1.35.0, ucc=0.2.0 -compiler,expval,absoluate_error,relative_error,ideal -uncompiled,4.553649124439119e-18,1.0605990171102696e-16,0.9588328094519584,1.1061355083546608e-16 -ucc,-8.890457814381136e-18,1.1950400864984722e-16,1.0803740386890337,1.1061355083546608e-16 -cirq,2.0143392162608187e-15,1.9037256654253525e-15,17.21060079028726,1.1061355083546608e-16 -qiskit,-2.3852447794681098e-18,1.129987956149342e-16,1.0215637664775457,1.1061355083546608e-16 -pytket,-3.469446951953614e-18,1.140829977874197e-16,1.0313654785127937,1.1061355083546608e-16 From 1fb692ff9fa92872941cac36c0318712045a2e8c Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 21:22:47 -0800 Subject: [PATCH 12/18] first results --- benchmarks/results/expval_2025-01-14_20.csv | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 benchmarks/results/expval_2025-01-14_20.csv diff --git a/benchmarks/results/expval_2025-01-14_20.csv b/benchmarks/results/expval_2025-01-14_20.csv new file mode 100644 index 0000000..e5d9d46 --- /dev/null +++ b/benchmarks/results/expval_2025-01-14_20.csv @@ -0,0 +1,26 @@ +# Compiler versions: qiskit=1.3.0, cirq=1.4.1, pytket=1.32.0, ucc=0.2.0 # OS: Darwin Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000, Architecture: 64bit, CPU Cores: 8 +compiler,circuit_name,observable,expval,absoluate_error,relative_error,ideal_expval +pytket,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006878021837e-06,0.0080991662520941,1.0003503440169677,0.008096329751406298 +ucc,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006877938354e-06,0.008099166252094092,1.0003503440169665,0.008096329751406298 +qiskit,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006877824513e-06,0.00809916625209408,1.0003503440169652,0.008096329751406298 +cirq,qaoa_barabasi_albert,ZZZZZZZZZZ,4.8487000320965854e-05,0.008047842751085332,0.9940112369666585,0.008096329751406298 +ucc,qv,ZZZZZZZZZZ,5.157107240223865e-05,0.007095193327000706,0.9927839971321082,0.007146764399402945 +qiskit,qv,ZZZZZZZZZZ,5.157107240226033e-05,0.007095193327000684,0.9927839971321051,0.007146764399402945 +pytket,qv,ZZZZZZZZZZ,5.157107240225285e-05,0.007095193327000692,0.9927839971321062,0.007146764399402945 +cirq,qv,ZZZZZZZZZZ,5.7267783450868585e-05,0.0070894966159520765,0.9919868936136117,0.007146764399402945 +ucc,qft,ZZZZZZZZZZ,4.7704895589362195e-18,4.771491994589455e-18,4759.8985323285315,-1.002435653235501e-21 +qiskit,qft,ZZZZZZZZZZ,8.673617379884035e-19,8.68364173641639e-19,866.2542786051877,-1.002435653235501e-21 +pytket,qft,ZZZZZZZZZZ,-3.2526065174565133e-18,3.2516040818032778e-18,3243.703544769454,-1.002435653235501e-21 +cirq,qft,ZZZZZZZZZZ,2.168404344971009e-19,2.178428701503364e-19,217.31356965129692,-1.002435653235501e-21 +ucc,square_heisenberg,ZZZZZZZZZ,0.15777921478822712,0.8422207852117751,0.8422207852117732,1.0000000000000022 +qiskit,square_heisenberg,ZZZZZZZZZ,0.15777921478822676,0.8422207852117755,0.8422207852117736,1.0000000000000022 +pytket,square_heisenberg,ZZZZZZZZZ,0.0006197252075469554,0.9993802747924553,0.9993802747924531,1.0000000000000022 +cirq,square_heisenberg,ZZZZZZZZZ,0.11268500015870198,0.8873149998413002,0.8873149998412982,1.0000000000000022 +ucc,prep_select,ZZZZZZZZZZ,-6.505213034913027e-19,2.456063370303754e-17,0.9741970844523847,-2.5211155006528843e-17 +qiskit,prep_select,ZZZZZZZZZZ,-1.0842021724855044e-18,2.412695283404334e-17,0.9569951407539745,-2.5211155006528843e-17 +pytket,prep_select,ZZZZZZZZZZ,4.336808689942018e-18,2.954796369647086e-17,1.1720194369841022,-2.5211155006528843e-17 +ucc,qcnn,ZZZZZZZZZZ,-0.0006168084746497563,0.0027601976170682054,0.817350499851787,-0.0033770060917179615 +qiskit,qcnn,ZZZZZZZZZZ,-0.0006168084746498123,0.002760197617068149,0.8173504998517703,-0.0033770060917179615 +pytket,qcnn,ZZZZZZZZZZ,-0.0006168084746497968,0.0027601976170681646,0.8173504998517749,-0.0033770060917179615 +cirq,qcnn,ZZZZZZZZZZ,-0.0006094140052068088,0.0027675920865111526,0.819540152236804,-0.0033770060917179615 +cirq,prep_select,ZZZZZZZZZZ,1.1476279995759064e-15,1.1728391545824353e-15,46.52064351191801,-2.5211155006528843e-17 From 39f4ed24d6ffd4b6db268003e8582ea0068de4b5 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 21:22:56 -0800 Subject: [PATCH 13/18] first plot --- .github/workflows/ucc-benchmarks.yml | 3 +- README.md | 5 ++ .../latest_expval_benchmark_by_compiler.png | Bin 0 -> 85476 bytes .../scripts/plot_latest_expval_benchmarks.py | 59 ++++++++++++++++++ requirements.txt | 1 + 5 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 benchmarks/latest_expval_benchmark_by_compiler.png create mode 100644 benchmarks/scripts/plot_latest_expval_benchmarks.py diff --git a/.github/workflows/ucc-benchmarks.yml b/.github/workflows/ucc-benchmarks.yml index 991eeb3..c6cb554 100644 --- a/.github/workflows/ucc-benchmarks.yml +++ b/.github/workflows/ucc-benchmarks.yml @@ -35,7 +35,8 @@ jobs: source /venv/bin/activate && \ ./benchmarks/scripts/run_benchmarks.sh 8 && \ python ./benchmarks/scripts/plot_avg_benchmarks_over_time.py && \ - python ./benchmarks/scripts/plot_latest_benchmarks.py + python ./benchmarks/scripts/plot_latest_benchmarks.py && \ + python ./benchmarks/scripts/plot_latest_expval_benchmarks.py " # Commit and push benchmark results diff --git a/README.md b/README.md index 8d07d31..9896bf9 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,11 @@ def test_cirq_compile(): ## How does UCC stack up? We run benchmarks regularly to compare against the most recent versions of the most popular quantum compiler frameworks for a range of circuits. Here's the latest: ![alt text](benchmarks/latest_compiler_benchmarks_by_circuit.png) + +In addition to raw compilation stats, we simulate the compiled circuits with a noisy density matrix simulation to see how each compiler impacts performance: + +![Violin plot showing absolute error of each compiler across a variety of circuits](benchmarks/latest_expval_benchmark_by_compiler.png) + And here you can see progress over time (changes usually indicate a newer version came out): ![alt text](benchmarks/avg_compiler_benchmarks_over_time.png) Note that the compile times before 2024-12-10 may have been run on different classical compute instances, so their exact runtime is not as important to compare as their relative performance with respect to other compilers. After 2024-12-10, all data present in this plot should be run on the same compute instance using our [ucc-benchmarks](https://github.com/unitaryfund/ucc/blob/main/.github/workflows/ucc-benchmarks.yml) GitHub Actions workflow. diff --git a/benchmarks/latest_expval_benchmark_by_compiler.png b/benchmarks/latest_expval_benchmark_by_compiler.png new file mode 100644 index 0000000000000000000000000000000000000000..d98e2af6d5bc7827cbd871473cc8ba39bf10ffc6 GIT binary patch literal 85476 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%0D!I~FH{P9B@FoA>U)XyL-JkdV1wzXtBzNKfd; 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.0 pytest-cov>=2.10 sphinx>=8.1.3 qiskit-aer==0.15.1 +seaborn From 8471ab3cd2d791b5278c3ccfe63b3f3ad7e69829 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 14 Jan 2025 21:28:40 -0800 Subject: [PATCH 14/18] more plots --- .../average_relative_error_over_time.png | Bin 0 -> 32641 bytes ...st_relative_absolute_errors_by_circuit.png | Bin 0 -> 57524 bytes .../plot_expval_benchmarks_over_time.py | 73 ++++++++++++ ...ot_latest_expval_benchmarks_per_circuit.py | 105 ++++++++++++++++++ 4 files changed, 178 insertions(+) create mode 100644 benchmarks/average_relative_error_over_time.png create mode 100644 benchmarks/latest_relative_absolute_errors_by_circuit.png create mode 100644 benchmarks/scripts/plot_expval_benchmarks_over_time.py create mode 100644 benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py diff --git a/benchmarks/average_relative_error_over_time.png b/benchmarks/average_relative_error_over_time.png new file mode 100644 index 0000000000000000000000000000000000000000..e9fa2a676a0f1a2459887c4dc03d5aef28fcdc52 GIT binary patch literal 32641 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 H(82!zFs4uN literal 0 HcmV?d00001 diff --git a/benchmarks/latest_relative_absolute_errors_by_circuit.png b/benchmarks/latest_relative_absolute_errors_by_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..e416c5a1947994d52256c60d929610f14c90d42d GIT binary patch literal 57524 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 etJ9(S`1p|4;l4ahrSsQl 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

&n*q3 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 Mvwn5B_|?`w0k}cUQvd(} literal 0 HcmV?d00001 diff --git a/benchmarks/scripts/plot_expval_benchmarks_over_time.py b/benchmarks/scripts/plot_expval_benchmarks_over_time.py new file mode 100644 index 0000000..e53e618 --- /dev/null +++ b/benchmarks/scripts/plot_expval_benchmarks_over_time.py @@ -0,0 +1,73 @@ +import os +import glob +import pandas as pd +import matplotlib.pyplot as plt + +# Step 1: Get the directory of the current script +directory_of_this_file = os.path.dirname(os.path.abspath(__file__)) + +# Step 2: Construct the correct path to the results folder +results_folder = os.path.join(directory_of_this_file, "../results") + +# Step 3: Use glob to find all CSV files in the results folder +csv_files = glob.glob(os.path.join(results_folder, "expval_*.csv")) + +# Step 4: Iterate through all CSV files and load them into dataframes with date column +dfs = [] # List to store dataframes +for file in csv_files: + # Extract the date from the filename (assuming the date is after 'expval_' and before '.csv') + date_label = str(file).split('_')[1].split('.')[0] + + # Load the CSV file into a DataFrame + df = pd.read_csv(file, comment="#") + + # Add the extracted date as a new column in the dataframe + df['date'] = date_label + + # Append the dataframe to the list + dfs.append(df) + +# Step 5: Concatenate all dataframes into one large dataframe +df_all = pd.concat(dfs, ignore_index=True) + +# Convert the 'date' column to datetime +df_all['date'] = pd.to_datetime(df_all['date']) + +# Step 6: Group by date and compiler, and calculate the average relative error +summary = df_all.groupby(['date', 'compiler']).agg( + avg_relative_error=('relative_error', 'mean') +).reset_index() + +# Step 7: Set up the figure +fig, ax = plt.subplots(figsize=(12, 6)) + +# Set color map for different compilers +unique_compilers = sorted(summary['compiler'].unique()) +colormap = plt.get_cmap("tab10", len(unique_compilers)) +color_map = {compiler: colormap(i) for i, compiler in enumerate(unique_compilers)} + +# Step 8: Plot average relative error over time +for compiler in unique_compilers: + compiler_data = summary[summary['compiler'] == compiler] + + # Plot average relative error + ax.plot( + compiler_data['date'], + compiler_data['avg_relative_error'], + label=compiler, + color=color_map[compiler], + marker='o' + ) + +# Step 9: Customize plot +ax.set_title("Average Relative Error Over Time") +ax.set_xlabel("Date") +ax.set_ylabel("Average Relative Error") +ax.grid(True) +ax.legend(title="Compiler") + +# Adjust layout and save the figure +plt.tight_layout() +filename = os.path.join(directory_of_this_file, "../average_relative_error_over_time.png") +print(f"\n Saving plot to {filename}") +fig.savefig(filename) diff --git a/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py b/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py new file mode 100644 index 0000000..fea5e83 --- /dev/null +++ b/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py @@ -0,0 +1,105 @@ +import os +import glob +import pandas as pd +import matplotlib.pyplot as plt + +# Step 1: Get the directory of the current script +directory_of_this_file = os.path.dirname(os.path.abspath(__file__)) + +# Step 2: Construct the correct path to the results folder +results_folder = os.path.join(directory_of_this_file, "../results") + +# Step 3: Use glob to find all CSV files in the results folder +csv_files = glob.glob(os.path.join(results_folder, "expval_*.csv")) + +# Step 4: Iterate through all CSV files and load them into dataframes with date column +dfs = [] # List to store dataframes +for file in csv_files: + # Extract the date from the filename (assuming the date is after 'expval_' and before '.csv') + date_label = str(file).split('_')[1].split('.')[0] + + # Load the CSV file into a DataFrame + df = pd.read_csv(file, comment="#") + + # Add the extracted date as a new column in the dataframe + df['date'] = date_label + + # Append the dataframe to the list + dfs.append(df) + +# Step 5: Concatenate all dataframes into one large dataframe +df_all = pd.concat(dfs, ignore_index=True) + +# Find the most recent date in the 'date' column +latest_date = df_all['date'].max() +print("latest date is", latest_date) + +# Filter the dataframe to only include rows from the most recent date +df_latest = df_all[df_all['date'] == latest_date] + +# Step 6: Define the bar width and create x-axis positions for the circuits +bar_width = 0.2 +circuit_names = df_latest['circuit_name'].unique() +x_positions = range(len(circuit_names)) # X positions for each circuit + +# Create a dictionary to map circuit names to indices +circuit_name_to_index = {name: i for i, name in enumerate(circuit_names)} + +# Step 7: Set up the figure and axes +fig, ax = plt.subplots(1, 2, figsize=(14, 7)) + +# Set color map for different compilers +# Get unique compilers and sort them alphabetically +unique_compilers = sorted(df_latest['compiler'].unique()) + +# Set color map for different compilers +colormap = plt.get_cmap("tab10", len(unique_compilers)) +color_map = {compiler: colormap(i) for i, compiler in enumerate(unique_compilers)} + +# Step 8: Plot relative error and absolute error for each compiler +for i, (key, grp) in enumerate(df_latest.groupby("compiler")): + # Get indices for each circuit in the current compiler group + grp_indices = grp['circuit_name'].map(circuit_name_to_index) + + # Plot relative error + ax[0].bar( + [grp_indices + i * bar_width for grp_indices in grp_indices], # Shift bars for each compiler + grp['relative_error'], # Relative error data + width=bar_width, + label=key, + color=color_map[key] + ) + + # Plot absolute error + ax[1].bar( + [grp_indices + i * bar_width for grp_indices in grp_indices], # Shift bars for each compiler + grp['absoluate_error'], # Absolute error data + width=bar_width, + label=key, + color=color_map[key] + ) + +# Step 9: Customize plots +ax[0].set_title(f"Relative Error by Compiler on Circuits (Date: {latest_date})") +ax[0].set_xlabel("Circuit Name") +ax[0].set_ylabel("Relative Error") +ax[0].set_xticks(x_positions) +ax[0].set_xticklabels(circuit_names, rotation=75) +ax[0].set_yscale("log") + +ax[1].set_title(f"Absolute Error by Compiler on Circuits (Date: {latest_date})") +ax[1].set_xlabel("Circuit Name") +ax[1].set_ylabel("Absolute Error") +ax[1].set_xticks(x_positions) +ax[1].set_xticklabels(circuit_names, rotation=75) +ax[1].set_yscale("log") + +# Step 10: Add legend +ax[0].legend(title="Compiler") +ax[1].legend(title="Compiler") + +# Adjust layout and save the figure +plt.tight_layout() +filename = os.path.join(directory_of_this_file, "../latest_relative_absolute_errors_by_circuit.png") +print(f"\n Saving plot to {filename}") +fig.savefig(filename) From 782c9204c3c27e7f88f73393dcb156938f6ad069 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Thu, 16 Jan 2025 21:13:54 -0800 Subject: [PATCH 15/18] uncomment first commands to run --- benchmarks/scripts/run_benchmarks.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/benchmarks/scripts/run_benchmarks.sh b/benchmarks/scripts/run_benchmarks.sh index 9330c93..c12a813 100755 --- a/benchmarks/scripts/run_benchmarks.sh +++ b/benchmarks/scripts/run_benchmarks.sh @@ -33,18 +33,18 @@ echo "Running with parallelism: $PARALLELISM" trap 'echo "All jobs killed"; exit' SIGINT SIGTERM # # Prepare the list of commands to run in parallel -# commands=() -# for qasm_file in "${QASM_FILES[@]}"; do -# for compiler in "${COMPILERS[@]}"; do -# # Combine the common folder path with the QASM file -# full_qasm_file="${QASM_FOLDER}${qasm_file}" +commands=() +for qasm_file in "${QASM_FILES[@]}"; do + for compiler in "${COMPILERS[@]}"; do + # Combine the common folder path with the QASM file + full_qasm_file="${QASM_FOLDER}${qasm_file}" -# # Build the command, passing the results folder as an argument -# command="python3 $(dirname "$0")/benchmark_script.py \"$full_qasm_file\" \"$compiler\" \"$RESULTS_FOLDER\"" + # Build the command, passing the results folder as an argument + command="python3 $(dirname "$0")/benchmark_script.py \"$full_qasm_file\" \"$compiler\" \"$RESULTS_FOLDER\"" -# commands+=("$command") -# done -# done + commands+=("$command") + done +done QASM_EXPVAL_FILES=( "benchpress/qaoa_barabasi_albert_N10_3reps_basis_rz_rx_ry_cx.qasm" From 011b18539550e1f769d41376502d9e4c374d401f Mon Sep 17 00:00:00 2001 From: nate stemen Date: Thu, 16 Jan 2025 21:14:23 -0800 Subject: [PATCH 16/18] s/relative/absolute for errors --- benchmarks/average_absolute_error_over_time.png | Bin 0 -> 31478 bytes benchmarks/average_relative_error_over_time.png | Bin 32641 -> 0 bytes .../scripts/plot_expval_benchmarks_over_time.py | 15 +++++++-------- 3 files changed, 7 insertions(+), 8 deletions(-) create mode 100644 benchmarks/average_absolute_error_over_time.png delete mode 100644 benchmarks/average_relative_error_over_time.png diff --git a/benchmarks/average_absolute_error_over_time.png b/benchmarks/average_absolute_error_over_time.png new file mode 100644 index 0000000000000000000000000000000000000000..93b329b2337dc6f46cf2daf0e71b77b45821cfec GIT binary patch literal 31478 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 literal 0 HcmV?d00001 diff --git a/benchmarks/average_relative_error_over_time.png b/benchmarks/average_relative_error_over_time.png deleted file mode 100644 index e9fa2a676a0f1a2459887c4dc03d5aef28fcdc52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32641 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 H(82!zFs4uN diff --git a/benchmarks/scripts/plot_expval_benchmarks_over_time.py b/benchmarks/scripts/plot_expval_benchmarks_over_time.py index e53e618..c2d86f1 100644 --- a/benchmarks/scripts/plot_expval_benchmarks_over_time.py +++ b/benchmarks/scripts/plot_expval_benchmarks_over_time.py @@ -33,9 +33,9 @@ # Convert the 'date' column to datetime df_all['date'] = pd.to_datetime(df_all['date']) -# Step 6: Group by date and compiler, and calculate the average relative error +# Step 6: Group by date and compiler, and calculate the average absolute error summary = df_all.groupby(['date', 'compiler']).agg( - avg_relative_error=('relative_error', 'mean') + avg_absolute_error=('absoluate_error', 'mean') ).reset_index() # Step 7: Set up the figure @@ -46,28 +46,27 @@ colormap = plt.get_cmap("tab10", len(unique_compilers)) color_map = {compiler: colormap(i) for i, compiler in enumerate(unique_compilers)} -# Step 8: Plot average relative error over time +# Step 8: Plot average absolute error over time for compiler in unique_compilers: compiler_data = summary[summary['compiler'] == compiler] - # Plot average relative error ax.plot( compiler_data['date'], - compiler_data['avg_relative_error'], + compiler_data['avg_absolute_error'], label=compiler, color=color_map[compiler], marker='o' ) # Step 9: Customize plot -ax.set_title("Average Relative Error Over Time") +ax.set_title("Average Absolute Error Over Time") ax.set_xlabel("Date") -ax.set_ylabel("Average Relative Error") +ax.set_ylabel("Average Absolute Error") ax.grid(True) ax.legend(title="Compiler") # Adjust layout and save the figure plt.tight_layout() -filename = os.path.join(directory_of_this_file, "../average_relative_error_over_time.png") +filename = os.path.join(directory_of_this_file, "../average_absolute_error_over_time.png") print(f"\n Saving plot to {filename}") fig.savefig(filename) From e334d0c5d9f907e3607b978f22931e9c770047d6 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Thu, 16 Jan 2025 21:18:50 -0800 Subject: [PATCH 17/18] add new data and remove relative errors --- .../average_absolute_error_over_time.png | Bin 31478 -> 33615 bytes .../latest_absolute_errors_by_circuit.png | Bin 0 -> 40510 bytes benchmarks/results/expval_2025-01-16_21.csv | 26 ++++++++++++ .../scripts/plot_latest_expval_benchmarks.py | 2 +- ...ot_latest_expval_benchmarks_per_circuit.py | 39 +++++------------- 5 files changed, 38 insertions(+), 29 deletions(-) create mode 100644 benchmarks/latest_absolute_errors_by_circuit.png create mode 100644 benchmarks/results/expval_2025-01-16_21.csv diff --git a/benchmarks/average_absolute_error_over_time.png b/benchmarks/average_absolute_error_over_time.png index 93b329b2337dc6f46cf2daf0e71b77b45821cfec..e87bc1f4dbcd63d4293af586979f5ed0848e1bdd 100644 GIT binary patch literal 33615 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 literal 31478 zcmeFaXIPbIw=IksV`5EI6ciyU*buOxfD}uV04fMlM2d=t6hXRlOa!A+%#xy1k={{M zdWk3~2q;ygiF6QWaDW6bGwxnq)x z=C7L1!osph>Zc#&Sy;YGU}2f9^3B)yiAf9BD*QiTvqLIo3P$J6EYFx|vm8BRcFDlV z%s}_-4;I=crn*LkJNbqAcWnLPf|=PRQxO4yi~o87zmbWKz}jPTs_-V?Ui#^zDGSSz zGxWb%5fb6LEG*VqQa|oLaoO)ax^jHynsz@ zoOc1gm4s&TaQ}#H23Jo~PDW+thy|PTnQw3<_)6H6^g)C9Ez2dIuT+@dChVHMmHC~@ zs#z#*Zo=65pdvu96#=NS6^=~>g?WtV(|Wuvdty8o58Gl3%@f;?>$`Fx}%_@Ji0u^R7a{LXNg42yT|&x+qWOb?FJcU zj-1aJY4Nol@6Eeu<+*YZr>M#r5wlC;by*Hshh0~N?*HZM_7-0wizmvls*1RC5zB7B z^z`%_T9GU)D)Xn;C1_%7SijImP&MK7m9Lj@#t56XY~ttd_K91|%PZ5~-rm>Sn-bQq z;aZib6K&j>+fkhqAK)-)o zp8BXexp8r=X|b5kP93*?mBWXf^F1~PPfm=rUe+)%d1z~EJ5Z(|D_mVtQnGyI%5Z$z z%j)V=-+%wTb<15H4==BlKDBE(K|u$v>EZpN6vExoGcpDzhU;Y*8;( z8yr-;z2WG<^Oc%SccyAmOjqqTxRdY68}8`HV%}MC^x6_GubhV0ZEu3rM>)l9RhEbi z+&XaZU~^YjtcZEXgy5<)`KN>!?oe2twrsf@mWQQQ(O+?L3i%3 zd2UgZX5Dh)_1gzp+HB4;fhne~QBt=z%>U*axznfbVJC#|skhykCp27V6OWr*FCiiE z_`;h5^>{OhxFq#7ixiFHPEEE{8tH51k|#j?&S+~VWgh8;t=`DPp`yD^Jehp7pAGKQ(`VWO3N zbv8Ylv1{WqhJ0i$^GIc8X8H)~dvPqjmg}~LxBcvC9K>Dv6)_xId>ZL0IHvXXW3h>R z5dSdWqwNZLdZJK2#UTJc77$>|;C(teon<+{y#iZzTGZyMZl40#Y_M9b~#KhF` z#LMyC(MDMlN|rUo*ZM~$Mh8pjR~#lfHTB-ycT$Q|Yc~L0y`HQo4P#^D)JqLN@BFNiY8Gid+#NgARoz*xtm()`diIEJiE@(b>+$x{+>{5tB#>+ zBjtFFjDh#REZMSaSDBRoZbQUjGX3jCtGE$yJvS>HmKgu^i(%G;#i2uobO+j|qgb8& z*u}?&wW_Q47@B2zKdiOs$%xX(NY$`v_T(ldP@ie1K3e3vM>bT(Tj|IVmyl=&uFQcFnZCZh5(QbY&_|CRtxFs1 zK?v(83B8G35QZ|2#e#n>$ z=U~q%Bhv3V$arAZE}ye);d)-)g5(D0)h-(YEHYBBnY+=~DAU-=u(inFH6mhD zYooiwp%Fb{}P8QOscAPcG<EV(Pf=3Xu?3477JPS04ov7y6=hc5lC#c6&r*nlnwbFC@e28_P( zk%3ZK^@=So@9e(lQ_!DS%)4#dw!F@ogfj=%b8|lvvg!*-yokkd_Vx9B6E4f8b4pFk zZ|%#r+O%PbxJsA z!%X^WX*cwjG&K+K-41Y80t;h@zv(f9W zNdfHe;I6gqjNPIf=hsr`+iF{fqx1;dV(?>CY1Pn3Yas4lHR@zy*fBq$hVhiaic>sN z1>ORdchj(XQHbwuf+M4&sjo~&2Xt#~`wQPC8wV$fjalU6aoW6UPVqL1yU6C;QXCi` zr=FI-ZK1dM^JmZ62HH#c8(UhMUfxzszx)8FzssQWP4G2@U-7YziE4p6&D!Kz;}heL zNy*Au*8R-N!4Z?FQ>@os5^7a6mNhjYTj;yTGNrk&zFzZ}uNReEnKREXsf5)jYijb8 z#N_AT?zA59(2x)z%|smNEgLo*wi){PrXlCrl(FC5o^%BnZ~nsG+Y|N$EnQvyofo4@ zo>z*DDM?C6|MZibt!?_~U}yLa?R=qXtaLoEPlvTMRioV&$uoE5g zq9xq2e*M7(E4E%5I{EP2bq0gs7wG0&P8LOP;)w+EnZI~3mhrJ# zrsuA)N{8`Y$t%U*vam$IUvYqiC2sxQyLWx|TE-csG_UBY&#JHDT(c&&Qqw`bz>5zj z+rO!yA&67Vy6v{C_;G}OV1dV{f1j;=?p*R$Ds*SKMzyETGHdo)ylOT^Y%%E??nxxdAxd=JC{UUNC>=}xGO6KO%Rs}luHD|I>AUv5P>NRKYwbm-)-djx``EHagWWmkxAl^GO)q{+84|Ym zcxQ`J%;o3ChRF?IdmFthkO4aGPe0V%w`vMoj=}#mpLeukwATs&4L_~mq4YX^?*#xH z($e{?W9PVv7e8FJ>%u+c0=>F)t5w@hJBHlsxogs#FPu}2@!{q(Enbf4-sw4+O_*B{Q*0fas&dZ0T*#g;jnuH9*9wj zqf9}m5T6wV@LDu^^5n@V<@kUNM}0gxZM~;{5lV`dp^!*`>*BjdZ;*VV5!kG(t@V&M zMw@QS#*K0$K77b6wM6{$X*aPO54C$nJiI?1?K%Z0-r0-ox?b}1pzMJI2bObj#XrBf zQvc2UL#mH1{C2*`FH+oYv?+D%=W-Jvj+E{}4?D$LiI?`Z0oEOxTRD$;r-^Re>cXq8 zdoEY;r;#It9yX_Ubs(N^tL1QJ=PjTx_TV5Ui>8D@Aj@)H5zWsUbf&pwP zy?2jv33>YNzPOx|GtR2NMR?Bx`v#|#Y5@w5^%SuNQb1(I#)l;B3j-xI#l^+xh|4%` zL)7)Q_vBRu4EGx9sqb0Jt!C}yVP+iM2fV6%{(MWP^t}RXe@(!yH?M;ZmOr_8%3BNT zJzAMH87eD2@*|S|eVH-f(uVX7X@*5l9iJ4x?@b#kt4RIIxQ=&^qaQweIPg}>y&Z6- z^u=%M6=PKe730)Srdf35KM3>RYbm1nOS%WY`a7%W%Fu`L8u?zz{txE}%gPqd&M-W* zc`Uu(`XUlRtI1$_c^k58MVxwcvBZ?x^pk6xx0vHK{uHx#jY#rWN5pJ~%1|Qha+tJ5 zSluElT-E#}{b}Zs*a+@`Wh~j^Z|4Bubv{FOe}uDY-d=KOxW-i0Ef6ql3lGns1uOYI z%zB?B+jOT$*4y^GicfylQcu40d-KqKsnnj#F|*H~&e(nWeO^kD<G@pl2XS-AD0Pz(Z=(eJE?6>iyUKmM7u^0wVz`Oad|+l_+s zhGkeyoj{q4{-V7_nya0I0FfmF0s{2vGc!VNj_IlA7Zw&;J(eE2cpK|ffph!FqDxgL z3sJWNdrJA-xpQ%2*R-QmA4geq*R-41V9Hm$zU{{Ly{JD;e^YcKYt#nkzrkwapxfr?NkXJXh}}1ACbnCv0$Ee??&Q^ zIsm^)KRmx#{z$i!H?9*9<8_GCZL{i&N$tQQmB1mpwDXrMMk^f!#J3pIFA2F$tN!x# z#!lq1FE}~9q`idqX0AI|d~<;}uZV~$qU8ycGK0hQ4*HF`uA>dtxCZcjYf1nr+X%o~ zVMB*k6|txGhymSD@?5pYaH|xm+&6ete5T#l7QD&L6?`S&3&L9i9qLjf-cs33xh|>B zI+`Nr1Y)N3SXWXxU`T7{XpL!cd#S8MIg&se;pQWEcMxvIp^L{V7ZmdKOj&*gxX>*L zk)om(V9e~}+wDhvcOOL{H#QXKS5H40Yti-2XOB^UA!>fYya;fLC^iJK2DJdM6a>Fs z%n<=>xJJzS1P)-iro%)i-b4L?SIKkU;`7A;{=s6qcAY?48qaHOZGK#-QA$_j#dk_C z+i@0^{`7F>&YepbdM;-Y;Qi=_n*wHeYb+yB*;{{ZxTct9agk@kh7R0tSzU(BAh-h* zJ4(U<)d*^?s|2MHUJ(EHxs5JwvAdwi(+hyR`}mQ1d(cC1@|AJwi@3PB8b4MgS`D>V z#s?C_@)I(C3dHpyKYz!%b?X*NJEdaaJ{=zXBCQ>+-8SzA)BF??Z}tGSaIj9tgJT~ zHkMkr3TJMu@z1^dcJ7>FdJEZiJVQp>CMqW8nvk$97+^COMN(kvh|$}G-*26B;Skfl@uMXpz`e&yXe+*PfEEg?pjvZ1k2YnM@7&1Y0O>Z2b4Hg27JL;;@nka-_kyD#4+Yeb$F_Pjog-6L2dn#!+>S5RH z?0v!5Ik_nP)JM-{8M$#uOuBbw*meWZtpbqQL2r%=V8_Oz!lP9*5CMs^bp%jqOQraT z6&Jr|X3ed0w)iXM$LDjlxu9-t9o0xStHJ5pTis{fh3ea&#yD?{@H^A7niWmc0Kk;( zFn^j8Xfd_*y}i8zc(7Sx=W$-Xm+Xz=h-JaqC5SAS3jGkKB&%__n_F619!`CSzq+(} zh$zF#S69DX_6W>Gtw{l2-=|Nn?;pAe-frEZRl7D7i$xQCNU$5PD+!em#1^_(pQ)}> zfKJND2b{sj=jYIf8GNmww+Xs!s z^lBDI9yaG750B-F5pw$t4V4|lSZ8@%$IG7X*~BC>n;MWu2@1uHT79KLoXst>2W%*H zpQroO06$)M$>8ZIi@c3xzG)-8>1C0vLds=qpmiJw!IPBu$@RYP2=t-=(-c`ikxOhUk{r0CS;pS@DTM)d!7Z0l*g? z0RjA6T!Eb;*$i$?O--p1{L=EJOV5sWU9B9Brrm>0a`&THJU;1$70(c3!g}TN04=XY z2|!WzU%dDUEWjp2bmX0a#2(@&f+d%L8_Nen+}HF{c=Q}s+PKb(TWgENK|WUAT6^%s z6N8f@V`I^h?wlgl0~e0_aZZ28rn5@v7ZbR7^DC9gW)hVomaKY(qJ4 z2mKoP1)*VKTefVGMxm^%qM{OKR}rrnkEqaEjE%`7MWkI~G3ts)qs)=Rfew=?;Cdq0 zOS-k8gxWpz6>}TiGV)rO0K^-DV;SWzHHoV4N!U@}4WRl8?`&URIf*b>svn;bh9nCf zb8n?MP9Hw*PJb(?Qbq7mgyp14+DpR)?MBUx`s|XT%;mF7_dbHB9)5ci!1BgNHRi{~ zRp4{LzX1;mNU1(J>jdBvnq~fA+t!t*L&L-MbDS4-ybk&$5s2j|*yYzCppW`$A%0o6 z1zq#=PP+IuVLu8P{(eL)1&SgUnF_%rJEs+gX>OXYsl3sg>GTQY1kv({v@$mM4}gzuK8L2=peNu?87NJiQ)kcK2Mw{DgTqg& z?%A_vYI#yJG72cs`i;Shh1~S@WPR?eeg1`pw_@cy)8j^TuKuSpqJ}HovG5>ZZhn6L zmQO;2GKtB2|NeBwXh$@qSsaE(=Uy&d#J=Ol>Leq9GLc0&mnMhxD%-I{OP8*b;%_~9 z$Ml%2EQo65D*?V@NoUydU%YtH%Xihu&gc|>cIt{S*}ynF33c$eo63ZMLP`N$O&$rH zeE6)d-t1P!JhqQltgDxqCvoW+%9hn?L?nqFx3meWYx(r)lN_ESNa)~!fq~iXJ1>7a zEwysWUo+~&W}Pv@4WQLFAv#=Jyru;BDLT-8R0_2s!AcFgK}DV9UH0RbK?Pf`61|*2 zs0c+Tm<5Gp8;-n2DIQEB2=1N!cDkzJ0PR(Qbq9sKE>g60>(^b%jR5{- zOC-kcfrw3hbj`_WGl)|uDJg#CGwQl^->*NsY4`4m5g}%nq=-6u&YT4q758ub_FE9{ zC`v2O4OH&d?&f>H{{1eXvyR}^)YBt?=rY^2m*67w1?!P!Z&psufX2%p+Yx@sz$qaZ z=z~Qk_LS3M+!%-bCn7z#NkX9QgKRti%&re!i;({Sn1uG+)kbAW_4d&y@;iY*E7n-n z1hutYXyu^Iz#E@_pXveR)(SjRq9ch*27SQ@Ax3@Mw%1l`kM7&&h`V}hR4-2CrgeL$ z_W<6h<8yB#=?)r~8|JohHsaY^xB6S|GHLoL1FU6H|CR^@@q)@qWfX=ldsB7lA1ldu zEl9wrDTB_!cj^g|vEF9AOCM<$c7Q9>BVh`b%-w1fPojD~07pcOO0^=PYAp(sP+*oDIY~_ILGD;+TOF34ctp9pz0$~hKGLq@h67( zXxsYoNCnB&yA9+L&le&-d3bt;B7SZ8;fH+y$K`xUHTMxt+Q9&n;>UD*1bI|bOhRS8 zHtxw7)_Z+#KO@9j)BYs!$CM7R`zuqzKANVF_kygC0s`4bkdK=fBXDv_RI~w67qV|7 zijH5|o|Sk-$boS^jZZV<`Bt8mk~c7j86E11Mm&x}t>hzW^{^;FEE-ai3}bYlJs6uo zuO``;!LM=O%dTG6+B$VHmw3$Q&zC8ss6N&!GES`D1`O(X?OJE#JYaD^^BbYhjao3NZgydNN>wE`WQSSqxnMW$>+Fa-4nJsiAx-~;xEG5n9stJY=5pt z)|_Xr#Yedxf4sUgoe@IfAOsou2^Ni83S2Bu$fcog7cKHcNh`B$#i~_wI#OI5M&=6Q zlg#Wp-%C_I(!C7|gS5Y7KLsXV5RZ$MV)%e|jqknT%QGhi^xO326V&qn4xrM<4op^& zYwZ$F(Kh)eB(Vrol0|vTHXbWOM4=QEtMcG!)g%yT8>y(s7AF3~5DRZ%QK^)B^k^5z z$>kk&vcOjQd{!@)uCYIxY*wY2D!?IT{a~W-QZ{qnmcX3}kD5=RF?l{zy;{P3sqk~-75q4bR z1?X(kA98Qw=FL*jDoYSLh~sZnR6&MNmX~Kheo=1|9PcX-=qL?$FKCnzc%Q<^bzQ9w zZj#?JOucx%#rjRa5nDG7CN1JmTGVoyE%nx&h_d?KYH5dNv0Pf?yF>fNj-5Np)2&R2 z#+jiR2P#e(MdF}R{-x@ib}SSRXe^x+nI2!PuJAb3FFrMH3Se+B&9X-c^f!uI@1BX@ z1MP-R#-2<(eDK<0MbMJS*TL~wlkYqxp5L59%J05!jT=52D~!!zIc<6T_;D(Qi4dI_ ztDjOrRt7qgq;LU3)Dx;Ef?6yfOf-%MUCjOa_fgh}DztDRTaZ3SVL#Yiyd*r(-lvB* ztpijpxF@~g?%Grc)a4P!*Hih3gt$%nVx^C^5ux?$^4?9Fb!GOr7Vr&~)A^~+YGY+1 zo@EI>(7&}GAS@O-SlS~yRHuxlhppw!)jU%2Q0|eU8ESbMwtGWSI5)rD9SQl)N?en% zm_z7R>-OjdA}bu1K8@F1W_8s`YO!SZ8ji*I?q$60ZT+-u_`3t^sIu6!mZQ6SzMcKE zDY4|O&qlNIf{NWw&#?rktR>!(Wz+uId(Gva@7Y+eepgv&?fP9OSnK^_vXA-S(A8#P zd9R0xpu0A03u_3~yDQQBO|E6^!AsGw@{0*DL#WRz=<+pw&N*iB}YUj?gt0qkut&tIqzs15O z7%zXg+tBUoNg0HOrAwEdh*L{Bdp9fji}6COWi0mFRsDq)JbvOm1`C$-9apP-ml|vM zSy0m*k>csor+uP^Y|hw|%?-zQ1anT;SNNRdXTztK4YYl9#vsxd(&$f6Ly+84;15IIWVC@5#9S6+}-*qf<{ zUg3}pR#y4MJ2BV`nDBI*D`%S-|N5Ppb~_UnKIg01us+F{TbSEbBUwE*+Owdt>uP2| zw~0`nLv_Qi->)C|eI8dEV$AEKdul@fyt`^rb{0>P7)eS#fT$t@U>a`*iUUYzJUe)A}M!7YzFwi<(n1zsvob!llewR&cK z<^in;6dzV+)w%|HnKI)9=vbm^L@vGG7gx-_*CIy5;^QVM5z`hI0)%9sK;UPDV57D> zuQq&9Ij)q;cXj&Vv8+hY%3B;78Y-LSQen5ad^>&FkNgYvvreYuH zI86VVFvsE%E32l?)|QTDR?ep2bcH&)kg)t@sQ-Q3t1 z4DwH@ShU}T5D28GQrDC3loCA%(ArHc789CTKh6|{m#$ZL zIO})(;wsqU+a)bzS69WkqA3_3XMU>o(>h-p$QwilAoG|tz4+bdenl@d6 z{=%k*0T2`cq$UAGJ3%BJdQzwVr9^$dBdL6ma^AZ$e?2r|KgFe|dLTm)!pivcbb+uN zd+t;gXAIto-#rm&yc4jc0*U&g0SMuq8|NQXem7%!+Q(m0%b|Djv4OF`oU_XiMCeO} zLwUyQ;S=-)4FYKIZDWR zOE^8a?Is2*0i+(lq_UiqHFUdHZW{~_j1W}xQYCO5@LbDju(jngp3AhGZF;jX=azA| z+T`f@^BrvkQ@<@-pLB)$n%RIve8hdf$4jMBg(UJqdwp=BLsqF8*ZoQ zL1{@zS(>F0Jq##*iDZsIU4PPUbl}Y?ql{3f`X_OeOYiOfg|n`gy;Jqb!Rr9-o{_Wx?HsFO=)c>g`K|_Wv^VK=avH4-$5%ZQ;c*lCzOG zH0?)15lTEz=t0Zbs9B5vpGb7#WBtkwpe6GsfjIW?JH4s3toLse24Ni*o3U-iWVr8o z%O#;cyVaVJ6|v3VuLxTp>E4pL#4Bg5`)fH*y;>1Xo71e%kQF-mKBI0p4&do;BTK;@ zP}2kTKDmJEWe)5B=SvEjNH-u)6u?*%#Klnr11cb-e{10vpw zTNjtaU+n7QQU>LOJ_M1oqFHIb6j=a?(BoH6g`e>dOjo|U^vX7o5JqSUPkQ~HJ$pzk z#HE&lga623i5gF@HuW*|ZN*fx_H}!wY7*u#k5e|!KcOD8Nob^P5O5&{r#LTUzfTsH zkyuB@30NWljiqsN$bMB|iqbe@m7rdPZfV#S%}iT2M;Qj3OK~{K5zv5D6VJPzJ$rTl z3I%Nvy^5H-*j_=jr4c@;J9=XvKiUAiCDml`boq1|12`Znhz-5f5_aW2!0lUGikAC}XH4toVXnh5vwWbh}k2v{k9%g8A_9-~hY2hmMCUj@#ITjAm1 z{l@3ch2T*bzLdK;^U3dbv_1)tE7>#VVI@*q)xy~n`aVvv`BakHgV<=qf-qM_R6?b> zTlC0vNne+)o1T(wYx=l`P@s0evC5ZKd(8|xudnkRgZe`?(D=jzh?F?shT3MOEE%H( zyA~b{mUJi6XcJt7^I5lCc$;v>%59>4YEt?4-+w29fxGh5H`Ty^WSyYGoDziFhm4Ys zCTdrh7GmjLIoqI(Hpd%z1t}~TR)0_&=`_})$S0(kv`j>_Hg3y8>(Tb`$0p6vlt75p z=r5LtcU`@Q3~j=rMJTOcs&%G{1v<$lI1-_9=9|}iyKKXSr&qsKg{_1{xW>;=-^;*# z5!r(f`)b%ap7md_ke&Uc$PPVM-9~MmaNaWm?`#KSw>|OX(C8lNuz@4*XrQ<{VxJPi zK93Zt@RCJ)YHsOIL4Mt`b?Xr@sPqtkjy?2+20tbicMzPw4pM~kL@keunKiYwtS}BF zBqZ3z4y%5c0r)Hn-X<9ZLN{Ywv!=^{7q25FMSqI?XmE`wKujWmkj$lU-(G6(N95@I zWr_G}1dhIi@p1G1Si@`KzFS-_dd6q!j>&d5y}CH{Hr`-Lq%Ur%M|{dnY19iSsX}2e z-Vf(axt6RwpA}oEg zM4>~Qk|`uUz3&Fl`{m~&8HoHa@AM36$b7jQ1XRPtb1h?|ZYNqcRc%bxKasinQkLpJ zflIHkK}oVsqpra^@)4yTAa)9NRG2j%%4EUQ(GL4jAh`{#E?*YPvif8K4h4HEuq;|x z04#PiOr7Tg&tCag9rZNHP}tKh!Hbbu75=KUy~qN0JlE2dVN`p6frZB3=YI=>H=e(_rzaj>LKWCJ9wc^wEHj-P&Au|HNE4nEb#Q^jrZF;O((*V4 zX4t!}jWF3Ja~Q!mikyAop7~0_FOg17sD`62a+O+5f#cg}YnU--Mc$V(V1>mFM8!bJ-=LH*A=tAB&QQF54(iyNg?>rrfXI*Hph6E2wSQ)U92`(2mdc0cC=a zNJR#yRe(AE;!Knl3Q&E?tq(&tyaKK7df+j)hP4Bt(n&by;1abSMb`1l8yoE02o%|8 z3d_M=J5mM#az1444G0O-Pl}ct7Z*#NkRANBJ{*7SOly>Sp0VrH!*h;;;60w_=5FEV zKL#r11pIKzmn{nhr`G&VLQqfpWCVs5b|TeGmz;k%WQQJB=od1QzB>jTh~VPXrML&Mp3o^MNO4Jde%g|d{gFn6=H8iTY1u&@^Zb&H-LR5i7=!n&t3-P;1CU&8s! zCP7|aROE{e3Vamb%B;vUl3NoD`Teu1zn!S5Y1-ECBnN~5wKzyiNxeZoM zHzNd$D5z}>^2pcO_8-Mry8w7jB*A@Zm;}P7MS$opi=kuvW!>qj|72#wMd|Wha4k>PTfqa36TN|62&PmCm zKL8?+iQO^df`3;klGi)$6&3qVFaND`$kj&+Yd@P#=2qJ%sE?$y+RyPj!&WqPenKea=@i0Z)zfz8EfA3Uvjp`cROGoDosSc+NFOw2$F1$S2o1_UB890z z4gFZ#tKr_bvGV}uETtz9!KGHtxd*9XufVO}LJ+~g zU9@9wD}tF@zG6iS?CUU{$AQw@S*cYi4I+aYA4sjD+$8Mf0Mq5**2`eY;Lvho+kOBIBt>~IU%o_LB!|oi z@?7Pa&WUZ1_f%nUC*}n{Gbr~r*dVEQ7)q4QXb?=Ty^u;4q~f2DC*b`#?s(=x&r$RK z!5U3QQQPma^ClnEe@y*N@B5Ea?i04P99DG)F0eVv%ge*i_rtZEwM&*PK`KZ)Hy>JB z-_Vc}jI!`7c1gSQ=uR!5td%cT6^WMi{sJKy?By95r#(+n~E=$>uY6?2}dq#^D2 z$AEXzM~;}q2}4X98}9MWX^=xmBN0otr!J%D)Hec(u=Y=UZgfX2ZxB>*g3WL$sb1NT zsfY~oT}2m#9*jHCZdwcq^7Bg|@0Q_zv)!vf_rQr&5PA_TF!e$N6px_Q#jLMM3PjDy z%QGtR#3f6i0h7TS41Q-t?|l1l`N11bi{nj9p~p-^Bk}-(i;6I+&n)6|efQ*IG%`~J zh+%rp!vwA;;|+Wa6tb#Vll$7_es`MICA9GV>@O(+xH+P*fwGE)E@aWb#cmz z@L)Q!%-5Ssj=W!Y*Yeq~-|NA|gG%iF-tOdsNX^Rlb^km_mGS2beIl_P$Ou3sdTY|c zy338OgjT7t#?3}UBp3zYYi>A`;@dO-8AIm{99u-T1s`^mhir~u5rNCCOL;H`6yfh( zDpdk|FuJPNw>Bc+=%FctJ{@GtS}95cnd5yjt~h4MYl@23b$IW`-hlxRZumD=^hrEY>e8&WID)F92`##o{w)U)=eFxi#t6<^BI|5}?Rt>gd3uFe1VcEEW5 z&5qaqeQT%G#=?s&Mc51R(jIC?QEoENPo`<}Pf;%mQr zsRHJnmv(&q^^8|-)0VK0SIjq~x@U8)%9+`;VMi7uO#1*(9-%}d8$58&AfS-1pyx(J-qv}^X^*|%aNO}EbvKy_b@iJ$E9^|d3{GA?8tHOG{k?SI|V;)uChdwBvS?zJ!qG->T6OPqZ|dl{5@2T zyZ{_jND`&ppA7CDO8wKEoMsTg@X%i<4iKBGD#5&lSI7U@0@B|6vCyW-=JgKEW5lHr z;dbE_>mquMg49!lm5B-y^aIWnS;D-W=cfHGFAu_DZ6e?s$ zCZ9AgtIu|=!*LV7g8I{J1p37oNlBJ*c7G~Wh>`^Ux{rhui82`;3_Ie>GT@R;?JwF( zIL2<^jiiW4)32GM9lQ#~Gao;q!`$P0_?poFREfP>7Ibi)4m2QN5wo^?AO=@luAw## zP?@Q)@UbpkdLK*F4kU4jvmUM1@I$D#ESf)G-ptG_sD;T??Q6L6@H#r}%E=`~)+*f9 z@kselHMb?JcW58w+Y-f_ZY9 ztpsMYh_X3T{N`VW(xThJ996Qh;w+`(FZ1)|sW!>yjsJ;(jT3?bhB{B64j5g@<=A8B zhxX;$!FHf(`}+HN%dBs{137!s=G$cFfB38j8$CU}pa9J_mV#{yVFWpVe1-$e_wmyI zjDlNI_S@KBy>=}ctP}r5oGp{?dQY(-$o?P@yLT920ZiAJ0v>_4HK!X^0z(D%E+jiU zd-|SXtOWq?c>5suKQ-2l#XbHRF@Rb{A(VvSY_7BrvO-4-A{a4{sZclDKa?ww8wvPh zfv6#jqr|g&KS2^vZ`n3`&5Zcv)ZNcs>B4M;6eRF{#RVQ67#bUm1 z396$|Qvq0~OF0%Gsw)lDgPMlq7?^INfa&z%PbG9ZI@}{5 zMU*O)x-jZXr6%`+Tdela61V-F0JusN5B9qhBfz$g>?zWOQK=`7s!+nHbq-T@C=ty$ z&=#s;KcbC3C3T#`H`KEebYQN|Et**Y3xR&IhuE}h5S5xLZA17#7Kmvea+r^QHYNkd z_3PL5-X;WPPEFdhe%(n*op1Hj)a>W~;Ql$lKqJadJDBQLq2rRW1s0Edx7P2k%=0U@ zLHE7c(8rU+vcla*q6InW3i9&8U$-)$o#W5jd9vx|fvU)ih-cOOc0niIRmXO?Abnc- zeyIvN@dUacyK}F*mc`#Vi1y~KI?`^ayFEh^EaN9hq0{-$sHs%epy!hRNB^rgr zd1}(7ucr4y#p-?Nv;3 zlQ^|JxFd0+Kb{F=zRIzXbxU@tZR5bWK?u`A&Z6deVD5}^zVG-K&DJrLb@bFXD+M%S zAf8Im2T}onrzg!QnEdkU{mVtNX?GMf0>Gzb3c488FC&vVHqNa=cK7_;1QTy)oDt`ZsM(BX*&t`~WEc~x~7WI>M7^G9YlK3|+i z(kL)|!Y?=jq6x~;U4KruUNDoO=il@Z>d{k>FZcZUFO|?)zY7r-?)sk?&O|sS75GOcG!`T6;JUL_|#KRP*Xgp z2;xNr4Qpt!#x||X%-6lWgPkPFWfuZhTof`N!Hz^RW_Q10pt#+uJ2N|M_c`PijM%7z z8Qb(xct}VD4BdaZces%kUt2FZM(sTK;GJLg&QaEm6;F|7UcxZha47=Tk-kr#r*cSk z1%sE`^`v@!#!oX>qZ~9l1~w!a1{JT%maTViaA@5QkrGDtC?E|d)gPEI{1_`Yi!5T? zn|JJx#}n}Yd${@L%r1I(w~y~CK1NWBjrr;y<|)kHx@S+4+8*O#ue*13b9XU+p0HM7 zb__Xlzfu9+LOqZW{kFQY@62`ivQZSmzEY|3P0{RtL~tCo5i*M{V%wJOqRV`X(+3R? z315cG@e!cWeZQG2;8FW+t_q$`DJkb*dsdWx!Bw+>tF{786mY75E`#%i0D+jzlRrJT zZxc`xFY;z7fK8qJ@DL#ZZ7%)^n$3=Z3F7Ydh0II1b@0lZ82EEr(~JNr7l?d8t#R42 zl#p_Ou+FjNvW~$ogC$>KM)Q2|^;QkPh3Dy;GIOARP@cOu0V&O(MTGeZN42{TucvVn z4To;%3N#CIOCf{Mc!eP7A3lOJ!*C2<6uRt36-xtM^bu&IG_x|vHivznh_0^insFE_%$zfKB9)NNW9n2Yq*Z?ny5=o`m?B+-4W>@YQvv_Uo?hDXNh z&h{_R{*?zyC&>7f>E4&(Iu8|FV5iLzJTE2?Z6QiwO}rlQM7tk9zv5XmFW-ob$eITDPe8bWg3>ZJ6;$TGX*Y5;w0@x4gUk%Z|wR zV3A=!IRJwihL4qEpkuBKB3PpHyy<0gJc`n!0Z5em-e}~bk0gih{P`s}1u`RCTo(T6 z0hr9Kpxz6dQ&KjICgQ2R7NCl{Cy7aBFJ(T8Z0952CWwzTEi3fjs|?S2T4F4Y3DK&E zw=>;8EOMvAY7VqPw3)tZ|K+?Y)KC=FJYgkJGm=-+&)jr(<4G8teLsEQy>Kn*f zhTeJP$EH3?!3(eVG0^_G0p=0%#yOo@%e*FoSR6t*xmyK|=)+GIb^G<#O>M84f90rv z0|>vj&mRX6m7}LGh<#%FP%Q98eThPI=4Q_36+qi*C0Hiv3&xsJd9}mlOEvc^!Z;j< zgK*YU|2Q^T3Fa{jyxbT_qeE`zH2jf7P6QdQ^^U<5HkFi8su3-|JOP=D^Pg3 zf0}t$C#4A91gZcj5n<0Nz=3vBf95Fr%{QN00oOk@w~_;h9M&jUv@24X_s1gTv@n6% z;o*_N(TI{0|yV5gL|b3JY-#B zpJB-ykFttnr=CDbLNFh-@_IWMmxRMLCOj(I_hS9|z?twG_cNU4e^+?k5jB!La`dPoRBmc(fi^Ch7mItvVe*rJ zn>7E84$MgWb^vLo-&rxC#rqD{mz*k2g1RN#i#UYj5VgIzshGs9B>(fT?gU{{3%}$P zajT#+86KUz1{i>%yfB&jWpQy2*BEm_-oM-4H9rP0Z(=xWs+=6AaC*ovb{p12z=EM! zE`+WYs+&UDxAzj(lo@q*n!)erfph?uSa$F3mGHQ@W85#lSQ=VyO(^Z?M3`VBV z*cLs^=u|r5Hbg``(15ZZ*Yql8^ArDy&IIy%B37q&wE7|x0)h_WR5f3SS9x$B^?JNs z42rpzwYBQNN9MW`)&midHVQ=WQtJ+SpZh;9gFisZ>T8wthh5~R?Lz1=qkxP6F`Knf z6_M~Yay0qm;qh8AY$EsUA4=gUn;~`mx!Tf>7@y_ec>seHVlhfavs~p5=_G6#y`kX< zcxVTD7s_0kr5V%)hN#$%b}HonJ3u=g>XuC593C11Cbo350A*5;)%({zoWHh`mSrTg z>f~>L3*WpHxyyferwGSl+DRD86oVcNj&^An7qN zFQ)-Xh&vsqedwunr*`s#iH?R+!3d!XhbmA4HpT3H_AE>plY=Lc>^2w`HSsikCdqI5 z3Y*>UbyCnA^?MD9#q!&IrP z@xGh=^9do-e6TM~JaAYJw!JwB{BU-y2AT8mwcHDQA2N{_zdFF1k}kqIX`&b!K!Yik zUw(yFkQS?g(-xaN`H+pL9<7{!Q!M_nD4HGNm`RVC3D)=80Kl}%MA$$wl6n4gy?Ns1BH2>oz|xn|7QBzzCJO~yFb(3F8)fNJ@qz<+o^=0^itJR}-A zY&2Z~#0a~>Om^5nm5j26)gkH@MJOWO&0o|?p1MSUjY)Na~syM{I-G9QFzRB*;&t%00Jz!>9hq(yU*8|2v9;K%_+S7dg4Eyx+ z+}04w!Tl1tJ1U^txHqCpXhgzaP$}$lCfzm!2ynoJ-N7P0{nOunyh0P>0NQECV2b_RA}_8CZ1bjI<*; zGCCu}14^hl673oAQ>Ts3{L)-)1S;}8aigFe z;p02XFvD1_jJ|x{KcM@Lu2bKHAN36b%f1i7ThS0S19Ip7=@mTLsNuXpm);H*gSQ$~ z)?faTI^~g3Odp}AP8$B8zx?GY)Lj9WKYUAB5Z-PgrvXHR!vn0P-Ni>E{=nFxuh^R4 z)S>pgcS%O^Wo0MGT~Jq7XWbDQJ^+2*_s<)upy5)R(@Krkm`f6yVKdwT2RNz6aAg*< zaWa=`_jyngWK={t4}1@^I>nt*{mUj@uS=jqVIpy`A($^|CkDCBag8q>N{WpJu?>VJXtw>B%E z2F}F@ys=okp&1aLE?Py<)f&ovkQptqTMz=UcL#~x1;h)PDe@WIcJ^(9ci? z9qmsKa_MPxx^$myXMTnbBwz>s z-u8L}<)`iaMNdBc!1dfbHWrOZE2#;WWxn&NZxB?ZZ}lW?XnRw&TKy@nl(eXwhI>(6 z1b(!z+yz)mo6s~Xi7xVak_OSl_;T+G{{{-RUr zeFUo;almOlnc6@HfVUO`TO-9F^&K2}1ZbtAN$Sx6kf4!cH25L!@}Jd2ZoCYJ#9%pn zzAaUq4?9Lr^Z%XStopWphsImeM{153==v=vQX1YGN&~3&T6S;!l>8r-qh!2C@dIZ- z(RL$b;5aR})q9SiYv<*gOt>epW~`TEE1&**5~EQHtS&Y1nHFhQ!YPOkCNDPzTkZto zd~e@Bxdqzs!4K-4Y|i&IM+*&l!l+aRknrNB0b+kUwBVIF^-a^4+G-52 zAp#6zaP;9ZgQ9Z+lsZk+-n+*_0y0re&E(W`ElD>Hu%xbj?(pbEP>F#Nr!;_uyPb45 zET=hY7GkZ5HnksVUWxDPM$)MkB1<;dg#B@`Q=@OVFsqM^bHOy>+ig z{tEcPbGF3^)uA?hwxv|i2r}h?*D&R_kV*6?2mtyA<@8*#thO_EHDs=pKvCr2iPUSAOZS) z6KDv82wgHEe(H%L~Rw%!JVjvSmJ zrd^GA?R2WeRG-cNau)P%>Yl5{{|}7@5f84RyOEr@H1mpv7V4w3wB-WkXaF8i#~=w| z$W+bm_MmVi*@Nupj1c4$WYFb$v4?nU)Rok^ULBgA?6yQO2{v?^(l$K`$L66z?E)J& zjOM|d=O9!Qm};8(=$f;$9;)`aoR)y% zD}y6M7i6#SJMXP089Hs+tZ3Te>*jgC>i$1@PoTLuS!XuSj=6scLrlbapDiORHJoOB zANOFceQSItMvcIiP7NB+sK~`^I=}@32c$rM_uIE`Q&T21i<3hYIsfepYKbwHWuX%g z1g4Vr+h|Zt1tKdFcT@BP%R$u?O*TTy@&-z`#W&sDytqOC?x|z}5wy2bED2^GzNy?a z&WdmP<^FEeSHMTP;imzC&AW|<`}*YZFE)}&#f4X}(dZ+)-f(xfoZN*r zge9V%96_|2E<#T<7*7U9?rPkdkrU)Dd!@~mVPFx;(Q-je3y}LNp{AL`!a^I9K{Hus z_C45v+h)d%7zCNL*TD{>WichI0JF1++=CW`ex1%8lJJ7js5zZ6WMC4UsG!|~nF}Myx#hTpDwkZv_IK}J^NM@*2yIV`S2Z#p=?BUoF-~=$SeD=(A zowYkHTfbtG^al68}(`L!_hY zb@5(zjq2&QSvvDJ0|q{k6Zn;wpP41#H+;<(^~lE={R4A=4Q?dr^{#_ETx#~RIUgup zSgW>k;2l3)4)<;`E5dJQ&xbW%P-hq6Tby?c5Hl9osLX6u zg6w*Ynw4q__J1Gz_Ypd>o9S@@g?`Joy1eJYb5@lNCZ?vPXe5@aDR|)xc*pfjmXmogb(YD0j9r}LNy}!MN#Ffb$|X^af8) z89sfV%~lVaphhD;gT*%lRAW>oqWTmP;Wo!Y7xh*^@naqh*b zDRINr{lWrw^hd^QFjkUAz>sE&avkD!8B7F|#;*S#V|EG$g!W-HaqXS^_1740w`ud{ z$kWVA5eH-m2!s)3D*e0oBQGstJL&*<)bzn_`t!yWKXC|Hy~zUDC>OPzEBt<|Ah8_= z0B}XaK06qB;~^{9*j*q@X<=AHE}A^gW9;qI3z(SK|Ct6O!*9=yp)%W$$8>Bl0>T+? zfL_cR-aBScll^7R{FR$v>Zv|wB= zYa>deB5_n@J20y0+_T)=Rd`iPh7ix|L5&`8mFt1enp@$Q*bS@o*>l?3cgOWSIVz*N ztH{OhSB|LI?$v zMIaQB5^M#mhu{K<$`U~#NLVak*kZ&$fO+27{+NHAKf~b%OLFpk_q+GL?|q-;EzVFz zmNK$bXRA_cYQmMRjTaIVZGqkdkWunJAc|$6wXPC!kPO9uZvyKGLl)}1VpNY4VA!cZ z@*r^{J^xyiIasjWLmL&qvwc6kyIKOI-tv>cOB)#u$IS2vtOBFYZ}0uTe%;wUP{eXpER_%>3#6zvuEN1}Vm zwfuZjVle{V;nr2XyiuU+1iGn!rL+wa=ION!U7@Fgn9}tOLnq~|J)S3}b8Litf6C;w z#&xQhoO@lNKJG4i#!P znD5xYUMIUKy?#j8QqxB2u6r+oP2kaSzdR{(#-ZPMlYxEI#4U3&FHgRP*P{ePnQ!nL zkR$TI+P#Lf+b4uSxc0aT=_qv!1MCtch$00ZcQc0fdxuoII5LoZ zZA4-mKlbJj$d}C!p=XOkB3{Y2QcXq3yA?QJJv@rf^E`D*gwZcR8QV8xjqYxJI8Obu zJUmbOih{F=6AhCFA`sk$3yvCut6wlvBN8tO1VX%B)bQ^<9rt3yj`099mF@ru99kyb zm+NnSS~1CZj`h+4UOyJJozy98TJ?ggGjwjKphe@zQ-aFBTQVy2y}iAc71b?|A3t^& zccN(szC=ElOP2LzrpH8oAvX}>V8O}A5xy)D!sT2oUdxjvXjkd01x``7QPDba?;}Q! zoh5UDf5$kS_dqq-LH0ln4rAj79I{k7UPb{D_S69W4W%vB2`Qh%Az}i69TDMmVp`;p zp=Rf$kxy3YtNTJvt1*i30yqz)s0B(GM5`t$$S2&vwFK;9fE!NoVZXRy-MV$M+r!We z&t=apJlxC$+5iwYmFo8LrXTJc9p%`%63|43Y^ZDY#45{FS^dnf{nu`eF?<4iYdy{% z?1JtU1Cr5_UzF zj?*8JSC81$xXHTZfywAEwi*PFB6t%?Y^NQ<5mk+?(fB3`f*>+@U`|WPM49ByDJeb4 zBRKnd0v)$x1wyorR9*%Tr`Isd@3Y?tMWneaB1#kZbmVBI9_lzim@shla$i_j01ofs z!`1GE|B#mVXu;TCqX9=aK9S8CUiRaFs z#|b!x46!%k@mRX4SH5}kB&dS!fc!8iJT9iyrV3kzhhzMxJsmavumC55y)jzgo3}5# z>nt`whMy@gyA+k~0HiL`IzWtzd9Xg7e&Zc| z*n5=1NAm7aC#6^ZhUlbWH~@rzE_pB{h}YVf_-I6Gm!bY-XIlK0-h~X^NpX0xMF6?ak5+l`7E!bQ5Y?l zcW8etNC^Sxk41qsSTnnETXZgo$>J#{lkx8;R=^@$qz$o{9I8QF$c2cS!oVwQYM;fA zB1=FPpe->Vt_0{tOvwm20m+d9kgTYC0t_||EYnTFHK-`VfnEWYYs2V*%;;%N{wQ|W zjWx;Czk+dkW-1(g@)qKGqw5y2CO>@u7SDOtce%vrDlKnWrr(I2)ohFGzL>l0sQ{!p zHP{|?Q5}{G_0Mkl$Kiax(**TWG0uL$b?VXm3@_J$O1!Pc8(|x1s~CCZA?jElh9)K+ zg@(n1C4Pc_n!m5zx z*tkMpZEJY%SvfoDW$=c0#H*{XAEpG#CWb>uulBK-S?2I>QTJksQi=>HGYTRowgc>% zwxDYB5k$5MB5M-GuU^sJecVj(v?!=EQn@Aqu0IBamxihZ|9c#PHvvR2A&CGrT0oe% zdm$m=PIt?OwoWwNpav0?!GK{As(`ath@C*DO%r@ziH#kDMD57nhd!D#V_fSZyE#PZ z10{0U82Y(UVNN{vd`u#D*fqISx&s1Ss`F_)6jIp{mVw8lBYMHGhp0BhX&}@ei2yXrbS}2jRn_BE z@JqlpOJXJ%P+PAp(Ck~hU`}%MW$CMRv8^F1vP9^OZs)o9Tfauw? z%$33of$ZqBK;CrdQ$@rbb27*#J0kLnLXM>bgRmv2vLg>5+x+KMxGAQD_>V8*@L;|e zBAE+POWK9(5^)RL(72`*nR)1vNra8pD3iW|F>>;>FE@P9$jhiUM9Y5j{oGZXXM0@m z{>QxerUrK8quVv`W%n6TP0oPun(=VwCux~OWx1V%=8Zq{+!KbM@(xq#wR7Q zBO)};@;~a;mcCV%0Whj9h40FjTeoga?!m|w?k&>19c2lHLUeve!#Sl7l(Jt21}0uk zV)lPk;k^ip%9LZ95rNP#Q+-*$F%In^x5z24er#=IdkTW zL1Bk>g<2MzZK`(^db;I4`LfV6fZN*9F}3jrJ-rc+Kdja}eI<6Jzb{oaJ^s*}EhaGCZb_Po7UH`|x3N#HXZNEWI;fWPrOuM2h}5Z}RZ| zrlzJgxm-Fi5g8U1wtMAeYkT|jii(Qj;^H236>Dp6cdPIYniL~9Ha0f4W-!v&Qi1=; zlj~h?R#jca2UT+9N8m73US4izZ|~;oD`y2R(Ca$?4kZ5~TZ4vHSYeyy>F72qY;d3d d*Iy@1%iGT@UqvbE@VR=fE<64z+;r&de*hpALMZ?M diff --git a/benchmarks/latest_absolute_errors_by_circuit.png b/benchmarks/latest_absolute_errors_by_circuit.png new file mode 100644 index 0000000000000000000000000000000000000000..af025d7994bbdde40c322518e32d0d7cf1d28a0e GIT binary patch literal 40510 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

&hV$_EPVT^ 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 IPFwqb0M6HglmGw# literal 0 HcmV?d00001 diff --git a/benchmarks/results/expval_2025-01-16_21.csv b/benchmarks/results/expval_2025-01-16_21.csv new file mode 100644 index 0000000..5b22c19 --- /dev/null +++ b/benchmarks/results/expval_2025-01-16_21.csv @@ -0,0 +1,26 @@ +# Compiler versions: qiskit=1.3.0, cirq=1.4.1, pytket=1.32.0, ucc=0.2.0 # OS: Darwin Darwin Kernel Version 23.2.0: Wed Nov 15 21:53:18 PST 2023; root:xnu-10002.61.3~2/RELEASE_ARM64_T6000, Architecture: 64bit, CPU Cores: 8 +compiler,circuit_name,observable,expval,absoluate_error,relative_error,ideal_expval +pytket,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006878021837e-06,0.0080991662520941,1.0003503440169677,0.008096329751406298 +qiskit,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006877824513e-06,0.00809916625209408,1.0003503440169652,0.008096329751406298 +ucc,qaoa_barabasi_albert,ZZZZZZZZZZ,-2.8365006877938354e-06,0.008099166252094092,1.0003503440169665,0.008096329751406298 +cirq,qaoa_barabasi_albert,ZZZZZZZZZZ,4.84870003209729e-05,0.008047842751085325,0.9940112369666576,0.008096329751406298 +qiskit,qv,ZZZZZZZZZZ,5.157107240226033e-05,0.007095193327000684,0.9927839971321051,0.007146764399402945 +ucc,qv,ZZZZZZZZZZ,5.157107240223865e-05,0.007095193327000706,0.9927839971321082,0.007146764399402945 +pytket,qv,ZZZZZZZZZZ,5.157107240225285e-05,0.007095193327000692,0.9927839971321062,0.007146764399402945 +cirq,qv,ZZZZZZZZZZ,5.726778345087097e-05,0.007089496615952074,0.9919868936136114,0.007146764399402945 +ucc,qft,ZZZZZZZZZZ,4.7704895589362195e-18,4.771491994589455e-18,4759.8985323285315,-1.002435653235501e-21 +qiskit,qft,ZZZZZZZZZZ,8.673617379884035e-19,8.68364173641639e-19,866.2542786051877,-1.002435653235501e-21 +pytket,qft,ZZZZZZZZZZ,-3.2526065174565133e-18,3.2516040818032778e-18,3243.703544769454,-1.002435653235501e-21 +cirq,qft,ZZZZZZZZZZ,-2.168404344971009e-18,2.1674019093177734e-18,2162.1356965129694,-1.002435653235501e-21 +ucc,square_heisenberg,ZZZZZZZZZ,0.15777921478822712,0.8422207852117751,0.8422207852117732,1.0000000000000022 +qiskit,square_heisenberg,ZZZZZZZZZ,0.15777921478822676,0.8422207852117755,0.8422207852117736,1.0000000000000022 +pytket,square_heisenberg,ZZZZZZZZZ,0.0006197252075469554,0.9993802747924553,0.9993802747924531,1.0000000000000022 +cirq,square_heisenberg,ZZZZZZZZZ,0.11147740955964427,0.888522590440358,0.888522590440356,1.0000000000000022 +qiskit,prep_select,ZZZZZZZZZZ,-1.0842021724855044e-18,2.412695283404334e-17,0.9569951407539745,-2.5211155006528843e-17 +pytket,prep_select,ZZZZZZZZZZ,4.336808689942018e-18,2.954796369647086e-17,1.1720194369841022,-2.5211155006528843e-17 +ucc,prep_select,ZZZZZZZZZZ,-6.505213034913027e-19,2.456063370303754e-17,0.9741970844523847,-2.5211155006528843e-17 +ucc,qcnn,ZZZZZZZZZZ,-0.0006168084746497563,0.0027601976170682054,0.817350499851787,-0.0033770060917179615 +qiskit,qcnn,ZZZZZZZZZZ,-0.0006168084746498123,0.002760197617068149,0.8173504998517703,-0.0033770060917179615 +pytket,qcnn,ZZZZZZZZZZ,-0.0006168084746497968,0.0027601976170681646,0.8173504998517749,-0.0033770060917179615 +cirq,qcnn,ZZZZZZZZZZ,-0.0006094140052068032,0.002767592086511158,0.8195401522368057,-0.0033770060917179615 +cirq,prep_select,ZZZZZZZZZZ,1.15109744652786e-15,1.176308601534389e-15,46.65825906150529,-2.5211155006528843e-17 diff --git a/benchmarks/scripts/plot_latest_expval_benchmarks.py b/benchmarks/scripts/plot_latest_expval_benchmarks.py index 5f66035..0ed7c2d 100644 --- a/benchmarks/scripts/plot_latest_expval_benchmarks.py +++ b/benchmarks/scripts/plot_latest_expval_benchmarks.py @@ -48,7 +48,7 @@ # Customize the plot plt.title(f"Distribution of Absolute Error by Compiler on {latest_date.strftime('%Y-%m-%d')}") plt.xlabel("Compiler") -plt.ylabel("Absolute Error") +plt.ylabel("Average Absolute Error") plt.grid(True, axis="y", linestyle="--", alpha=0.7) plt.tight_layout() diff --git a/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py b/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py index fea5e83..dbf8da1 100644 --- a/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py +++ b/benchmarks/scripts/plot_latest_expval_benchmarks_per_circuit.py @@ -46,7 +46,7 @@ circuit_name_to_index = {name: i for i, name in enumerate(circuit_names)} # Step 7: Set up the figure and axes -fig, ax = plt.subplots(1, 2, figsize=(14, 7)) +fig, ax = plt.subplots(figsize=(10, 6)) # Set color map for different compilers # Get unique compilers and sort them alphabetically @@ -56,22 +56,13 @@ colormap = plt.get_cmap("tab10", len(unique_compilers)) color_map = {compiler: colormap(i) for i, compiler in enumerate(unique_compilers)} -# Step 8: Plot relative error and absolute error for each compiler +# Step 8: Plot absolute error for each compiler for i, (key, grp) in enumerate(df_latest.groupby("compiler")): # Get indices for each circuit in the current compiler group grp_indices = grp['circuit_name'].map(circuit_name_to_index) - # Plot relative error - ax[0].bar( - [grp_indices + i * bar_width for grp_indices in grp_indices], # Shift bars for each compiler - grp['relative_error'], # Relative error data - width=bar_width, - label=key, - color=color_map[key] - ) - # Plot absolute error - ax[1].bar( + ax.bar( [grp_indices + i * bar_width for grp_indices in grp_indices], # Shift bars for each compiler grp['absoluate_error'], # Absolute error data width=bar_width, @@ -80,26 +71,18 @@ ) # Step 9: Customize plots -ax[0].set_title(f"Relative Error by Compiler on Circuits (Date: {latest_date})") -ax[0].set_xlabel("Circuit Name") -ax[0].set_ylabel("Relative Error") -ax[0].set_xticks(x_positions) -ax[0].set_xticklabels(circuit_names, rotation=75) -ax[0].set_yscale("log") - -ax[1].set_title(f"Absolute Error by Compiler on Circuits (Date: {latest_date})") -ax[1].set_xlabel("Circuit Name") -ax[1].set_ylabel("Absolute Error") -ax[1].set_xticks(x_positions) -ax[1].set_xticklabels(circuit_names, rotation=75) -ax[1].set_yscale("log") +ax.set_title(f"Absolute Error by Compiler on Circuits (Date: {latest_date})") +ax.set_xlabel("Circuit Name") +ax.set_ylabel("Absolute Error") +ax.set_xticks(x_positions) +ax.set_xticklabels(circuit_names, rotation=75) +ax.set_yscale("log") # Step 10: Add legend -ax[0].legend(title="Compiler") -ax[1].legend(title="Compiler") +ax.legend(title="Compiler") # Adjust layout and save the figure plt.tight_layout() -filename = os.path.join(directory_of_this_file, "../latest_relative_absolute_errors_by_circuit.png") +filename = os.path.join(directory_of_this_file, "../latest_absolute_errors_by_circuit.png") print(f"\n Saving plot to {filename}") fig.savefig(filename) From f6b641754e75049d4799a63760977c761abffcf2 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Thu, 16 Jan 2025 21:19:21 -0800 Subject: [PATCH 18/18] remove old plot --- ...test_relative_absolute_errors_by_circuit.png | Bin 57524 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 benchmarks/latest_relative_absolute_errors_by_circuit.png diff --git a/benchmarks/latest_relative_absolute_errors_by_circuit.png b/benchmarks/latest_relative_absolute_errors_by_circuit.png deleted file mode 100644 index e416c5a1947994d52256c60d929610f14c90d42d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57524 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 etJ9(S`1p|4;l4ahrSsQl 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

&n*q3 ztE7ij2(iq3cqQ2*HwJtE<*cfXEkF5?kb4I&AD#6A0T9}8t8oNQO#3-krWYop@1Q|z zR5T)i?oM30%Hk*qlsq4G%sLCEg{(W_)TmbT=E@xVA+_yena|MuXC6$6r5=v?>`T3M zYf^2*^ zw*9B2lu`GpsVk04;VfByw<*5wN4LtGKGAkkO~rm&9I`D_BuD$@H5BQb^i}fLWR-9j z%;(t$I64rE5QT3SE>A6$lfE>k4(_4wo=AkJ)R#6#vP9*nR>#-nFLTilxlHDn%qEa? zIh~2zNSf??{CGT?j)A=AR+YhdKe|~rx;f{EPeSh%9qo_KWtfM>bp6T{RpeScGUQ|2 zgYQDOQnsU8djQ=bCUP92>e@?E&LbPg^Xx{9AI1(L5TJB}&1S|^JwK;>Pz*E?DA51# z?sh&gjn`gOdkN)ssTomT{gg759r>Oh{5ncR4@>4ZIRC`sugUjUPS3TN+DfU>>Brah ztWMftP2Wyn_W3&^UeFh+sv3jlXm4D$b!d_o1%c56FB;m+i*;d##t>M&0?fC;d<;PI zO06aI&yM3UKe~B%56QJkYGoaR2k&1rh;i&D>LJLd)D{G^(Q?}ah?p6lk;k$jR7wC` zVpEX;W*c8B^fKX5mVFMDK9Qbx{G?V|Ts;S9#5eZT)all2N1{pww3PVnyAii57`jK7 z{9Qo}<5b6Basb6+Nfr*k+7Pp1!_4Okl4ic>McJ*4>8ie7K!>R=V_2j?Sc*nFvzP}d zf`~i&2r7q#+As)CZBZyM9Bgjr{w1>I(K#>7DtODtQMI;StR`?x1;c47yvCrInw`N` zG);`W{_)M+#;T;G?XzDlC;h2rWoo~tT1kTBLQ5rrfV&X51dmAmCH)>P=w!w!eb{X8 zd6k0{Na_G)_WgAFgH+MF_*=tM$5Q)r=wQGDQ$jF#;Av4|9TM<^cgF{IwahV*wse)N zrrv8^i@reIO7eus;GfGn)H3vTT06Qfy28u?i>2pVi2bY7s~xeVD=p-m=dRH?3Ox&#-R7y1uTX?AwE}RY3{u$4SX+4Old%Sl(J*~?gv&`bUlB&vDE&IG4 z=ydUPLU2t5cBq@JP_+ZLd2erqp(s@47+WB*Z@D1Q!C-z*_=O6Fh+L3YC_4P~;bD7^ z*N^Qv&lsZ~s+@`(B6lOv2J2*LRe7rAe&Dtp7f7J{%^%R34$tUF5w*W0@POQqUxPe6^ zMe|a@2t~qgoe^Op_>2et((m|(&V)j05ttQ@n~g>iiZYkQ%U0bcPu?e>26NBc*C7}c zMY$7?JSZvCNGVR)tMqq3kjgk(G8aW5j0qh2>U>_3&Q)vIs*Wy+9g!HOoigiFo$jk| zcRL*E$73+*^Mf*~45D0AkxkV-uG!-sW)OD;cB!k>Uftgy;s?=SQ$?6=ee$oowgnBB zIwpP9C(cyBFSw#D=!k+Gu2F&}bPSI1CV0Ikbxtbo`6CSH`@@Ht{q{~i$+Wc_J%AIt zV)bgP%z9tlJklD+B9ROt0ZTv-HbnqPncaj9Bw=uxATq=oUCcH<{tP5GiwZNkHORN8 z+*{0{1|N{6(0h>POKDPsca^lo+Tx2X7VIq;xoP}xNcc+RrN_V)+KSO*IPgIAK|tLh z;KaSyyWee&JHA>s&6GS(&NL0Ioelen;Rm9Xtsd5L7~g&hLi0} zoemrS2gGP8cWK};wOM(17Fe}hfK~~34FY|hIkUwIgE`Z*6{`poKD9opk4{Vfz>{Av{$w-mxyW;Hk;!1v3xc~=Ljrw@PfxSu_PbrZQ=d7QNjYqtrr#c8s zj2Z&o9y%ICQH6qIj`Dm!xd=MdTlV@>Nyy2LMG zo(TLU2*l*Szq_!0>0Y+o54p`E9DL$EWdEo|YOFcFegY*yRl`x;D`&{eBl}TFS#>Gb z3S}cKk&D>{c*mK+urGZXJ)tt;xbIeyv9TnPcDp+iFl=)!I2bJK@aGObM+x>BwC<)sUsTD~fBGYZm+8zyk70-7d)pm_yr4>)#SirjmpP@$ z6prR`_TPeP%qx$%sKNQ*6^L|Q-3k4ftvZ_hRSn!NY zSwCT~BxERET(W&w+hMJVh4a=V4)y%Gh94=CBBV>FET#k#l&iT3z3gYU@j?!ssxpAl z4LmqEkkEDfrVvBPXH!w&(6CJ#hBYx%n8?O5!RBJflOMJf`(3cW6mj_tjc`rL497)4)`6N{N} zIB`1;sGP&H(KUJOkl2E;I!D3LkYqi6cUl*p96oOFoS?z7Juf)&4Ou-DfLWqdCZZ?< zN=ZRg&==@MS~C{1=bA>&zXGIX4kOur&n#z3ut5MtftZ3We)s#1AO1Qk<2c7H5l?P8 zmXbsmE2qE!pR=~_ID-iXCG~J#NTyS<@Q_j?*Y4Pk1J}H5geDHw@%IM)Qzcu71)+PR zo!t%osqIVs@b>2IkK2i1`C?j(da!#25Vb2r5-W`V1W8%qN)1^_7@R{{CLu=zhjqXW z*`7isbu8Uie}+mpO%-*T2Gn-_mYat&^!jvF&fYG;0`HwmT;@4j#Xu$0iGYZc2*<$73U2uFeeRLWD( zh?%UW7^RR-Hh7uoTDoM0&8M=FIP=BD&s{v+zz*Sd^yw)hn-xy1Dzp(;8~Mbhdq)`j zA5rwNfypa!$sZMov{k+*bS1qO_>)!dP-r`zo62dgK*Z|QsL_>3Hx>e0km{x+3AQxr za-#32r;l^rWk~*pOA0myrJIw&9U+CAk7*c(B9F>MFM;?$oE=r8mQ*_;;Xbady@dh2D52RR!Vky!V?`?o#u`BeV8qic9gC6Yw0(N_r!ECD*(_Va!B;vCpdwutF#@{y z6^QI;j^vuU?eNvAqVU;iD#;>I{wgweQQ@;){8Iah*MblvhnpgX3vz0{vkRQk@kFLD zNPrpBL15rDJ2cQxvnmhg5=nq%h~=5u%|K{bKNrCjNKwLCdB_R*@r6Z?Ws zG{s6NFd>VCn12l~R?X@YW?$vPxq)A~R(-qW+y0>9?1&Lg9c$rv)wDkdxfyV*tt|Xl zGE`+ALKcx_lb!*u)pVDu4{~+b1&k5;9Ri^m7s8s{l|={dAOm$mBS95^X(WS3GqF|#hFrJ%0^hLLjDwh5aBrwH8|0+CjJ>@ zOJhgYHneumH#$e7bdZ@*XP%-}F>z$aDF5M5#Ooq^3z7~wZVV%^(t@IL=}}OUSpQrP zE9ZNG@HRET>&!0~#YL;bVtvMm`?#=ypXONp4heUC9^@K-_-D0(5PQZ!gi({F1Q$79 zzFS2Jy?MBIOntXJX2$&qKRgAEP(gWa;Ir|Ru2|?;oK1B|Zd;BwwrYbd}%F%#**<=Mt1N( z>Y*!Wszr#Up*K&$yTJ7!D?ndndEK5NW$PhCL-=8ZK4+i^B6+w0Z(lqBJ^t2C9~{>sSoxN?kH-b zuvItBuhRHtYjt<~2KvrJ7R&^}N=?(^W_kRI648$1>FdVyN+r zbxNR(k8lSt+0t09Kw)k_R|XPxLJkxXiD5vA07f1Si>Dv0H=O_J$$$eWPH4&WA^0v^ zASt#g!}jddFnuih_28`AtKp&Hn0ZkzG@;9}ei+-sxtBrwe)P z2~lB&i5BGH9mr;+S}Q04;k@g>2rFnF#I<3EW~lRl=ORzt#s>yDv3l{cWnGRtHiHa> zqg_e3JAneAw5=A^EoMkI%Sm7hCU=44)ww@(5iBrg+1G-RL7m2qm4{i5ajKT)H@K&u z=`9q4Ii9H`H&>Zybe*Ph1r}fq)Fm~&8;3A!Q-O&azA~&3y4;u*zSXVgfSVWYH4y3u zrEmp_HID<*!5{7H${1E0L?2VdA&vgPk4lX|;JhvqXCpI9XAJRcau|k%GCUXCVQze- zL(P{;caW;vb&j~EkxL|00@up<0Rt4bQ=aJJS1|GvS51vdrbZIW6vqPO`Ph!a;YDb| z=?CK4?Zy{1L>^QDbnfw648_L4PWvAAtHWe5hV=zb& zcMPtf6z&B+QHfGgZb4hgP*{F>?ec!kMKFt@%Up}j`F_0H!g}^0ousmZ4;J1)StgCv zlk2!S6CZ-W(RcQd&G`+Bhqc}SES;vZ9AwMKOR`W{+q(59w<3m(*K;xq?Dpmpm+G zXJvi;yP?l2`G01HD#AE&agZHx}$zV8DC$0WZ-X5*`LN zAuXG$)p8qdQH;(xyiui3j9W@z@`&gZC4=iFmK+!FiNksT4itSii5njoysF%sAAn!2 zO@usj)~l5YZxsCj54@+T1n_lI+L4F;s`9(}n&s3BR?DV21vw>KC}GZ5app!Uf+FsS zuth;)Q{bU+Z1q9lCN8W@pK6BQqXtK$U}In3jA_Pf8f-~-U&Vpkf30fOPVfBA%rH?- zs+*Iep?Rb2V_bdVPWF}E1Hc2Mg-%{g(w7_p%~p_{IGb5Y-703W3GD$uI&C>U3}z`&^g+9K|H z!0n+m&b&Ka)$(xJC5stc`Q0VP!DY#BsaZ6 zZBIb9WSZ1=MtCX;2+^1-%w7EQMb5pEQo1#PJU~188E+s9b@y;6gqm4+yWcGot&#nt8lkpL4q_!DEsIkqxTGODjm=}u<1`!}W}CYPndk8tr>~6I zr@@R;111r>u(GpZ+oDElyK%WAicIxoSE*w} z)(0m4`9{)sfuJ10u|kXd@WE}5rx2vr=;4J&V&k*q@gRo zuSxF_vACTYV;0(S@cfHWQIgozh0q2Ph_z9t7e*Lc^?I#$KD3u)Dv1CMAIcRTQe&6E zEt*wa0OFMiXqFi;_82r)KqQ2E03n(9O8XM$92$Nq@1pXp2M8L^5jyw4SBOpvZYX1c zfBHOHb4zqylu-2OaqN-D_eBjV6LR!U5XTDT{woBMn!hDbmF$fAjuG^tDc!#GY`psQ zcy7buMic&MA{;>V4DMT9D#F>+DvS4)WH3VSgV;e*`yhND>8{xG`y4M|xRPAY=Fs5w ze5k4CPvHzeRCV?>Fq7&%duS0>bF0-)j)o$tLxHY83ePxpP0AlUsvH^zMRtV@im@er z!Y-b0WAFF$JU0k+F&JAzG*&=l__!$Vq%t92CGqleE(aeGbi?wn88XBl{*$RKiH32t zlWZMY-T3C&ouvlXbxL1JOy1LH^a{#t_OB0#pSJ@FI*|SzvlvU=smqG|2G^0;7r-1g zZ#O&ZZy=%J2G7OE>-1|ly4p(Bs0Ci8R&$GnYs`!zsp^RR3t{^jZo`%-(Av&Cc0meA zy5*Mox~Z9wDqy+64GfVJRAMh@x|7avg+c%^6-es<@F9yV^BMECrmkYrZlWJjKoY5a zkqT{gE?xSKB$$Pz&iV@ZadTC?%U}*V%sqS|C%Ob$QLXenHCE&_RKrTgw;vj6mB-L^ z|9bB!Q>MI(=}~_y^7$hEsKr1nmQX4C(p2jX#vs8$qE$2j^eiy^k+Gp&1AK0zRGpEs zdbB%d0}aWpDq4X*h{a$xWE%b4o%7lih%AQ7vWii|9H%?$$zJJWL(7$H39*XOw{1Us zJ`E0wzKw8>oZ9&rdsAABFdP*wt2GK1q2d84)kqhdc9Nz!G^>Jxzzp3*(WR8b)I<|K z65xRqP|5_pYR4h5R>Ey4bk0)AK|TzIG_eI5^y`?J{Utg#1gDI2H}j90y0BZ0 z<~RL8u@L^V$}OXQhKUloV>RNWr=bX>*3GK332KC!s`eW?4Aki=wkiM@bq7i(B?luF zSON!0?F5O)E}5$~0a>K8cT7Y|nhP}x(br`6MFJCgF}F^hb=>JK=oTN=-RfQL@l%O@tPkr`NkVR3b6suSOt*2F+c)RQyac+*RT?_MRh_pm{ah+YHGA%Gt z(>XBoO`+^uWSS6wg78lTD+bg4LZ_mzPqIfP@^V@XWI{L)*SI@H6yk-;mxJ{w%>z}a z*|h1(*fzX5c>tS+hd=Mzh$2pdH@$#-Ym0@|SRDCg!Ra(siz|l;P9K$Ekt#?S-z;PECsD!)TqDL1QNFs2incL0l_ zn4}2XG&_VapTPL9 zRBeH+ZK3e-fnym0C8B`*{^vskvpSA4n3H=N9}xM8KuJO`O}xqruljpKXMh^Axfbot z>elOas&eM5X3DI9Q@qg_PJGC9P@^j{Z0+bEQcQ5SFT~`b^Q&;tG=ZtTMjG5NQ-`~r z*7qIExo^w*TMA}caKdAS&C>3xv<$Ba9Ux9hAFxyb1iHO28?wL5Zq+2u~fJDv2-KIBw;GFj$})w(OH8tA+~0rNEs=b zNB{>LiVGlFnt{L|+6yIgA8c7Ny3)1pTYslUuO!~M%Qb2HK7F45$2sSJ9_q+D_Dqx< zAo>G}xggKZR1W1BA9k+rkS_a~Y&|u{GC3eK*)v~?Ay9e-+f&BS5fd+q3x*6s5s{br zP??+UDej=s=v&zwU&+zc@%U9U&mIyVCC2DeJ`?xf$y1Ke>)PDPKSe#4(NR z$o`iJKI+`7eS@$M-@TvQfh41t()}`amlAf1EhXTW*VcCDy*sj)70_sm?|>9DaN-&< zW(q&fPu>GhFTo$usPMRqs$atFal_No_*~*QCkYieq>~q`p&DB%qND%v-8c0d ztMJ%uwi{-QH5~zfK=`+|;o>v77kq3U7*usJ#J3_K?! zjO8~{^lxzVpe^Ga=demx?0|0W0*k8P6cx-ggHRB2BcEn;Wl{Qpn>A#r#A;kT!yEbL z9L(Euoarr@mi^UK2j=$b>dom$rx9rW;Ds_BLxzb?Q)SLxbeTH_nkB0u`6`WuxbaN* zkY*#;Q(M3N&13by26r&MjAZQ)dI5&Fr#b$+drPkJ!RvcZIq3!co9pND*;L@v<3SK| zKoeIy4X_q&ak1X&q@cNt{gL*zwlW{lWt-=={h_b!E+sj1U2p8WwWzV=<3~{4Sx+NS zsa)wtQOR3n(IAK~dgmiZ=gmJ+fDAQ?Ui3I_BZW{yOGl1Fv29uKa3h>*}7xPf5KCQBv@=ETzoQ?zxZJ zDrEO3u?1cJh}Dz)kk)P@5@B}}3_<2Em2W5ta%|%B64$tSQn%MpGj|eW;>Zdzp(Klf|Z)e;aZwdf&$4qzBc+K zV2wTB-SFndzg-{~wm$ejJ3ePEI$5N98HslP<1ct`3%~!!rlHLJEAES*dC%XbV!`5A Mvwn5B_|?`w0k}cUQvd(}