From fbff128569bd5f0ec2609c7d1bcf43dae78b7443 Mon Sep 17 00:00:00 2001 From: Geometary Date: Wed, 25 Sep 2024 20:04:41 -0700 Subject: [PATCH 1/5] Added the quantum circuit image and QMOD/QASM model files --- imgs/classiq_open-challenge_qc.png | Bin 0 -> 11304 bytes .../k31_bound0.001_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.001_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.1_noConstraints.qasm | 1491 ++++++++++++++ .../k31_bound0.001_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.2_noConstraints.qasm | 1583 +++++++++++++++ .../k31_bound0.001_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.3_noConstraints.qasm | 1529 ++++++++++++++ .../k31_bound0.001_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.4_noConstraints.qasm | 1553 ++++++++++++++ .../k31_bound0.001_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.5_noConstraints.qasm | 1607 +++++++++++++++ .../k31_bound0.001_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.6_noConstraints.qasm | 1525 ++++++++++++++ .../k31_bound0.001_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.7_noConstraints.qasm | 1735 ++++++++++++++++ .../k31_bound0.001_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.8_noConstraints.qasm | 1711 ++++++++++++++++ .../k31_bound0.001_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.9_noConstraints.qasm | 1761 ++++++++++++++++ .../k31_bound0.001_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.0_noConstraints.qasm | 1751 ++++++++++++++++ .../k31_bound0.001_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.010_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.1_noConstraints.qasm | 1481 ++++++++++++++ .../k31_bound0.010_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.2_noConstraints.qasm | 1503 ++++++++++++++ .../k31_bound0.010_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.3_noConstraints.qasm | 1511 ++++++++++++++ .../k31_bound0.010_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.4_noConstraints.qasm | 1617 +++++++++++++++ .../k31_bound0.010_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.5_noConstraints.qasm | 1585 +++++++++++++++ .../k31_bound0.010_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.6_noConstraints.qasm | 1571 +++++++++++++++ .../k31_bound0.010_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.7_noConstraints.qasm | 1525 ++++++++++++++ .../k31_bound0.010_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.8_noConstraints.qasm | 1545 ++++++++++++++ .../k31_bound0.010_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t0.9_noConstraints.qasm | 1597 +++++++++++++++ .../k31_bound0.010_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.010_t1.0_noConstraints.qasm | 1625 +++++++++++++++ .../k31_bound0.010_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.050_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.1_noConstraints.qasm | 1481 ++++++++++++++ .../k31_bound0.050_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.2_noConstraints.qasm | 1547 ++++++++++++++ .../k31_bound0.050_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.3_noConstraints.qasm | 1519 ++++++++++++++ .../k31_bound0.050_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.4_noConstraints.qasm | 1501 ++++++++++++++ .../k31_bound0.050_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.5_noConstraints.qasm | 1517 ++++++++++++++ .../k31_bound0.050_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.6_noConstraints.qasm | 1491 ++++++++++++++ .../k31_bound0.050_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.7_noConstraints.qasm | 1517 ++++++++++++++ .../k31_bound0.050_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.8_noConstraints.qasm | 1581 +++++++++++++++ .../k31_bound0.050_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t0.9_noConstraints.qasm | 1541 ++++++++++++++ .../k31_bound0.050_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.050_t1.0_noConstraints.qasm | 1567 ++++++++++++++ .../k31_bound0.050_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.100_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.1_noConstraints.qasm | 1479 ++++++++++++++ .../k31_bound0.100_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.2_noConstraints.qasm | 1483 ++++++++++++++ .../k31_bound0.100_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.3_noConstraints.qasm | 1491 ++++++++++++++ .../k31_bound0.100_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.4_noConstraints.qasm | 1477 ++++++++++++++ .../k31_bound0.100_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.5_noConstraints.qasm | 1471 ++++++++++++++ .../k31_bound0.100_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.6_noConstraints.qasm | 1511 ++++++++++++++ .../k31_bound0.100_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.7_noConstraints.qasm | 1499 ++++++++++++++ .../k31_bound0.100_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.8_noConstraints.qasm | 1523 ++++++++++++++ .../k31_bound0.100_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t0.9_noConstraints.qasm | 1503 ++++++++++++++ .../k31_bound0.100_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.100_t1.0_noConstraints.qasm | 1517 ++++++++++++++ .../k31_bound0.100_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k3_bound0.051_t0.6_noConstraints.qasm | 183 ++ .../k3_bound0.051_t0.6_noConstraints.qmod | 49 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k3_bound0.051_t0.7_noConstraints.qasm | 183 ++ .../k3_bound0.051_t0.7_noConstraints.qmod | 49 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k3_bound0.051_t0.8_noConstraints.qasm | 211 ++ .../k3_bound0.051_t0.8_noConstraints.qmod | 49 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k3_bound0.051_t0.9_noConstraints.qasm | 211 ++ .../k3_bound0.051_t0.9_noConstraints.qmod | 49 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k3_bound0.051_t1.0_noConstraints.qasm | 211 ++ .../k3_bound0.051_t1.0_noConstraints.qmod | 49 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.0_noConstraints.qasm | 1753 ++++++++++++++++ .../k31_bound0.001_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.001_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.1_noConstraints.qasm | 1503 ++++++++++++++ .../k31_bound0.001_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.2_noConstraints.qasm | 1563 ++++++++++++++ .../k31_bound0.001_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.3_noConstraints.qasm | 1555 ++++++++++++++ .../k31_bound0.001_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.4_noConstraints.qasm | 1569 +++++++++++++++ .../k31_bound0.001_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.5_noConstraints.qasm | 1591 +++++++++++++++ .../k31_bound0.001_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.6_noConstraints.qasm | 1513 ++++++++++++++ .../k31_bound0.001_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.7_noConstraints.qasm | 1669 +++++++++++++++ .../k31_bound0.001_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.8_noConstraints.qasm | 1781 ++++++++++++++++ .../k31_bound0.001_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.9_noConstraints.qasm | 1731 ++++++++++++++++ .../k31_bound0.001_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.1_noConstraints.qasm | 1783 ++++++++++++++++ .../k31_bound0.001_t1.1_noConstraints.qmod | 77 + ..._t1.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.2_noConstraints.qasm | 1667 +++++++++++++++ .../k31_bound0.001_t1.2_noConstraints.qmod | 77 + ..._t1.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.3_noConstraints.qasm | 1733 ++++++++++++++++ .../k31_bound0.001_t1.3_noConstraints.qmod | 77 + ..._t1.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.4_noConstraints.qasm | 1687 ++++++++++++++++ .../k31_bound0.001_t1.4_noConstraints.qmod | 77 + ..._t1.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.5_noConstraints.qasm | 1793 +++++++++++++++++ .../k31_bound0.001_t1.5_noConstraints.qmod | 77 + ..._t1.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.003_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.1_noConstraints.qasm | 1407 +++++++++++++ .../k31_bound0.003_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.2_noConstraints.qasm | 1493 ++++++++++++++ .../k31_bound0.003_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.3_noConstraints.qasm | 1573 +++++++++++++++ .../k31_bound0.003_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.4_noConstraints.qasm | 1557 ++++++++++++++ .../k31_bound0.003_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.5_noConstraints.qasm | 1523 ++++++++++++++ .../k31_bound0.003_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.6_noConstraints.qasm | 1521 ++++++++++++++ .../k31_bound0.003_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.7_noConstraints.qasm | 1585 +++++++++++++++ .../k31_bound0.003_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.8_noConstraints.qasm | 1561 ++++++++++++++ .../k31_bound0.003_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t0.9_noConstraints.qasm | 1679 +++++++++++++++ .../k31_bound0.003_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.003_t1.0_noConstraints.qasm | 1773 ++++++++++++++++ .../k31_bound0.003_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.005_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.1_noConstraints.qasm | 1489 ++++++++++++++ .../k31_bound0.005_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.2_noConstraints.qasm | 1501 ++++++++++++++ .../k31_bound0.005_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.3_noConstraints.qasm | 1499 ++++++++++++++ .../k31_bound0.005_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.4_noConstraints.qasm | 1557 ++++++++++++++ .../k31_bound0.005_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.5_noConstraints.qasm | 1571 +++++++++++++++ .../k31_bound0.005_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.6_noConstraints.qasm | 1573 +++++++++++++++ .../k31_bound0.005_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.7_noConstraints.qasm | 1503 ++++++++++++++ .../k31_bound0.005_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.8_noConstraints.qasm | 1521 ++++++++++++++ .../k31_bound0.005_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t0.9_noConstraints.qasm | 1569 +++++++++++++++ .../k31_bound0.005_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.005_t1.0_noConstraints.qasm | 1627 +++++++++++++++ .../k31_bound0.005_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.007_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.1_noConstraints.qasm | 1549 ++++++++++++++ .../k31_bound0.007_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.2_noConstraints.qasm | 1519 ++++++++++++++ .../k31_bound0.007_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.3_noConstraints.qasm | 1479 ++++++++++++++ .../k31_bound0.007_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.4_noConstraints.qasm | 1579 +++++++++++++++ .../k31_bound0.007_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.5_noConstraints.qasm | 1569 +++++++++++++++ .../k31_bound0.007_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.6_noConstraints.qasm | 1551 ++++++++++++++ .../k31_bound0.007_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.7_noConstraints.qasm | 1555 ++++++++++++++ .../k31_bound0.007_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.8_noConstraints.qasm | 1585 +++++++++++++++ .../k31_bound0.007_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t0.9_noConstraints.qasm | 1545 ++++++++++++++ .../k31_bound0.007_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.007_t1.0_noConstraints.qasm | 1619 +++++++++++++++ .../k31_bound0.007_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.009_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.1_noConstraints.qasm | 1479 ++++++++++++++ .../k31_bound0.009_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.2_noConstraints.qasm | 1499 ++++++++++++++ .../k31_bound0.009_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.3_noConstraints.qasm | 1491 ++++++++++++++ .../k31_bound0.009_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.4_noConstraints.qasm | 1571 +++++++++++++++ .../k31_bound0.009_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.5_noConstraints.qasm | 1521 ++++++++++++++ .../k31_bound0.009_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.6_noConstraints.qasm | 1571 +++++++++++++++ .../k31_bound0.009_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.7_noConstraints.qasm | 1541 ++++++++++++++ .../k31_bound0.009_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.8_noConstraints.qasm | 1579 +++++++++++++++ .../k31_bound0.009_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t0.9_noConstraints.qasm | 1583 +++++++++++++++ .../k31_bound0.009_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.009_t1.0_noConstraints.qasm | 1557 ++++++++++++++ .../k31_bound0.009_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + 328 files changed, 168711 insertions(+) create mode 100644 imgs/classiq_open-challenge_qc.png create mode 100644 models/bound_optimization/k31_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.001_t1.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.1_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.1_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.1_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.2_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.2_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.2_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.3_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.3_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.3_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.4_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.4_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.4_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.5_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.5_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.5_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.6_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.6_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.6_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.7_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.7_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.7_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.8_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.8_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.8_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t0.9_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t0.9_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t0.9_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.010_t1.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.010_t1.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.010_t1.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.1_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.1_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.1_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.2_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.2_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.2_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.3_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.3_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.3_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.4_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.4_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.4_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.5_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.5_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.5_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.6_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.6_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.6_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.7_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.7_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.7_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.8_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.8_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.8_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t0.9_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t0.9_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t0.9_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.050_t1.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.050_t1.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.050_t1.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.1_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.1_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.1_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.2_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.2_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.2_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.3_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.3_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.3_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.4_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.4_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.4_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.5_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.5_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.5_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.6_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.6_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.6_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.7_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.7_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.7_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.8_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.8_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.8_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t0.9_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t0.9_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t0.9_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k31_bound0.100_t1.0_noConstraints.qasm create mode 100644 models/bound_optimization/k31_bound0.100_t1.0_noConstraints.qmod create mode 100644 models/bound_optimization/k31_bound0.100_t1.0_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k3_bound0.051_t0.6_noConstraints.qasm create mode 100644 models/bound_optimization/k3_bound0.051_t0.6_noConstraints.qmod create mode 100644 models/bound_optimization/k3_bound0.051_t0.6_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k3_bound0.051_t0.7_noConstraints.qasm create mode 100644 models/bound_optimization/k3_bound0.051_t0.7_noConstraints.qmod create mode 100644 models/bound_optimization/k3_bound0.051_t0.7_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k3_bound0.051_t0.8_noConstraints.qasm create mode 100644 models/bound_optimization/k3_bound0.051_t0.8_noConstraints.qmod create mode 100644 models/bound_optimization/k3_bound0.051_t0.8_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k3_bound0.051_t0.9_noConstraints.qasm create mode 100644 models/bound_optimization/k3_bound0.051_t0.9_noConstraints.qmod create mode 100644 models/bound_optimization/k3_bound0.051_t0.9_noConstraints.synthesis_options.json create mode 100644 models/bound_optimization/k3_bound0.051_t1.0_noConstraints.qasm create mode 100644 models/bound_optimization/k3_bound0.051_t1.0_noConstraints.qmod create mode 100644 models/bound_optimization/k3_bound0.051_t1.0_noConstraints.synthesis_options.json create mode 100644 models/plot_1/k31_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/plot_1/k31_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/plot_1/k31_bound0.001_t1.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t1.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t1.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t1.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t1.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t1.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t1.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t1.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t1.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t1.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t1.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t1.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t1.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.001_t1.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.001_t1.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.001_t1.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.6_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.6_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.6_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.7_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.7_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.7_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.8_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.8_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.8_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t0.9_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t0.9_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t0.9_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.003_t1.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.003_t1.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.003_t1.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.6_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.6_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.6_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.7_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.7_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.7_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.8_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.8_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.8_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t0.9_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t0.9_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t0.9_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.005_t1.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.005_t1.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.005_t1.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.6_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.6_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.6_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.7_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.7_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.7_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.8_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.8_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.8_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t0.9_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t0.9_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t0.9_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.007_t1.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.007_t1.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.007_t1.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.0_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.1_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.1_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.1_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.2_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.2_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.2_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.3_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.3_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.3_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.4_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.4_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.4_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.5_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.5_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.5_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.6_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.6_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.6_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.7_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.7_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.7_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.8_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.8_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.8_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t0.9_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t0.9_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t0.9_noConstraints.synthesis_options.json create mode 100644 models/plot_2/k31_bound0.009_t1.0_noConstraints.qasm create mode 100644 models/plot_2/k31_bound0.009_t1.0_noConstraints.qmod create mode 100644 models/plot_2/k31_bound0.009_t1.0_noConstraints.synthesis_options.json diff --git a/imgs/classiq_open-challenge_qc.png b/imgs/classiq_open-challenge_qc.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1932b9ab2443f8ff711476d5a9b352256d025d GIT binary patch literal 11304 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 Date: Wed, 25 Sep 2024 20:37:17 -0700 Subject: [PATCH 2/5] Added jupyter notebook and some models --- ...lassiq_open-challenge_ODE-checkpoint.ipynb | 1371 +++++++++++++ Classiq_open-challenge_ODE.ipynb | 1371 +++++++++++++ .../k15_bound0.001_t0.0_noConstraints.qasm | 603 ++++++ .../k15_bound0.001_t0.0_noConstraints.qmod | 61 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.1_noConstraints.qasm | 787 ++++++++ .../k15_bound0.001_t0.1_noConstraints.qmod | 61 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.2_noConstraints.qasm | 907 +++++++++ .../k15_bound0.001_t0.2_noConstraints.qmod | 61 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.3_noConstraints.qasm | 869 ++++++++ .../k15_bound0.001_t0.3_noConstraints.qmod | 61 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.4_noConstraints.qasm | 869 ++++++++ .../k15_bound0.001_t0.4_noConstraints.qmod | 61 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.5_noConstraints.qasm | 873 ++++++++ .../k15_bound0.001_t0.5_noConstraints.qmod | 61 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.6_noConstraints.qasm | 895 +++++++++ .../k15_bound0.001_t0.6_noConstraints.qmod | 61 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.7_noConstraints.qasm | 947 +++++++++ .../k15_bound0.001_t0.7_noConstraints.qmod | 61 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.8_noConstraints.qasm | 1023 ++++++++++ .../k15_bound0.001_t0.8_noConstraints.qmod | 61 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t0.9_noConstraints.qasm | 1037 ++++++++++ .../k15_bound0.001_t0.9_noConstraints.qmod | 61 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k15_bound0.001_t1.0_noConstraints.qasm | 1025 ++++++++++ .../k15_bound0.001_t1.0_noConstraints.qmod | 61 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.0_noConstraints.qasm | 1157 +++++++++++ .../k31_bound0.001_t0.0_noConstraints.qmod | 77 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.1_noConstraints.qasm | 1471 ++++++++++++++ .../k31_bound0.001_t0.1_noConstraints.qmod | 77 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.2_noConstraints.qasm | 1523 ++++++++++++++ .../k31_bound0.001_t0.2_noConstraints.qmod | 77 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.3_noConstraints.qasm | 1579 +++++++++++++++ .../k31_bound0.001_t0.3_noConstraints.qmod | 77 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.4_noConstraints.qasm | 1539 ++++++++++++++ .../k31_bound0.001_t0.4_noConstraints.qmod | 77 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.5_noConstraints.qasm | 1551 +++++++++++++++ .../k31_bound0.001_t0.5_noConstraints.qmod | 77 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.6_noConstraints.qasm | 1563 +++++++++++++++ .../k31_bound0.001_t0.6_noConstraints.qmod | 77 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.7_noConstraints.qasm | 1665 ++++++++++++++++ .../k31_bound0.001_t0.7_noConstraints.qmod | 77 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.8_noConstraints.qasm | 1719 ++++++++++++++++ .../k31_bound0.001_t0.8_noConstraints.qmod | 77 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t0.9_noConstraints.qasm | 1759 +++++++++++++++++ .../k31_bound0.001_t0.9_noConstraints.qmod | 77 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k31_bound0.001_t1.0_noConstraints.qasm | 1735 ++++++++++++++++ .../k31_bound0.001_t1.0_noConstraints.qmod | 77 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.0_noConstraints.qasm | 151 ++ .../k3_bound0.001_t0.0_noConstraints.qmod | 44 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.1_noConstraints.qasm | 183 ++ .../k3_bound0.001_t0.1_noConstraints.qmod | 49 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.2_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.2_noConstraints.qmod | 49 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.3_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.3_noConstraints.qmod | 49 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.4_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.4_noConstraints.qmod | 49 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.5_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.5_noConstraints.qmod | 49 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.6_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.6_noConstraints.qmod | 49 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.7_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.7_noConstraints.qmod | 49 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.8_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.8_noConstraints.qmod | 49 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t0.9_noConstraints.qasm | 211 ++ .../k3_bound0.001_t0.9_noConstraints.qmod | 49 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k3_bound0.001_t1.0_noConstraints.qasm | 211 ++ .../k3_bound0.001_t1.0_noConstraints.qmod | 49 + ..._t1.0_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.0_noConstraints.qasm | 321 +++ .../k7_bound0.001_t0.0_noConstraints.qmod | 53 + ..._t0.0_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.1_noConstraints.qasm | 417 ++++ .../k7_bound0.001_t0.1_noConstraints.qmod | 53 + ..._t0.1_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.2_noConstraints.qasm | 455 +++++ .../k7_bound0.001_t0.2_noConstraints.qmod | 53 + ..._t0.2_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.3_noConstraints.qasm | 455 +++++ .../k7_bound0.001_t0.3_noConstraints.qmod | 53 + ..._t0.3_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.4_noConstraints.qasm | 455 +++++ .../k7_bound0.001_t0.4_noConstraints.qmod | 53 + ..._t0.4_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.5_noConstraints.qasm | 455 +++++ .../k7_bound0.001_t0.5_noConstraints.qmod | 53 + ..._t0.5_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.6_noConstraints.qasm | 455 +++++ .../k7_bound0.001_t0.6_noConstraints.qmod | 53 + ..._t0.6_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.7_noConstraints.qasm | 483 +++++ .../k7_bound0.001_t0.7_noConstraints.qmod | 53 + ..._t0.7_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.8_noConstraints.qasm | 521 +++++ .../k7_bound0.001_t0.8_noConstraints.qmod | 53 + ..._t0.8_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t0.9_noConstraints.qasm | 521 +++++ .../k7_bound0.001_t0.9_noConstraints.qmod | 53 + ..._t0.9_noConstraints.synthesis_options.json | 1 + .../k7_bound0.001_t1.0_noConstraints.qasm | 521 +++++ .../k7_bound0.001_t1.0_noConstraints.qmod | 53 + ..._t1.0_noConstraints.synthesis_options.json | 1 + 134 files changed, 39809 insertions(+) create mode 100644 .ipynb_checkpoints/Classiq_open-challenge_ODE-checkpoint.ipynb create mode 100644 Classiq_open-challenge_ODE.ipynb create mode 100644 models/k_optimization/k15_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k15_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/k_optimization/k15_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/k_optimization/k15_bound0.001_t1.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k31_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/k_optimization/k31_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/k_optimization/k31_bound0.001_t1.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k3_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/k_optimization/k3_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/k_optimization/k3_bound0.001_t1.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.0_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.0_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.0_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.1_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.1_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.1_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.2_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.2_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.2_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.3_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.3_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.3_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.4_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.4_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.4_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.5_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.5_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.5_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.6_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.6_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.6_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.7_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.7_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.7_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.8_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.8_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.8_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t0.9_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t0.9_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t0.9_noConstraints.synthesis_options.json create mode 100644 models/k_optimization/k7_bound0.001_t1.0_noConstraints.qasm create mode 100644 models/k_optimization/k7_bound0.001_t1.0_noConstraints.qmod create mode 100644 models/k_optimization/k7_bound0.001_t1.0_noConstraints.synthesis_options.json diff --git a/.ipynb_checkpoints/Classiq_open-challenge_ODE-checkpoint.ipynb b/.ipynb_checkpoints/Classiq_open-challenge_ODE-checkpoint.ipynb new file mode 100644 index 0000000..ab63757 --- /dev/null +++ b/.ipynb_checkpoints/Classiq_open-challenge_ODE-checkpoint.ipynb @@ -0,0 +1,1371 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fcd550c9", + "metadata": {}, + "source": [ + "# Classiq Q-SITE 2024 Open Challenge - Team QubitSquad" + ] + }, + { + "cell_type": "markdown", + "id": "5cd0a4d1", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "id": "62af4d5e", + "metadata": {}, + "source": [ + "The Classiq Q-SITE open challenge asks us to implement a quantum algorithm in the paper by Tao Xin, et al.[1] in 2020 to solve the linear differential equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$, with the condition $x(0)=1$, $\\frac{dx}{dt}(0)=1$. After the equation is solved, we are asked to: 1) Evaluate the kinetic energy $E_k=\\frac{1}{2}\\left(\\frac{dx}{dt}\\right)^2$ and the potential energy $E_p=\\frac{1}{2}x^2$ as a function of $t$, assuming both unit mass and spring constant; 2) Analyze how $E_k$ and $E_p$ vary when different values for the bounds are used in the algorithm; 3) Analyze the gate count when optimizing the circuit width and depth." + ] + }, + { + "cell_type": "markdown", + "id": "cb52b688", + "metadata": {}, + "source": [ + "Therefore, let's start with the original algorithm suggested in the paper and see how it can be adapted to solve this challenge." + ] + }, + { + "cell_type": "markdown", + "id": "18502e3a", + "metadata": {}, + "source": [ + "## Theory" + ] + }, + { + "cell_type": "markdown", + "id": "a7fae9cd", + "metadata": {}, + "source": [ + "### The original quantum algorithm" + ] + }, + { + "cell_type": "markdown", + "id": "17350eff", + "metadata": {}, + "source": [ + "The paper focuses on solving the linear differential equation (LDE) $d\\mathbf{x}(t)/dt=\\mathcal{M}\\mathbf{x}(t)+\\mathbf{b}$, where $\\mathbf{x}(t)$ and $\\mathbf{b}$ are $N$-dimensional vectors and $\\mathcal{M}$ is an arbitrary $N\\times N$ matrix. One can easily check that the analytical solution can be written as $\\mathbf{x}(t) = e^{\\mathcal{M}t}\\mathbf{x}(0) + (e^{\\mathcal{M}t} - I)\\mathcal{M}^{-1}\\mathbf{b}$, where matrix exponentials are defined by the Taylor expansion of an exponent: $e^{\\mathcal{M}t}\\equiv \\sum_{k=0}^\\infty \\frac{(\\mathcal{M}t)^k}{k!}$. While matrix inversions and matrix multiplications scale at least as $O(N^3)$ classically, a quantum algorithm is capable of achieving an $O(\\log N)$ speedup in time complexity for this problem. The solution $\\mathbf{x}(t)$ can first be approximated as a Taylor expansion:\n", + "$$\n", + "\\begin{align}\n", + " \\mathbf{x}(t) \\approx \\sum_{m=0}^k\\frac{(\\mathcal{M}t)^m}{m!}\\mathbf{x}(0) + \\sum_{n=1}^k \\frac{(\\mathcal{M}t)^{n-1}t}{n!}\\mathbf{b} \\hspace{5cm} (1)\n", + "\\end{align}\n", + "$$\n", + "where the integer $k$ gives the approximation order ($k\\rightarrow\\infty$ for perfect solution). We can encode the vectors $\\mathbf{x}(0)$ and $\\mathbf{b}$ as normarlized quantum states: $|x(0)\\rangle = \\sum_jx_j(0)/||x(0)||\\cdot|j\\rangle$, $|b\\rangle = \\sum_jb_j/||b||\\cdot|j\\rangle$, and represent the matrix $\\mathcal{M}$ as a quantum operator $A=\\sum_{i, j}\\mathcal{M}_{ij}/||\\mathcal{M}||\\cdot|i\\rangle\\langle j|$. The $k$-th order approximation thereby evaluates to\n", + "$$\n", + "\\begin{align}\n", + " \\mathbf{x}(t)\\approx \\sum_{m=0}^k\\frac{||x(0)||(||\\mathcal{M}||At)^m}{m!}|x(0)\\rangle + \\sum_{n=1}^k\\frac{||b||(||\\mathcal{M}||A)^{n-1}t^n}{n!}|b\\rangle \\hspace{1cm} (2)\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6f487542", + "metadata": {}, + "source": [ + "Furthermore, if **$A$ is unitary** and so are its powers, we can write $U_m\\equiv A^m, U_n\\equiv A^n, C_m\\equiv||x(0)||(||\\mathcal{M}||t)^m/m!, D_n\\equiv||b||(||\\mathcal{M}||t)^{n-1}t/n!$ and write Equation (2) as" + ] + }, + { + "cell_type": "markdown", + "id": "65006b81", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |x(t)\\rangle \\approx\\frac{1}{\\mathcal{N}^2}\\left(\\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{3cm} (3)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "b52e8c3a", + "metadata": {}, + "source": [ + "where $\\mathcal{N}^2=\\mathcal{C}^2 + \\mathcal{D}^2, \\mathcal{C}\\equiv\\sqrt{\\sum_mC_m}, \\mathcal{D}\\equiv\\sqrt{\\sum_nD_n}$ is a normalization factor. The $j$th element of the solution vector $\\mathbf{x}(t)$ is then $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$. The quantum circuit that extracts $x_j(t)$ is drawn below." + ] + }, + { + "cell_type": "markdown", + "id": "56abca05", + "metadata": {}, + "source": [ + "![LDE Quantum Circuit](imgs/classiq_open-challenge_qc.png)" + ] + }, + { + "cell_type": "markdown", + "id": "1d64b140", + "metadata": {}, + "source": [ + "Vertically, this circuit is made up of three parts: 1) the first ancilla register of one qubit at the top, 2) the second ancilla register of $T=\\log_2(k+1)$ qubits in the middle, and 3) $\\log_2N$ work qubits for state encoding at the bottom. Horizontally, the circuit comprises of four parts: encoding, entangling, decoding, and measurement." + ] + }, + { + "cell_type": "markdown", + "id": "56e7af18", + "metadata": {}, + "source": [ + "#### Encoding" + ] + }, + { + "cell_type": "markdown", + "id": "216d72ec", + "metadata": {}, + "source": [ + "Starting off from the initial state $|\\psi_0\\rangle=|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes|\\phi\\rangle$, one first applies a gate\n", + "$$\n", + "\\begin{align}\n", + " V=\\frac{1}{\\mathcal{N}}\\begin{pmatrix}\\mathcal{C} & \\mathcal{D} \\\\ \\mathcal{D} & -\\mathcal{C}\\end{pmatrix} \\hspace{7cm} (4)\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "08461902", + "metadata": {}, + "source": [ + "on the top ancilla qubit to convert $|0\\rangle\\rightarrow\\frac{1}{\\mathcal{N}}(\\mathcal{C}|0\\rangle + \\mathcal{D}|1\\rangle)$ and generate separate subspaces for $|x(0)\\rangle$ and $|b\\rangle$. Then, controlled by the state of the top ancilla qubit, one applies $V_{S1}, U_{x}$ for $|0\\rangle$ or $V_{S2}, U_b$ for $|1\\rangle$, where $U_x|\\phi\\rangle = |x(0)\\rangle, U_b|\\phi\\rangle = |b\\rangle$, and the first columns of $V_{S1}, V_{S2}$ are" + ] + }, + { + "cell_type": "markdown", + "id": "062e7c3c", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}[\\sqrt{C_0}, \\sqrt{C_1}, ..., \\sqrt{C_{k-1}}, \\sqrt{C_k}]\n", + " \\\\\n", + " V_{S2}(:, 2) &= \\frac{1}{\\mathcal{D}}[\\sqrt{D_1}, \\sqrt{D_2}, ..., \\sqrt{D_k}, 0]\n", + "\\end{align} \\hspace{3cm} (5)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "de957a8f", + "metadata": {}, + "source": [ + "and this will evolve $|\\psi_0\\rangle$ into" + ] + }, + { + "cell_type": "markdown", + "id": "c3977839", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_1\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", + " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{1cm} (6)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a1898564", + "metadata": {}, + "source": [ + "#### Entangling" + ] + }, + { + "cell_type": "markdown", + "id": "dee6e7bd", + "metadata": {}, + "source": [ + "In this part, controlled by the state of the second ancilla register, $U_m$ is applied to the work qubits if the ancilla register is in state $|m\\rangle$. After all $(k+1)$ $U_m$ gates, the state is converted into" + ] + }, + { + "cell_type": "markdown", + "id": "a1a6bfae", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_2\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", + " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle U_m|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle U_{n-1}|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{1cm} (7)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "19f830cf", + "metadata": {}, + "source": [ + "#### Decoding" + ] + }, + { + "cell_type": "markdown", + "id": "f7e29d6e", + "metadata": {}, + "source": [ + "In the decoding step, one simply repeat the encoding step but with $V_{S1}\\rightarrow W_{S1}=V_{S1}^\\dagger, V_{S2}\\rightarrow W_{S2}=V_{S2}^\\dagger, V\\rightarrow W=V^\\dagger$. This reverses the encoding operation and produces the state" + ] + }, + { + "cell_type": "markdown", + "id": "856a97d1", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_3\\rangle = \\frac{1}{\\mathcal{N}^2}|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes\\left(\n", + " \\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", + " \\right) + \\text{other subspaces}\n", + "\\end{align} \\hspace{3mm} (8)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "99106393", + "metadata": {}, + "source": [ + "#### Measurement" + ] + }, + { + "cell_type": "markdown", + "id": "a7897697", + "metadata": {}, + "source": [ + "Finally, we measure and focus only on the subspace where all ancilla qubits are in state $|0\\rangle$. The 'other subspaces' part in Equation (8) then goes away, and the work qubits are in the solution state $|x(t)\\rangle$ given by Equation (3), and $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$ can be extracted." + ] + }, + { + "cell_type": "markdown", + "id": "ebdf7a39", + "metadata": {}, + "source": [ + "### Adapting to this challenge" + ] + }, + { + "cell_type": "markdown", + "id": "e338845d", + "metadata": {}, + "source": [ + "To adapt this algorithm to the Classiq challenge, we need to translate the equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$ into the paper's language. Although it might seem that we are dealing with a second-order differential equation rather than first order as shown in the paper, we can transform this second-order equation into a first-order vector equation by defining the state vector as $\\mathbf{x}(t) = (x(t), dx(t)/dt)$, and this implies" + ] + }, + { + "cell_type": "markdown", + "id": "d0b38245", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " \\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}&= \n", + " \\begin{pmatrix}\\frac{dx}{dt} \\\\ \\frac{d^2x}{dt^2}\\end{pmatrix}\n", + " \\\\\n", + " &= \\begin{pmatrix}\\frac{dx}{dt} \\\\ -x\\end{pmatrix}\n", + " \\\\\n", + " &=\n", + " \\begin{pmatrix}\n", + " 0 & 1 \\\\ -1 & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}\n", + "\\end{align} \\hspace{4cm} (9)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7ff3a861", + "metadata": {}, + "source": [ + "which is of the form used in the paper, with $\\mathcal{M} = \\begin{pmatrix} 0 & 1 \\\\ -1 & 0\\end{pmatrix}$ and $\\mathbf{b}=0$. The initial conditions $x(0)=1$, $\\frac{dx}{dt}(0)=1$ are then translated into $\\mathbf{x}(0) = (1, 1)$." + ] + }, + { + "cell_type": "markdown", + "id": "21ce293e", + "metadata": {}, + "source": [ + "As $\\mathcal{M}$ is already unitary, we can use the algorithm above and define $A=\\mathcal{M}$. Therefore," + ] + }, + { + "cell_type": "markdown", + "id": "35f291ed", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " U_m &= A^m=\\mathcal{M}^m\n", + " \\\\\n", + " C_m &= ||x(0)||(||\\mathcal{M}||t)^m/m! = \\sqrt{2}t^m/m!\n", + " \\\\\n", + " D_n &=0, \\mathcal{D}=0\n", + " \\\\\n", + " \\mathcal{N} &= \\mathcal{C} = \\sqrt{\\sum_{m=0}^k C_m}\n", + " \\\\\n", + " V &= \\begin{pmatrix}1 & 0\\\\0 & -1\\end{pmatrix}\n", + " \\\\\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}(1, \\sqrt{t}, \\sqrt{\\frac{t^2}{2!}}, \\sqrt{\\frac{t^3}{3!}}, ..., \\sqrt{\\frac{t^k}{k!}})\n", + " \\\\\n", + " |x(0)\\rangle &= \\frac{1}{\\sqrt{2}} (1, 1)\n", + "\\end{align} \\hspace{2cm} (10) \n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "fd4f1ad4", + "metadata": {}, + "source": [ + "Note that since $\\mathbf{b}=0$, the top ancilla qubit for separating the $x(0)$ and $b$ subspace is no longer necessary and so is the $V$ gate. We only need $\\log_2 (k+1)$ ancilla qubits and $\\log_2 2=1$ work qubit for the challenge." + ] + }, + { + "cell_type": "markdown", + "id": "1088cf5e", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "7b51c3f4", + "metadata": {}, + "source": [ + "### Code structure" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "336886f3", + "metadata": {}, + "outputs": [], + "source": [ + "from classiq import *\n", + "import numpy as np\n", + "from scipy.special import factorial as fact\n", + "from classiq.execution import ExecutionPreferences\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "e0410740", + "metadata": {}, + "source": [ + "In Classiq SDK, instead of explicitly applying gates in the encoding stage, we can directly prepare the state of the $\\log_2 (k+1)$ ancilla register according to $V_{S1}$ in Equation (10)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3d5b7339", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def prep_ancilla(ancilla_reg: QNum, bound: CReal):\n", + " '''\n", + " Prepares the ancilla register in the state specified by V_S1.\n", + " '''\n", + " C_m = np.array([np.sqrt(2) * t**m / fact(m) for m in range(k + 1)])\n", + " C_m = C_m / np.sum(C_m)\n", + " # Prep ancilla register according to Vs1\n", + " inplace_prepare_state(probabilities=list(C_m), bound=bound, target=ancilla_reg)" + ] + }, + { + "cell_type": "markdown", + "id": "be10bf54", + "metadata": {}, + "source": [ + "Then we write the function for preparing the work qubit and creating entanglement between the work qubit and the ancilla register." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4d84afce", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def operate(ancilla_reg: QNum, work_q: QBit, k: CInt):\n", + " '''\n", + " Prepare the work qubit and entangle each state |m> of ancilla register with U_m operating on work qubit.\n", + " U_(0 mod 4) = I; U_(1 mod 4) = ZX; U_(2 mod 4) = -I = RZ(2Ļ€); U(3 mod 4) = XZ.\n", + " '''\n", + " H(work_q) # prepares the work qubit in |x(0)> = |+>\n", + " @qfunc\n", + " def compose(gate1: QCallable[QBit], gate2: QCallable[QBit], q: QBit):\n", + " '''\n", + " Acts gate1 then gate2 on qubit q. \n", + " '''\n", + " gate1(q)\n", + " gate2(q)\n", + "\n", + " repeat(\n", + " count=k+1,\n", + " iteration=lambda index: control(ctrl=(ancilla_reg==index), \n", + " stmt_block=lambda: if_(condition=((index%4)==0), then=lambda: I(work_q),\n", + " else_=lambda: if_(condition=((index%4)==1), then=lambda: compose(X, Z, work_q),\n", + " else_=lambda: if_(condition=((index%4)==2), then=lambda: RZ(2*np.pi, work_q),\n", + " else_=lambda: compose(Z, X, work_q)))))\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "9c4ac290", + "metadata": {}, + "source": [ + "Since the decoding part of the quantum circuit is just the inverse of the encoding part implemented by prep_ancilla, we can use a within_apply statement to do the whole operation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "70b4780d", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(work_q: Output[QBit], ancilla_reg: Output[QNum]):\n", + " '''\n", + " Decodes the x(t) solution vector from its entanglement with |00...0> of ancilla register state.\n", + " '''\n", + " allocate(1, work_q)\n", + " allocate(np.ceil(np.log2(k + 1)), ancilla_reg)\n", + " within_apply(\n", + " within=lambda: prep_ancilla(ancilla_reg, bound),\n", + " apply=lambda: operate(ancilla_reg, work_q, k)\n", + " )\n", + " if_(condition=(apply_final_H!=0), then=lambda: H(work_q), else_=lambda: I(work_q))" + ] + }, + { + "cell_type": "markdown", + "id": "5da7c314", + "metadata": {}, + "source": [ + "However, there still is a problem with this algorithm: it cannot distinguish between positive and negative dx/dt values. This is because the probabilities we measure are not sensitive to the sign of amplitudes. To solve this, an extra option is added to the above main() function to apply a Hadamard gate to the work qubit before measurement to measure in x-basis. In this way, the difference in the |0> and |1> counts from a second round of measurement would give the relative signs between x(0) and dx/dt(0), although there is still an overall sign ambiguity due to the inability to detect global phase. This would be one drawback of this algorithm, and for now we have to rely on the knowledge that $x(t)>0$ for $0 and |1> counts.\n", + " '''\n", + " results = '''{}'''.format(results)\n", + " results = results.replace(\"\\':\", \"\\',\").replace(\"{\", \"\\\"{\").replace(\"}\", \"}\\\"\").replace(\"[\", \"{\").replace(\"]\", \"}\")\n", + " wq_count0_keyword = \"{'work_q', 0.0, 'ancilla_reg', 0.0}\" # the x(t) counts\n", + " wq_count1_keyword = \"{'work_q', 1.0, 'ancilla_reg', 0.0}\" # the dx/dt(t) counts\n", + " wq_count0, wq_count1 = 0, 0\n", + "\n", + " for res in eval(results):\n", + " if wq_count0_keyword in res:\n", + " wq_count0 = eval(results)[wq_count0_keyword]\n", + " elif wq_count1_keyword in res:\n", + " wq_count1 = eval(results)[wq_count1_keyword]\n", + " \n", + " return wq_count0, wq_count1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bcefb798", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "def simulate(t_val, k, total_counts, need_sign_correction=True):\n", + " global t\n", + " t = t_val\n", + " N2_factor = eval_N2(t, k)\n", + " global apply_final_H\n", + " apply_final_H = 0\n", + " qmod = create_model(main)\n", + " qmod = set_execution_preferences(\n", + " qmod,\n", + " ExecutionPreferences(\n", + " num_shots=total_counts\n", + " ),\n", + " )\n", + " quantum_program = synthesize(qmod)\n", + " print(\"QMOD synthesized.\")\n", + " # show(quantum_program)\n", + " job = execute(quantum_program)\n", + " results = job.result()[0].value.parsed_counts\n", + " wq_count0, wq_count1 = results2counts(results)\n", + " sign_correction_factor = 1\n", + " if need_sign_correction:\n", + " apply_final_H = 1\n", + " qmod_h = create_model(main)\n", + " qmod_h = set_execution_preferences(\n", + " qmod_h,\n", + " ExecutionPreferences(\n", + " num_shots=total_counts\n", + " ),\n", + " )\n", + " quantum_program_h = synthesize(qmod_h)\n", + " print(\"QMOD_H synthesized.\")\n", + " # show(quantum_program)\n", + " job_h = execute(quantum_program_h)\n", + " results_h = job_h.result()[0].value.parsed_counts\n", + " wq_count0_h, wq_count1_h = results2counts(results_h)\n", + " sign_correction_factor = (-1)**( wq_count0_h < wq_count1_h)\n", + "\n", + " x_t = N2_factor * np.sqrt(wq_count0 / total_counts)\n", + " dxdt = N2_factor * np.sqrt(wq_count1 / total_counts) * sign_correction_factor\n", + "\n", + " print('x(t)={:.3f} and dx/dt(t)={:.3f} at t={}.'.format(x_t, dxdt, t))\n", + " \n", + " write_qmod(qmod, 'k{}_bound{:.3f}_t{:.1f}_noConstraints'.format(k, bound, t_val))\n", + " qasm = QuantumProgram.from_qprog(quantum_program).qasm\n", + " file_path = \"k{}_bound{:.3f}_t{:.1f}_noConstraints.qasm\".format(k, bound, t_val)\n", + " with open(file_path, 'w') as file:\n", + " file.write(qasm)\n", + " \n", + " return [x_t, dxdt]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "eb0365cd", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.384 and dx/dt(t)=-0.305 at t=1.\n" + ] + }, + { + "data": { + "text/plain": [ + "[1.3843075398628262, -0.3047144219415329]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "t = 1\n", + "apply_final_H = CInt('apply_final_H')\n", + "apply_final_H = 0\n", + "simulate(t, k, total_counts=1e6)" + ] + }, + { + "cell_type": "markdown", + "id": "d0635c26", + "metadata": {}, + "source": [ + "The analytical solution for this problem is $x^*(t)=\\sin(t)+\\cos(t)$ and $\\frac{dx}{dt}(t)^*=\\cos(t)-\\sin(t)$, and they evaluate to $x^*(1)\\sim1.382$ and $\\frac{dx}{dt}(1)\\sim-0.301^*$ at $t=1$. The algorithm's approximations are therefore within ~1% of the exact values, and the algorithm gives the expected signs. Now let's try plotting the solution as a function of time." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4fae8d0c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.250 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.531 at t=0.4.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.399 at t=0.5.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.260 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.408 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.415 and dx/dt(t)=-0.021 at t=0.8.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.407 and dx/dt(t)=-0.165 at t=0.9.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.381 and dx/dt(t)=-0.299 at t=1.0.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.347 and dx/dt(t)=-0.436 at t=1.1.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.295 and dx/dt(t)=-0.574 at t=1.2000000000000002.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.232 and dx/dt(t)=-0.701 at t=1.3.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.156 and dx/dt(t)=-0.820 at t=1.4000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.072 and dx/dt(t)=-0.930 at t=1.5.\n" + ] + } + ], + "source": [ + "t_vals = np.arange(start=0, stop=1.6, step=0.1)\n", + "x_t_theory = np.sin(t_vals) + np.cos(t_vals)\n", + "dx_dt_theory = np.cos(t_vals) - np.sin(t_vals)\n", + "x_t_simulation = []\n", + "dx_dt_simulation = []\n", + "for t_val in t_vals:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=31, total_counts=1e6)\n", + " x_t_simulation.append(x_t)\n", + " dx_dt_simulation.append(dx_dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "37087d14", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "t_continuous = np.linspace(start=0, stop=1.5, num=100)\n", + "x_t_theory = np.sin(t_continuous) + np.cos(t_continuous)\n", + "dx_dt_theory = np.cos(t_continuous) - np.sin(t_continuous)\n", + "\n", + "fig, ax = plt.subplots(figsize=(6, 5))\n", + "plt.xlabel('t')\n", + "plt.ylabel('x, dx/dt')\n", + "plt.title(\"x(t) and dx/dt(t) vs t\")\n", + "plt.plot(t_continuous, x_t_theory, 'm-', label=\"x(t) expected\")\n", + "plt.plot(t_continuous, dx_dt_theory, 'c-', label=\"dx/dt(t) expected\")\n", + "plt.plot(t_vals, x_t_simulation, 'r.', label=\"x(t) simulated\")\n", + "plt.plot(t_vals, dx_dt_simulation, 'b.', label=\"dx/dt(t) simulated\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "39d752e1", + "metadata": {}, + "source": [ + "So with $k=31$ and bound=0.001 the solution returned by the algorithm agrees very well with prediction. Let's now turn to how less strict bounds are going to affect the accuracy of the algorithm by looking at the time-dependence of kinetic and potential energy." + ] + }, + { + "cell_type": "markdown", + "id": "4a451eab", + "metadata": {}, + "source": [ + "### Bound optimization" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9512349a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Studying bound=0.001...\n", + "QMOD synthesized.\n", + "x(t)=0.999 and dx/dt(t)=1.001 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.897 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.311 and dx/dt(t)=0.532 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.399 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.261 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.411 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.020 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.405 and dx/dt(t)=0.161 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.382 and dx/dt(t)=0.302 at t=1.0.\n", + "Studying bound=0.010...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.778 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.252 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.530 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.398 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.389 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.125 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.415 and dx/dt(t)=0.014 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.407 and dx/dt(t)=0.148 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.387 and dx/dt(t)=0.280 at t=1.0.\n", + "Studying bound=0.050...\n", + "QMOD synthesized.\n", + "x(t)=1.001 and dx/dt(t)=0.999 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.896 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.250 and dx/dt(t)=0.652 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.311 and dx/dt(t)=0.512 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.355 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.191 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.009 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.413 and dx/dt(t)=0.016 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.407 and dx/dt(t)=0.151 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.385 and dx/dt(t)=0.282 at t=1.0.\n", + "Studying bound=0.100...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.096 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.511 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.356 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.388 and dx/dt(t)=0.192 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.012 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.188 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.408 and dx/dt(t)=0.392 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.385 and dx/dt(t)=0.613 at t=1.0.\n" + ] + } + ], + "source": [ + "bound_vals = [0.001, 0.01, 0.05, 0.1]\n", + "t_cont = np.linspace(start=0, stop=1, num=100)\n", + "t_vals_2 = np.arange(start=0, stop=1.1, step=0.1)\n", + "x_t_pred = np.sin(t_cont) + np.cos(t_cont)\n", + "dx_dt_pred = np.cos(t_cont) - np.sin(t_cont)\n", + "x_t_exp = []\n", + "dx_dt_exp = []\n", + "for bound_val in bound_vals:\n", + " print(\"Studying bound={:.3f}...\".format(bound_val))\n", + " bound = bound_val\n", + " x_t_exp_bound = []\n", + " dx_dt_exp_bound = []\n", + " for t_val in t_vals_2:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=31, total_counts=1e6, need_sign_correction=False) \n", + " # sign correction is unnecessary since energies are not sign-sensitive\n", + " x_t_exp_bound.append(x_t)\n", + " dx_dt_exp_bound.append(dx_dt)\n", + " x_t_exp.append(x_t_exp_bound)\n", + " dx_dt_exp.append(dx_dt_exp_bound)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "97000dff", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x_t_exp = np.array(x_t_exp)\n", + "dx_dt_exp = np.array(dx_dt_exp)\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", + "ax1.set_xlabel('t')\n", + "ax1.set_ylabel('E_k, E_p')\n", + "ax1.set_title(\"E_k and E_p vs t for different bounds\")\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", + "ax2.set_title(\"E_k+E_p vs t for different bounds\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('E_k+E_p')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "for i in range(4):\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, bound={:.3f}\".format(bound_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, bound={:.3f}\".format(bound_vals[i]))\n", + " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"bound={:.3f}\".format(bound_vals[i]))\n", + "ax1.legend(loc='best')\n", + "ax2.legend(loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "37622f7a", + "metadata": {}, + "source": [ + "We see that as we use larger and larger bounds of state preparation, both $E_k$ and $E_p$ deviate more and more from the expectation, and total energy $E_k+E_p$ is no longer well conserved especially at large t. We will stick to bound=0.001 for now." + ] + }, + { + "cell_type": "markdown", + "id": "7f698da1", + "metadata": {}, + "source": [ + "Let's finally look at how the circuit can be further optimized in term of circuit depth and width. We first look at the circuit parameters of one of the unconstrained data with k=31 and bound=0.001." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "b850159c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The circuit width is 9 and the circuit_depth is 4994.\n" + ] + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "qmod = create_model(main)\n", + "quantum_program = synthesize(qmod)\n", + "circuit_width = QuantumProgram.from_qprog(quantum_program).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(quantum_program).transpiled_circuit.depth\n", + "print(f\"The circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "61e11044", + "metadata": {}, + "source": [ + "We can see the circuit is narrow but quite deep. Let's try to optimize its depth." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1ca2cc13", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The constrained circuit width is 15 and the circuit_depth is 2324.\n" + ] + } + ], + "source": [ + "qmod_depth = set_constraints(\n", + " qmod, Constraints(optimization_parameter=\"depth\", max_width=15)\n", + ")\n", + "qprog_depth = synthesize(qmod_depth)\n", + "circuit_width = QuantumProgram.from_qprog(qprog_depth).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(qprog_depth).transpiled_circuit.depth\n", + "print(f\"The constrained circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "faf50859", + "metadata": {}, + "source": [ + "Or alternatively, optimize its width even further." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "c9362625", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The constrained circuit width is 7 and the circuit_depth is 7515.\n" + ] + } + ], + "source": [ + "qmod_depth = set_constraints(\n", + " qmod, Constraints(optimization_parameter=\"width\", max_depth=8000)\n", + ")\n", + "qprog_depth = synthesize(qmod_depth)\n", + "circuit_width = QuantumProgram.from_qprog(qprog_depth).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(qprog_depth).transpiled_circuit.depth\n", + "print(f\"The constrained circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "0308d8b9", + "metadata": {}, + "source": [ + "So the minimum circuit width possible is when we have exactly one extra auxiliary qubit beside the work qubit and the 5-qubit ancilla register. The circuit width and depth turn out to be fairly flexible to optimization. Let's also see how for the unconstrained condition, the circuit depth and width depend on the bound value for state preparation." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "0e917eb6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done for bound 0.001.\n", + "Done for bound 0.006.\n", + "Done for bound 0.011.\n", + "Done for bound 0.016.\n", + "Done for bound 0.021.\n", + "Done for bound 0.026.\n", + "Done for bound 0.031.\n", + "Done for bound 0.036.\n", + "Done for bound 0.041.\n", + "Done for bound 0.046.\n", + "Done for bound 0.051.\n" + ] + } + ], + "source": [ + "bound_vals = np.arange(start=0.001, stop=0.052, step=0.005)\n", + "circuit_widths = []\n", + "circuit_depths = []\n", + "for bound_val in bound_vals:\n", + " bound = bound_val\n", + " qmod = create_model(main)\n", + " qprog = synthesize(qmod)\n", + " circuit_width = QuantumProgram.from_qprog(qprog).data.width\n", + " circuit_depth = QuantumProgram.from_qprog(qprog).transpiled_circuit.depth\n", + " circuit_widths.append(circuit_width)\n", + " circuit_depths.append(circuit_depth)\n", + " print('Done for bound {:.3f}.'.format(bound_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "6f7d0e89", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax0 = plt.subplots()\n", + "ax1 = ax0.twinx()\n", + "\n", + "ax0.set_xlabel(\"Bound\")\n", + "ax0.set_ylabel(\"Circuit depth\")\n", + "ax1.set_ylabel(\"Circuit width\")\n", + "p0 = ax0.plot(bound_vals, circuit_depths, 'b.', markersize=8, label=\"Depth\")\n", + "p1 = ax1.plot(bound_vals, circuit_widths, 'r.', markersize=8, label=\"Width\")\n", + "plt.title(\"Circuit depths and widths vs bound, unconstrained\")\n", + "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "49a09c34", + "metadata": {}, + "source": [ + "Here we can see that up to the point bound=0.05 beyond which the algorithm becomes unreliable, circuit width doesn't depend on bound while circuit depth has a maximum reduction of ~20% as bound is increased, yet the dependence is not strictly monotonic. Therefore, for both accuracy and efficiency, bound=0.001 is a good value for circuit optimization." + ] + }, + { + "cell_type": "markdown", + "id": "30654b60", + "metadata": {}, + "source": [ + "### k optimization" + ] + }, + { + "cell_type": "markdown", + "id": "6cee16bc", + "metadata": {}, + "source": [ + "And finally, let's look at how variation in k-value is going to affect the $E_k(t), E_p(t)$ curves and pick out an optimal k value for circuit optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "264cfd0a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Studying k=31...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.782 at t=0.2.\n", + "QMOD synthesized.\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 11\u001b[0m dx_dt_exp_k \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m t_val \u001b[38;5;129;01min\u001b[39;00m t_vals_2:\n\u001b[1;32m---> 13\u001b[0m [x_t, dx_dt] \u001b[38;5;241m=\u001b[39m \u001b[43msimulate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mt_val\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mt_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mk_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtotal_counts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e6\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneed_sign_correction\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m \n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# sign correction is unnecessary since energies are not sign-sensitive\u001b[39;00m\n\u001b[0;32m 15\u001b[0m x_t_exp_k\u001b[38;5;241m.\u001b[39mappend(x_t)\n", + "Input \u001b[1;32mIn [7]\u001b[0m, in \u001b[0;36msimulate\u001b[1;34m(t_val, k, total_counts, need_sign_correction)\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# show(quantum_program)\u001b[39;00m\n\u001b[0;32m 17\u001b[0m job \u001b[38;5;241m=\u001b[39m execute(quantum_program)\n\u001b[1;32m---> 18\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mjob\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mvalue\u001b[38;5;241m.\u001b[39mparsed_counts\n\u001b[0;32m 19\u001b[0m wq_count0, wq_count1 \u001b[38;5;241m=\u001b[39m results2counts(results)\n\u001b[0;32m 20\u001b[0m sign_correction_factor \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:45\u001b[0m, in \u001b[0;36msyncify_function..async_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(async_func)\n\u001b[0;32m 44\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21masync_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs: Any, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m---> 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43masync_func\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:39\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(coro)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun\u001b[39m(coro: Awaitable[T]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# Use this function instead of asyncio.run, since it ALWAYS\u001b[39;00m\n\u001b[0;32m 36\u001b[0m \u001b[38;5;66;03m# creates a new event loop and clears the thread event loop.\u001b[39;00m\n\u001b[0;32m 37\u001b[0m \u001b[38;5;66;03m# Never use asyncio.run in library code.\u001b[39;00m\n\u001b[0;32m 38\u001b[0m loop \u001b[38;5;241m=\u001b[39m get_event_loop()\n\u001b[1;32m---> 39\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcoro\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:83\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 81\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 83\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 84\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:106\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 99\u001b[0m heappop(scheduled)\n\u001b[0;32m 101\u001b[0m timeout \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 102\u001b[0m \u001b[38;5;241m0\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ready \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping\n\u001b[0;32m 103\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mmin\u001b[39m(\u001b[38;5;28mmax\u001b[39m(\n\u001b[0;32m 104\u001b[0m scheduled[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39m_when \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime(), \u001b[38;5;241m0\u001b[39m), \u001b[38;5;241m86400\u001b[39m) \u001b[38;5;28;01mif\u001b[39;00m scheduled\n\u001b[0;32m 105\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 106\u001b[0m event_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_selector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_events(event_list)\n\u001b[0;32m 109\u001b[0m end_time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock_resolution\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:324\u001b[0m, in \u001b[0;36mSelectSelector.select\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 322\u001b[0m ready \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 324\u001b[0m r, w, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_select\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_readers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_writers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mInterruptedError\u001b[39;00m:\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ready\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:315\u001b[0m, in \u001b[0;36mSelectSelector._select\u001b[1;34m(self, r, w, _, timeout)\u001b[0m\n\u001b[0;32m 314\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_select\u001b[39m(\u001b[38;5;28mself\u001b[39m, r, w, _, timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m--> 315\u001b[0m r, w, x \u001b[38;5;241m=\u001b[39m \u001b[43mselect\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 316\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m r, w \u001b[38;5;241m+\u001b[39m x, []\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "t_vals_2 = np.arange(start=0, stop=1.1, step=0.1)\n", + "k_vals = [31, 15, 7, 3]\n", + "x_t_exp = []\n", + "dx_dt_exp = []\n", + "for k_val in k_vals:\n", + " print(\"Studying k={}...\".format(k_val))\n", + " k = k_val\n", + " x_t_exp_k = []\n", + " dx_dt_exp_k = []\n", + " for t_val in t_vals_2:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=k_val, total_counts=1e6, need_sign_correction=False) \n", + " # sign correction is unnecessary since energies are not sign-sensitive\n", + " x_t_exp_k.append(x_t)\n", + " dx_dt_exp_k.append(dx_dt)\n", + " x_t_exp.append(x_t_exp_k)\n", + " dx_dt_exp.append(dx_dt_exp_k)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "268bcd98", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAHwCAYAAACfeoOHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAADS90lEQVR4nOzdd5xU1f3/8deZPtt7X1g6LG3pVUARwS4GK8YYNWqiMWqs8Rtj/GmiidHYotFYY4kVKwgqoKAILNJZ+i5sL2yv087vjxmWBRZY2DJbPk8f97Ezc+/c+5lZ3DPvOeeeq7TWCCGEEEIIIYQQnZ3B3wUIIYQQQgghhBAtIQFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWdAlKqWuUUiv9cNwUpZRWSpk6+tgdTSk1SCm1QSlVpZS6tR32P0MpldPk/lal1AzfbaWUelUpVaaUWuN77NdKqUKlVLVSKrKt62mNI1+LEEKIY/NXG96ZKaUeVkqVKKUK2mn/y5VS1/tuz1dKLWmybopSapevfb1IKRWrlPrO1/7/oz3qaY2mr0UIkAAr/EAplaWUqvP94Ty4POvvuk5FV3ktSqkHlVJvnmCzu4FlWutgrfXT7V2T1nqo1nq57+5UYBaQpLUer5QyA08AZ2mtg7TWB9q7nqZ8v9czO/KYQgjRFfir3fOFYPcRx61WSiW097FPlu+L7/7HWd8L+D2QqrWOa+96tNZvaa3PavLQQ8Czvvb1Y+AGoAQI0Vr/vr3raUq+3BCnotv3KolO63yt9df+LqKNdJfX0hv436k8USll0lq7WnnsLK11je9+LGADtp5iPUattbsV9QghhDi2dmv3lFJaa62OsXqV1npqexy3g/UCDmiti072iW3Q3oK3zd16xP1tWmvtp3qEOCnSAyu6JKXU35VSK5VSoc2sG6+UWqWUKldK5SulnlVKWZqs10qpm3zDZ8qVUs8ppZRvnVEp9bhvWM9e4Nx2qP0apdT3vroqlFLblVIzj7HtPUqpD4547Cml1NNN9rXXN+wnUyk1v5l9zAH+AFzm+7Z6YzPbLAVOB571bTNQKRWqlHpDKVWslNqnlPo/pZThiNfwpFLqAPBgM/u0K6Ve8w0L3gaMO2J9llLqTKXUdcB/gEm+Y78D7PBtVu6rDaXUYKXUV0qpUqXUDqXUpU329ZpS6nml1EKlVA1wulIqQSn1oa/+TNVkWLSvR/o93+urUt7hzGN96/6L98PFZ7567m7ud3PEa7lVKbVNKZV0om2FEKKnO14b3g7HylJK3ef7G12mvKer2JrZzur7TDCsyWPRvt7mGKVUlFLqc982pUqpFQfbxCP2853v5kZfG3LZEevPBL4CEnzrX/M9foGvLSpX3iGzQ454DfcopTYBNaqZ05qUUrN8nycqlLdHXDVZ19jLqZTaA/TlUBv3DvAL4G7f/TOVUgal1L1KqT1KqQO+9jLC9/yDp1Zdp5TaDxxso69VSmX43uPFSqneTY7f7Ocu32t8gUPtf/nxfpe+fcUrpTYppe460baiG9NayyJLhy5AFnDmST7nGmAl3i9dXgIWAwHH2HYMMBHvCIMUIAO4rcl6DXwOhOENKsXAHN+6m4DtQDIQASzzbW9q49fiAm4HzMBlQAUQ0cy2vYFaINh33wjk+15fIFAJDPKtiweGHuOYDwJvnqCu5cD1Te6/AXwCBPvex53AdUe8ht/63md7M/t7FFjhex+TgS1ATnPv3cHfb5N1KU3fd99rzQZ+6TveKLzDnVJ961/zvYdTfP9GAoB1wAOABW9jvReY3eT9qAfO8b2nfwV+bOnvFZhx8LX4jvETEO3v/7dkkUUWWdp7aUW719I2XB9vH6dY7xYOtevfAw8fY9tXgEea3L8Z+NJ3+694w5bZt5wGqGO9BqD/cWpqbEN89wcCNXhPpTHjPaVnN2Bp8ho2+F5Dc+1tFFAFzPM9/3a8bfT1zb13R/4OfW3ow03u/w74EUgCrMC/gXd861J8r+8NvG2zHbjQV+8QvG30/wE/HPF+HOtz1wl/r/g+nwB98H4WucHf/x/I4t9FemCFv3zs+xbu4PKrFjzHDLyDtwE6X2td29xGWut1WusftdYurXUW3j+804/Y7FGtdbnWej/ekJrme/xS4J9a62ytdSneBqs9XkuR7zhOrfW7eHscj+rt1VrvwxuO5voeOgOo1Vr/6LvvAYYppexa63yt9SkNuT2SUsoIXA7cp7Wu8r2P/wB+3mSzPK31M773ua6Z3VyK94NAqdY6G2jNebXn4R1i/KrveOuBD4FLmmzzidb6e621BxiON1A+pLV2aK334v3QdHmT7VdqrRdq71Dj/wIjT7ImpZR6AjgLOF1rXXyqL04IIbqYdmvDT2DiEcfd08LnPdukXX8EuOIY273N4e3Elb7HAJx4vyju7Wu7V2itT3rI7TFcBnyhtf5Ka+0EHscbDCc32eZp32torr09B9iqtf7A9/x/Aq2ZHOom4H6tdY7WugHvl77zjuj5fVBrXeOr5ybgr1rrDO0dTvwXIK1pLyzH/tzVUqm+5/1Ja/3iqb0s0V3IObDCXy7SJ3/+TH+8IWO81tpxrI2UUgPxTgA0Fm9PnAlvb1xTTf+w1wJBvtsJeHv6DtrXgrpO5bXkHtHw7fMduzlv421s36BJY6q1rvENTboTeFkp9T3we6319pOspTlReD9sNH39+4DEJvezOb5TeS+PpTcw4YjhRSa8wbO5enrjHZ7VdHsj3h7hg478N2BTJ3cuTxjeiS8u01pXtPA5QgjRHbRZG66Umoq3d44mj5U3uXue1vrgJD8/6lM7B/bItuhY7e0yIEApNQEoxBuyFvjW/R1vkFuivGcdvai1fvQUamlOAk3aSK21RymVTcvb3MPaW6219j3/VPUGFiilPE0ec+Odn6K5enoDT6nDZzBWeOs/+LqO9bmrpebj7eX94EQbiu5PemBFV5KBdwjpIqXUoONs9zzeYcADtNYheM//PNaEEEfKxztE56Bep1JoCyQqXwvY5Dh5x9j2fWCG7/zKuRz6Nhit9WKt9Sy83wpvx9vL2JyT/Za4BO+3zU2/Pe0F5J7EPtvyvcwGvtVahzVZgrTWvz5GPdlA5hHbB2utz2nh8VryfpXh7Rl+VSk1pYX7FUKInqrZNlxrvbLp32rfY03/drfFDLVHtkXNtre+ETnv4f3S+Argc611lW9dldb691rrvsAFwB3qGPNXnII8mrS3vs8HybS8zT2svW3y/FOVDZx9xO/BprU+Vj3ZwI1HbG/XWv/QgmO19PPJg3g/m7ztGyUmejAJsKJL0Vq/gzeQfq2U6neMzYLxnhtarZQaDPz6GNs15z3gVqVUklIqHLi3VQUfW4zvOGal1CV4zxtZ2NyGvqGpy4FX8YayDADlvW7bhUqpQKABqMY7pLg5hUBKcxNOHOOYBxvxR5RSwb5hQHcAJ7oUT1PvAfcppcJ94fu3J/HcI30ODFRK/dz3npmVUuOaTnJxhDVAlW/SC7vyTs41TCk17hjbH6kQ73mzx6W9lwGaD3yklBrfwn0LIUSP1MI2vD3c7GvXI4D7gXePs+3beIf0zqfJF8ZKqfOUUv194bACb4/k8drcE7YhTbwHnKuUmqm8l5H7Pd52vSUBEOALYKhS6mLfMN9bgdZcnucFvO1/b2iczOrCE2x/n1JqqG/7UN9nm5YoBJJUk8k2j8GJ97ShQOCNln6eEd2T/PKFvxyc/e7gsuDET/HSWr+O9xpmS5VSKc1scifeobZVeHskj9dQHeng5BIb8Z57+lELnnMqr2U1MADvt4mPAPP08a91+jZwJk0aU7z//96B95vbUrzn+R4rrL/v+3lAKfVTC+oDb+CswTv50UrfsV9p4XMB/ox36FAmsITDh/ueFN834GfhPTcpD+9QpMfwTi7R3PZuvL2jab7jl+Cd6bilM17+Ffg/3zlWd56gtq+Aa/H+Oxjdwv0LIURX1p5t+PFMUkdfB7YlX0y+jbcd2gvsAR4+Tn2r8bZ9CcCiJqsGAF/j/bJ4FfAvrfWyY+zmQeB1Xxty6TG2aXrMHcBVwDN426vz8Z4nfMzTpY54fgnecPcocMBX6/ctee4xPAV8ine4dBXeCZ0mHOf4C/C2yf9TSlXinTTr7BYeayneS/oUKKVKjreh7/24GO9Q5lckxPZcqu3OPxdCtIRS6hq8MwN2h2vZCSGEEJ2WUioLb5vbHa7XLoRAemCFEEIIIYQQQnQREmBFp6GUeqGZoUHVSqkX/F3byepOr0UIIYQ4EX+1e0qpXsc4brVSqr0mYhRC+JEMIRZCCCGEEEII0SVID6wQQgghhBBCiC5BAqwQQgghhBBCiC7B5O8CTkVUVJROSUnxdxlCCCG6iXXr1pVoraP9XUdXJm2zEEKItnSstrlLBtiUlBTS09P9XYYQQohuQim1z981dHXSNgshhGhLx2qbZQixEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguoV0DrFLqFaVUkVJqyzHWK6XU00qp3UqpTUqp0e1ZjxBCCCGEEEKIrqu9e2BfA+YcZ/3ZwADfcgPwfDvXI4QQnZrWGqfDjdba36UIIYQQQrSY1pr9lfvb/Tim9ty51vo7pVTKcTa5EHhDez+p/aiUClNKxWut89uzLiGEaC9aa9zVblwVLtzVbtxVbtzVbhw1LuoqHdRVO6mtc1Bf76LKUUu1s55ap4MGpxunU6MdBtAGMLuxhRgIjwwgISGS6N6hRPYNJiTajsGg/P0yhRBCCCEaaa35e/rfeX/H+7x7/rv0De3bbsdq1wDbAolAdpP7Ob7HjgqwSqkb8PbS0qtXrw4pTgghDnLXu2nIbji05DRQn99ATXE9NWX1VNbXUmGoocbkwBHgwRmgcdsMYDZhMlowYTlqnxoPdeYaas2V1JkrqbVXUWuuxGGqI6ghgvDaWML3xpK/sw7vn0dw46KBWpTHTZA2k2AKo1d4NBFJQQQk2bH2smJLsWEOM3fwOySEEEKInsijPTzy4yO8t/M95g+ZT5+QPu16PH8H2BbTWr8IvAgwduxYGVsnhGhzHoeH2l21FG4uIWdnAflFpZRUV1PlbsBhcKOtBgwmEyZlwaptWD12VLiC8IN7sAN2Goy11JmrqD24mOqoMdVTa3RSY3BTY/BQZzDgMVmxG4IJNAYTbAglzNybcGMYwSqA4rpiMhz5lHm20+Apw+5yEeYyE+EMIKIhnLC6GFwNoWRrF9ml+XhKPVRnVFGlqql3OaHeQKAzgARTNCmxMcT3CSJxSAhhI4Ik3AohhBCiTbg9bv70w5/4ZM8nXDvsWm4bfRtKte9IMX8H2Fwgucn9JN9jQgjRbrTWZGXk8r/FKygprsTiMGF1W7G7ArC7gjDqg38abSibjRDApZy+QFpNhamCWlM99UYXDWY3TosCmxGjzYYtMJCwwDAi7AkkB4YTHRhKeICNULuZEJvZ+9NuxmY2nnTdNQ0uSqobyKuoZFdpNpkl2RwoOoCjtBZDlSag1kZIfQhxziSMFhNYwINmc80uvttVRmlWDRWLHdS4FW5sBBmjSApNIDEpjPg+QUSH2ogKshAVZCU62HpKNQohhBCiZ3B6nNy/4n4WZS3iNyN/w00jb2r38Ar+D7CfArcopf4HTAAq5PxXIURbcx5wUvFjBcvWbGBN9W5MmImrTSREx2IzhFFpqaDeWE9VQCkuSwnYDJhDLdhDAwgJDSIyPIz4iCgSQiIIC7ASajcTbDNj7OBzUQOtJgKtJnpHBjKpbzwwvtntymrLycjMYtfePIryKmkocRJUHkBMZSwWt61xO4exnrL6nWRVlPLTzhpKTQ4OGKBMW/G4IrCraCLtkUQH2YkPs3PeiHhmDo7BZJQrsAkhhBA9mcPt4O7v7uab/d9w+5jbuXbYtR127HYNsEqpd4AZQJRSKgf4E2AG0Fq/ACwEzgF2A7XAL9uzHiFE96e1pn5vPeXflVOwspAvazZSGFNNpCGCiPpYUhhIhaWMnPB8+qYk8su50wiLDvR32W0qPCCMyUPTmDw07bDHtdZUl9eTuS+P7P2FFOc6MOVFEFkRg8lhb9zOrVxU2Iops+dQwXoq3TVsrnXy5b4wwj4fwRWjx3D5uGQSwuwIIYQQomepd9Vz+/LbWZm7knvH38v8IfM79PiqK16qYezYsTo9Pd3fZQghOon6/fWUfVNG2TdlbNu8lzXD96NjjMQ1JGBzB+JWbooCC1GJRk6fPprTRw3skCEuXUlDnYuyghqKcirYtzmfov0V1FW6wWNB4X2vaswVZEVsITNoP/uUlaFRE7hx/ExOHxzf4b3RbU0ptU5rPdbfdXRl0jYLIUT3V+us5dalt7KmYA0PTHqAeQPntduxjtU2S4AVQnQ57lo35cvLKV1USvHiYlaH72H/6AoC7cHE1iZgwEidqYaS8FKiBkZy6VlT6BUbfuIdi6O4nR6Kd1aQvbyYHRm5lDtdKGXEYagnOyyDzLAd5FrdjI8bz+/OuJAB0XH+LvmUSIBtPWmbhRCie6t2VPObb37DxuKNPDzlYc7vd367Hu9YbbO/z4EVQogWqc+u58BnByj5tISctXmsPi2b6j4uoufEEOJIpL9OpEQXkZtSwIjRA7huxjRslmP/iXNXOWjYW45jXxUYFIYgM8ZAs/dnkAWD77bB0rMnMjKaDcQNDSduaDjjGIjL6SZrTTEZX2djKTDTr3QUHtzk5e7hgb0PUxRQzpjYkVw38wIGRklPtxBCCNEdVDRUcNNXN7G9dDt/m/Y3ZqfM9lstEmCFEJ2S1pqarTWUfFhCycclbKrOZNvUIoxDLcT3TSLW05+IBgdFIUU4hmjOnj6O8alnHHN/7honDXvLadhTQcPeclxFdQAoiwE0aKen2ecps8EbZAMPD7bNhV1joBll6t4THJnMRvpPiaP/lDi0R1OQWcHOpXmYNiuS9g0EoGRfDo/ufpmCoP0Mj+nH+ZPnMD55PFaj1c/VCyGEEOJkldaXcsOSG9hbsZcnZjzB6b1O92s9EmCFEJ2G1pqaTTUUvVtE3oI8vo/bRcHQGkJnhBFdl0AfIqlyVJAfU0RSajxXnDWV2LCgZvflqXXSsLfCt5TjLKgFvIHVkhJK4JhYrH3DMCcEoYwKj8ONp9qJp8aJu9qBp9qJu8Z52GPuygacedW4a5zgbv70C2U1YgwyY/AFW6Mv/DYbegPMKGPX7aFUBkV8vzDi+4UxnVTKC2vZviqfdSsUkTmJKBRVe8t4a+c3PBb6HEnR4Zw5eibTUqYRExDj7/KFEEIIcQLFtcX8asmvyKnO4ZkznmFK4hR/lyTnwAoh/K92Vy1F7xSx7YudrEzZQ0MixDkTCHAG48FDcWARrnjNhIlDOXfSiGYv4+Kpdx0KrHvKcRbUgPb2oFpSQrD2DcXaNwxLUhCqlZeB0VqjG9y4q514mgu7Nd7H3b77nhonNPenVoHBbjqqh9cYbME2KBxzYlCXHYJbW+ngx2+zWfddNuZqF2ZtoMFYx/6wbWRFbMYa7WTasKnM6DWDIZFDMCj/9lzLObCtJ22zEEJ0LwU1BVy3+DqK64p5buZzjIsb16HHl0mchBCdiqPEQdG7RXy9dA2bI/OwBgUQV5eEUZtoMNZRGFpCaL9QLpo5idSU2KOe72lw0ZBV2Tgk2Jlb7Q2JJoW1VwjWfmFY+4ViSQr2+7Be7dF46lzesFvjbAy2jQH3iLDrqXUBYIqyYx8ZTUBaNOboAL++htaoqnbw8cLdbF1dQGStmwBtxI2bvNBdZEZsoiI6lwmDRzMtaRqT4icRYO741yoBtvWkbRZCiO4juyqbXy35FRUNFTx/5vOkxaR1eA0SYIUQfudxedj/eTYffLWCPFMFEUQR3hANQJntAJVRdQwYkcJlMycQEnj4+ZIehxtHVmXjeayO3CrwAEaFJTnYG1j7hmLtFYIyd+3zUD21Tuq2HqB2QxENeytAgzkpiICRMQSMjMIY0nXPJd2SU84Hi/aQs/UAKQ5FuMc7SVZJQDZ7IzeRE5nBgL69mJY8jenJ00kMSuyQuiTAtp60zUII0T1kVmRy/ZLraXA38O9Z/2Zo5FC/1CEBVgjhN7V7avnf60vIqCkgvj4Zq9uOW7koCCrEkGTm9CmjOX30AAxNriWqnW4a9lUdCqw5Vd7zTg2+wNo3FGvfUCy9Q7r1TMHuygZqN5ZQu7EIZ041KLD2DSUgLQb70EgMAWZ/l3hKqhtcfLI+l0+WZaEK6xnoMBDnC7M15nL2RG0gK3wzgcmK03qdxvSk6YyIHoHJ0D5TN0iAbT1pm4UQouvbVbaLXy35FRrNi7NeZFDEIL/VIgFWCNGhPC4PxZ8W8/biLykKcpBU0w+HoZ7c0EJihsRwyewp9IkNa9xeuzw49ldS7xsS7NjvC6wKzEnB2PqGYu0X5g2s1u4bWI/HWVxL3cZiajcU4yqpA6PCNiiCgLRo7EMiUOau975ordmUU8Fbq/fx9bo8kuoVI2pMxKIwGBROYz2ZEZvJDN9EZUw+E3uPZ3rSdCYnTCbUGtpmdUiAbT1pm4UQomvbdmAbN351IxaDhZdmv0Tf0L5+rUcCrBCiQzgKHWT9O4t3t39NQ7yN+JoU6oy1FCaUc93VZzE42Tv7rHZ5cORUNZ7D2rCvClweb2BNCPL2sPYLw5oSgsEmE6Y3pbXGmVtN7YZiajcW46lyoKxG7EMjCUiLwdovrEvOblxR5+Tj9bm89eM+MgurGdRgZHyxiUibArNCG9zkh+1hV9hPZEdkMDipP49MfYSEoIRWH1sCbOtJ2yyEEF3XxuKN/PqrXxNkCeLls14mOSTZ3yUds22WT4VCiDZRuaaSHc/t4BPn9xjjwokJGUy1o4rs/sXcOH82feLDcORWU7ks29vDmlXZeO1Vc3wgQRPivIG1TygGu/xpOh6lFJakYCxJwYSe04eGvRXUbiiibksJtT8VYQgyYx8eRUBaDJZewV1mJuNQu5lfTE7h6km9WbevjLdX7+fNjXm43JrxxSbGlRjpXTeIhNKB6L2a6j3FWEYHQvNXUhJCCCFEC6QXpHPzNzcTaY/kP2f9p02+GG5P8ilRCHHKtFtT8kkJm57fzJLEnwgKTyC+fgQVrgpyh1Twm/lnkRhqo3ZjCYUfrveewwmYYgMIGBuLrV8Ylj6hGAO75nmcnYEyKGz9w7D1D0Nf1J/6HaXUbiimZm0hNavyMUbYCDg4k3FsoL/LbRGlFGNTIhibEsEfz0vlw59yeGvVPp4prSWwQTFzu5HRbiuRg3sRpGz+LlcIIYToeGX7YOtHMPY6sIWc8m5W5a3i1qW3Eh8Uz3/O+k+rrtPesGcPFQsWEP3737frl+cSYIUQJ81d4yb/lXzWvf4T343JIDK1D70aRnNAl1IwvJ7fXDmHaK2o/jGf/PQCPLUuTDF2wi7sh314FMYgi79fQrekTAbsQ6OwD43CU+/yzmS8sZiq5dlULcvGHB/oPV92ZDSmsK4R/MIDLVx/Wl+um9qHH/eW8taP+1hoK+BTXcPg7DrGl9bRL7rrzsoshBBCnBStYcNbsOhecFTB1gUw/0MIij7pXX2b/S13LL+DlNAUXpz1IpH2yFMqyXXgAMXPPEP5+x9gCAggbN48LCkpp7SvlpAAK4RoMecBJ7nP5rLykx9YN2Uf8ZMG0dc5jkJVgmO0h5suPYfQgnpqPt5Dwc4yUGBPjSRwUgLWvqFdZihrd2CwmQgcE0vgmFjcVQ7qNnnPl61YlEXFoiwsKSHemYyHR3WJHnClFJP6RTKpXyQl1Q28n57DwvV5JPYN9ndpQgghRMeoLobPfgc7voDeU2Dk5bDwbnh1Dvx8AYT1avGuvtr3FXd/dzcDwwfy4qwXT2liRE99PaWvv8GBF1/E09BA+OWXE3XLzZjCw096XydDJnESQpxQQ14D+x/fzzcrl5MxpYRk51DsriByAooJHJ7ADeeOwr69nOof83GX1mMIMhM4Po7ACfGYQqV3rDNxHaijdmMxtRuKcBXVgUFhGxhOQFo0tiGRPXaGZ5nEqfWkbRZCiHa0fSF8divUV8DMB2DizWAwwP4f4e1LwRzgDbExQ064qy/2fsH9K+9neNRw/nXmvwi2nNyXwdrjofKLLyh68klcefkEnXEGMXfeibVvn1N9dc2SWYiFECetfl89mY9lsmjrV+wbX0NK7UgsbhtZgUWEp/XhVxMHYNxQQu3GYnB5sKSEEDQpAfvQSJTJ4O/yxXForXHm11C7sZi6DcW4KxpQZgO21EhvmB0Q3qN+hxJgW0/aZiGEaAf1lbD4Plj/JsQOh4tfhNjUw7cp2AJv/gxc9TD/fUgef8zdLdi1gD/98CfGxo3l2TOeJcAccFLl1K5dS+Fjf6N+yxZsqanE3HMPgROOfbzWkFmIhRAtVpdVx65Hd/F51mIKR3romzqS/lUm9gSVkDQmlrt6D0KvL6bh5a0oi4HAMTEETkzAEt81JgkSvpmME4KwJAQROjsFx75K70zGm0uo21iMIcB0aCbj3iEogwz/FkIIITrUvh9gwY1QkQNT74AZ94GpmXlE4obBdYvhjYvgjQvh0v/CgDOP2uyd7e/wl9V/YUrCFJ48/UnsJnuLS2nIzKToH/+g+utvMMXFkfDYo4Scfz7K0PFfdkuAFUI0qt9fz7bHtvFxwUKqBlrpo9IIqoSdQWUMHTWQ+4JScG8sxrFxL6ZoO6Hn9yVwTKxcp7WLUwaFtU8o1j6hhJ3fj/pdZd5rzP5URM3qAoyhVgLSogmamogxWCbgEkIIIdqVqwGWPgw/PAPhveGXi6DXxOM/JzwFrlsCb14M71wGc/8Nw+c1rn596+s8nv44M5Jn8I/p/8BibFl77ioro+Rfz1P2zjsYLBaib/sdEb/4BQZ7y8NvW5NPnUIIHIUOfvr7T3xUuBB3Yjh93BOJKHezLaic04b2535PPO7NZTipwjYkkqBJ8Vj7h8mkTN2QMhmwD4nEPiQST4Ob+owD1G4opmpFDtU/5hM8I4ngqYkoc888V1YIIYRoVwVb4KMboGgrjP4FzP4LWFt4wfOgGLjmC3jnCvjweqgthQk38O+N/+bZDc9yVu+zeHTao5gNJ5680eNwUPbmW5S88AKe6mrC5s0j+tbfYoqKauULbD0JsEL0YM5yJ6v+uYqP8r/EGpZI78AZNFQ6yAip4tz+vbm0PALP9mp0kJngGcneSZnCZFKmnsJgNRKQFkNAWgzO4loqFmVRuXgfNT8WEDInhYCR0TK0WAghRLfnqa/HmZODJSUFZWqn+ORxww9Pw9JHwB4OV74HA2ef/H5soXDVh/DBtehFd/FM3je8VLmN8/uez0NTHsJkOH79WmuqvvySon88gTMnh8BppxF7111YBww4xRfW9iTACtEDuevdfP38N3ya9Q1hln4MUGdSV11Pdmgt58XHcmmJA/bWYOodQtBZvbEPi+pRE/qIo5mjA4i6OpX6PeVULMyk7N0dVH+fS9i5fbH2Ofmp94UQQojOyFNbS/32HdRv3dq4NOzdC243xrAwgmfNInjObAInTGi7MFuaCR//GvavgiEXwHn/hMBTuyYrAGY7+pI3+Nv75/Nm5Tbm2ZL44+Q/YzhBeK1dv56ix/5G3YYNWAcOJPnl/xA0Zcqp19FOJMAK0YN4XB4+e/NzFm1fQaxzKKkNs6lx11Eb6mR2WAQRFU7UAQcBo2IInBSPJaGFQ1ZEj2HrF4b15jRqNxRRuTiL4n9vwjY0ktCz+2CO8t/5MEIIIcTJclfX0LA9wxtUt22jbutWHHszweMBwBgVhW1oKkFnzsSSlEzNqlVUfvEF5e+/3zZhVmv46Q1Y/AdQBu95qyMug1aeouXRHh5Z+yjvOXKZH9CXe7YuR310g3f/zUwC5cjOpuiJJ6ha9CXG6CjiH/5/hM6dizJ2ztOFJMAK0QO4PC4++OxDvl63ht5VYxhedzYOcy2BYZo55jCsTg8mk5HAc5MJHBODIeDE50aInksZFIGjY7EPi6J6ZS5Vy3MozFhH0MR4gmf2whgo/36EEEJ0Lu6qKuq3ZVC/bVtjz6ojK8sbIgFTTAy21FRCZs/BNnQotqGpmGJiDpvvI+xnF+Opr6dm5Uoqv1zcujBbXQSf3go7F0HKaXDR8xCW3PrX6XHzpx/+xCd7PuHaYddy2+jbUAlPw1cPQH25d4Zi3zm17spKSp5/gbI33wSjkajf/IbI667FENi5ryoh14EVohurc9Xxv2/fZeUPW+hfMoGQhkgs1gaS7DaGYUIpsA2OIGhSgndSJjmfUZwCd5WDyq/2UbO2AGU1ETIzmaBJCV1q2LlcB7b1pG0WQnQW7srKw4Jq/dZtOPbta1xviotrDKm21FTsQ4diio4+6eM0DbPVS5fiqa1tWZjN+Aw++x00VMOZD8KEm6ANLkfj9Dj5w4o/8GXWl/wm7TfcNOKmQwF8/Zvw6W8hYTT60nco+2QxJc89h7uyktC5c4n+3a2YY2NbXUNbOlbbLAFWiG7I5XHxyqrXWL1sJ4MKJxHqCiXM7qS/xUYsBlSAiaDxcd5JmcJt/i5XdBPOghrKF2bSsLMMY4SN0LNTvOdPd4HZqiXAtp60zUIcX0FNAe/teI9aVy0JgQkkBieSGORdgi3B/i6vy3KVlXnD6rZt1G/1hlZndnbjenNCwqGwOnQottRUTJGtOL/0GFoUZl01sOhe2Pg2xI+EuS9CzOA2Ob7D7eCub+9iafZSbh9zO9cOu/aobXTG51Q/eSNFG0NxVGgCJk0k9u67sQ0Z0iY1tDUJsEL0EJllmTz26r/omzmZeHcoUXYPA80WrChMSUEET04gYHg0ytx1esdE11K/s4zyL/biKqzF0juE0HP7YO0V4u+yjksCbOtJ29wzuRxudqUXsW1lLsqgmHb5IKKSZP6EpjIOZPD6ttdZnLkYjcZqtFLrqj1smxBLSGOYTQhKIDEokaTgJBICE0gISiDAHOCn6jsXV2lpY0g9eN6qMze3cb05KckXVr1B1TY0FVN4eIfX2WyYDQkkOKGW4LgDBP7sZtTp9zZ7PuqpqHfVc/vy21mZu5J7x9/L/CHzj9qmbvMWih57jNr0dCyhbmImmQj6wwJUzKA2qaE9SIAVopvTWvPqx2+weW0RI8rHMCQQkoxm3AZFQFo0oZMTsCTJN7yiY2iPpia9gMol+/BUO7GPjCZ0dgqmiM7Z4y8BtvWkbe5Zygpq2PpdHtt/zKeh1kV4XAD1tS4aap1MOL8vabN6YejBp6VorVmZu5LXt77O6oLVBJgC+NnAn3HVkKuID4ynoqGC3OrcZpe86jwa3A2H7S/CFnFUwD24xAfFYzV2v0vcuUpKqN+6lTpfUK3fug1Xfn7jenPvXo3Dfw8GVmNo55sV31NVTs0Lt1P59TKq8+x4nPh6Zs8keM6cVs9mXOus5dalt7KmYA0PTHqAeQPnHbbemZdH0ZP/pPKzzzBGRBB9628JmzoQ9c6loD0w/wNIHN3al9kuJMAK0Y3lZObw2H+fo1fxeFINoQyxmcBkIOzMXoRNiJdJmYTfeBpcVH2bQ/WKXLTWBE1JJOT0ZAy2zjWHoATY1pO2uftzuz1kbihhy3e55O4ow2BU9B0VzbBpiSQMCKO+xsm3b+1gz/pi4vuFMvOaIYRG96yeQ4fbwRd7v+CNbW+wu3w3MQExXDXkKn428GeEWFo2EkVrzYH6A95AW5VLXk0eOVU5jeE2ryYPl8d12HNi7DEkBjfpvQ1KarwdGxiL2dA5PwdorXEVFePI3EvDnj049mbSsHcPjt17cBUXN25nSUk5vGc1dQjGkM49sgeA/I3w0Y1QnAFjr8Mz7X5q1qxvZpjxqYXZakc1v/nmN2ws3sjDUx7m/H7nN65zV1dz4MWXKH39ddCaiGuuIfKGX2EM8o2QOLAH/nsR1JbCZW9Cv9Pb+MW3ngRYIbohj8vDW//6H+vz8xhZMZphgRBrNNPQK4je81MxhXa/b2RF1+SqaKBycRa164swBJgIObM3gePjUMbOMZRdAmzrSdvcfVWV1rNtZR7bvs+jtsJBUISVoaclkjolgYCQw4dAaq3ZuaaQ7/63E49HM3Vef1KnJnSJc+FPhXY6cVdVUVGcw1ebF7By+2I8FRX0VTFMChpGH0MMurIKd0UFnopK3BUVGIKCMCclYklKxpyU5L2dnIw5Ph5lPnHQdHvcFNcVNwbanOqcxqCbW5VLQW0BHu1p3N6ojMQGxHoD7hHn3iYGJRJtj8ZoaPvLpRzMGBqNx+nEmZPjDamZmTj27sWxZy/OzCw81dWNz1GBAZiTYjHHBGAeOADjhOkYUoeiA2y4tdu7eI742dLbzT23yXqP9uDyuI65n6bvaWO9vn/XiiN+ag1561D7V4PZDv1nQUTvw7YzOFxEbcohbvUeon/ah6neiSPIRtG4PhRN7E/Z0ES00XDoOc0ca3nOcnaW7uTRaY8yO2W29/12uSj/4AOKn3kW94EDhJx/PjG334Y5IeHoX1JlPrx5MRzYDRe/BEMvau2vvU1JgBWim8n5IYcnPnyReMcohhvCGGQz4jEbiLywH6Fj47rthwXRtTlyq6n4Yi8NeyswRdsJPbsPtiERfv/32h0DrFLqFeA8oEhrPayZ9Qp4CjgHqAWu0Vr/5Fv3C+D/fJs+rLV+/UTHk7a5e9Eezf6MUrZ8m8u+zSVooPfQSIZNS6TXsMgTDg+uKq1n6RsZ5Gwvo/ewSE7/+WACO+mXqlprdG0t7ooK3JWVuMsrfLcr8FT4bpf71vnuH3zcU1Nz3H0bgoIwhoZ6l7BQDMEheKqqcOTm4MzLB6ezycYGTHGxjcHWkpzkDbiJ3tvGqJZNiuf0OCmsKSSvOo/c6lxyqnMab+dW51JcW4zm0Od/k8GE1Wj1vg9NHm8aQA+7fXAbTePtg9tYHB4SDkDiAe1bvLfjS8HUJP+VBkFupCI3EnKjfD8jFWVBtPoaqG3JpEwYDUYMyoBRGVGow14zHP4+eW94wOVAazcYjGiDGZQ6ersmt80Ozci9HsZvdzNmlwe7AyrtsHagYtUQA1t6g6eZ/+eCzEH89bS/MiN5Blprqr/9lqK/P45jzx7sY8cQe8892IcPP/6LrCuDty+D7DVw3hMw9ujJn/xFAqwQ3YSzzMlHf/2ENexjZPUohgcqoo0mHH1D6H3FEIzBbTMhgBDtRWtNfUYpFQszcZXUYe0bSui5fbEk+m/il24aYKcB1cAbxwiw5wC/xRtgJwBPaa0nKKUigHRgLKCBdcAYrXXZ8Y4nbXPb0h4P7rIyXIWFOAsLcRUVe28XFeIqKkLXN2CKjcUcF4cpPg5zXDzm+DhMcXEYw8JO+UuhuioHGT/ks3VFLpUl9diDzfSfGEXKxDAsYQqn24nD48DhdjT+PPhYmDWMYVHDMBlMvteg2fxtLqs+2o3RYmDGlYPpPyamLd+mo2itcZeX4youxlVUjLus1Bc+mwbPQ0H0YGg9LEgeyWw+FEJDQjCGhlJh87DNsY8MZw61dsWAXqM4LfVseiWmYggJwRgWhjE4+LjDQbXbjauwEEdODs6cXJw52YduZ2cfNoQWQNlsmBMTsST5gm3TkJuUdGho6Ak43A7vUGRf721edR4Oj8N7DN9/4O3xO3gb1bR3EaxVDQTmlRGUW05AXhmBueUE5pdhLznUm+oxKOpjQ6lNDKcmJoC6CKgNcVBnr8DjLIKGapR312ALheA4VHA8BMWhgqIx1pVjLM/GWL7fu7gaMAJGWzjGyH4YIgdgih6IMbwfRpMFozJiNBi9P5U3dJoMpqNuH7ad4ehtDz5uUCc5QkhrWPcqLP4/MJrgnH/A8HknHciPPZvxoWHGGA/1mCulqN++ncLHHqN21Y+Ye/ci5s47CT7zzJb/HXDUwvu/gF1L4Iz/g9Pu7BRfJEiAFaKL01qT/V42z3/zXyKsQxhpCGegzYjLYiD64gGEpMX4vRdLiJOh3R5qVhdQ+fU+PHUuAkbFEDo7BaMfemm6Y4AFUEqlAJ8fI8D+G1iutX7Hd38HMOPgorW+sbntjkXa5pbz1NYeCqVFhTgKCnAWFuAoLMRVWIi7qBhPyQFwHX6eo1YKHWLDHWLGYwRjlRtjeR3KffjQRrfFRF1kIHXhAdRE2KkKt1IZZqEyzEx5iJHSEAPVVs+hMOpyEHggmuSc4SQWDsGoTeSH7GFL7AoyIzbhMbhb/NqCLcFMjJ/I1MSpTE6YTFxgHGUFNXz9WgZFWZUMGBfLtMsHYgs8uXMytdZ4KitxFRXhLCryvnfFxbiKirzLwdvFxWiHo9l9GIKCMIaEYAg7GEZDDwXT0BAMoU0eDzsUWFVAAEop3B43y3OW8/rW11lftJ5gSzCXDryUK4dcSUxA2wdzT309zrw8nNm+YJudgzM3B4cv4DYdegveiYEOC7aJSZiTk7yBNz4eZTm5L7i1240zN5cG33Dfhr0Hz1Hdi6eionE7FRCAtU8fLH37Yk3phSXSjDWgBovOQZVshcIt4PDVqowQPRjihkP8CO/P2GEQEHH8YtxO736y10D2au/PCt+lckx27yREyeMheQIkjYfAtr9MznFVFXivsbprCfSdARf+C0ITW73bE4VZa58+FD/7HBULFmAMCSHq5psJv/yyk/5dA973+JObYdO7MOHXMPsvbXJt2taQACtEF1a/r54v/m8RP8ZmMbJuJMMDFZEGE44BofS+bDDGIOl1FV2Xp85F5bJsqr/3XoYj6LREgqcnY7C2/TlZx9JDA+znwKNa65W++98A9+ANsDat9cO+x/8I1GmtHz/esdqibX7h7vsxlIzG6KpCeapAV+GhBpeqxmmopcFUS725jlpzHbXWBuqtRurMJuqtJuotvsVqxmkyopQRMKAweH9qw+H3G38qwOi7r1DagMKI7yw1wPvvUONG40Ir16HbjYsbrVwoj5PgmnrCqusJq27w/XQSXuUgrMpFRLWbsGo3gQ1Hf/aqtUBZEJQGK0qDoTQYyoJ8t30/KwLBbTz8i0rl0YTVQGQlRFZpoiohokoTVakaHwuv1hiOOGSdxUBxaBAFcROpDp0Iplg8NFBq201mdBa5kRqX2YrSJgyYUJhQmFH64G3vYmjymFOVUG3YSrVxKy5VDoDVk0CQZxhB7qEMzu9L73wPTjPs7GWhLMQIWmNrqCO4pozg6nKCaioIriknuLrc+7PJbZP78EAPUG+1UxUY1rhUB4ZSFXTofk1AMHW2QOqtAXiMpzZ5nIcGyo2rKDV+jcNQhNkTSYT7TMLdUzDgp5nVtcbeUENYRQnhFcWEV5QQVlnc5HYJRs+hLx48SlEZFEF5aBRlIVGUhUZTHhpNWUgUFSGR2OuriS7NJ8q3RJfmE1lWcNh7Xh0QQklEPMUR8ZSEx1MdHoY9uJ5YayEp7kxSnHtIdO3HiPcLlTplJ8vUl33mfmSZ+5Jl7keOqTdO1TafWSLcxQx0ZDDQmcFAxzb6OHdjwvua84yJ7LSkssOSyg5zKnmmZPTJ9qi20IS6FVxf8Qw2Xc9bIdexOOD8djmWyeWgf9YWUnelM2jPeqxO70zVLqOJNWkz+W78edTbAlt1DKU9XF35IufUfsx39jN4IfQO3Ork/r9JTQjhT+cPbVUdjfUco23uXNNACiEOoz2afc/t49Uf3yc4oh+zXWkMCDLisBoJnTeQ4BHR/i5RiFYz2E2EndOHoInxVHyZSdXSbGrWFhA6K4WAsbGoHnwpjs5OKXUDcANAr169Wr0/d3AQ5sKdoILwmINwG+JxG0PQBhMGwO5bwl2A04OlrBqLoxKzowqLowqLsxKLowqzsxLtqcKjqnGpahzGGuotHuotUGtV1FmgzqKptSrqLZpaq6bWoqm3Qq0V73rfT5dJ+cICRFR7w2FEpYGIauW7DxHVmvAqD2E1nqOColtBRZCZsiALBZFB7OhlpTzYRlWgFUegxhPgxmSvJ8hUTaS7nHBPJRFaE6s1Jg21KowKQxQVnhjKamI5YIzjgDEBjZUkVx59HVn0d+5loN5Ngq0Yi1VDtJH95r7sMg9mvXkwe40DqKkPIKS6jNDqUkKqGrC5InGbk9AGCwE1uSTveYvYonWYmly+pdYWSGVwBBVBEd6fwRFUBoVTGRzceNttOtSTatcphHjGol2aBnJwuTZgqd2MveYrwmq+xFZlRNcMwW75GcP3RBFVvIaBOz/A5jz6PNJ6i70xjGYn9PcG0qCjQ6rT3H4jNlxUUmpaRplxOW5Vg82TQqLjBkI8o3xfcviRUtTZgqizBZEfm3L0ao+H4JpywiuKD4VcX8Dtt28rITXlze7WoxTlIdEUR8Szu/cwSiLiKQmPQ4caiTMV0Me5hyHOPaS4vibaXQROwAmlhkgyzf1It00ky9SPLHM/ioxx7RYaAUqN0fxoj+ZH+zQALLqefo5dDHRuY6BjG6PrVzOj7isAqlUQuyxD2Gkewg5LKrvNg2gw2Ft1/ABPNb+s/BfT6payxzyAZ8PuJs+U3OrXdSwuk4Xt/Uezvf/oxjAbV7SfjamTKQtrmxEAWhl4PeRGKg2hXF79OoGeav4Z/gccqnNdAk96YIXopGq21/DNncv4fsBeRjiGMyIQwg0mHEPCSblkkFwaR3RbDfsrqfh8L479VZjjAgg9py+2ge17Ifoe2gPb+YcQ11egD+yhIS+TuoJcagqLqC0up7a0ntp6CzXuMOo8odTpMOpUOPWE4KaZ3h2tseh6LK4azM4qLPUVmOtKvaHXUYXFUYnF6fvpqMagm/T0mc1gNEB9w1G7NYSGYo6JwRQTgyk2FlNsjPd+bCymmFjMsTEYrRpVthuKt0PxTu/Pkp1QmdtkR2aI7A/Rgw4tUYO8j5lP4oNjVSHkpkPOWshJh9yfwBcOXdYYdlsuZUvpBAoPBGE0KwaMjWXYtCRiUoLRTqf3HNv8fFwFBTjzC3AW5OPKL8BZUIArPx93k2GjBxkjIxvPw1Vmc+O5p67iYnRd3dG/UquiJMhEdvL51IWejslQyYDk3QwfNoCAuETv+xcdjSGwdT1JrbG3Yi9vbH2Dz/Z8htPjZHrydK4Zeg2jY0Z3m1N1PA0NOHNzcebk4MzLwxgaiqVvPyxJ8RiqsqBgs3fJ3+T92eD73SsDRA44YgjwcAjqhF+oa+29VEz26kPDjoszvOuUwTt0OXkC9JroHX4cmtzy8z73LoePb4aqfJh2F0y7E4zd7HNZ+ivw+R3e9+bKd8Hevu1wc2QIsRBdhMflYd/f9/HOms+wJCUx2hhOf6uRepuRhMsGEZQa5e8ShWh3WmvqNpdQ8WUW7tJ6rAPDCTu3D+bY9vlQ20MD7LnALRyaxOlprfV43yRO64CDV7b/Ce8kTqXHO1aHt8115VC617sc2AOle9AH9uIsyaW2xkOdJ4xaT5j3p7kXtaYE6oih1hNKrcNGXZ0Rp6P5z0AWk8ZqdmEzOLGqBmzKQXCYmZDYQEKTwgnvE0NAr3gMdl8PjtbeD7JHhtTiHVBbcmjH5gCIGnh4SI0eDOEp3klf2prHTfn2LWxdlknGdisNTithxlyGBixmsH0Ztuh4SBoHSWO8P2OGHrcOT20tzoJCXAX5hwJuQUHjY9rh9IZ5Xwg9/HY0pugYjEGB7K/cz/d537N+/Q4ifxxOQEMoG5O+QY05wOTkSUxJnMKAsAEdGha11qQXpvP61tf5NudbrEYrF/S7gJ+n/pw+oX06rI4O43JA+b5D//8UboWCTd5/u27fOcQmO8QN84bUuOEQNwJiUsHSha/tW1cGOesOhdqc9MYveQiOP3QebfIE7+s1HfGFmLMOvv4zrH7e+wXT3Be9//90V1s/ho9+5X2tV30EIfEdengJsEJ0AdVbqll56yq+G7aT4e5URgRCqMGEc1gEvecNwmCTUf+iZ9EuD9U/5FG5dD+6wU3guDhCZvVu89m2u2OAVUq9g7c3NQooBP4EmAG01i/4LqPzLDAH72V0fqm1Tvc991rgD75dPaK1fvVEx+tUbXNdme+D+V4o3eMLuL7bdYcmU3ZqK3UBg6kNHEytrS91piRqVbQ39Dps1Fa5qKtyUlPegLPh8ImMrBYXIbYqQgwFBHsyCSGbYGMRIcYiQgIaMMX2PTykRg+EkKQOmRTF4/aQuamErd/lkp1RhjIo+o6MYuj0RJJ6G1H56329tOu8Pw+GbJMdEkZB0ljfMg5Cmrl2ZBuqrq7l8zfXcmCDm6qQYhb2eZmygHxi7DFMTpzMlMQpTIqfRKg1tF2O7/K4+Hrf17y29TW2HthKuDWcywdfzmWDLiPS3sETAbU1Zz2UZR36oqd0z6HbFTney70cFBDl61EdcSisRvaDdrg+bKfidkHR1iaTQ62G8v3edSab9/+H5PGQPBGswfDF76FkB4y/Ac78c9cO8y21Zxn8b753Yqyff+z9d9FBJMAK0Yl5XB6y/5bNh98tRg+IZowpjL5WI3U2I0lXDCFw0Alm5xOim3PXOKn6Zj/VP+ajTAaCZyQRfFoiytw2H666Y4DtaF2mba4thdLMJsF2z6FeqPryJhsq75DCyL5oaxgNRXlUFldT6Qij0hVDlTuGSpVMpSeBKkcobs/h/xYDQiyERNkIjrQTEmUjJNJOsO9nUIQVo7Htg2x1WQPbVuaybWUeNRUOgsKtpE5NIHVKAoFhxzhXVGtvT1xOum9Z6+2JO9gLF5xweKCNT2uXD+17NxSz/K3tNNS6CJpSy4a4pawqXEWVowqDMjA8ajhTEqcwNWEqqZGpGFsZrGqcNXy06yPe3PYmeTV59A7pzdWpV3NBvwuwmTrX+X7H5aiFsswmIfXgiIRM3zD1Jp/zbWHe8BHR9+glILJTXDalU6jMh5w1h0Jt3gbw+C6zFJwAFz0H/c7wa4kdLncdvHWJd+j1VR9C/MgOOawEWCE6qZrtNay+cS3LUrczzDiIEQEQbDDhSoui19yBHToTqxCdnbO4lopFWdRvO4Ax1ELU9cMxR7f+w7QE2NbrFm1zbelhQ5Ibe27ryg4/RzVqkLdH1XdOmPZoaisdVJbUUXmgnqoDdVSW1FPp+1ld1oD2HPq8pQyKoDCrN+BG2QmJtBESefC2ncBQS4snL9MeTc72MrZ8l0vmphK0R9MrNYKh0xJJGR6J4VSCsqvBe97jwXNpc9Z6Qy54L4MSO/RQoE0c631v2qBnubbSwfK3tpO5sYT4/qHMuHog+9nD93nf833u92wp2YJGE2oNZXK8t3d2csJkogNafv5lYU0hb21/iw92fECVs4rRMaO5Zug1TE+efvLX/ewoDVW+L132Hr1U5R++bUCkL5QeGVT7nPhSNaJ5znrI3wAlu2DIeX45F7RTKN4J/50LDZVwxTuQMrXdDykBVohORns0OU/n8NknS6kfFspYX69rtd1Ir/lDCOjfQ/9ACtECDXvLqV5dQMSlg1DG1vcaSIBtPWmbj83j9lBd1kDlgXoqS+qo8v2sLPGG3ZqKw69bajQZCD4YaiNthETZG3+GRNmwBZppqHGR8UM+W1fkUlFchy3QzJDJ8QydlkBoG3ypc5TqYt8EUb5Am/sTOKq862yhkDjGe95g7yneYHsyk081obVmx48FrHh3J1rD1EsGMGRKPEopyurLWJW3qjHQHqg/AMDgiMFMTpjM1MSppEWnYW5mMp0dpTt4Y9sbLNy7EA8ezux1Jr8Y+gtGRI845bekTdVXHBFOMw99gVJTdPi2gTGHgmlkk5Aa3gfsYX4pX/QQFTnw34u9Q9MveRUGn9uuh5MAK0QnUr+vnnU3rOfr3lsZYunHiEAIUEY8Y2LodeEADBbpdRWiI0mAbT1pm0+dy+n2htoD9VSVHOy9PdSTW1/jPGx7s9WIx61xuzzE9wtl6LRE+o2OxtRGQ+pbxOP2TlSV02TW46JtgAajxRtie0+BlCmQNP6khx1XHqhj6RsZ5O4oJ2V4JDOuGkxg6KFh0B7tYWfZTlbmruT73O/ZULQBl3YRYApgQvwEpiZOZXLCZPZX7ue1ra+xKn8VdpOdiwdczFVDriIpOKmN35AWcDu971HxzqPPS609cPi2wfGHek4P61Ht4z0XUwh/qS2Ft+ZB3nq44BkYdVW7HUoCrBCdgNaawjcL+eKlb6kcYWO8OZTeViNVgUZSfj4Ue0r7TFIhhDg+CbCtJ21z+3HUuQ7vvT1QhzIoBk+MJyopyN/lHVJXBvt/hKyV3qVgk3eiIIPZ20ObMsU77DB5AlhOPKO49mg2Lcth1cd7MFuMzJg/iH6jm7/eZbWjmtUFq/kh9wdW5q4kryavcV20PZorh1zJJQMvabfJoI4uXnvPTc39yXv+YO46yN8IrvpD24QkNQmoB3tU+3lnpW7B+yOE3zRUw3s/hz1LYdZDMOV37XIYCbBC+Jmz1MmmX2/hy4CNDArszYhAhVUZYHwcvc7vjzJ30nNvhOgBJMC2nrTN4ij1FbB/NWStgH3feyfD0W4wmCBhtDfQ9p4KvSYct1exNL+Gr1/dRvH+KgZOiGXaZQOxHuda6Fprsiqz+CHvB0IsIcxOmY3F2LYzlx+lpuTwsJq7Dup8V54y2byTXyWOgcTR3nOIw1PAbG/fmoRoTy4HLLgRtn4Ek2/1Btk2nghMAqwQflS2tIwvHvqWA0MV462hJFuMVAYZ6PuLEdiSZSiQEP4mAbb1pG0WJ9RQ5Q20+1ZC1veQ9xN4XN6JoRLSfEOOp0Kvid7zaptwuz2sW5hF+qJ9BIZaOOPqISQP8dOkRI5ab+/ywaCak35okisUxAzxBtXEMd5JrmKGQDPn5QrR5XncsPAuSH8Z0q6C859q02taS4AVwg88Dg87/m8XnxSsZWBoIsMDFBZlgMkJ9DqnL8okva5CdAYSYFtP2mZx0hw13suUZH3v7aHNSfderkQZvNchTZnqC7STGicnKsyq5OtXt1FeWMvw05OYNLcf5vacN8LjhuIdTXpW06Fwm7cnGbzDgBNHe2dlThzjvbyInKMqehKtYfmj8O2jMOhcmPdym40ukAArRAer3VnLl7etILdvA+MtISRajJSHGBjwi5FYEzvROUtCCAmwbUDaZtFqjlrvhFD7vveeQ5uz1nc9WgVxw71htvcUXPETWbWklE1LcwiLDeDMa1KJ7RPS+uNr7b12ak66L6z+5J2oxlnjXW8NbdKz6hsOHBzX+uMK0R2sfhEW3Q29J3svs2Nr/fnmx2qb266PVwjRaP/LOby37Hv694vh7AArJqXwnJbA0Dl92+SSH0IIIUS3YwmAvtO9C3ivv5mbfmhSqPRX4Md/YUJxWuxQ+kw6n282j+XDv6czZk4KY89NwXgy172tK/cOYz4YVnPXQXWhd53R4g3No+YfCqwR/drkerdCdEsTbvBea3j5X71fRrVBgD0WCbBCtCFXlYtvblvNLlsp02NjiTcbKQ2FQb8cjTVOZhQUQgghWsxsOzSMGMDV4A2aWSth30qSsp/i8gBY4bqe9IWns+/7jZx5noGIUZMhKPrwfbkaoGDL4ZMsHdh1aH3kAOh7+qGwGjcMTFaEECdh+DwYcgGY2nfSNAmwQrSRAz+W899/LaNfWBjn2ENQCjynJzB8Vl+UQXpdhRBCiFYxWaH3JO/CXeByYM1bz5n7VtJn3UKW75zKe29Zmfjp7YzstQvVZ7J3xuPcdVCw2TccGQiM8Z6zOvIyb1hNGN14jq0QopXaObyCBFghWk1rzerHtvDT/n2cFh1BrNlAcZiHYdeNwxx9chduF0IIIUQLmSzeS/D0mkC/0yC+rIZlr6zj+13Xkpmdy8yyfxBiLIKEUTDhpkMTLYUktvnlPoQQHUcCrBCt4Cx38r87lxEaYGJOcDDaoHGfEU/azH7S6yqEEEJ0oIDwQM654zS2r8pnxXtG/lf6FKNnJdN7eDRRSUHSLgvRTUiAFeIUla+t4LVnlzIuIoLeVgP5YU7SfjUJc6RcmFwIIYTwB6UUQyYnkDgwnGVvbmf1Z1ms/iwLW5CZ5MHhJA2JIHlIBMERNn+XKoQ4RRJghThJWmv2PrefRVvWc2Z0BGEmA8Uj7Yy9bKp8uyuEEEJ0AiFRdi68bRQ1FQ3kZJSSnVFGdkYpu9KLAAiPC2gMs4kDw7DY5COxEF2F/N8qxElwVbtYecs6soNLOTskAo/RjfuiPoya0MvfpQkhhBDiCIGhVgZNjGfQxHi01pTm1ZCdUUp2RikZK/PYvCwHg0ER2zeEZF+gjekdjOFkLscjhOhQEmCFaKGa7TUs+P23RA2wMsMaSKGljsG/mUxQfLC/SxNCCCHECSiliEwMIjIxiLQze+F2esjfU97YO7vm80zWfJaJxW4iaVA4yakRJA8JJ1QmZBSiU5EAK0QLFH5QxHvvrWTi4EjizQb2RNUz9bczMVrlfyEhhBCiKzKaDSQNjiBpcAST5vajrtpBzvayxh7avRuKAQiJsjX2ziYOCscWaPZz5UL0bPLpW4jj8Lg87Lh3N8srtzKrdxR2o2b/KCvTLp2Kkin4hRBCiG7DHmRhwNhYBoyNRWtNRVEd2Rml7N9Wys61hWxdkYdSEN07hF6+3tnYPqEYTTLcWIiOJAFWiGNwFDlY9Yt15A8o5ezwSGoNDhyXDGDy6N7+Lk0IIYQQ7UgpRVhsAGGxAQyfkYTb7aEos7Kxd3bdl/tIX5iFyWokcWBYYw9teFyAfMEtRDuTACtEMyrXVLLoru+JHm1hqjWELEsVw387jdDoIH+XJoQQQogOZjQaiO8fRnz/MMaf35eGOhe5O3zDjbeVsm/zAQACw6wkD/GdPzs4Anuwxc+VC9H9SIAV4gh5/8njs09XMWFcFFEmAxtjqjn7t7MxmI3+Lk0IIYQQnYDVbqJvWjR906IBqCyp8/XOlpG5sYTtqwoAiEoOInlwBMmpEcT3D8UknyWEaDUJsEL4eBwedvxuF987tzJzcDRGg2brGCPnXnK2v0sTQgghRCcWEmVn6GmJDD0tEY9HU7y/iuyMUnIyStm4NJv1X+3HaDaQ0D+UUbN6k5wa4e+SheiyJMAKATgKHay98icKhh3grJAoygz1qMv6Mzutr79LE0IIIUQXYjAoYlNCiE0JYezZKTjqXeTtKicno4y9G4v5/LmNzLlxOH1GRPm7VCG6JJk2TfR4lemVLLxoGZ60aibYQ9hhLSfpzsmMkPAqhBBCiFay2EykDI9i6qUDuOz+cUQlBfHlvzeTtanE36UJ0SVJgBU9WuHbhXz0wDf0n2ojxWRhZVQppz9wHpGRMlmTEEIIIdqWNcDMBb9LIyopiEUvbiZrs4RYIU6WBFjRI2m3Zve9e1j89fdMHx6JzaD5cYyHy++8EJNcz00IIYQQ7cQaYOb8W9OITAhi0b8lxApxsuSTuuhxXJUu1l38Exn12zkjJpoDqo6SyxK55NIZ/i5NCCGEED2ALdDbE3swxO7bcsDfJQnRZUiAFT1K3d46vj7/W9wDyhhlC+EnczEJd05m4ugB/i5NCCGEED3IYSH2hc3s2yohVoiWkAAreozy78r59JavSJlgIs5oYVFkIbMfuJCEqGB/lyaEEEKIHuhgiA2PD2DR85vZLyFWiBOSACt6hLz/5LHk1WVMHB6GUh6+HtnAr+6ah1UuKC6EEEIIP7IFmrnwtlGExwewUEKsECckAVZ0a9qt2X7ndrZsWc/k2CjyVA375sVy3ZWz/F2aEEIIIQTgC7G/axJit0mIFeJY2j3AKqXmKKV2KKV2K6XubWZ9L6XUMqXUeqXUJqXUOe1dk+gZXNUufpj/A7Uql1RbCN+bCoi9YyJnjUv1d2lCCCGEEIexBXlDbFicN8Rmbyv1d0lCdErtGmCVUkbgOeBsIBW4Qil1ZHr4P+A9rfUo4HLgX+1Zk+gZ6nPqWXzdV8T2chFuMPNBeA7n/3EufWPC/V2aEEIIIUSzbEFmLrwtjbCYAL54fhPZGRJihThSe/fAjgd2a633aq0dwP+AC4/YRgMhvtuhQF471yS6ucp1lXz94BKGpwTSgIdPhlbxu7svJ8Bq8ndpQgghhBDHZQ+ycOHtvhD7r01kb5cQK0RT7R1gE4HsJvdzfI819SBwlVIqB1gI/La5HSmlblBKpSul0ouLi9ujVtENFHxYwIY3V5IWFU6mrmHnheHcdvW5KKX8XZoQQgghRIscCrF2Fj63iRwJsUI06gyTOF0BvKa1TgLOAf6rlDqqLq31i1rrsVrrsdHR0R1epOj8tv9tC8Wrt9LHEsRSQz7RvxvL3Clp/i5LCCGEEOKk2YMsXHjbKEJj7HwhIVaIRu0dYHOB5Cb3k3yPNXUd8B6A1noVYAOi2rku0Y1ot+b733+L5cABAjDzZvB+LvrjRaQmyhcdQgghhOi67MHeEBsS7QuxO8r8XZIQftfeAXYtMEAp1UcpZcE7SdOnR2yzH5gJoJQagjfAyhhh0SKuahff3rGY3mYDVR4P/xtwgHv+MJ8Qu8XfpQkhhBBCtNphIfbZjeRKiBU9XLsGWK21C7gFWAxk4J1teKtS6iGl1AW+zX4P/EoptRF4B7hGa63bsy7RPdTureKnB7+hvz2QDHcVG+YEcP+v5mIwyPmuQgghhOg+AkK8ITY4ys7nz20kd6eEWNFzqa6YFceOHavT09P9XYbwo8LlOZQu3EmAMvGVymfkDVMZ1/fI+cGEEKJllFLrtNZj/V1HVyZtsxDtr7bSwcdPrqfqQB3n3TKSxIFyeUDRfR2rbe4MkzgJcVIyXl1P/aK9GDHxqnUvF95/gYRXIYQQQnR7ASEWLrp9FMERNj5/diN5u6QnVvQ8EmBFl/LTEz8QvKOaErebV+PyuP9PVxMdbPd3WUIIIYQQHSIgxMKFvhD72bObyNtV7u+ShOhQEmBFl6C15sc/LyemyE22q4FvR7n56x2XYzbKP2EhhBBC9CyBoVZviA238tmzG8nbXe7vkoToMPLpX3R6Ho+HH+77hqQ6I3tcdWw7w84d88/0d1lCCCGEEH5zMMQGhVn5/JmN5EuIFT2EBFjRqbkb3Pxw91f0xso2dxVFc6O57pwp/i5LCCGEEMLvAkOtXHTHKALDrHwmIVb0EBJgRaflrHSy6r6vSTEF8JOnDH7ej0umjPJ3WUIIIYQQnUZgqJWLbm8SYvdU+LskIdqVBFjRKdXn1bH2waWkWAJYqQuJu2kUZ40Y5O+yhBBCCCE6ncAwb4gNCLXw2TMbKNgrIVZ0XxJgRadTvaOKjf9YQS9LAEtUDiN/N53xfZP9XZYQQgghRKflDbGjCQix8OnTEmJF9yUBVnQqZT+WsuOl1SSYbHxszGTmnecwJCHa32UJIYQQQnR6QeG+EBssIVZ0XxJgRadR8GU++z9cT7TRwju2XVx+3yX0jgz1d1lCCCGEEF1GULh3Yid7sIXPnt5AQaaEWNG9SIAVncK+t/dR8s12Qg1mXg/azq/vu5qoILu/yxJCCCGE6HKCwm3MvWMUtmALnz21gcLMSn+XJESbkQAr/G77s9up3ZBJoMHIK2E7uPOeawm2mf1dlhBCCCFElxUUbuOi20dhCzLz6dMbKMySECu6Bwmwwq/WP7wR4/5CLErxn7hdPHD3ddgtJn+XJYQQQgjR5QVH2LjojtHYAk18+pSEWNE9SIAVfqG1ZtW9qwmpLAeleT1lH//vd9diMso/SSGEaAtKqTlKqR1Kqd1KqXubWd9bKfWNUmqTUmq5UiqpybrHlFJbfMtlHVu5EKItHRlii/ZJiBVdm6QF0eG0R/PtbSuJ0w04lYd3hxbx55t+jsGg/F2aEEJ0C0opI/AccDaQClyhlEo9YrPHgTe01iOAh4C/+p57LjAaSAMmAHcqpUI6qHQhRDsIjrBx4e2jsAZIiBVdnwRY0aE8Tg9f3bKcFJumBiefjqvi/66+FKUkvAohRBsaD+zWWu/VWjuA/wEXHrFNKrDUd3tZk/WpwHdaa5fWugbYBMzpgJqFEO0oJNLORXeMwmL3htji/VX+LkmIUyIBVnQYd52bL3/7DYODjZRRz8rTPdw97wJ/lyWEEN1RIpDd5H6O77GmNgIX+27PBYKVUpG+x+copQKUUlHA6UBycwdRSt2glEpXSqUXFxe36QsQQrS9kEg7F90+CovNxCf/XC8hVnRJEmBFh3BWOFl0+zcMC7VSoGrYel4gN82Z5e+yhBCiJ7sTmK6UWg9MB3IBt9Z6CbAQ+AF4B1gFuJvbgdb6Ra31WK312Ojo6A4qWwjRGiFR3p5Ys80oIVZ0SRJgRbtrKHKw5L6lpIXZ2WeoIP+SOK46bYq/yxJCiO4sl8N7TZN8jzXSWudprS/WWo8C7vc9Vu77+YjWOk1rPQtQwM4OqVoI0SFCouzMvWO0N8Q+tZ7s7aX+LkmIFpMAK9pVzb5alj60jJEhAWQYinFdPYALx4zyd1lCCNHdrQUGKKX6KKUswOXAp003UEpFKaUOfg64D3jF97jRN5QYpdQIYASwpMMqF0J0iJAoOxfdPhqr3cSn/9zAJ/9cT0Fmhb/LEuKEJMCKdlOWUckP/1jJ8KAAfjLlEXHDGE4fMtjfZQkhRLentXYBtwCLgQzgPa31VqXUQ0qpg5MPzAB2KKV2ArHAI77HzcAKpdQ24EXgKt/+hBDdTGi0nSsemMCUef05kFvNh4+t44t/baIkR4YVi85Laa39XcNJGzt2rE5PT/d3GeI4itPL2PLmOgbYrHxvySLtN2cxKC7W32UJIUSzlFLrtNZj/V1HVyZtsxBdm6PexaalOaz/aj+OOhf9x8Qw/vw+hMcF+rs00UMdq202+aMY0b3lflvM3o83McBm5SvbLmb97mKSwsP8XZYQQgghhDgGi83E2HNSGDY9kQ1f72fj0hz2/FTEoIlxjDu3DyFRdn+XKAQgAVa0scwv8ij8Zjt9rBY+DczgktvmEx0s39wJIYQQQnQFtkAzEy/sx4jTk/lp8T62fJvLzjWFpE5NYOzZKQSGWf1doujhJMCKNrP93Syq12SSZDHzfuhWfnX7tQTZLP4uSwghhBBCnKSAEAtTLxlA2pnJpC/MYtuKPDJ+yGf4jCRGz+6FPUg+4wn/kAAr2sSGl3dARgGxJiNvRW7lttt+hdVs9HdZQgghhBCiFYLCbcyYP5hRZ/Vm7ReZbPx6P1u/y2XkzGTSZvXCapc4ITqW/IsTrbbq6S0E7T9AqFHxZsIO7v7tjRgNyt9lCSGEEEKINhIabefMa1IZfVZv1ny+l/SFWWxensOos3ox4vRkzFbpuBAdQwKsOGVaa5b97SfiSmoIMMI7KXu596brUUrCqxBCCCFEdxSREMicG4ZTvL+K1Z/u5ceP97JxaQ5j5vRm2GmJGM1ylU7RviTAilOiPZovH1pNnxoHFqOHDwfncs811/i7LCGEEEII0QGiewVz3i0jyd9TwepP9rDyvV1s+Go/487tw6BJcRiNEmRF+5AAK06a2+3h8z/+QKrLA0YXi0aV8/vL5vu7LCGEEEII0cHi+4Vy4e2jyNlRxupP9rLsze38tHgf487rw4BxsRjktDLRxiTAipPidLj59P9WkobCYWzgx8lubj7/Yn+XJYQQQggh/EQpRfLgCJIGhZO1+QCrP9nL169u46fF+5hwfl/6pEXJKWaizUiAFS1WX+Pksz+uZKzZSLWhloyZdn555nR/lyVEp+R0OsnJyaG+vt7fpYgmbDYbSUlJmM1mf5cihBDdjlKKPiOiSBkWye6filjzWSaL/r2ZmN7BTLigL8mpERJkRatJgBUtUlPewMIHVzLOauaAsYrC86O5dNJ4f5clRKeVk5NDcHAwKSkp0lh3ElprDhw4QE5ODn369PF3OUII0W0pg2LA2Fj6jYpmx+oC1n6exWfPbCS+fygTL+xHwoAwf5coujAJsOKEygtr+eYvqxhvM5NvKqPhkn6ckzbM32UJ0anV19dLeO1klFJERkZSXFzs71KEEKJHMBgNDJmcwMDxcWxbmUf6oiwW/OMnklMjmHBBX2JTQvxdouiCJMCK4yrOrmLl39cwzm4m01xE4M/TmDiov7/LEqJLkPDa+cjvRAghOp7RZGD4jCQGT45ny/Jcflq8jw8eTafPyCgmXNCXyMQgf5couhAJsOKYDuRVs+rxtYy1m8mw5tH7+tMY1CvR32UJIYQQQoguyGwxMuqsXgw9LYGNS7PZ8NV+/vfwGgaMjWX8+X0Iiwnwd4miC5AAK5pVVljDisdWM8ZmZpM1h5E3n0VSbJS/yxJCCCGEEF2cxW5i3Ll9GD4jifVL9rNpWTa71xUxZFIcY8/tQ3CEzd8lik5MrjAsjlJZUsfyv6xijM3MFkseo353toRXIbogo9FIWlpa4/Loo4/6u6RT8tprr5GXl3dSz8nKymLYMDlXXwghOjNboJlJc/tx1f+bxPDpiWxfXcCbD6ziu3d34qh3+bs80UlJD6w4THV5PV89/D3jbBa2WwoYfussEiLD/V2WEOIU2O12NmzY4O8yWu21115j2LBhJCQk+LsUIYQQ7SAw1Mpplw0kbVYv0r/IZPPyHExmA5MvlnlXxNEkwIpGtVUNLPrTCibYrOw2FzHkljNIio70d1lCdHm7bttF9YbqNt1nUFoQA/45oM32l5KSwqWXXsqiRYuw2+28/fbb9O9/+AeHmpoafvvb37JlyxacTicPPvggF154Ib/73e+IjIzkgQceYPHixTzyyCMsX76ca6+9FpvNRnp6OpWVlTzxxBOcd955uN1u7r33XpYvX05DQwM333wzN954IwCPPfYYb775JgaDgbPPPpuxY8eSnp7O/PnzsdvtrFq1im3btnHHHXdQXV1NVFQUr732GvHx8axbt45rr70WgLPOOqvN3hshhBAdIzjCxuk/H0JDnYttK/MYd24fzFajv8sSnYwMIRYA1Nc4+PyP3zLBZmWvuYQBt0yTYcNCdHF1dXWHDSF+9913j7t9aGgomzdv5pZbbuG22247av0jjzzCGWecwZo1a1i2bBl33XUXNTU1/PWvf+Xdd99l2bJl3Hrrrbz66qsYDN7mJSsrizVr1vDFF19w0003UV9fz8svv0xoaChr165l7dq1vPTSS2RmZrJo0SI++eQTVq9ezcaNG7n77ruZN28eY8eO5a233mLDhg2YTCZ++9vf8sEHHzQG1vvvvx+AX/7ylzzzzDNs3Lixzd9LIYQQHWfkGck01LrYsbrA36WITkh6YAWOOief3L+cSVYb+0yl9LllKslxMf4uS4huoy17Sk/GyQ4hvuKKKxp/3n777UetX7JkCZ9++imPP/444L3W7f79+xkyZAgvvfQS06ZN48knn6Rfv36Nz7n00ksxGAwMGDCAvn37sn37dpYsWcKmTZv44IMPAKioqGDXrl18/fXX/PKXvyQgwDsLZURExFE17Nixgy1btjBr1iwA3G438fHxlJeXU15ezrRp0wD4+c9/zqJFi1r82oUQQnQecf1Cie4VzKal2QydmoAyyCXQxCESYHs4p8PFh/ctZbLVTo6pjOSbJ9FbwqsQPVLTa6Q2d71UrTUffvghgwYNOmrd5s2biYyMPGqypSP3o5RCa80zzzzD7NmzD1u3ePHiE9aotWbo0KGsWrXqsMfLy8tP+FwhhBBdg1KKkTOT+frVbWRnlNJrqJzSJg6RIcQ9mMvp5v17vmGy1U6BsZL4X08gJSHW32UJIfzk4BDjd999l0mTJh21fvbs2TzzzDNorQFYv349APv27eMf//gH69evZ9GiRaxevbrxOe+//z4ej4c9e/awd+9eBg0axOzZs3n++edxOp0A7Ny5k5qaGmbNmsWrr75KbW0tAKWlpQAEBwdTVVUFwKBBgyguLm4MsE6nk61btxIWFkZYWBgrV64E4K233mrz90cIIUTH6T8mhoAQCxuXZvu7FNHJSA9sD+V2uXn37q+YYgmgyFhF1E2j6ZMU5++yhBBt6OA5sAfNmTPnuJfSKSsrY8SIEVitVt55552j1v/xj3/ktttuY8SIEXg8Hvr06cNnn33Gddddx+OPP05CQgIvv/wy11xzDWvXrgWgV69ejB8/nsrKSl544QVsNhvXX389WVlZjB49Gq010dHRfPzxx8yZM4cNGzYwduxYLBYL55xzDn/5y1+45ppruOmmmxoncfrggw+49dZbqaiowOVycdtttzF06FBeffVVrr32WpRSMomTEEJ0cUaTgWHTE1nzWSZlBTWExwX6uyTRSaiD36R3JWPHjtXp6en+LqPL8rg9vH33EqaaAjhgqCH0phH0753o77KE6FYyMjIYMmSIv8tosZSUFNLT04mKarvJ26655hrOO+885s2b12b7bAvN/W6UUuu01mP9VFK3IG2zEKKt1VY6eOMPPzBkcjzTrzz69BXRvR2rbZYhxD2Mx+PhrXsWM8UUQJmhluBfDZPwKoQQQgghOp2AEAsDxsey/cd86muc/i5HdBIyhLgH8Xg8vHX3YqYaA6lS9QRel8rAvsn+LksI0YHmzp1LZmbmYY899thjZGVltfmxXnvttTbfpxBCiJ5l5BlJbP8hn23f5zH6rN7+Lkd0AhJge5A37/uSqYYgqlUDlusGMbB/L3+XJIToYAsWLPB3CUIIIUSLRSUFkzgwjM3LckibmYzBKANIezr5F9BD/PfehUzVQdQZHBiv6c/gAfINlhBCCCGE6PxGnJFMdVkDezeU+LsU0QlIgO0B3rh/EZM9QTQYnKir+5A6uI+/SxJCCCGEEKJFUkZEERJlY5NcUkcgAbbb++8fFzHZGYhTuXBdmUJqaj9/lySEEEIIIUSLGQyKEacnk7+ngqJ9lf4uR/iZBNhu7L8PLmJiQyAe5cZxWRLDR0h4FaInMRqNpKWlNS7HuwZsSkoKJSWdb2hWVlYWb7/99kk/75prruGDDz5oh4qEEEL4w5DJ8ZhtRjZKL2yPJ5M4dVNv/r9FTKgNBOWhZl4co0YP9HdJQogOZrfb2bBhg7/LaJWDAfbKK6/0dylCCCH8yGI3MWRSPFu+y2Xyxf0JDLX6uyThJ9ID2w29/ZfFjKsKwKA8VF4Uy6hxQ/xdkhCii6irq+Pss8/mpZdeOmrdkiVLmDRpEqNHj+aSSy6hurqaffv2MWDAAEpKSvB4PJx22mksWbKErKwsBg8ezPz58xkyZAjz5s2jtrYWgHXr1jF9+nTGjBnD7Nmzyc/PB2D37t2ceeaZjBw5ktGjR7Nnzx7uvfdeVqxYQVpaGk8++SRut5u77rqLcePGMWLECP79738DoLXmlltuYdCgQZx55pkUFRV13JsmhBCiQww/PQmPR7Pl21x/lyL8SHpgu5l3/v4Vo8ttmBSUnhfNuEkSXoXwt9t27WJDdXWb7jMtKIh/Dhhw3G3q6upIS0trvH/fffdx2WWXHXP76upqLr/8cq6++mquvvrqw9aVlJTw8MMP8/XXXxMYGMhjjz3GE088wQMPPMA999zDr3/9a8aPH09qaipnnXUWWVlZ7Nixg5dffpkpU6Zw7bXX8q9//Yvf/e53/Pa3v+WTTz4hOjqad999l/vvv59XXnmF+fPnc++99zJ37lzq6+vxeDw8+uijPP7443z++ecAvPjii4SGhrJ27VoaGhqYMmUKZ511FuvXr2fHjh1s27aNwsJCUlNTufbaa0/9DRZCCNHphMUEkDI8iq0rchlzdm9MZqO/SxJ+IAG2G3n3ia9JKzZjUVAyO4Lxpw31d0lCCD862SHEF154IXfffTfz588/at2PP/7Itm3bmDJlCgAOh4NJkyYBcP311/P+++/zwgsvHHa85OTkxu2vuuoqnn76aebMmcOWLVuYNWsWAG63m/j4eKqqqsjNzWXu3LkA2Gy2ZmtcsmQJmzZtajy/taKigl27dvHdd99xxRVXYDQaSUhI4Iwzzmjx6xZCCNF1jDwjiU/+WcKutYUMmZzg73KEH0iA7Sbee3YpwwtMWJWi8MwwJp0x3N8lCSF8TtRT2llMmTKFL7/8kiuvvBKl1GHrtNbMmjWLd95556jn1dbWkpOTA3h7cYODgwGO2odSCq01Q4cOZdWqVYetq6qqalGNWmueeeYZZs+efdjjCxcubNHzhRBCdG2Jg8KJTAxk4zc5DJ4Uf1RbI7o/OQe2G/jwhWWk7lfYlYGCaaFMmjXS3yUJIbqghx56iPDwcG6++eaj1k2cOJHvv/+e3bt3A1BTU8POnTsBuOeee5g/fz4PPfQQv/rVrxqfs3///sag+vbbbzN16lQGDRpEcXFx4+NOp5OtW7cSHBxMUlISH3/8MQANDQ3U1tYSHBx8WLidPXs2zz//PE6nE4CdO3dSU1PDtGnTePfdd3G73eTn57Ns2bK2f4OEEEL4nVKKEWckcyC3mryd5f4uR/iBBNgubsEr3zFwLwQpI7mTgph8bpq/SxJCdBIHz4E9uNx7770nfM5TTz1FXV0dd99992GPR0dH89prr3HFFVcwYsQIJk2axPbt2/n2229Zu3ZtY4i1WCy8+uqrAAwaNIjnnnuOIUOGUFZWxq9//WssFgsffPAB99xzDyNHjiQtLY0ffvgBgP/+9788/fTTjBgxgsmTJ1NQUMCIESMwGo2MHDmSJ598kuuvv57U1FRGjx7NsGHDuPHGG3G5XMydO5cBAwaQmprK1Vdf3Ti8WQghRPczcFwstiCzXFKnh1Jaa3/XcNLGjh2r09PT/V2G333yxgr6bHESokzsHxfAtHlj/V2SEMInIyODIUN67iRqWVlZnHfeeWzZssXfpRylud+NUmqd1lr+iLaCtM1CiI60+tO9pC/K4qqHJhIaHeDvckQ7OFbbLD2wXdQX73xP7y0OQpWJfSNtEl6FEEIIIUSPMWxaIgal2LxMLqnT00iA7YIWfbiKuPV1RCgzmUOtTL9yvL9LEkJ0EXPnzj1sWHFaWhqLFy9u8+OkpKR0yt5XIYQQ3UNgmJX+Y2PY9kMejjqXv8sRHUhmIe5ivvp8LVGrq4hWNnYPNHPG1RP8XZIQogtZsGCBv0sQQggh2sSIM5LZuaaQjFX5jDwj2d/liA4iPbBdyFdL0glZUUqssrGrj4kzrpNJSoQQQgghRM8UmxJCXN9QNi3LwePpevP6iFMjAbaLWLZsPUHfFJOAnV1JBmbeNNnfJQkhhBBCCOFXI2cmU1lcx77NJf4uRXQQCbBdwIqVGzEvziOJQLbHKmb+dqq/SxJCCCGEEMLv+qZFERRuZePSHH+XIjqIBNhObsWazXg+308KIWyPhFl3nObvkoQQQgghhOgUDEYDw2ckkbujjJKcan+XIzqABNhO7IeftuJcsId+hLEt2MOsu6f5uyQhRBdiNBoPm2340UcfbbN9v/baa9xyyy0n/bx9+/YxevRo0tLSGDp0KC+88ELjuvvvv5/k5GSCgoLarE4hhBDdX+rUBExmA5uWZfu7FNEBZBbiTmrNlu1Uv7+DVB1Nht3NrD9M93dJQoguxm63s2HDBn+XcZj4+HhWrVqF1WqlurqaYcOGccEFF5CQkMD555/PLbfcwoABA/xdphBCiC7EFmhm0KR4tv+Qz6SL+mEPtvi7JNGO2r0HVik1Rym1Qym1Wyl17zG2uVQptU0ptVUp9XZ719TZrduxiwPvbPKGV4ubMx+YjlLK32UJIbqxlJQU7r77boYPH8748ePZvXt3i5/7xRdfMGnSJEpKTjyBhsViwWq1AtDQ0IDH42lcN3HiROLj40++eCGEED3eiNOTcLs8bF2R6+9SRDtr1x5YpZQReA6YBeQAa5VSn2qttzXZZgBwHzBFa12mlIppz5o6u/W7d5P7Rjqj3UlkGF2c+eAMCa9CdHF//mwr2/Iq23SfqQkh/On8ocfdpq6ujrS0tMb79913H5dddtkxtw8NDWXz5s288cYb3HbbbXz++ecnrGPBggU88cQTLFy4kPDwcN566y3+/ve/H7Vd//79+eCDDwDIzs7m3HPPZffu3fz9738nISHhhMcRQgghjiciPpBeqRFs/jaXUWf1xmiSMyW7q/YeQjwe2K213guglPofcCGwrck2vwKe01qXAWiti9q5pk5r0769ZL72I+PdvclQLmY+NB1lkPAqhDg1JzuE+Iorrmj8efvtt59w+6VLl5Kens6SJUsICQkBYP78+cyfP/+4z0tOTmbTpk3k5eVx0UUXMW/ePGJjY1tcpxBCCNGcETOT+fyZjexeV8SgCXH+Lke0k/YOsIlA07Opc4AJR2wzEEAp9T1gBB7UWn955I6UUjcANwD06tWrXYr1p935eWS8/B1TXP3Y7nFyxl9mYDDKN0dCdAcn6intLJqO9mjJyI9+/fqxd+9edu7cydixYwFa1AN7UEJCAsOGDWPFihXMmzevldULIYTo6XoNiSAsNoBNS7MZOD5WRjF2U50hIZmAAcAM4ArgJaVU2JEbaa1f1FqP1VqPjY6O7tgK21luWQnfP7+QKY5+7HA7mfHIdBn2IITocO+++27jz0mTJgHeIcL33Xdfs9v37t2bDz/8kKuvvpqtW7cC3h7YDRs2HLUcDK85OTnU1dUBUFZWxsqVKxk0aFB7vzQhhBA9gDIoRp6RRNG+Kgr2tu2pO6LzaO+UlAskN7mf5HusqRzgU621U2udCezEG2h7hLKaKj576n1mOgax2+Vk6kOnYTIb/V2WEKIbOHgO7MHl3nubnUevUVlZGSNGjOCpp57iySefBGDPnj2Nw4ObM3jwYN566y0uueQS9uzZc8KaMjIymDBhAiNHjmT69OnceeedDB8+HIC7776bpKQkamtrSUpK4sEHH2z5ixVHOdEkikqp3kqpb5RSm5RSy5VSSU3W/c03sWKGUuppJd0YQoguYtDEeKwBJjZ+I5fU6a6U1rr9dq6UCW8gnYk3uK4FrtRab22yzRzgCq31L5RSUcB6IE1rfeBY+x07dqxOT09vt7o7SnVDHf959D/Mq0sj0+Vk3J+nYguUab+F6A4yMjIYMmSIv8tosZSUFNLT04mKijrs8auuuoonn3yS7jTypbnfjVJqndZ6rJ9KanO+SRR30mQSRbxtbdNJFN8HPtdav66UOgP4pdb650qpycDfgYMXH18J3Ke1Xn68Y3aXtlkI0fX98OFuNnyTzc8fnkRwhM3f5YhTdKy2uV17YLXWLuAWYDGQAbyntd6qlHpIKXWBb7PFwAGl1DZgGXDX8cJrd9HgcvKvx15kXl0a2S4no/9vsoRXIUSn8+abb3ar8NqDNE6iqLV2AAcnUWwqFVjqu72syXoN2AALYAXMQGG7VyyEEG1k+OneASWbl+f4uRLRHtp7Eie01guBhUc89kCT2xq4w7f0CG6Pm8cffY6ra0aT53Yx9N6JBIbJt0NCiPY3d+5cMjMzD3vsscceIysryz8FifbSkkkUNwIXA08Bc4FgpVSk1nqVUmoZkA8o4FmtdUYH1CyEEG0iOMJG37Qotq3MY9y5fTBb5fS87qTdA6w4nNaaRx59hmuqRlPsdjPw9nGERAX4uywhRA+xYMECf5cgOo87gWeVUtcA3+E91cetlOoPDME7bwXAV0qp07TWK47cQXe/QoAQousaeUYye34qZsfqAoZNS/R3OaINyVS3Hezhvz/HLypGU+bxkPTrNMISg/xdkhBCiO7nhJMoaq3ztNYXa61HAff7HivH2xv7o9a6WmtdDSwCJjV3kO58hQAhRNcW1y+UmN7BbFqajfa035w/ouNJgO1Ajzzxb646MJwqj4eYXwwjpl+4v0sSQgjRPa0FBiil+iilLMDlwKdNN1BKRSmlDn4OuA94xXd7PzBdKWVSSpmB6XjnsRBCiC5DKcWIM5IpK6glO6PU3+WINiQBtoP87ZlXuLxwMPUeCJw3iPhhUSd+khBCCHEKWjiJ4gxgh1JqJxALPOJ7/ANgD7AZ73myG7XWn3Vk/UII0Rb6j4khIMTCxqVySZ3uRM6B7QBPv/QWc3P64tJgOCeFPhPi/V2SEEKIbq4Fkyh+gDesHvk8N3BjuxcohBDtzGgyMGx6Ims+y6SsoIbwuEB/lyTagPTAtrOX3lzA7N3xKG2gfloCg07v7e+ShBA9hNFoJC0trXF59NFHj7ltSkoKJSUlLd73yW5/0B//+EdGjBhBWloaZ511Fnl5eQBs376dSZMmYbVaefzxx096v0IIIURzhp6WiNFkYNNSuaROdyE9sO3orY8WMXlzCGZt4sCYKMadN8DfJQkhehC73c6GDRv8XcZh7rrrLv7f//t/ADz99NM89NBDvPDCC0RERPD000/z8ccf+7dAIYQQ3UpAiIWB42PZ/mM+Ey7siy3Q7O+SRCtJD2w7+fjL5QxbYyIAM7mDgxl3Waq/SxJCiBOqq6vj7LPP5qWXXmqX7UNCQhpv19TUoJQCICYmhnHjxmE2ywcLIYQQbWvEGcm4HB62fZ/n71JEG5Ae2Hbw1YrVJC+vJ1QHsCfZxsxrR/m7JCGEPy26Fwo2t+0+44bD2cceEgzecJmWltZ4/7777uOyyy475vbV1dVcfvnlXH311Vx99dUnLKG57U877TSqqqqO2vbxxx/nzDPPBOD+++/njTfeIDQ0lGXLlp3wOEIIIURrRCUFkTgojM3LckibmYzBKH14XZkE2Da2av1mgr8oIVoHkxFtZPYt4/1dkhCihzrZIcQXXnghd999N/Pnzz/l7VesWHHC5z3yyCM88sgj/PWvf+XZZ5/lz3/+c4trFEIIIU7FiNOTWfTCZvZuKKH/mBh/lyNaQQJsG9q0Yzeu9zLprcPYHKw5984p/i5JCNEZnKCntLOYMmUKX375JVdeeWXj0N6T3b4lPbAHzZ8/n3POOUcCrBBCiHaXMiKKkCgbm5ZmS4Dt4qT/vI1k5uRR9Pom+uhwNlndnHP/NH+XJIQQJ+Whhx4iPDycm2++ufGxmTNnkpub2+LtV6xYwYYNG45aDobXXbt2NW77ySefMHjw4HZ6NUIIIcQhBoNixOnJ5O+poGhfpb/LEa0gAbYNFJQcYNvzKxnsiWa9wcG5D85oUe+FEEK0p4PnwB5c7r333hM+56mnnqKuro67774bj8fD7t27iYiIaNH2LXHvvfcybNgwRowYwZIlS3jqqacAKCgoICkpiSeeeIKHH36YpKQkKivlA4YQQoi2M2RyPGabkY1Ls/1dimgFGULcSqVVlfzw5GLGu5PZqOs59+EzUQYJr0II/3O73S3eNisrq/H2q6++CsCWLVv42c9+ht1ub9H2LfHhhx82+3hcXBw5OXKNPiGEEO3HYjcxZHI8W77NZfLF/QkMtfq7JHEKWtwDq5SyKKVGKKWGK6Us7VlUV1FdX8vixz5mvDuZLe565vxlJgYJr0KIbmLYsGE88cQT/i5D+Cil4pRSFyilzldKxfm7HiGE6IpGnJ6Ex6PZ8m3zp8eIzq9FAVYpdS6wB3gaeBbYrZQ6uz0L6+wcLgfvP/Iup7n6kOGqZ+Yjp2OUKbmFEJ3c3LlzDxtWnJaWxuLFi/1dljgBpdT1wBrgYmAe8KNS6lr/ViWEEF1PaHQAKcOj2PJdLi5ny0cqic6jpUOI/wGcrrXeDaCU6gd8ASxqr8I6M7fHzWsPv8E5zkHsdjUw7aHpmC0yGlsI0fktWLDA3yWIU3MXMEprfQBAKRUJ/AC84teqhBCiCxo5M5msTSXsXFNI6pQEf5cjTlJLuwyrDoZXn73A0ddJ6AG01vz74Vc5p34QWa4Gxj8wFWuAjKgWQgjRrg5weLtb5XtMCCHESUocGEZkYhCbluagtfZ3OeIktbTbMF0ptRB4D9DAJcBapdTFAFrrj9qpvk7nub+8woU1A8lxOxhx9yQCQmz+LkkIIUT3txtYrZT6BG87fCGwSSl1B4DWWk5WFkKIFlJKMeKMJJb9dzu5O8tJGhTu75LESWhpD6wNKASmAzOAYsAOnA+c1y6VdULP/e01LqgcQKHbxYBbxxESE+jvkoQQQvQMe4CP8YZXgE+ATCDYtwghhDgJA8fHYgsys0kuqdPltKgHVmv9y+OtV0rdp7X+a9uU1Dm98ORbnHegL6UeN/G/GkFkrxB/lySEEKKH0Fr/+XjrlVLPaK1/21H1CCFEV2cyGxk2LZH0RVlUFNcSGh3g75JEC7XVtLmXtNF+OqX/PP8ucwqSqfR4CL5sMImDovxdkhBCnJDRaDxstuFHH320zfb92muvccstt5zSc+fMmUNYWBjnnXf4AJ5rrrmGPn36NNa7YcOGNqi0x5ji7wKEEKKrGTYtEYNBsWmZXIe8K2mrqXO77cVP33ztE87IiqPW48F4bh/6jY33d0lCCNEidru9U4bAu+66i9raWv79738fte7vf/878+bN80NVQggheprAMCv9x8SQ8UM+E87vi8UuVxXpCtrqt9Qtp+/68L3FTMwIxamhZnoi42b09ndJQogu6LE1j7G9dHub7nNwxGDuGX9Pm+0vJSWFSy+9lEWLFmG323n77bfp379/i577xRdf8PDDD/PZZ58RFXXiESozZ85k+fLlraxYCCGEaL2RM5PZuaaQjB/yGTkz2d/liBZoqyHE3a4HdtHCbxm+zoLWBopHRTDuvAH+LkkIIU5KXV3dYUOI33333eNuHxoayubNm7nlllu47bbbWnSMBQsW8Oijj7Jw4UKioqJ46623DjvmwaWlvar3338/I0aM4Pbbb6ehoaFFzxFAN2yHhRCiI8T0DiGubyiblufg8XTLPrlup616YN9vo/10Ct99t4be37oxahN7BwYy64rh/i5JCNGFtWVP6ck42SHEV1xxRePP22+//YTbL126lPT0dJYsWUJIiHdiu/nz5zN//vxTqvevf/0rcXFxOBwObrjhBh577DEeeOCBU9pXT6CUMmmtXb67T/m1GCGE6MJGzkxm8Utb2Le5hD4jo/1djjiB4/bAKqXea3L7sSPWLTl4W2v9l7YvzT/Sf9pC+BeV2DGRkWRm1vVj/F2SEEJ0CKVUs7ePpV+/flRVVbFz587Gx1rTAxsfH49SCqvVyi9/+UvWrFlzai+kG1FKrWxy+79HrG58g7TWr3VUTUII0d30TYsiKNzKRrmkTpdwoiHETcfNzjpiXbf7eiJj5x6M7+YRjIX1EZrzbp3k75KEEKLDHBxi/O677zJpkvfv34IFC7jvvvua3b537958+OGHXH311WzduhXw9sBu2LDhqOWDDz444fHz8/MB0Frz8ccfM2zYsLZ4WV1d0wuODz1inQwbFkKINmAwGhg+I4ncHeWU5FT7uxxxAicaQny8geDdapD4vpxcql7ZRSwBrA50cuk9M/1dkhBCtMrBc2APmjNnznEvpVNWVsaIESOwWq288847AOzZs6dxeHBzBg8ezFtvvcUll1zCZ599Rr9+/U5Y12mnncb27duprq4mKSmJl19+mdmzZzN//nyKi4vRWpOWlsYLL7zQ8hfbffWYdlgIIfwpdWoCa7/IZNPSbM64eoi/yxHHcaIAG6CUGoW3p9buu618i729i+sohQdKyHl2A8k6mB/MdVz+wGx/lySEEK3mdrtPavu77rqLxx477GwRNmzYwJNPPnnUttdccw3XXHMNAKNGjWLbtm0tPs6KFSuafXzp0qUtL7bnCFNKzcXbDocppS72Pa6AUP+VJYQQ3Yst0MygifFs/yGfSXP7YQ+2+LskcQwnCrD5wBO+2wVNbh+83+WVV1eQ8fgP9NNhrFQ1XPHw2f4uSQghOo0333zT3yX0dN8CFzS5fX6Tdd91fDlCCNF9jTg9ia3f5bJ1RS5jz+nj73LEMRw3wGqtT++oQvyhtqGWNX9ZSqqO4ntPFZf/TcKrEKJ7mzt3LpmZmYc99thjj5GVleWfgsRxaa1/6e8ahBCip4iID6TX0Ag2L89l1Fm9MZra6oqjoi211WV0upwGZwPf/GkBo+jFj65KLnns7BbNuimEEF3ZggUL/F2CaAWl1Cyt9Vf+rkMIIbqrEWck8/kzG9m9rohBE+L8XY5oRo/9WuHte59gm3UfPzp2cNFf52Aw9ti3QgghRNfx2Ik3EUIIcap6DYkgPC6ATUuz0VrmyuuMemxqGz5pKC53A1sDMln09r/8XY4QQgghhBDCz5RBMeL0JIr2VVGwt9Lf5YhmnFKAVUrFK6WsbV1MRxo77wLOn5CK0pqfduTx1Ydv+LskIYQQ4ihKqVeVUq8opV4Fevluv6KUesXftQkhRHc0aGI81gATG7/J9ncpohmneg7sf4F+SqkPtdZ3tmVBHWnE+ZdRX1nBooz9rErfhi34Y0476yJ/lyWEEEI09VqT21OB1/1UhxBC9Ahmq5HUqQls+DqbqtJ6giNs/i5JNHFKPbBa6zOBvsCrbVtOxxs//wZmJIXhMZlZvvQHfvpxub9LEkKINmE0GklLS2tcHn300WNum5KSQklJSYv3fbLbH/T+++8zdOhQDAYD6enpjY9nZWVht9sba73ppptOet/dldb624MLUHXEfSGEEO1g+IwkADYvz/FzJeJILeqBVUpdp7V++YiH/6q1vrcdaupw02+6k4Z/PMgPFTYWfvQ59qAQhgwb7e+yhBCiVex2Oxs2bPB3GYcZNmwYH330ETfeeONR6/r169fp6u2EHP4uQAgheoLgCBt906LZtjKPcef2wWw1+rsk4dPSIcQ/U0rVa63fAlBKPQfY26+sjnfW7x+k4aG7WWcP5KPX/suVvwmiT9+B/i5LCNENFPzlLzRkbG/TfVqHDCbuD3/4/+3deXxU1f3/8deZyb6vJEACCUvYA0gAUREVEXEBwQURv6h1qVWsWhWxLlWqFavVonWptUq1LrihqChWcYFqIUHCbsIWIawhbEnInvP7g8AvYIABM7mT5P18POaROzNn7rznBj35zDn33AbdJ0BpaSljxoxhzJgxXH/99Q3evlu3bg0Rs8Wy1p7sdAYRkZai91lJrP1hOzkLttLz9LZOx5Fank4hvhi42hgzzhjzL6DKWvsrL+ZyxIUP/JmelTupDI3gzWefZevWTU5HEhE5YaWlpYdMIZ4xY8ZR2xcXF3PhhRcybtw4j4rR+toPHjz4kPc8cPviiy+Oub/169fTt29fhgwZwrx58zz7kC2EMebaeh478pxwERH5xRI7RtKqffj+S+rU6JI6vuKoI7DGmJg6d68DPgD+CzxkjImx1u70YjZHXPKnZ6i449fkhrdm+mOP8usHphAdHXPsF4qIHIE3Rko9cbxTiEeNGsWkSZMYP378Cbc/0cKzdevWbNiwgdjYWBYtWsRFF13EihUriIiIOKH9NUP1zYTSqiIiIl5kjCH9rGS+eGUlG1btpH2PWKcjCccegV0EZNX+/AqIAs6v83izNO6JF0jdlU9ZZBwvPnQfJcVFTkcSEfG6U089lc8++8zjC7fX1/5ER2ADAwOJjd3/h0G/fv3o2LEjubm5J/5hmp/6ZkL9bFRWREQaVqd+rQiJDGDpXF1Sx1cctYC11qZaazsc9vPArcOBdsaYYd6P2niMMUx46kWSCzdSGtWK5+67i/KyMqdjiYh41ZQpU4iOjubmm28++NjQoUPZtKn+0ynqaz9v3jyys7N/djv77LOP+t4FBQVUV1cDsG7dOlavXk2HDh2O+pqWwBgTUzsbKpj9M6EmAUXUzoRyNJyISAvg9nPRa0hbNqzYya6tJU7HEU7wMjr1eKyB9uMzjMvFNX95nsQd+ZREJfLs5Nuoqqx0OpaIiMcOPwd28uRjLxw/bdo0SktLmTRpEjU1NaxZs4aYmCPXSXXbe2LmzJkkJSXx/fffc/755zN8+HAAvv32W9LT0+nTpw+XXHIJL7zwwlHftwVpkTOhRER8SffT2mJchh+/3+p0FAGMp1PFjroTYxZba/s2QB6PZGRk2LrXD/Sm6n0lPH/37eyIbUPU3m389om/4XJpGW0RObpVq1Y1+RV3ly9fzssvv8yTTz7pdJQGVd/vxhizyFqb4VCkX8wYM8xa+x8nMzRm3ywi0tg+/tsSCjcXM+HhUzAu43ScFuFIfXNDjcA222W53CGh3PDHPxG1czu7IxJ4dvKtHp8fJiLSlPXs2bPZFa/NWLObCSUi4kvSBiRQvLOcLWt3Ox2lxWuoArZZC4iK4/p7JhO+p5DC4FheuO93KmJFpEkaPXr0zxZYmjNnjtOx5JfTcICIiBel9o7HL9BNzoJtTkdp8RqqgM1roP34rNDW7fjVLTcRUryHbX7h/POP9zgdSUTkuM2cOfNnCywdOA9VmjR9qyoi4kX+gW469oln7Q/bqa6scTpOi3bUAtYYM6nO9qWHPfenA9vW2jENH833RHfoxlUTxhK0r5j8qgBefXyK05FERERERKQRpA1IoHxfFT8tL3Q6Sot2rBHYy+tsHz7keG4DZ2kSEnoP4orRw/EvL2Xd3kpmPPcXpyOJiIjkOR1ARKS5S+oaTXBEADkLtRqxk45VwJojbNd3v8Vod8pwLj2rP35VFazavIsP//V3pyOJiEgzpJlQIiK+w+V2kZaRQN6yHZSV6PKaTjlWAWuPsF3f/RYlbfhljOzXEXdNNdm5PzHnvTecjiQiIs2PZkKJiPiQtIEJ1FRZ1i0ucDpKi3WsAra3MWavMaYISK/dPnC/VyPk82npl9zAuZ1iMMbwv0XL+HbOx05HEhE5yO12H7La8NSpUxts39OnT2fixInH/bqvvvrqkExBQUF88MEHDZarGdJMKBERHxLfLpyohBByFmgasVP8jvaktdbdWEGaqv6/uovyaffz5Q7D11/PIyQsgoxTT3c6logIwcHBZGdnOx3jEGeeeebBTDt37qRTp06cc845zobybZoJJSLiQ4wxdBmYwIJZ6ynaWUZ4TJDTkVqcoxaw4pnTbv0jFX+6nW/Lwvh01kcEh4XTo3dfp2OJiI+Y93YuOzYWN+g+45LDGHxZWoPtLyUlhcsuu4xPP/2U4OBg3njjDTp16uTRaz/55BMefvhhPvroI+Li4jx+z3fffZcRI0YQEhJyorFbgt7GmL3sH20Nrt2m9r7+ahIRcUDn/oksmLWe3IVb6XduitNxWpyGug5si3fW759iYM12qgODmfn6v1n3449ORxKRFq60tPSQ6bozZsw4avvIyEiWLVvGxIkTue222zx6j5kzZzJ16lRmz55NXFwcr7/++iHveeB2ySWX/Oy1b731FuPGjTuRj9ZiWGvd1toIa224tdavdvvAfX+n84mItESR8cEkdogkd+E2rNVkmMamEdgGNOLhv1N559X8ENqeN176O7+69XbaJLdzOpaIOKwhR0qPx/FOIT5QTI4bN47bb7/9mO3nzp1LVlYWn3/+OREREQCMHz+e8ePHH/O1W7ZsYdmyZQwfPtzjfCIiIr6iy8AEvnkzl8JNxcQlhTsdp0XRCGwDG/n4K/TatZaqsEim//Uv7NiuE7xFpGkwxtS7fSQdO3akqKiI3Nzcg495OgL79ttvM3r0aPz9NYgoIiJNT6d+CbhchpwF25yO0uKogG1oxjDmqel0LVhNRXg0/3j0EYp373I6lYjIMR2YYjxjxgwGDRoE7J8ifM89h1+9Zb/27dvz3nvvMWHCBFasWAHsH4HNzs7+2e3dd9895LVvvvmmpg97mTHmXGNMjjFmjTFmcj3PtzfGfGmMWWqM+doYk1T7+JnGmOw6tzJjzEWN/gFERHxYUJg/7XrGsjpzGzU1mkbcmFTAeoFx+zH2r/+k47Y1lEfG8reH7qe0uMjpWCLSwhx+DuzkyT+rYQ6xa9cu0tPTmTZtGk899RQAa9euPTg9uD5du3bl9ddf59JLL2Xt2rUe5crLy2Pjxo0MGTLE8w8jx8UY4waeBUYA3YFxxpjuhzV7AnjVWpsOTAEeBbDWfmWt7WOt7QOcBewDPm+s7CIiTUXagARKdpezOVeDVY3JNMUTjzMyMmxWVpbTMY6pumQ3/7rzt2xI6EDIngJu+9MTBAQHOx1LRBrBqlWr6Natm9MxPJaSkkJWVtbPVhG+8soreeqpp4iPj3coWcOr73djjFlkrc1wKFKDM8YMAh601g6vvX8PgLX20TptVgDnWms3mv1zxvdYayMO288NwBBr7TFPbG4qfbOISEOpqqjm5Unz6XhSK4ZOaDp9flNxpL5ZI7Be5A6N4qpHH6f19g3si4zn6Xvvoqqy0ulYIiIe+/e//92sitcWpC2wsc79/NrH6loCjKndHg2EG2NiD2tzOfDmkd7EGHODMSbLGJNVUFDwCyOLiDQtfgFuOp7UirU/bKeqotrpOC2GClgvc0clcM0D9xK/YzPFEXE8/fs7qKnWP3ARccbo0aN/tsDSnDlzyMvLO65ruEqzcCcwxBizGBgCbAIOdlDGmNZAL2DOkXZgrX3RWpthrc3QFx0i0hKlDUigsqyavGWFTkdpMXQZnUYQkNiRa+64mX889QK7olvxzH138dtHnsC49P2BiDSumTNnOh1BGscmILnO/aTaxw6y1m6mdgTWGBMGXGyt3V2nyWXATGutpg6JiBxB27RoQiMDyFmwlU79Wjkdp0VQBdVIQlJ7c80NVxC+dye7AsJ57qHf68LHIiLiLZlAZ2NMqjEmgP1TgWfVbWCMiTPGHPg74B7g5cP2MY6jTB8WERFwuQydBySyYXkhZcX6vq8xqIBtRBE9B3PV5cMJKd5LgQ3gxakPqYgVEZEGZ62tAiayf/rvKuBta+0KY8wUY8zI2mZnADnGmFwgAXjkwOuNMSnsH8H9pjFzi4g0RV0GJlBTY1nzw3ano7QIKmAbWdzAC/i/Ef0ILC1hS2k106c97nQkERFphqy1s621adbajtbaR2ofe8BaO6t2+11rbefaNtdZa8vrvDbPWtvWWlvjVH4RkaYitm0YMW1CyV2w1ekoLYIKWAe0PvtKrjglBf/ycn4q3MsbLz7rdCQRERERETkBxhjSBiSwZe0e9hSUOh2n2fN6AWuMOdcYk2OMWWOMmXyUdhcbY6wxptlch+9o2o++hcu6R+BXVcXqDZt57/V/OR1JRJoZt9t9yGrDU6dOPWLblJQUduzY4fG+j7f9AWPHjj2YJyUlhT59+hz3PkRERHxN2oBEAFZnahTW27y6CrExxg08Cwxj/zXoMo0xs6y1Kw9rFw7cCizwZh5f0/mq+xj97F28t9nF8pU5BH/wLudddInTsUSkmQgODiY7O9vpGIeYMWPGwe077riDyMhIB9OIiIg0jPCYINp0jiJ34Tb6jUjBGON0pGbL25fRGQCssdauAzDGvAWMAlYe1u6PwGPAXV7O43N63Pw4FVNvZFZxLFkLsggODefMYcOdjiUiDeir6S+y/ad1DbrPVu07cObVNzToPgFKS0sZM2YMY8aM4frrr2/w9gdYa3n77beZO3fuL4krIiLiM9IGJPD16zkUbCiiVfsIp+M0W96eQtwW2Fjnfn7tYwcZY04Ckq21n3g5i8/qe/fznOvaiPXzZ96XX/L9fC36KCK/XGlp6SFTiOuOftanuLiYCy+8kHHjxnlUjNbXfvDgwYe854HbF198cchr582bR0JCAp07dz7xDygiIuJDOp7UCpefIXfBNqejNGveHoE9qtrrzz0JXO1B2xuAGwDatWvn3WCNzRgGPjidyrvH8UVwF/7z0ccEBATSb8DJTicTkQbgjZFSTxzvFOJRo0YxadIkxo8ff8Lt582b59Fr33zzTcaNG+dxNhEREV8XFOpPSq84crO2ccrFHXG5tV6uN3j7qG5i/3XkDkiqfeyAcKAn8LUxJg84GZhV30JO1toXrbUZ1tqM+Ph4L0Z2iMvFaVP/zZCSH6kJDGb2e++yPPsHp1OJSAty6qmn8tlnn3l8fer62nsyAltVVcX777/P2LFjG/wziIiIOCltQAKleyvIz9nldJRmy9sFbCbQ2RiTaowJAC4HZh140lq7x1obZ61NsdamAP8DRlprs7ycyze5/Tnzz69zWvGPVAeFMPON18ldsczpVCLSQkyZMoXo6Ghuvvnmg48NHTqUTZs2edx+3rx5ZGdn/+x29tlnH2zzxRdf0LVrV5KSkrz3YURERBzQvmcsgSF+mkbsRV4tYK21VcBEYA6wCnjbWrvCGDPFGDPSm+/dZLn9Ofvx1zl5by7VwWG8Pf0Vflqd43QqEWmCDj8HdvLkI17J7KBp06ZRWlrKpEmTqKmpYc2aNcTExHjU3lNvvfWWpg+LiEiz5OfvpuNJrVibXUBlebXTcZol4+lUMV+SkZFhs7Ka+SBtdSUf3TmBRRFp+JXs5eqbJpLUoaPTqUTEQ6tWraJbt25Ox/hFli9fzssvv8yTTz7pdJQGVd/vxhizyFrbIq5D7i0tom8WEfHAptxdfPDkYoZd2520/olOx2myjtQ368xiX+X258InXqXP3tVUhUXyr2efYXv+xmO/TkSkgfTs2bPZFa8iIiLe1qZTFGHRgZpG7CUqYH2Z25+LnvgXPXavoTI8ipeefJzCLZudTiUiTdjo0aN/tsDSnDlznI4lIiLSbBiXIW1AIhtW7mTf3gqn4zQ7KmB9ndufS//yCl12r6UiIoYX//woe3cUOJ1KRJqomTNn/myBpeHDhzsdS0REpFlJG5iArbGsWaRR2IamArYpcPsz7i+v0Gn3OsojY3nu4Yco3rXT6VQiIiIiIlKP2DZhxCaFkbtQBWxDUwHbVLj9GP+Xf5KyO4+yqDiee/B+SvfudTqViIiIiIjUo8uARLat38vubfucjtKsqIBtQozbn6v+8g+Sd29gX3Q8f7v/bsqKi52OJSIiIiIih+ncPwEM5C7c6nSUZkUFbBNj3P5c88QLtN69kZLoBJ79/Z1UlJU5HUtEREREROoIiw4kqUs0uQu30RQvXeqrVMA2QS6/AK574nla7dlEUUwiz951K5Xl5U7HEhEf43a7D1lteOrUqQ227+nTpzNx4sTjft1PP/3ESSedRJ8+fejRowcvvPBCg2USERHxNWkDEthTUMq2PJ3611D8nA4gJ8btF8ANjz/LC3fdwo7Y1jx3x0Qm/vU53H7+TkcTER8RHBxMdna20zEO0bp1a77//nsCAwMpLi6mZ8+ejBw5kjZt2jgdTUREpMF16NuKb97MJXfBNhJTI52O0yyogG3C/PwCuOGxaTw/+TZ2xbXl+Vt/w03TXsDlp1+riC/Z/dFaKjaXNOg+A9qEEnVhxwbbX0pKCpdddhmffvopwcHBvPHGG3Tq1Mmj137yySc8/PDDfPTRR8TFxR21bUBAwMHt8vJyampqflFuERERXxYY7Edqehyrs7Zx6qWdcLs1AfaX0hFs4gICgrjh0aeI3LudHfFJvHDrr/UHoYgAUFpaesgU4hkzZhy1fWRkJMuWLWPixIncdtttHr3HzJkzmTp1KrNnzyYuLo7XX3/9kPc8cLvkkksOvmbjxo2kp6eTnJzM3XffrdFXERFp1tIGJFBWXMnGlboMZkMwTfGE4oyMDJuVleV0DJ9SUraPF+6dRFF4HK0LfuL6Z/6Jy6XvJ0ScsmrVKrp16+ZohrCwMIo9XKk8JSWFuXPn0qFDByorK0lMTKSwsPCI7adPn86f//xnIiIi+Pzzz4mIiDjufJs3b+aiiy7io48+IiEh4bhff6Lq+90YYxZZazMaLUQzpL5ZRKR+1VU1vHL3fNp1j+Wca3s4HafJOFLfrAqnmQgNCuH6P04lrKiQLfHteWXitVrtTESOizGm3u0j6dixI0VFReTm5h58zJMR2APatGlDz549mTdvXsN8ABERER/k9nPRuV8C67MLqCircjpOk6cCthmJCAnjuoceIaR4Jxvj2/Gvm69RESsiHjswxXjGjBkMGjQI2D9F+J577qm3ffv27XnvvfeYMGECK1asAGD8+PFkZ2f/7Pbuu+8CkJ+fT2lpKQC7du1i/vz5dOnSxdsfTURExFFpAxOpqqxhfXaB01GaPBWwzUxUWATXPvAQwfv2kBffnn/ffLWKWJEW6vBzYCdPnnzU9rt27SI9PZ1p06bx1FNPAbB27dqjTg/u2rUrr7/+Opdeeilr1649ZqZVq1YxcOBAevfuzZAhQ7jzzjvp1avX8X0wERGRJiaxQwQRcUHkLNzmdJQmT+fANlPb9+zinw9PoTwkgrSC9Yx79l8eTQkUkYbhC+fAHo+UlBSysrJ+torwlVdeyVNPPUV8fLxDyRqezoH1DvXNIiJHt2DWOhZ9msdVU08lNDLQ6Tg+T+fAtjCtIqO5+vf3ElBaRG58Cu9MnKCRWBE5bv/+97+bVfEqIiLilLQBCVgLqzM1CvtLqIBtxlpHx/F/d92Nf9k+Vsam8r6KWJEWb/To0T9bYGnOnDnk5eUd8xquIiIicuKiE0OJbxdOrqYR/yJ+TgcQ70qOT+CK23/H6399imWxqfhN/D9G/u01TScWaaFmzpzpdAQREZEWq8vAROa/s5qdW0qIaR3qdJwmSSOwLUBqYhvG3XwLfhVlLI5N5ZNb/k8jsSIiIiIijaxTRiuMgdyFW52O0mSpgG0hOia347Ibb8RdWUFWdCqf3Xql05FERERERFqU0MhAkrvFkLtwmwaUTpAK2BYkLaUDo6+9Fnd1JQsjU/nPreOdjiQiIiIi0qKkDUigqLCMrWv3OB2lSVIB28L07JTGqAkTMNVVfBeewlwVsSIiIiIijSa1Tzx+AS5dE/YEqYBtgdK7dueCceMwtoZ54Sl8c5uKWJHmyO12H7La8NSpU4/YNiUlhR07dni87+Ntf8D9999Peno6ffr04ZxzzmHz5s3HvQ8REZGmLCDIj9Te8axZtI3qqhqn4zQ5KmBbqJN69WbExReDtXwd2p75t+ucWJHmJjg4mOzs7IO3yZMnOx2Ju+66i6VLl5Kdnc0FF1zAlClTnI4kIiLS6NIGJFBeUsWGFYVOR2lydBmdFqz/SRlUVVby+UcfMzc4GffvxjPoydedjiXS7Hz66ads3dqwqw0mJiYyYsSIBt0nQGlpKWPGjGHMmDFcf/31Dd4+IiLi4HZJSYku6SUiIi1ScvcYgsP9yVmwjdTe8U7HaVJUwLZwgwYOorqqii8/ncN/gpJx3TGegX9RESvSHJSWltKnT5+D9++55x7Gjh17xPbFxcVcfvnlTJgwgQkTJhxz//W1Hzx4MEVFRT9r+8QTT3D22WcDcO+99/Lqq68SGRnJV199dZyfSkREpOlzu110ykhg5bzNlJdWERisssxTpiku35yRkWGzsrKcjtGsfPP1l3z95Ve4qioZUZVPxuMqYkV+iVWrVtGtWzdHM4SFhVFcXOxR25SUFCIjI5k0aRLjxx/7vPjjbV+fRx99lLKyMh566KETev2Jqu93Y4xZZK3NaNQgzYz6ZhGR47Nt/V7efSyLM/+vK91PbeN0HJ9zpL5Z58AKAEPOGMrppw+m2i+Az9xtWTRJ58SKtDSnnnoqn332mcfXpauv/eDBgw9ZOOrA7YsvvvjZ68ePH897773XYPlFRESaklYp4UTGB5Or1YiPiwpYOejMYcM59eQBVAUE8qlpzeK7VcSKtCRTpkwhOjqam2+++eBjQ4cOZdOmTR63nzdv3iELRx24HZg+vHr16oNtP/zwQ7p27eqlTyMiIuLbjDGkDUxkU+4uineVOR2nyVABK4cYdv6FDOzXl6rAYGbbRLIn6xI7Ik3VgXNgD9w8WYV42rRplJaWMmnSJGpqalizZg0xMTEetffE5MmT6dmzJ+np6Xz++edMmzbN488jIiLS3KQNSAALuZkahfWUzhaWnxkxagzVlZVkLV3B7H2JuO4ZT/qf/g1aLVSkSamurva4bV5e3sHtV155BYDly5dz8cUXExwc7FF7T2jKsIiIyP8X1SqEhNQIchdu46Rz2jsdp0nQCKzU64JLxnJStzQqQkP5pCKBpb+7BJrggl8icuJ69uzJk08+6XQMERGRZi1tQCKF+cUUbvJs4cWWTgWsHNHIcVfSu1MHykPD+Mi/A4tuvBB7HCM6IuJ7Ro8e/bMFlubMmeN0LBERkRarc0YrjMuQu7BhrxnfXGkKsRzV6P+7msD33mFh9lJmx/Sk6lfnM+ClDzH+gU5HE/F51lqMj029nzlzptMRHNUULx0nIiLNW3B4AO16xJC7cBsnj+qIcfnW3w6+RiOwckznXXwpZww+lRq3mzlJJzHvqgux+4qcjiXi04KCgigsLFTB5EOstRQWFhIUFOR0FBERkUOkDUigeFc5m9fsdjqKz9MIrHjkjHPOJTQigtkffcRXHQdQ9qtLOfvF13FFxDodTcQnJSUlkZ+fT0FBgdNRpI6goCCSkpKcjiEiInKI1N7x+Ae6yV2wlbZp0U7H8WkqYMVj/U8+hZDQUN574w2+SxtA+Q0TOO+ZF3HHt3U6mojP8ff3JzU11ekYIiIi0gT4B7jp0DeeNT8UMPjyNPz83U5H8lmaQizHpUev3lx5/fW4K0pZ1CWD9397E1UbVzsdS0RERESkSUsbkEBFaRU/LS90OopPUwErx61Dh05c+9vbcJcVs6JLX9649z4qc7OdjiUiIiIi0mQldYkmJCKA3AXbnI7i01TAyglp06YtN0++D7/Svazr0I3pU/9Cefa3TscSEREREWmSXG4XnfsnkLd8B2UllU7H8VkqYOWExURHc9sDf8SvbC+b2nXkH8+/SvG3HzsdS0RERESkSeoyMJGaKsvaH7Y7HcVnqYCVXyQsNJQ7H3oUv8pidrRO4h9vf8LuT193OpaIiIiISJMTlxxGdGIIuQs1jfhIVMDKLxYUGMg9Ux7Dn3L2xCXw4ucLKXjrWadjiYi0aMaYc40xOcaYNcaYyfU8394Y86UxZqkx5mtjTFKd59oZYz43xqwyxqw0xqQ0angRkRbKGEPagEQ2r97N3sJSp+P4JBWw0iDcbjf3PPAIAUGGfRGR/GPROja8+KjTsUREWiRjjBt4FhgBdAfGGWO6H9bsCeBVa206MAWo+z/tV4HHrbXdgAGA5rKJiDSStAEJAKzO1ChsfVTASoNxuVzcc/cDBMWGUxEcwqvrdpH7xD1OxxIRaYkGAGusteustRXAW8Cow9p0B+bWbn914PnaQtfPWvsfAGttsbV2X+PEFhGRiLhgWneMJGfBNqy1TsfxOSpgpUEZY5j827sIT2lDlX8Ab+2EJQ/e4nQsEZGWpi2wsc79/NrH6loCjKndHg2EG2NigTRgtzHmfWPMYmPM47UjuiIi0kjSBiaya0sJO/KLnY7ic1TAilfc8avfEJPeHWsMH1RF8N1d1+kbJBER33InMMQYsxgYAmwCqgE/YHDt8/2BDsDV9e3AGHODMSbLGJNVUFDQKKFFRFqCTie1wuU25C7Y6nQUn6MCVrzmt5deQevTT8VUV/N5UGvm3jIBW13tdCwRkZZgE5Bc535S7WMHWWs3W2vHWGv7AvfWPrab/aO12bXTj6uAD4CT6nsTa+2L1toMa21GfHx8w38KEZEWKijMn/Y9Y8nN3EZNjQaB6lIBK151w/Dz6Xjh+bgry5gXm8pHN03AVurCzCIiXpYJdDbGpBpjAoDLgVl1Gxhj4owxB/4OuAd4uc5ro4wxByrSs4CVjZBZRETqSBuQyL49FWzK3eV0FJ+iAla8bvwpg+l1xXj8Sov5IbETb990NTWlWhZcRMRbakdOJwJzgFXA29baFcaYKcaYkbXNzgByjDG5QALwSO1rq9k/ffhLY8wywAD/aOSPICLS4qX0iiUgyK1pxIdRASuN4qL0Pgz69U34l+xmVdvOvHrrjVTt2e10LBGRZstaO9tam2at7WitPVCcPmCtnVW7/a61tnNtm+usteV1Xvsfa226tbaXtfbq2pWMRUSkEfkFuOl4UivWLi6gskKn4R2gAlYazdCOnTj7jrsJKNpBXptUXpp8B5UF+kZJRERERKQ+aQMSqCyrJm/pDqej+AwVsNKoBrZuw6h7pxC4dztbE5J5/qEHKc1b43QsERERERGf0yYtmtCoQHIXbnM6is9QASuNrkdMDOOn/JnAom3sjEvkub9Oo2jFYqdjiYiIiIj4FJfLkNY/gQ3LCykt1tkcoAJWHNIuLIzrHnmKwH0FFEXG8Owrr1K44FunY4mIiIiI+JS0gYnU1FjWZG13OopPUAErjokPCuLmR/5KQPVuykLCeeG9j9j8n1nHfqGIiIiISAsRlxRGTJtQTSOupQJWHBXh788dU54iMLCcysAg/jn3O9a8+6rTsUREREREfEaXgYlsXbeHPQW6FKUKWHFcoMvFpN9PJSTWnxq3mzcW57D0n884HUtERERExCd07p8AQO5CXcFDBaz4BLcx3HXr/USlxmNtDTPztvPdU484HUtERERExHHhMUG06RxF7sJtWGudjuMoFbDiM4wx3HrtbbTpm4arspzPd5Xznz/e43QsERERERHHdRmYyO5t+yjYUOR0FEepgBWfc/2l15B29qn4lZXw36oAZt5ze4v/pklEREREWraOJ8Xj8jPkLGjZ04hVwIpPGnv2KDIuG0VA8W6WBEbyxl23UFNT43QsERERERFHBIb4k9orjtWZ26ipbrl/F6uAFZ91bsbpDL3+WoL2FLA6LI6X75hITWWl07FERERERByRNiCR0qJK8n/c5XQUx6iAFZ82sGs6o++6i9BdW8iPbMVzd91GVVmZ07FERERERBpd+56xBIb4kdOCVyNWASs+r0ubFMY/+DCRhRvYERXP07+fRNnu3U7HEhERERFpVG5/Fx37tWLd4gIqyqqcjuMIFbDSJLSJjue6x54mtnA9e8OjmfbwQ+xcu9bpWCIiIiIijarLgASqKmpYv2SH01EcoQJWmozwkDBufPIftN6zntKQcJ596R+smvOJ07FERERERBpN645RhMUEkrtwm9NRHKECVpoUf/8AbnhyOh1cBdS4XLw9/3988fQTTscSEREREWkUxmVIG5DIxlU7KdlT7nScRqcCVpoc43Ix4cHn6dUlBnd5KfMLi3ht8u+oqa52OpqIiIiIiNd1G9QaW2NZMW+z01EandcLWGPMucaYHGPMGmPM5Hqe/50xZqUxZqkx5ktjTHtvZ5LmYcyEOzl1zFmE7ClgbVAEz9x5G2W7Wu6S4iIiIiLSMkQlhNC+ZyzLv8mnurJlXRPWqwWsMcYNPAuMALoD44wx3Q9rthjIsNamA+8Cf/ZmJmlezjz5PEZMupOYHXnsiozlqT89zLalS52OJSIiIiLiVb2HJlNaVMnqrJZ1Lqy3R2AHAGusteustRXAW8Coug2stV9Za/fV3v0fkOTlTNLM9GrTgUv//DcS966lPDiEv7/1JkvfedPpWCIiIiIiXpPUNZqYNqFkf7kRa63TcRqNtwvYtsDGOvfzax87kmuBT72aSJql1iFhTHh8Oq2C9wDw/rJVzH70IYdTiYiIiIh4hzGG3mclU5hfzObc3U7HaTQ+s4iTMeZKIAN4/AjP32CMyTLGZBUUFDRuOGkSQtxufj15GrG9WhNQWsTCcss/7/wt1ZWVTkcTEREREWlwaQMSCArzZ8ncjcdu3Ex4u4DdBCTXuZ9U+9ghjDFnA/cCI6219a4Fba190VqbYa3NiI+P90pYafrcxnDzuN+SdOkFhO/awsawGP569x0UbdnidDQRERERkQblF+Cm5+ltWb90B7u37zv2C5oBbxewmUBnY0yqMSYAuByYVbeBMaYv8Hf2F6/bvZxHWogJA4aSPmkyrQrXUhQezdN/fZK8+d84HUtEREREpEH1HNIWl8uw7Kt8p6M0Cq8WsNbaKmAiMAdYBbxtrV1hjJlijBlZ2+xxIAx4xxiTbYyZdYTdiRyXYW1TOePR54gvX09lQCD/+nQO3//zeadjiYiIiIg0mNDIQDpnJLDquy2Ul1Y5HcfrvH4OrLV2trU2zVrb0Vr7SO1jD1hrZ9Vun22tTbDW9qm9jTz6HkU81z0snMumvERITDmummrm/LSFdx+4u0Wt1CYiIiIizVv6WUlUllez6r+bnY7idT6ziJOIt8QHBHDrrY/hPrkzwSV7WO4K5vnf3UJFcbHT0UREREREfrFW7SNo3SmSpXPzqamucTqOV6mAlRYh0OXinpHXEv5/lxGzcyPbI+N46g/3UrA61+loIiIiIiK/WJ+h7SjaWcb6pTucjuJVKmClxTDGcFOfU+l0z4Mk7lpNaVgkL/zzJVZ88qHT0UREREREfpGU3nGExwax5MvmfUkdFbDS4pzXOpnBj/ydGDZT4+fPu99n8p8npzodS0RERETkhLlchvQzk9iyZg/bf9rrdByvUQErLVKPsDCuvO95/JP98ass57979jH9rluprm7+K7eJiIiISPPU/dQ2+Ae5WTK3+Y7CqoCVFivG359J1z9A4Nn9CNu7k7zQaJ6+41aKC3Q5YhERERFpegKC/eh2SmvWZG6nZHe503G8QgWstGh+Lhd3DrucNjfdQKudeeyJiufpxx7lp8wFTkcTERERETlu6WcmUWMty77JdzqKV6iAFQGu6JxOxoOP07Z4DRUh4fzr/Zks+PcrTscSERERETkukfEhpKbHseLbzVRVVDsdp8GpgBWpNSAmngsffon4kEJwufg0Zy3vPfR7rLVORxMRERER8VjvocmUlVSSs2Cr01EanApYkToSg4K4ftIzxPWKJ7C8lGU1/jx/+82Ul5Q4HU1ERERExCNtOkcRlxzGkrn5zW4wxs/pACK+JsDl4qbLb+fdzl+y6bV32B6VyLR77+aa395GfIdOTscTEWkyKisryc/Pp6yszOko0siCgoJISkrC39/f6SgiLZIxht5Dk/ly+io2rtpJu+6xTkdqMCpgRY7gkn5DWdy2I4sevZ/86I78/YXnuWjoWfQcfr7T0UREmoT8/HzCw8NJSUnBGON0HGkk1loKCwvJz88nNTXV6TgiLVbnfgl89/5alnyZ36wKWE0hFjmKvokpjH7s73SsyqMqKIT3vpnPp9Meb3ZTMUREvKGsrIzY2FgVry2MMYbY2FiNvIs4zO3voteQtmxYUciurc3ndDgVsCLHEBsUwhV/fIXuidW4gQWFe3l50q1UVVY6HU1ExOepeG2Z9HsX8Q09BrfF7ediydzmc0kdFbAiHnAbw2U3/YnThvYkZF8RG0NjmPa7iezdvs3paCIiIiIi9QqJCCBtQAI532+hrKR5DL6ogBU5DmcMHc9lE39Fq92bKIptzd8efZg1mQucjiUiIkfgdrvp06fPwdvUqVMb/D3y8vIIDg4+5H1effXVI7YPCwtr8AwNITs7m9mzZx/368444wyysrK8kEhEGkLvoclUVdawcv5mp6M0CC3iJHKcUlLSufZPf+a9+28lNyKVN999lwErlzP8qmudjiYiIocJDg4mOzu7wfZ3xhlnMH36dFJSUg55vGPHjg36Pk7Izs4mKyuL8847z+koItKAYtuGkdQ1mqVf5dP77GTc7qY9hqkCVuQEBIZEc8Xjr/DZYxNZUBPL/3LXknfvnfzq/ofxDwpyOp6IiM956KMVrNy8t0H32b1NBH+4sEeD7S8lJYXLLruMTz/9lODgYN544w06dfLe5dN27NjBhRdeyH333cf55x+6wv2///1vnn76aSoqKhg4cCDPPfccP/zwA9deey0LFy6kurqaAQMGMGPGDHbs2MEDDzxAeHg4a9as4cwzz+S5557D5XLx+eef84c//IHy8nI6duzIK6+8QlhYGJmZmdx6662UlJQQGBjIf/7zHx544AFKS0uZP38+99xzDxdccAG33HILy5cvp7KykgcffJBRo0ZRWlrKNddcw5IlS+jatSulpaVeO0Yi0jB6n5XMJ88tZd0PBXTun+B0nF+kaZffIk5yuTn3nucZ3Ssa/+pqtviF8uSdvyV3wXdOJxMRkVqlpaWHTO2dMWPGUdtHRkaybNkyJk6cyG233ebx+6xdu/aQ95k3b95R22/bto3zzz+fKVOm/Kx4XbVqFTNmzOC///0v2dnZuN1uXn/9dfr378/IkSO57777mDRpEldeeSU9e/YEYOHChTzzzDOsXLmStWvX8v7777Njxw4efvhhvvjiC3744QcyMjJ48sknqaioYOzYsUybNo0lS5bwxRdfEBoaypQpUxg7dizZ2dmMHTuWRx55hLPOOouFCxfy1Vdfcdddd1FSUsLzzz9PSEgIq1at4qGHHmLRokUeHycRcUb7nrFEtgpmydyNTkf5xTQCK/ILpV92B+16fss7L/6LTXHJvDXzAzp+8gGX/v4hAoKCnY4nIuITGnKk9Hgc7xTicePGHfx5++23A/DKK68wbdo0ANasWcN5551HQEAAqampzJw5Ezi+KcSVlZUMHTqUZ599liFDhvzs+S+//JJFixbRv39/YH8R3qpVKwAeeOAB+vfvT1BQEE8//fTB1wwYMIAOHToczD5//nyCgoJYuXIlp556KgAVFRUMGjSInJwcWrdufXD/ERER9eb8/PPPmTVrFk888QSw/7JIGzZs4Ntvv+W3v/0tAOnp6aSnp3v0uUXEOcZl6H1WMt++lcvWdXtI7BDpdKQTpgJWpAFEdT+d6584mTnTJpFZEcxq489f7/gtl1x5FR0GneZ0PBER8VDdy78c2L7mmmu45pprgCOfA3s8/Pz86NevH3PmzKm3gLXWctVVV/Hoo4/+7LnCwkKKi4uprKykrKyM0NDQn+U+cN9ay7Bhw3jzzTcPeW7ZsmUe5bTW8t5779GlSxdPP5qI+LAuJyeyYNY6lny5sUkXsJpCLNJQ/AIYfsdfuWL8+SQUbWVffFv+/cGHvHP/XVSU6fwgEZGm4MAU4xkzZjBo0CCvvIcxhpdffpkff/yRxx577GfPDx06lHfffZft27cDsHPnTn766ScAfv3rX/PHP/6R8ePHc/fddx98zcKFC1m/fj01NTXMmDGD0047jZNPPpn//ve/rFmzBoCSkhJyc3Pp0qULW7ZsITMzE4CioiKqqqoIDw+nqKjo4D6HDx/OM888g7UWgMWLFwNw+umn88YbbwCwfPlyli5d2tCHSES8ICDIj+6ntmHt4gKKdpY5HeeEqYAVaWAdepzG9X9+lq7hRRg/f1aYYKb9biJrvzv6+VAiItLwDj8HdvLkyUdtv2vXLtLT05k2bRpPPfWUx+9z+Dmwdaf31sftdvPmm28yd+5cnnvuuUOe6969Ow8//DDnnHMO6enpDBs2jC1btvDqq6/i7+/PFVdcweTJk8nMzGTu3LkA9O/fn4kTJ9KtWzdSU1MZPXo08fHxTJ8+nXHjxpGens6gQYP48ccfCQgIYMaMGdxyyy307t2bYcOGUVZWxplnnsnKlSsPnit8//33U1lZSXp6Oj169OD+++8H4De/+Q3FxcV069aNBx54gH79+nl8nETEWb3OTAJg2Vf5Dic5cebAt2pNSUZGhtX1xqQpmL/0Oxa/+hqFYQm49hXTw7+GC+59mMCQEKejiUgdxphF1toMp3M0ZfX1zatWraJbt24OJTp+KSkpZGVlERcX53SU4/L111/zxBNP8PHHHzsd5RBN7fcv0lJ89uJy8n/cyYQ/nUJAkO+eUXqkvlkjsCJedFr6KVz5yF9JCC/FBASyzB3KM7+byJp5XzkdTURERERaoD5nJ1O+r4qc/211OsoJ8d2SW6SZiA4M5MbfTeWtxf9l25tvsTuxHW/O+pges2dy/v1TNRorItLIRo8ezfr16w957LHHHiMvL69B32fgwIGUl5cf8thrr71Gr169GvR9zjjjDM4444wG3aeINF8JqRG0SolgydyN9Dy9LcZljv0iH6ICVqQRGGMYd9JprO/Slxkv/ImK6mCWmhDW334To8aNp9MZw5yOKCLSYhy49I23LViwoFHeR0TkeBhj6D00if/8cyU/rSgkpVfTOm1CU4hFGlFqaCh3/e5hIkaeS3jZHopap/Dmx7N5f9JNlO8rcTqeiDQjxphzjTE5xpg1xpifrVxkjGlvjPnSGLPUGPO1MSapznPVxpjs2tusxk0uIiLe1vGkVoRGBbLky41ORzluKmBFGpnbGG7rfxpD73+EmgiLDQ5laWAMf7vtN+R+MdvpeCLSDBhj3MCzwAigOzDOGNP9sGZPAK9aa9OBKUDdi46WWmv71N5GNkpoERFpNG63i15ntCX/x10Ubip2Os5xUQEr4pA+4eHce9sf4PzhhFSWUNSmAzM+/Zz37riB0jrX4RMROQEDgDXW2nXW2grgLWDUYW26A3Nrt7+q53kREWnGegxui5+/iyVzm9YorApYEQcFulw8cPJgBk/+A/si3dSEhrMspBXP3X4TOXM+cDqeiDRdbYG6f5Hk1z5W1xJgTO32aCDcGBNbez/IGJNljPmfMeYiryb1sry8PHr27Hncrzv33HPp3bs3PXr04MYbb6S6uhqAd955hx49euByudAl/USkKQsK9afLoNbkLtjGvr0VTsfxmApYER8wKCqKh377e8rPP5egqlKKkjryzpyvePe2azQaKyLecicwxBizGBgCbAKqa59rX3vtvSuAvxpjOta3A2PMDbWFblZBQUGjhG4sb7/9NkuWLGH58uUUFBTwzjvvANCzZ0/ef/99Tj/9dIcTioj8culnJlFdVcOKeZucjuIxFbAiPiLY7eZPA0/l9En3sTcqgOqwSFaEteH5224k55N3nI4nIk3LJiC5zv2k2scOstZuttaOsdb2Be6tfWx37c9NtT/XAV8Dfet7E2vti9baDGttRnx8fEN/hga3bt06+vbtS2Zm5jHbRkREAFBVVUVFRQXG7L/MRLdu3ejSpYtXc4qINJaY1qG06xHD8m82UV1Z43Qcj+gyOiI+5pToaPrecjePLFpIyAfvsze5M+988S1dP5vFeQ8/Q0hklNMRRcT3ZQKdjTGp7C9cL2f/aOpBxpg4YKe1tga4B3i59vFoYJ+1try2zanAn39xok8nw9Zlv3g3h0jsBSOmetQ0JyeHyy+/nOnTpxMUFESfPn3qbff1118TFRUFwPDhw1m4cCEjRozgkksuaaDQIiK+pffQZD56egmrF22j68mtnY5zTCpgRXxQsNvNwwMGkZXWjTde+wcRNTWsqA7np9t+w/kXXUDXUeOdjigiPsxaW2WMmQjMAdzAy9baFcaYKUCWtXYWcAbwqDHGAt8CN9e+vBvwd2NMDftnak211q5s9A/RgAoKChg1ahTvv/8+3bvvX4w5Ozv7mK+bM2cOZWVljB8/nrlz5zJsmK7ZLSLNT3K3GKITQ1jy5Ua6DEw8OOPEV6mAFfFhGVFR9L75Dv68KAv7wXsUte/Cu199T9c5n3DeI88SEh3tdEQR8VHW2tnA7MMee6DO9rvAu/W87jugV4MH8nCk1BsiIyNp164d8+fPp3v37uTk5DB27Nh629YdgQUICgpi1KhRfPjhhypgRaRZMsbQe2gyX7+ew5Y1u2nT2bf/vlQBK+Lj/F0u7u0/gJyu3fjnqy8RYmtYURXBhtt/w4gLhtPtkmucjigi4tMCAgKYOXMmw4cPJywsjCuuuOKoI7DFxcUUFRXRunVrqqqq+OSTTxg8eHDjBRYRaWRdBibyvw/Wkf3FRp8vYLWIk0gT0SU8nMduuo02o8fgMpa9KV15f14WM359GSU7m9fqnyIiDS00NJSPP/6Yp556ilmzZh21bUlJCSNHjiQ9PZ0+ffrQqlUrbrzxRgBmzpxJUlIS33//Peeffz7Dhw9vjPgiIl7lF+Cmx+A2rF+6gz0FpU7HOSpjrXU6w3HLyMiwuvaatGTbSkt5/l//hC0FmMoKwjevY/jwIfQYd5PT0USaJGPMotrLxsgJqq9vXrVqFd26dXMokThNv3+RpqV4Vzmv3fsdvc5I4rTLOjsd54h9s0ZgRZqghOBgHrxxIgMuuwyX28XelG588P1y3rxuDCUFW5yOJyIiIiJNTFh0IJ0yWrHyu81UlFY5HeeIVMCKNGHn9ejBnfc9QHhSaypjWrE6Po2/3/lbsv/1JE1xdoWIiIiIOKf30GQqy6pZ9Z3vDoiogBVp4oIDA7njul9z4bhxuAL82JvSnU+ycnntVyPZu3m90/FEREREpIlo1T6C1p0iWfrVRmpqfHMwRAWsSDPRr0sX7vr9/SSntqcyNpG8xO78/feTmXnLWPZuXO10PBERERFpAnqflczeHWXkLdnhdJR6qYAVaUYCAwO59upfMX78ePyCgihJ6cby4CSe/8Mf+ODGi9m1ernTEUVERETEh6X2jiM8Joglczc6HaVeKmBFmqHOnTtz1+/v48xhwzChYZS2S2NpZAdenDqVmdddxI7lmU5HFBEREREf5HK7SD8ric2rd1OwocjpOD+jAlakmfL392fIqacy+d77GXTuuRAaSmlyJ5bFpfHStGd49+oL2Zb5tdMxRUS8Ki8vj549ex736+69916Sk5MJCws75PHp06cTHx9Pnz596NOnDy+99FJDRRUR8RndTm2Df6CbJV/63iisCliRZs7Pz4/hJ5/Mffc9QPqIEVSFhlLWtgMr2/Tg5Zem89aVF7Dp24+djiki4lMuvPBCFi5cWO9zY8eOJTs7m+zsbK677rpGTiYi4n2BwX50PaU1q7O2UbKn3Ok4h1ABK9JCuFwuxgwcyIP33k/qiBGUhoZS3jqFnPbpvPrG+7x+xfn8NPstp2OKiHjNunXr6Nu3L5mZxz6N4uSTT6Z169aNkEpExDeln5lETY1l+TebnI5yCD+nA4hI43K5XFw1cCCVGRm8sGgReXP/Q7h/O9bEteanj7+g7WuvcdqYMXS45FcYY5yOKyLNxGMLH+PHnT826D67xnTl7gF3e9Q2JyeHyy+/nOnTpxMUFESfPn3qbff1118TFRV11H299957fPvtt6SlpfHUU0+RnJx8nMlFRHxfVKsQUnrFsfzbTfQ7tz1+AW6nIwEqYEVaLH+3m1sGDKC0Xz+eWbyYjV9/SayfP3mxiWz6ZgGJ773PqecOI+2qW1XIikiTVlBQwKhRo3j//ffp3r07ANnZ2Se0rwsvvJBx48YRGBjI3//+d6666irmzp3bgGlFRHxH76HJ5C3dQW7mNrqf2sbpOIAKWJEWL9jtZlJGBkV9+vBUdjabvv2a1m4/NsQksGXRj8R/eiGnnD6I7jdOxuX2jW/eRKTp8XSk1BsiIyNp164d8+fPp3v37uTk5DB27Nh62x5rBDY2Nvbg9nXXXcekSZMaOq6IiM9omxZFbFIYS77cSLdTWvvEoIYKWBEBINzPjwcyMtjduzd/XbGCvG+/JsW42Bzdig9zNzH/iosY2K8X6bc/iNs/wOm40oKVlpayZMkSVqxYwYQJE/D393c6kvi4gIAAZs6cyfDhwwkLC+OKK6444RHYLVu2HDw3dtasWXTr1q0Bk4qI+BZjDL3PSmbuq6vI/3EXyd1inI6kAlZEDhXl78+Dffqwq0cPpq1aRe78b0kzsDUqnk82F/LdhEsZ0CWVk+5+FHdwsNNxpQXZsmULmZmZLF26lKqqKpKSkiguLiY6OtrpaNIEhIaG8vHHHzNs2DDCwsIYOXLkUdtPmjSJN954g3379pGUlMR1113Hgw8+yNNPP82sWbPw8/MjJiaG6dOnN84HEBFxSOf+rfh+5hqWzN3oEwWssdY6neG4ZWRk2KysLKdjiLQIe6uqeDY3l8Xz59F90ybA4Fe0i4itGxmQ3Ip+9z6Of0SE0zGlmaqsrGTlypVkZmaSn5+Pn58f6enpZGRk0KZNw52LY4xZZK3NaLAdtkD19c2rVq3SCGULpt+/SPOx8OP1ZH68niseHEh0YmijvOeR+maNwIrIUUX4+XFP9+7s69KFF9etY/78efTMq2FnRAz/KdrN/276FRmxYfS/7zEC4xOcjivNxK5du8jKymLx4sXs27ePmJgYhg8fTp8+fQiuHfm31vrEuTgiIiLNXc/T27LoszyWfpXPkHFdHM2iAlZEPBLidnNb587c3LEjb2zcyCfz59EtN4fd4T35qmQvC++4hb4hbk7+/VSC27V3Oq40QTU1Naxdu5bMzExyc3MxxtClSxf69+9PamoqLpcLay27shby/UvT2LlpK5e89i5BUZpCLCIi4k0hEQGk9U/gx++3MHBkB4JCnVt/QgWsiBwXf5eLq9q3Z0K7dny2bRvvzPuWpBXL2NuhO/NKi/nhgcmkmwoGTf4jYV26Ox1XmoB9+/axePFisrKy2LVrF6GhoZx++un069ePyMhIAErWrWPZ3//CmlU5FAQGUONyERLoR+6ir0kfOtrhTyAiItL89R6azI/fb2Xl/M2cNNy5wQoVsCJyQowxjEhMZMSll7Fk2Dm8PO9bIn7IoiilC9+X7SP7sUfoWVHEKbffT2S//k7HFR9jrWXTpk1kZmayfPlyqqurad++PUOHDqVr1674+flRtm07S/52D6sWLWKry49qt4vAAD8SQiqJP2coZ1w8Ef+gMKc/ioiISIsQlxRO2y5RLPs6n95nJ+N2uxzJoQJWRH6x3lFRTLtwJNuHncM/5s+n7Lt51LTrTGZ5KUuff4ZuRYWcetMdxA45y+mo4rCKigqWL19OZmYmW7ZsISAggJNOOomMjAwSEhKoKilh9QtPsvLbr8ivgSq3G3+Xm9iAcsoG9qHfuNs5qVWS0x9DRESkRep9VjKzn1/GusUFdM5wZu0TFbAi0mBaBQVx79lnU3HGGbyxcCHrv/oPpYEdWFzRlpWvv0rHpx+j3/kX0W7MOPyiopyOK42osLCQzMxMsrOzKSsrIz4+nvPOO4/09HQC3G7WzXiFBZ99zE+lFVT4+eFXA7GucrZ1S8F12c2c1zmdWF3vVURExFEpveKIiA9myZcbVcCKSPMR4OfH1aecgh00iHkrVjBv9oeUBaSwMr4NuYuXEDJ3Lsn79tKxW1c6XX4dYT17ajXZZqi6uprVq1eTmZnJ2rVrcblcdOvWjf79+5OcnMymzz5g7s2PsX53CWV+frhqaoinnG3JUfw4+hpGd+vPFdHRuPRvQ36BvLw8LrjgApYvX+7xa4qKihg8ePDB+/n5+Vx55ZX89a9/9UJCEZGmw7gMvc9KYt6M1Wxdt4fEDpGNnkEFrIh4jTGG03v2ZHCPHqxZt46PP53FHj9/9sQmsqe6mh9L9uL/9BPE7SygQ3QonYZdSJtRl+EOCnI6uvwCxcXF/PDDD2RlZbF3714iIiI488wzOemkkyhZvohlf/49n20rpMTPH1Njia8ph7hgvhhxCaekD+aqxERaBQQ4/TGkBQsPDyc7O/vg/X79+jFmzBjnAomI+JCug1qz4MN1LJ27UQWsiDRPxhg6d+zI7RNvp7y8nEW5uXyzOIvy9eupiohmY9tUNpXt4/t5/yXko49oV1FCh/SedP6/3xDaPtXp+OIBay0bNmwgMzOTlStXUlNTQ4cOHRgxYgRx1WUsn/433nrmT+x1+4O1xFVX4hftx8yzRpDSbxhXt27NTeHhGokXr1q3bh0XX3wxL774Iv37e7a4XG5uLtu3bz9kRFZEpCULCPKj+2ltWDI3n0E7ywiPadyBBxWwItKoAgMDOaVXL07p1QtrLfPz8vh06RIqcpYTFhhMRVxrdldXsXJnEf4PP0j87h10iI+k8/kX0/rci3C53U5/BKmjvLycpUuXkpmZyfbt2wkMDKR///50TWrDpnde4vuP3mCXa39XE11ZRXyw5ePBZ8ApIxmfmMj7MTEEupxZxVAa19Y//YnyVT826D4Du3Ul8fe/96htTk4Ol19+OdOnTycoKIg+ffrU2+7rr78mqs45+m+99RZjx47VlysiInX0OiOJJV9uZPk3+Qwa3alR31sFrIg4xhjD4NRUBqemUmNH8c327cxavpwduatI3WaoiohmQ9tU8sv28d2nnxPy1pukVJfR4aS+dJ4wkeBWziweILB9+3aysrLIzs6moqKCxMREhp91JjX/m8Pafz3NSrv/i4bIiipaB1fyTUYGW4ddzsUJrXkpLo4IP3U/0ngKCgoYNWoU77//Pt27778+dd0pwkfz1ltv8dprr3kxnYhI0xMRF0yHPvGsmLeZjPNS8Q9svAEG/QUhIj7BZQxnJiRwZkIC1Wedxbzdu/lg9WpyV+fSZcM6ImtHZ7Orq1i+eQ9+906i1d4ddGwdS5fRV5Bw+nCNkHhZdXU1P/74I5mZmeTl5eF2u+napQvRW9ewdd7HfDf3IzCGsLIqkvxKWZzeg+9HXsMFiW15LC6OKK0i3KJ5OlLqDZGRkbRr14758+fTvXt3cnJyGDt2bL1t647ALlmyhKqqKvr169eIaUVEmobeQ5NZu7iAnP9toeeQxrvEnQpYEfE5bmM4IzqaMwYMoKZ/f7KKivhoyxaycnII37CebgWGqoiYg6Oz/31nJiEv/ZNUU07HgQPpPP4mAqOinf4YzUJxcTHbtm3jp59+4ocffqC4uJjIyEh6xIWyb9H3bFz2PzYYQ0h5Jcm2jJ+6diD7khs4J6UT98fEEKop3+IDAgICmDlzJsOHDycsLIwrrrjCoxHYN998k3Hjxnk/oIhIE5TYMZJW7cNZMjefHoPbYlyNM5CgAlZEfJrLGAZERDAgIgK6dCGvtJTZhYV8k5dHwbp19N24nvDa0dnF1VUsW7sNv7tuI6G4kE7JCaRdOoFWGadrdPYYKioq2L59O9u3b2fbtm0Hf+7bt+9gm5jwYBIL1rFv5Q42GBdBFVUkV+6juGMSBeN/Q98u6VwcEYFbx1p8UGhoKB9//DHDhg0jLCyMkSNHHvM1b7/9NrNnz26EdCIiTY8xht5Dk/nPyyvZsHIn7XvGNs77Wmsb5Y0aUkZGhs3KynI6hog4rLymhv/u2cOX27axfPVqQvLW0mXHDjD7v5tzlZXgV7yXkL076eBXSafTTqPjZTcQGBbhcHLnVFdXs3PnzoNF6oFCddeuXQfb+LldhLkN7rIi2LsbW7SHqn2l2JoaAqqqSdhXgn/7Vvhd+RtOHjCY+GZwyRtjzCJrbYbTOZqy+vrmVatW0a1bN4cSidP0+xdp/qqranjt3u+IaRPKyFv7Nui+j9Q3awRWRJqsQJeLs6KjOSs6Grp2ZU9VFd/s2sV/8/LYuGYNSWtzCAkMOTg6u3T5Bvy+n0irkl106tCGbpddQ1yvgc1ydNZaS1FR0SGjqdu3b6egoIDq6uoDrQiursSvrISIfSVUlZViysswleVUA9XWElxRRWhFJaE1VcS0jqL9hBtJHXIeLq0cLCIi0uK5/Vz0PCOJBR+uo3BzMbFtwrz+nl4vYI0x5wLTADfwkrV26mHPBwKvAv2AQmCstTbP27lEpPmJ9PNjZHw8I+PjoX9/Sqqr+a6ggIU5OexesZSwrew/dxbILy1h/osvE7L3L4TVlBLiMoQGBxARHkZIVBSh8QmEtkkiNLkjocmdCI6K89lL+JSVlR0ymrpt61a2bdtKeUXlwTbuqgrcZftwl5fhX16Kq/bmrq4mpKKKkMpKAk01JsCFjQzHr01bYrqn06nvqbTp3A1XMxhlFRERkYbXc3BbsmbnsXRuPmde2dXr7+fVAtYY4waeBYYB+UCmMWaWtXZlnWbXArustZ2MMZcDjwH1Lw0oInIcQt1uhiUmMiwxEYYMoaamhqUbN7Jg+TJ2Zf9AWVAIFXFt2H3gBbYGU10N+6ox63Zh1uzA1CyC6mpMTTXuqkr8q6sIrKkikBqC3RAS4EdYaDDhUZFExicQmdye0PZphCR1IiAkpEE/T3V1NTt27GD79u1s3pDHprWr2bF7D/tq/v8IsqmuxpSX4i4vJbC2SA3YV0xYaSkhNVW43VAV7M/OyEg2pXagKK0XwV370jWxNb3Cw+kRGoq/RldFRETEQ0Fh/nQ5OZGc/23l5Is6EBzm3S+9vT0COwBYY61dB2CMeQsYBdQtYEcBD9Zuvwv8zRhjbFM8OVdEfJrL5aJP+/b0ad8ezr+A0tJSfvrpJ7bv2cNPu3ezvbCQfbt2UL13D7asFFPlwmX9wbiocbmpdPtRBhTVt/NSYEMR5C3FfPPD/kKyuhp3dRV+1VX42WoCbDVBLgjydxMSFEhYeDhhsbFEtk4iJrULEcmpBIeEYIxh9+7d/JSdyU8rlrBtx052V1pK/QKwpra4tBZXRRmuslICyksJ3FdMePEeQipLMf4u9oUFsyU2lpVpafzYoSfBbVPoHBZGj9BQeoSEcEpoKClBQbia4fRpERERaVy9z0xm5bzNrPh2MxnnpXj1vbxdwLYFNta5nw8MPFIba22VMWYPEAvs8HI2EWnhgoOD6dq1K0ea7FJWXU1eWRlry8pYW1rKhn372FxSwraSEgpLSthXUkLM3t2027ODVsV7iCwtJbiiEv8ai7FgjXt/4esfQpnbjxq3G1x1piHvA/btho27YeHy//94TQ3UGQU1lQZXWSnBpYUE7ysiuKIEl6uKPeFhrE9sw9rUk9jROZ340HDaBQXRPiiIlKAg0oOCuDk4mFhdf1VERES8KKZNKO26x7Dsm3z6ntMOt5/3ZnM1mUWcjDE3ADcAtGvXzuE0ItISBLnddA0NpWtoaL3PW2vZU1XF1ooKtldWsquqip2VlRRWVrK3upri6mqKan+W1dRQXlNDZXk5sdt+ovXmfCJ3FRBaVERAaSl+lVXYaqjBUI2LwJoKAt01uKLDqeyURmnvQQQmJBPl50ecvz/xAQH7f/r7E6ApvyIiIuKw9KHJZH68npI95UTEBnvtfbxdwG4CkuvcT6p9rL42+cYYPyCS/Ys5HcJa+yLwIuxfqt8raUVEjoMxhih/f6L8/Y84ilu//l5KJCKHy8vL44ILLmD58uXHblzHueeey5YtW6iqqmLw4ME8++yzuH10ITcREV/QrnsM7Xt4/1qw3v7aPhPobIxJNcYEAJcDsw5rMwu4qnb7EmCuzn8VERERJ7399tssWbKE5cuXU1BQwDvvvON0JBERn9ZYlyX0agFrra0CJgJzgFXA29baFcaYKcaYkbXN/gnEGmPWAL8DJnszk4iIiLRM69ato2/fvmRmZh6zbUREBABVVVVUVFQ0y+tFi4g0RV4/B9ZaOxuYfdhjD9TZLgMu9XYOERERcc68t3PZsbG4QfcZlxzG4MvSPGqbk5PD5ZdfzvTp0wkKCqJPnz71tvv666+JiooCYPjw4SxcuJARI0ZwySWXNFBqERH5JZrMIk4iIiIiJ6KgoIBRo0bx/vvv0717dwCys7OP+bo5c+ZQVlbG+PHjmTt3LsOGDfNyUhERORYVsCIiIuJ1no6UekNkZCTt2rVj/vz5dO/enZycHMaOHVtv27ojsABBQUGMGjWKDz/8UAWsiIgPUAErIiIizVpAQAAzZ85k+PDhhIWFccUVVxx1BLa4uJiioiJat25NVVUVn3zyCYMHD268wCIickQqYEVERKTZCw0N5eOPP2bYsGGEhYUxcuTII7YtKSlh5MiRlJeXU1NTw5lnnsmNN97YiGlFRORIVMCKiIhIs5WSknLwGrBRUVEerUCckJDgUTsREWl83r4OrIiIiIiIiEiDUAErIiIiIiIiTYIKWBEREREREWkSVMCKiIiI11hrnY4gDtDvXUS8RQWsiIiIeEVQUBCFhYUqZloYay2FhYUEBQU5HUVEmiGtQiwiItIMGWPOBaYBbuAla+3Uw55vD7wMxAM7gSuttfl1no8AVgIfWGsnnkiGpKQk8vPzKSgoOMFPIU1VUFAQSUlJTscQkWZIBayIiEgzY4xxA88Cw4B8INMYM8tau7JOsyeAV621/zLGnAU8Cvxfnef/CHz7S3L4+/uTmpr6S3YhIiJyCE0hFhERaX4GAGusteustRXAW8Cow9p0B+bWbn9V93ljTD8gAfi8EbKKiIh4TAWsiIhI89MW2Fjnfn7tY3UtAcbUbo8Gwo0xscYYF/AX4E6vpxQRETlOKmBFRERapjuBIcaYxcAQYBNQDdwEzK57PuyRGGNuMMZkGWOydJ6riIg0BtMUVwY0xhQAPzXAruKAHQ2wn+ZOx8kzOk6e0XHyjI7TsTXkMWpvrY1voH05zhgzCHjQWju89v49ANbaR4/QPgz40VqbZIx5HRgM1ABhQADwnLV28jHeU31z49Jx8oyOk2d0nDyj43RsXu+bm2QB21CMMVnW2gync/g6HSfP6Dh5RsfJMzpOx6ZjdGTGGD8gFxjK/pHVTOAKa+2KOm3igJ3W2hpjzCNAtbX2gcP2czWQcaKrEJ9gdv1ePaDj5BkdJ8/oOHlGx+nYGuMYaQqxiIhIM2OtrQImAnOAVcDb1toVxpgpxpiRtc3OAHKMMbnsX7DpEUfCioiIHAddRkdERKQZstbOBmYf9tgDdbbfBd49xj6mA9O9EE9EROSEtPQR2BedDtBE6Dh5RsfJMzpOntFxOjYdo+ZJv1fP6Dh5RsfJMzpOntFxOjavH6MWfQ6siIiIiIiINB0tfQRWREREREREmogWUcAaY841xuQYY9YYY352GQBjTKAxZkbt8wuMMSkOxHScB8fpd8aYlcaYpcaYL40x7Z3I6bRjHac67S42xlhjTItbrc6TY2SMuaz239MKY8wbjZ3RF3jw31w7Y8xXxpjFtf/dnedETqcZY142xmw3xiw/wvPGGPN07XFcaow5qbEzyvFT3+wZ9c2eUd98bOqbPaO+2TOO9s3W2mZ9A9zAWqAD+69ltwToflibm4AXarcvB2Y4ndtHj9OZQEjt9m90nOo/TrXtwoFvgf+x/xIUjmf3pWMEdAYWA9G191s5ndtHj9OLwG9qt7sDeU7nduhYnQ6cBCw/wvPnAZ8CBjgZWOB0Zt2O+TtV39xwx0l9s/rmhvq3pL5ZffPxHCvH+uaWMAI7AFhjrV1nra0A3gJGHdZmFPCv2u13gaHGGNOIGX3BMY+TtfYra+2+2rv/A5IaOaMv8OTfE8AfgceAssYM5yM8OUbXA89aa3cBWGu3N3JGX+DJcbJARO12JLC5EfP5DGvtt8DOozQZBbxq9/sfEGWMad046eQEqW/2jPpmz6hvPjb1zZ5R3+whJ/vmllDAtgU21rmfX/tYvW3s/mvn7QFiGyWd7/DkONV1Lfu/VWlpjnmcaqdIJFtrP2nMYD7Ek39LaUCaMea/xpj/GWPObbR0vsOT4/QgcKUxJp/9l0O5pXGiNTnH+/8vcZ76Zs+ob/aM+uZjU9/sGfXNDcdrfbOuAyvHzRhzJZABDHE6i68xxriAJ4GrHY7i6/zYP1XpDPaPFnxrjOllrd3tZCgfNA6Ybq39izFmEPCaMaantbbG6WAi4lvUNx+Z+maPqW/2jPpmh7WEEdhNQHKd+0m1j9Xbxhjjx/7pAIWNks53eHKcMMacDdwLjLTWljdSNl9yrOMUDvQEvjbG5LF/zv+sFrZYhCf/lvKBWdbaSmvteiCX/Z1mS+LJcboWeBvAWvs9EATENUq6psWj/3+JT1Hf7Bn1zZ5R33xs6ps9o7654Xitb24JBWwm0NkYk2qMCWD/QhCzDmszC7iqdvsSYK6tPfu4BTnmcTLG9AX+zv4OsiWeFwHHOE7W2j3W2jhrbYq1NoX95yONtNZmORPXEZ78N/cB+7/hxRgTx/5pS+saMaMv8OQ4bQCGAhhjurG/kyxo1JRNwyxgQu2KhycDe6y1W5wOJUelvtkz6ps9o7752NQ3e0Z9c8PxWt/c7KcQW2urjDETgTnsX1nsZWvtCmPMFCDLWjsL+Cf7h//XsP9k5MudS+wMD4/T40AY8E7tOhobrLUjHQvtAA+PU4vm4TGaA5xjjFkJVAN3WWtb1MiKh8fpDuAfxpjb2b9oxNUt8A94jDFvsv+Pqrjac47+APgDWGtfYP85SOcBa4B9wDXOJBVPqW/2jPpmz6hvPjb1zZ5R3+w5J/tm0wKPt4iIiIiIiDRBLWEKsYiIiIiIiDQDKmBFRERERESkSVABKyIiIiIiIk2CClgRERERERFpElTAioiIiIiISJOgAlakGTLGRBljbnI6h4iIiOynvlmkYaiAFWmeogB1kiIiIr4jCvXNIr+YCliR5mkq0NEYk22MedzpMCIiIqK+WaQhGGut0xlEpIEZY1KAj621PZ3OIiIiIuqbRRqKRmBFRERERESkSVABKyIiIiIiIk2CCliR5qkICHc6hIiIiBykvlmkAaiAFWmGrLWFwH+NMcu1UISIiIjz1DeLNAwt4iQiIiIiIiJNgkZgRUREREREpElQASsiIiIiIiJNggpYERERERERaRJUwIqIiIiIiEiToAJWREREREREmgQVsCIiIiIiItIkqIAVERERERGRJkEFrIiIiIiIiDQJ/w/Et7ANagl/rAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "t_cont = np.linspace(start=0, stop=1, num=100)\n", + "x_t_pred = np.sin(t_cont) + np.cos(t_cont)\n", + "dx_dt_pred = np.cos(t_cont) - np.sin(t_cont)\n", + "x_t_exp = np.array(x_t_exp)\n", + "dx_dt_exp = np.array(dx_dt_exp)\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", + "ax1.set_xlabel('t')\n", + "ax1.set_ylabel('E_k, E_p')\n", + "ax1.set_title(\"E_k and E_p vs t for different k\")\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", + "ax2.set_title(\"E_k+E_p vs t for different k\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('E_k+E_p')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "for i in range(4):\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, k={}\".format(k_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, k={}\".format(k_vals[i]))\n", + " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"k={}\".format(k_vals[i]))\n", + "ax1.legend(loc='best')\n", + "ax2.legend(loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "207b294e", + "metadata": {}, + "source": [ + "So it seems that $k=31$ might be a slight overkill for this problem as all circuits with $k\\geq7$ perform pretty well in this interval. Let's look at how circuit depths and widths (unconstrained) depend on $k$." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "6b92e17d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done for k=127.\n", + "Done for k=63.\n", + "Done for k=31.\n", + "Done for k=15.\n", + "Done for k=7.\n", + "Done for k=3.\n" + ] + } + ], + "source": [ + "k_vals = [127, 63, 31, 15, 7, 3]\n", + "circuit_widths = []\n", + "circuit_depths = []\n", + "for k_val in k_vals:\n", + " k = k_val\n", + " qmod = create_model(main)\n", + " qprog = synthesize(qmod)\n", + " circuit_width = QuantumProgram.from_qprog(qprog).data.width\n", + " circuit_depth = QuantumProgram.from_qprog(qprog).transpiled_circuit.depth\n", + " circuit_widths.append(circuit_width)\n", + " circuit_depths.append(circuit_depth)\n", + " print('Done for k={}.'.format(k_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3faa79df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "k_vals = np.array(k_vals)\n", + "fig, ax0 = plt.subplots()\n", + "ax1 = ax0.twinx()\n", + "ax0.set_xlabel(\"log_2(k+1)\")\n", + "ax0.set_ylabel(\"Circuit depth\")\n", + "ax1.set_ylabel(\"Circuit width\")\n", + "p0 = ax0.plot(np.log2(k_vals+1), circuit_depths, 'b.', markersize=8, label=\"Depth\")\n", + "p1 = ax1.plot(np.log2(k_vals+1), circuit_widths, 'r.', markersize=8, label=\"Width\")\n", + "plt.title(\"Circuit depths and widths vs k, unconstrained\")\n", + "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0b05a02c", + "metadata": {}, + "source": [ + "We can see that while circuit width scales approximately linearly with $\\log_2(k+1)$ as expected, circuit depth increases dramatically with k while not providing a significant boost in accuracy. Therefore, a k value of ~15 might be a good choice for this problem that provides both good accuracy and efficient circuit. The analysis routine used in this document can also be adapted to other problems by modifying the $\\mathcal{M}$ matrix used in the ``operate()`` function." + ] + }, + { + "cell_type": "markdown", + "id": "09aadab4", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "3726527f", + "metadata": {}, + "source": [ + "In this work we investigated a quantum algorithm[1] for solving linear differential equations. The algorithm is adapted to solve the second-order harmonic oscillator equation, and the routine can be conveniently implemented in Classiq with high-level state preparation and operation programs. By building a quantum circuit for each time point, one can obtain a solution vector $(x(t), dx/dt(t))$ from a set of initial conditions $(x(0), dx/dt(0))$. Results turn out to agree with theory within ~1%, and the optimal bound and k values found to give both good accuracy and efficient circuits (in terms of circuit depth and width) are bound=0.001 and $k=15$. Further work can be done on variants of the harmonic oscillator equations (e.g., with damping) or other more complex differential equations that are expected to cost more resources to test the applicability of this quantum algorithm." + ] + }, + { + "cell_type": "markdown", + "id": "f1db3d7a", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "id": "3d4b8332", + "metadata": {}, + "source": [ + "[1] Xin, Tao et al., Phys. Rev. A 101, 032307 (2020)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Classiq_open-challenge_ODE.ipynb b/Classiq_open-challenge_ODE.ipynb new file mode 100644 index 0000000..ab63757 --- /dev/null +++ b/Classiq_open-challenge_ODE.ipynb @@ -0,0 +1,1371 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fcd550c9", + "metadata": {}, + "source": [ + "# Classiq Q-SITE 2024 Open Challenge - Team QubitSquad" + ] + }, + { + "cell_type": "markdown", + "id": "5cd0a4d1", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "id": "62af4d5e", + "metadata": {}, + "source": [ + "The Classiq Q-SITE open challenge asks us to implement a quantum algorithm in the paper by Tao Xin, et al.[1] in 2020 to solve the linear differential equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$, with the condition $x(0)=1$, $\\frac{dx}{dt}(0)=1$. After the equation is solved, we are asked to: 1) Evaluate the kinetic energy $E_k=\\frac{1}{2}\\left(\\frac{dx}{dt}\\right)^2$ and the potential energy $E_p=\\frac{1}{2}x^2$ as a function of $t$, assuming both unit mass and spring constant; 2) Analyze how $E_k$ and $E_p$ vary when different values for the bounds are used in the algorithm; 3) Analyze the gate count when optimizing the circuit width and depth." + ] + }, + { + "cell_type": "markdown", + "id": "cb52b688", + "metadata": {}, + "source": [ + "Therefore, let's start with the original algorithm suggested in the paper and see how it can be adapted to solve this challenge." + ] + }, + { + "cell_type": "markdown", + "id": "18502e3a", + "metadata": {}, + "source": [ + "## Theory" + ] + }, + { + "cell_type": "markdown", + "id": "a7fae9cd", + "metadata": {}, + "source": [ + "### The original quantum algorithm" + ] + }, + { + "cell_type": "markdown", + "id": "17350eff", + "metadata": {}, + "source": [ + "The paper focuses on solving the linear differential equation (LDE) $d\\mathbf{x}(t)/dt=\\mathcal{M}\\mathbf{x}(t)+\\mathbf{b}$, where $\\mathbf{x}(t)$ and $\\mathbf{b}$ are $N$-dimensional vectors and $\\mathcal{M}$ is an arbitrary $N\\times N$ matrix. One can easily check that the analytical solution can be written as $\\mathbf{x}(t) = e^{\\mathcal{M}t}\\mathbf{x}(0) + (e^{\\mathcal{M}t} - I)\\mathcal{M}^{-1}\\mathbf{b}$, where matrix exponentials are defined by the Taylor expansion of an exponent: $e^{\\mathcal{M}t}\\equiv \\sum_{k=0}^\\infty \\frac{(\\mathcal{M}t)^k}{k!}$. While matrix inversions and matrix multiplications scale at least as $O(N^3)$ classically, a quantum algorithm is capable of achieving an $O(\\log N)$ speedup in time complexity for this problem. The solution $\\mathbf{x}(t)$ can first be approximated as a Taylor expansion:\n", + "$$\n", + "\\begin{align}\n", + " \\mathbf{x}(t) \\approx \\sum_{m=0}^k\\frac{(\\mathcal{M}t)^m}{m!}\\mathbf{x}(0) + \\sum_{n=1}^k \\frac{(\\mathcal{M}t)^{n-1}t}{n!}\\mathbf{b} \\hspace{5cm} (1)\n", + "\\end{align}\n", + "$$\n", + "where the integer $k$ gives the approximation order ($k\\rightarrow\\infty$ for perfect solution). We can encode the vectors $\\mathbf{x}(0)$ and $\\mathbf{b}$ as normarlized quantum states: $|x(0)\\rangle = \\sum_jx_j(0)/||x(0)||\\cdot|j\\rangle$, $|b\\rangle = \\sum_jb_j/||b||\\cdot|j\\rangle$, and represent the matrix $\\mathcal{M}$ as a quantum operator $A=\\sum_{i, j}\\mathcal{M}_{ij}/||\\mathcal{M}||\\cdot|i\\rangle\\langle j|$. The $k$-th order approximation thereby evaluates to\n", + "$$\n", + "\\begin{align}\n", + " \\mathbf{x}(t)\\approx \\sum_{m=0}^k\\frac{||x(0)||(||\\mathcal{M}||At)^m}{m!}|x(0)\\rangle + \\sum_{n=1}^k\\frac{||b||(||\\mathcal{M}||A)^{n-1}t^n}{n!}|b\\rangle \\hspace{1cm} (2)\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6f487542", + "metadata": {}, + "source": [ + "Furthermore, if **$A$ is unitary** and so are its powers, we can write $U_m\\equiv A^m, U_n\\equiv A^n, C_m\\equiv||x(0)||(||\\mathcal{M}||t)^m/m!, D_n\\equiv||b||(||\\mathcal{M}||t)^{n-1}t/n!$ and write Equation (2) as" + ] + }, + { + "cell_type": "markdown", + "id": "65006b81", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |x(t)\\rangle \\approx\\frac{1}{\\mathcal{N}^2}\\left(\\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{3cm} (3)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "b52e8c3a", + "metadata": {}, + "source": [ + "where $\\mathcal{N}^2=\\mathcal{C}^2 + \\mathcal{D}^2, \\mathcal{C}\\equiv\\sqrt{\\sum_mC_m}, \\mathcal{D}\\equiv\\sqrt{\\sum_nD_n}$ is a normalization factor. The $j$th element of the solution vector $\\mathbf{x}(t)$ is then $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$. The quantum circuit that extracts $x_j(t)$ is drawn below." + ] + }, + { + "cell_type": "markdown", + "id": "56abca05", + "metadata": {}, + "source": [ + "![LDE Quantum Circuit](imgs/classiq_open-challenge_qc.png)" + ] + }, + { + "cell_type": "markdown", + "id": "1d64b140", + "metadata": {}, + "source": [ + "Vertically, this circuit is made up of three parts: 1) the first ancilla register of one qubit at the top, 2) the second ancilla register of $T=\\log_2(k+1)$ qubits in the middle, and 3) $\\log_2N$ work qubits for state encoding at the bottom. Horizontally, the circuit comprises of four parts: encoding, entangling, decoding, and measurement." + ] + }, + { + "cell_type": "markdown", + "id": "56e7af18", + "metadata": {}, + "source": [ + "#### Encoding" + ] + }, + { + "cell_type": "markdown", + "id": "216d72ec", + "metadata": {}, + "source": [ + "Starting off from the initial state $|\\psi_0\\rangle=|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes|\\phi\\rangle$, one first applies a gate\n", + "$$\n", + "\\begin{align}\n", + " V=\\frac{1}{\\mathcal{N}}\\begin{pmatrix}\\mathcal{C} & \\mathcal{D} \\\\ \\mathcal{D} & -\\mathcal{C}\\end{pmatrix} \\hspace{7cm} (4)\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "08461902", + "metadata": {}, + "source": [ + "on the top ancilla qubit to convert $|0\\rangle\\rightarrow\\frac{1}{\\mathcal{N}}(\\mathcal{C}|0\\rangle + \\mathcal{D}|1\\rangle)$ and generate separate subspaces for $|x(0)\\rangle$ and $|b\\rangle$. Then, controlled by the state of the top ancilla qubit, one applies $V_{S1}, U_{x}$ for $|0\\rangle$ or $V_{S2}, U_b$ for $|1\\rangle$, where $U_x|\\phi\\rangle = |x(0)\\rangle, U_b|\\phi\\rangle = |b\\rangle$, and the first columns of $V_{S1}, V_{S2}$ are" + ] + }, + { + "cell_type": "markdown", + "id": "062e7c3c", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}[\\sqrt{C_0}, \\sqrt{C_1}, ..., \\sqrt{C_{k-1}}, \\sqrt{C_k}]\n", + " \\\\\n", + " V_{S2}(:, 2) &= \\frac{1}{\\mathcal{D}}[\\sqrt{D_1}, \\sqrt{D_2}, ..., \\sqrt{D_k}, 0]\n", + "\\end{align} \\hspace{3cm} (5)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "de957a8f", + "metadata": {}, + "source": [ + "and this will evolve $|\\psi_0\\rangle$ into" + ] + }, + { + "cell_type": "markdown", + "id": "c3977839", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_1\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", + " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{1cm} (6)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a1898564", + "metadata": {}, + "source": [ + "#### Entangling" + ] + }, + { + "cell_type": "markdown", + "id": "dee6e7bd", + "metadata": {}, + "source": [ + "In this part, controlled by the state of the second ancilla register, $U_m$ is applied to the work qubits if the ancilla register is in state $|m\\rangle$. After all $(k+1)$ $U_m$ gates, the state is converted into" + ] + }, + { + "cell_type": "markdown", + "id": "a1a6bfae", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_2\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", + " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle U_m|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle U_{n-1}|b\\rangle\n", + " \\right)\n", + "\\end{align} \\hspace{1cm} (7)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "19f830cf", + "metadata": {}, + "source": [ + "#### Decoding" + ] + }, + { + "cell_type": "markdown", + "id": "f7e29d6e", + "metadata": {}, + "source": [ + "In the decoding step, one simply repeat the encoding step but with $V_{S1}\\rightarrow W_{S1}=V_{S1}^\\dagger, V_{S2}\\rightarrow W_{S2}=V_{S2}^\\dagger, V\\rightarrow W=V^\\dagger$. This reverses the encoding operation and produces the state" + ] + }, + { + "cell_type": "markdown", + "id": "856a97d1", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " |\\psi_3\\rangle = \\frac{1}{\\mathcal{N}^2}|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes\\left(\n", + " \\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", + " \\right) + \\text{other subspaces}\n", + "\\end{align} \\hspace{3mm} (8)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "99106393", + "metadata": {}, + "source": [ + "#### Measurement" + ] + }, + { + "cell_type": "markdown", + "id": "a7897697", + "metadata": {}, + "source": [ + "Finally, we measure and focus only on the subspace where all ancilla qubits are in state $|0\\rangle$. The 'other subspaces' part in Equation (8) then goes away, and the work qubits are in the solution state $|x(t)\\rangle$ given by Equation (3), and $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$ can be extracted." + ] + }, + { + "cell_type": "markdown", + "id": "ebdf7a39", + "metadata": {}, + "source": [ + "### Adapting to this challenge" + ] + }, + { + "cell_type": "markdown", + "id": "e338845d", + "metadata": {}, + "source": [ + "To adapt this algorithm to the Classiq challenge, we need to translate the equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$ into the paper's language. Although it might seem that we are dealing with a second-order differential equation rather than first order as shown in the paper, we can transform this second-order equation into a first-order vector equation by defining the state vector as $\\mathbf{x}(t) = (x(t), dx(t)/dt)$, and this implies" + ] + }, + { + "cell_type": "markdown", + "id": "d0b38245", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " \\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}&= \n", + " \\begin{pmatrix}\\frac{dx}{dt} \\\\ \\frac{d^2x}{dt^2}\\end{pmatrix}\n", + " \\\\\n", + " &= \\begin{pmatrix}\\frac{dx}{dt} \\\\ -x\\end{pmatrix}\n", + " \\\\\n", + " &=\n", + " \\begin{pmatrix}\n", + " 0 & 1 \\\\ -1 & 0\n", + " \\end{pmatrix}\n", + " \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}\n", + "\\end{align} \\hspace{4cm} (9)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7ff3a861", + "metadata": {}, + "source": [ + "which is of the form used in the paper, with $\\mathcal{M} = \\begin{pmatrix} 0 & 1 \\\\ -1 & 0\\end{pmatrix}$ and $\\mathbf{b}=0$. The initial conditions $x(0)=1$, $\\frac{dx}{dt}(0)=1$ are then translated into $\\mathbf{x}(0) = (1, 1)$." + ] + }, + { + "cell_type": "markdown", + "id": "21ce293e", + "metadata": {}, + "source": [ + "As $\\mathcal{M}$ is already unitary, we can use the algorithm above and define $A=\\mathcal{M}$. Therefore," + ] + }, + { + "cell_type": "markdown", + "id": "35f291ed", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align}\n", + " U_m &= A^m=\\mathcal{M}^m\n", + " \\\\\n", + " C_m &= ||x(0)||(||\\mathcal{M}||t)^m/m! = \\sqrt{2}t^m/m!\n", + " \\\\\n", + " D_n &=0, \\mathcal{D}=0\n", + " \\\\\n", + " \\mathcal{N} &= \\mathcal{C} = \\sqrt{\\sum_{m=0}^k C_m}\n", + " \\\\\n", + " V &= \\begin{pmatrix}1 & 0\\\\0 & -1\\end{pmatrix}\n", + " \\\\\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}(1, \\sqrt{t}, \\sqrt{\\frac{t^2}{2!}}, \\sqrt{\\frac{t^3}{3!}}, ..., \\sqrt{\\frac{t^k}{k!}})\n", + " \\\\\n", + " |x(0)\\rangle &= \\frac{1}{\\sqrt{2}} (1, 1)\n", + "\\end{align} \\hspace{2cm} (10) \n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "fd4f1ad4", + "metadata": {}, + "source": [ + "Note that since $\\mathbf{b}=0$, the top ancilla qubit for separating the $x(0)$ and $b$ subspace is no longer necessary and so is the $V$ gate. We only need $\\log_2 (k+1)$ ancilla qubits and $\\log_2 2=1$ work qubit for the challenge." + ] + }, + { + "cell_type": "markdown", + "id": "1088cf5e", + "metadata": {}, + "source": [ + "## Implementation" + ] + }, + { + "cell_type": "markdown", + "id": "7b51c3f4", + "metadata": {}, + "source": [ + "### Code structure" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "336886f3", + "metadata": {}, + "outputs": [], + "source": [ + "from classiq import *\n", + "import numpy as np\n", + "from scipy.special import factorial as fact\n", + "from classiq.execution import ExecutionPreferences\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "e0410740", + "metadata": {}, + "source": [ + "In Classiq SDK, instead of explicitly applying gates in the encoding stage, we can directly prepare the state of the $\\log_2 (k+1)$ ancilla register according to $V_{S1}$ in Equation (10)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3d5b7339", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def prep_ancilla(ancilla_reg: QNum, bound: CReal):\n", + " '''\n", + " Prepares the ancilla register in the state specified by V_S1.\n", + " '''\n", + " C_m = np.array([np.sqrt(2) * t**m / fact(m) for m in range(k + 1)])\n", + " C_m = C_m / np.sum(C_m)\n", + " # Prep ancilla register according to Vs1\n", + " inplace_prepare_state(probabilities=list(C_m), bound=bound, target=ancilla_reg)" + ] + }, + { + "cell_type": "markdown", + "id": "be10bf54", + "metadata": {}, + "source": [ + "Then we write the function for preparing the work qubit and creating entanglement between the work qubit and the ancilla register." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "4d84afce", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def operate(ancilla_reg: QNum, work_q: QBit, k: CInt):\n", + " '''\n", + " Prepare the work qubit and entangle each state |m> of ancilla register with U_m operating on work qubit.\n", + " U_(0 mod 4) = I; U_(1 mod 4) = ZX; U_(2 mod 4) = -I = RZ(2Ļ€); U(3 mod 4) = XZ.\n", + " '''\n", + " H(work_q) # prepares the work qubit in |x(0)> = |+>\n", + " @qfunc\n", + " def compose(gate1: QCallable[QBit], gate2: QCallable[QBit], q: QBit):\n", + " '''\n", + " Acts gate1 then gate2 on qubit q. \n", + " '''\n", + " gate1(q)\n", + " gate2(q)\n", + "\n", + " repeat(\n", + " count=k+1,\n", + " iteration=lambda index: control(ctrl=(ancilla_reg==index), \n", + " stmt_block=lambda: if_(condition=((index%4)==0), then=lambda: I(work_q),\n", + " else_=lambda: if_(condition=((index%4)==1), then=lambda: compose(X, Z, work_q),\n", + " else_=lambda: if_(condition=((index%4)==2), then=lambda: RZ(2*np.pi, work_q),\n", + " else_=lambda: compose(Z, X, work_q)))))\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "9c4ac290", + "metadata": {}, + "source": [ + "Since the decoding part of the quantum circuit is just the inverse of the encoding part implemented by prep_ancilla, we can use a within_apply statement to do the whole operation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "70b4780d", + "metadata": {}, + "outputs": [], + "source": [ + "@qfunc\n", + "def main(work_q: Output[QBit], ancilla_reg: Output[QNum]):\n", + " '''\n", + " Decodes the x(t) solution vector from its entanglement with |00...0> of ancilla register state.\n", + " '''\n", + " allocate(1, work_q)\n", + " allocate(np.ceil(np.log2(k + 1)), ancilla_reg)\n", + " within_apply(\n", + " within=lambda: prep_ancilla(ancilla_reg, bound),\n", + " apply=lambda: operate(ancilla_reg, work_q, k)\n", + " )\n", + " if_(condition=(apply_final_H!=0), then=lambda: H(work_q), else_=lambda: I(work_q))" + ] + }, + { + "cell_type": "markdown", + "id": "5da7c314", + "metadata": {}, + "source": [ + "However, there still is a problem with this algorithm: it cannot distinguish between positive and negative dx/dt values. This is because the probabilities we measure are not sensitive to the sign of amplitudes. To solve this, an extra option is added to the above main() function to apply a Hadamard gate to the work qubit before measurement to measure in x-basis. In this way, the difference in the |0> and |1> counts from a second round of measurement would give the relative signs between x(0) and dx/dt(0), although there is still an overall sign ambiguity due to the inability to detect global phase. This would be one drawback of this algorithm, and for now we have to rely on the knowledge that $x(t)>0$ for $0 and |1> counts.\n", + " '''\n", + " results = '''{}'''.format(results)\n", + " results = results.replace(\"\\':\", \"\\',\").replace(\"{\", \"\\\"{\").replace(\"}\", \"}\\\"\").replace(\"[\", \"{\").replace(\"]\", \"}\")\n", + " wq_count0_keyword = \"{'work_q', 0.0, 'ancilla_reg', 0.0}\" # the x(t) counts\n", + " wq_count1_keyword = \"{'work_q', 1.0, 'ancilla_reg', 0.0}\" # the dx/dt(t) counts\n", + " wq_count0, wq_count1 = 0, 0\n", + "\n", + " for res in eval(results):\n", + " if wq_count0_keyword in res:\n", + " wq_count0 = eval(results)[wq_count0_keyword]\n", + " elif wq_count1_keyword in res:\n", + " wq_count1 = eval(results)[wq_count1_keyword]\n", + " \n", + " return wq_count0, wq_count1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bcefb798", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "def simulate(t_val, k, total_counts, need_sign_correction=True):\n", + " global t\n", + " t = t_val\n", + " N2_factor = eval_N2(t, k)\n", + " global apply_final_H\n", + " apply_final_H = 0\n", + " qmod = create_model(main)\n", + " qmod = set_execution_preferences(\n", + " qmod,\n", + " ExecutionPreferences(\n", + " num_shots=total_counts\n", + " ),\n", + " )\n", + " quantum_program = synthesize(qmod)\n", + " print(\"QMOD synthesized.\")\n", + " # show(quantum_program)\n", + " job = execute(quantum_program)\n", + " results = job.result()[0].value.parsed_counts\n", + " wq_count0, wq_count1 = results2counts(results)\n", + " sign_correction_factor = 1\n", + " if need_sign_correction:\n", + " apply_final_H = 1\n", + " qmod_h = create_model(main)\n", + " qmod_h = set_execution_preferences(\n", + " qmod_h,\n", + " ExecutionPreferences(\n", + " num_shots=total_counts\n", + " ),\n", + " )\n", + " quantum_program_h = synthesize(qmod_h)\n", + " print(\"QMOD_H synthesized.\")\n", + " # show(quantum_program)\n", + " job_h = execute(quantum_program_h)\n", + " results_h = job_h.result()[0].value.parsed_counts\n", + " wq_count0_h, wq_count1_h = results2counts(results_h)\n", + " sign_correction_factor = (-1)**( wq_count0_h < wq_count1_h)\n", + "\n", + " x_t = N2_factor * np.sqrt(wq_count0 / total_counts)\n", + " dxdt = N2_factor * np.sqrt(wq_count1 / total_counts) * sign_correction_factor\n", + "\n", + " print('x(t)={:.3f} and dx/dt(t)={:.3f} at t={}.'.format(x_t, dxdt, t))\n", + " \n", + " write_qmod(qmod, 'k{}_bound{:.3f}_t{:.1f}_noConstraints'.format(k, bound, t_val))\n", + " qasm = QuantumProgram.from_qprog(quantum_program).qasm\n", + " file_path = \"k{}_bound{:.3f}_t{:.1f}_noConstraints.qasm\".format(k, bound, t_val)\n", + " with open(file_path, 'w') as file:\n", + " file.write(qasm)\n", + " \n", + " return [x_t, dxdt]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "eb0365cd", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.384 and dx/dt(t)=-0.305 at t=1.\n" + ] + }, + { + "data": { + "text/plain": [ + "[1.3843075398628262, -0.3047144219415329]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "t = 1\n", + "apply_final_H = CInt('apply_final_H')\n", + "apply_final_H = 0\n", + "simulate(t, k, total_counts=1e6)" + ] + }, + { + "cell_type": "markdown", + "id": "d0635c26", + "metadata": {}, + "source": [ + "The analytical solution for this problem is $x^*(t)=\\sin(t)+\\cos(t)$ and $\\frac{dx}{dt}(t)^*=\\cos(t)-\\sin(t)$, and they evaluate to $x^*(1)\\sim1.382$ and $\\frac{dx}{dt}(1)\\sim-0.301^*$ at $t=1$. The algorithm's approximations are therefore within ~1% of the exact values, and the algorithm gives the expected signs. Now let's try plotting the solution as a function of time." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4fae8d0c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.250 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.531 at t=0.4.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.399 at t=0.5.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.260 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.408 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.415 and dx/dt(t)=-0.021 at t=0.8.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.407 and dx/dt(t)=-0.165 at t=0.9.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.381 and dx/dt(t)=-0.299 at t=1.0.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.347 and dx/dt(t)=-0.436 at t=1.1.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.295 and dx/dt(t)=-0.574 at t=1.2000000000000002.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.232 and dx/dt(t)=-0.701 at t=1.3.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.156 and dx/dt(t)=-0.820 at t=1.4000000000000001.\n", + "QMOD synthesized.\n", + "QMOD_H synthesized.\n", + "x(t)=1.072 and dx/dt(t)=-0.930 at t=1.5.\n" + ] + } + ], + "source": [ + "t_vals = np.arange(start=0, stop=1.6, step=0.1)\n", + "x_t_theory = np.sin(t_vals) + np.cos(t_vals)\n", + "dx_dt_theory = np.cos(t_vals) - np.sin(t_vals)\n", + "x_t_simulation = []\n", + "dx_dt_simulation = []\n", + "for t_val in t_vals:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=31, total_counts=1e6)\n", + " x_t_simulation.append(x_t)\n", + " dx_dt_simulation.append(dx_dt)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "37087d14", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "t_continuous = np.linspace(start=0, stop=1.5, num=100)\n", + "x_t_theory = np.sin(t_continuous) + np.cos(t_continuous)\n", + "dx_dt_theory = np.cos(t_continuous) - np.sin(t_continuous)\n", + "\n", + "fig, ax = plt.subplots(figsize=(6, 5))\n", + "plt.xlabel('t')\n", + "plt.ylabel('x, dx/dt')\n", + "plt.title(\"x(t) and dx/dt(t) vs t\")\n", + "plt.plot(t_continuous, x_t_theory, 'm-', label=\"x(t) expected\")\n", + "plt.plot(t_continuous, dx_dt_theory, 'c-', label=\"dx/dt(t) expected\")\n", + "plt.plot(t_vals, x_t_simulation, 'r.', label=\"x(t) simulated\")\n", + "plt.plot(t_vals, dx_dt_simulation, 'b.', label=\"dx/dt(t) simulated\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "39d752e1", + "metadata": {}, + "source": [ + "So with $k=31$ and bound=0.001 the solution returned by the algorithm agrees very well with prediction. Let's now turn to how less strict bounds are going to affect the accuracy of the algorithm by looking at the time-dependence of kinetic and potential energy." + ] + }, + { + "cell_type": "markdown", + "id": "4a451eab", + "metadata": {}, + "source": [ + "### Bound optimization" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9512349a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Studying bound=0.001...\n", + "QMOD synthesized.\n", + "x(t)=0.999 and dx/dt(t)=1.001 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.897 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.311 and dx/dt(t)=0.532 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.399 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.261 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.411 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.020 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.405 and dx/dt(t)=0.161 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.382 and dx/dt(t)=0.302 at t=1.0.\n", + "Studying bound=0.010...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.778 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.252 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.530 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.398 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.389 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.125 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.415 and dx/dt(t)=0.014 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.407 and dx/dt(t)=0.148 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.387 and dx/dt(t)=0.280 at t=1.0.\n", + "Studying bound=0.050...\n", + "QMOD synthesized.\n", + "x(t)=1.001 and dx/dt(t)=0.999 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.896 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.250 and dx/dt(t)=0.652 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.311 and dx/dt(t)=0.512 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.355 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.191 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.009 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.413 and dx/dt(t)=0.016 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.407 and dx/dt(t)=0.151 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.385 and dx/dt(t)=0.282 at t=1.0.\n", + "Studying bound=0.100...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.096 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.511 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.357 and dx/dt(t)=0.356 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.388 and dx/dt(t)=0.192 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.012 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.188 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.408 and dx/dt(t)=0.392 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.385 and dx/dt(t)=0.613 at t=1.0.\n" + ] + } + ], + "source": [ + "bound_vals = [0.001, 0.01, 0.05, 0.1]\n", + "t_cont = np.linspace(start=0, stop=1, num=100)\n", + "t_vals_2 = np.arange(start=0, stop=1.1, step=0.1)\n", + "x_t_pred = np.sin(t_cont) + np.cos(t_cont)\n", + "dx_dt_pred = np.cos(t_cont) - np.sin(t_cont)\n", + "x_t_exp = []\n", + "dx_dt_exp = []\n", + "for bound_val in bound_vals:\n", + " print(\"Studying bound={:.3f}...\".format(bound_val))\n", + " bound = bound_val\n", + " x_t_exp_bound = []\n", + " dx_dt_exp_bound = []\n", + " for t_val in t_vals_2:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=31, total_counts=1e6, need_sign_correction=False) \n", + " # sign correction is unnecessary since energies are not sign-sensitive\n", + " x_t_exp_bound.append(x_t)\n", + " dx_dt_exp_bound.append(dx_dt)\n", + " x_t_exp.append(x_t_exp_bound)\n", + " dx_dt_exp.append(dx_dt_exp_bound)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "97000dff", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x_t_exp = np.array(x_t_exp)\n", + "dx_dt_exp = np.array(dx_dt_exp)\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", + "ax1.set_xlabel('t')\n", + "ax1.set_ylabel('E_k, E_p')\n", + "ax1.set_title(\"E_k and E_p vs t for different bounds\")\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", + "ax2.set_title(\"E_k+E_p vs t for different bounds\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('E_k+E_p')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "for i in range(4):\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, bound={:.3f}\".format(bound_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, bound={:.3f}\".format(bound_vals[i]))\n", + " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"bound={:.3f}\".format(bound_vals[i]))\n", + "ax1.legend(loc='best')\n", + "ax2.legend(loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "37622f7a", + "metadata": {}, + "source": [ + "We see that as we use larger and larger bounds of state preparation, both $E_k$ and $E_p$ deviate more and more from the expectation, and total energy $E_k+E_p$ is no longer well conserved especially at large t. We will stick to bound=0.001 for now." + ] + }, + { + "cell_type": "markdown", + "id": "7f698da1", + "metadata": {}, + "source": [ + "Let's finally look at how the circuit can be further optimized in term of circuit depth and width. We first look at the circuit parameters of one of the unconstrained data with k=31 and bound=0.001." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "b850159c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The circuit width is 9 and the circuit_depth is 4994.\n" + ] + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "qmod = create_model(main)\n", + "quantum_program = synthesize(qmod)\n", + "circuit_width = QuantumProgram.from_qprog(quantum_program).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(quantum_program).transpiled_circuit.depth\n", + "print(f\"The circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "61e11044", + "metadata": {}, + "source": [ + "We can see the circuit is narrow but quite deep. Let's try to optimize its depth." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1ca2cc13", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The constrained circuit width is 15 and the circuit_depth is 2324.\n" + ] + } + ], + "source": [ + "qmod_depth = set_constraints(\n", + " qmod, Constraints(optimization_parameter=\"depth\", max_width=15)\n", + ")\n", + "qprog_depth = synthesize(qmod_depth)\n", + "circuit_width = QuantumProgram.from_qprog(qprog_depth).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(qprog_depth).transpiled_circuit.depth\n", + "print(f\"The constrained circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "faf50859", + "metadata": {}, + "source": [ + "Or alternatively, optimize its width even further." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "c9362625", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The constrained circuit width is 7 and the circuit_depth is 7515.\n" + ] + } + ], + "source": [ + "qmod_depth = set_constraints(\n", + " qmod, Constraints(optimization_parameter=\"width\", max_depth=8000)\n", + ")\n", + "qprog_depth = synthesize(qmod_depth)\n", + "circuit_width = QuantumProgram.from_qprog(qprog_depth).data.width\n", + "circuit_depth = QuantumProgram.from_qprog(qprog_depth).transpiled_circuit.depth\n", + "print(f\"The constrained circuit width is {circuit_width} and the circuit_depth is {circuit_depth}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "0308d8b9", + "metadata": {}, + "source": [ + "So the minimum circuit width possible is when we have exactly one extra auxiliary qubit beside the work qubit and the 5-qubit ancilla register. The circuit width and depth turn out to be fairly flexible to optimization. Let's also see how for the unconstrained condition, the circuit depth and width depend on the bound value for state preparation." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "0e917eb6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done for bound 0.001.\n", + "Done for bound 0.006.\n", + "Done for bound 0.011.\n", + "Done for bound 0.016.\n", + "Done for bound 0.021.\n", + "Done for bound 0.026.\n", + "Done for bound 0.031.\n", + "Done for bound 0.036.\n", + "Done for bound 0.041.\n", + "Done for bound 0.046.\n", + "Done for bound 0.051.\n" + ] + } + ], + "source": [ + "bound_vals = np.arange(start=0.001, stop=0.052, step=0.005)\n", + "circuit_widths = []\n", + "circuit_depths = []\n", + "for bound_val in bound_vals:\n", + " bound = bound_val\n", + " qmod = create_model(main)\n", + " qprog = synthesize(qmod)\n", + " circuit_width = QuantumProgram.from_qprog(qprog).data.width\n", + " circuit_depth = QuantumProgram.from_qprog(qprog).transpiled_circuit.depth\n", + " circuit_widths.append(circuit_width)\n", + " circuit_depths.append(circuit_depth)\n", + " print('Done for bound {:.3f}.'.format(bound_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "6f7d0e89", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbAAAAEWCAYAAAAHC8LZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAwJ0lEQVR4nO3deZhcVZ3/8fcn3WQhQIAADhAwRDCQhUR2ElAUlB2EcQERUVkGBxBR2RxGBQdERwUZBYygIogEERkSN/gNBNkxQCSEEAhJgAAKhIQ9mE5/f3+cU+F20d2pXqqrq/vzep56qu65955zbm3fOueeOlcRgZmZWb0ZUOsKmJmZdYYDmJmZ1SUHMDMzq0sOYGZmVpccwMzMrC45gJmZWV1yAOsgSV+TdFkV8t1d0rwu5hGStuyuOpXlvUjSXtXIu7Mk/ULSf3Uxj3Zfz9Udt6QZko7pSh26i6RvSrqqF9RjZH4vNta6Lr2RpDmS9qhCvntIWtzd+fZmDmCtkPQpSTMlvSbpOUl/lLQbQEScFxHd/oUVEbdHxOhCHWoWMLojMNSLjryevSVAWG10V2COiLERMaObqtWvOYCVkfRl4ELgPOBdwObAxcDBFezrX5xm/Zi/A3qWA1iBpGHAOcAJEXF9RLweESsiYlpEnJq3WfUrvPCL7GhJTwG35PRjJc2V9KqkRyRtl9NbdPEVWzrF5r+kK0mBc1puBZ7WRn1PzS3EZyV9vmzdIEnfk/SUpH9IulTSkGJZufvsxdzaOyKvOw44Ajgtlz2tkO1ESQ9JelnSVEmD8z4bSJouaZmklyTdLqnV95akH0p6WtIrku6XtHth3TclXSvpl/m5myNph8L690l6IK+bCgxu57V8UtL2+fER+bkfm5ePlnRD+euZl4/M+y6R9B+F9H2ArwGfzM/L3wrFvVvSnbleN0naIO8zWNJVOa9lkv4q6V2t1PV0Sde18jxdlB9/VtKCnP/C0mvVhsH5tXk1P1cTCnluo9TluSw/twcV1rXoCs1l3lFYDknHS3o87/9jScrrGvJ77UVJC4D926lf+bG/o9tLhd6HCt4Tm0m6XtIL+Xn+UU4fIOms/Fo+n/cflteVPrdH5c/Hi2Wv9U5KPTCvKH12fpBX/SXfL8vvgV3z83SnpAskLQG+Kek9km7J9XlR0q8krdvJ49tE0m/z8S2U9MXCuiFK3yFLJT0C7Fjp895nRIRv+QbsAzQBje1s803gqvx4JBDAL4GhwBDg48AzpDeTgC2Bd+ftA9iykNcvgP/Kj/cAFhfWLQL2Wk1d/wGMy2VfXcwfuAC4EVgfWBuYBny7UFYT8ANgEPAB4HVgdHm9yupzH7BJznMucHxe923gUmCNfNsdUBv1/jQwHGgEvgL8HRhceG6XA/sBDTnfe/K6gcCTwCm5jI8BK8rrWSjnl8BX8uMpwBPAFwrrTmnl9RwDvAa8Pz8vP8jP017l2xbKmZHzfm9+/WcA5+d1/5af9zXz8WwPrNNKXd8NvAGsnZcbgOeAXfJr+0rhtdkYGNvOe3NFfm7WAL4KLCy8LvNJQXgg8CHg1UK+M4BjCnl9FrijsBzAdGBd0o+rF4B98rrjgUeBzfJ749a8fZufo0K+e1B435e/91fznmgA/kZ6rw8l/aDZLa/7fD7eUcBawPXAlWWf25/m12wC8BawTV5/N3BkfrwWsEvZfo1lz1MTcBLpPT2E9Jn/MOk9tCEp8F3YieMbANwPfD2/ZqOABcDeef35wO35Od8MeLj8uezrN7fAWhoOvBgRTR3c75uRWmtvAscA342Iv0YyPyKe7P6q8gng5xHxcES8TvogAJB/GR9H+pJ+KSJeJXWJHlaWx39GxFsRcRvw+5xney6KiGcj4iXSF/PEnL6C9MX67kgt1tsjf8LKRcRVEbEkIpoi4vukD/nowiZ3RMQfImIlcCXpywXSl/kapC+CFRFxHfDXdup6GykwQwqo3y4sfyCvL/cxYHpE/CUi3gL+E2hup4ySn0fEY/n1v5aWz8tw0o+KlRFxf0S8Ur5zfn88ABySkz4EvBER9+TlZmCcpCER8VxEzGmnLvdHxHURsYIUgAeTnrtdSF/G50fEPyPiFlJAOryC4ys5PyKWRcRTpCBVOs5PkF6Xp/N749sdyLMSbb0ndiL9oDo1f/6WR0Sp1XgE8IOIWBARrwFnAoepZRff2RHxZkT8jRQIS/muALaUtEFEvFZ4HdrybET8T35Pv5k/8zfnz9YLpNfhA+3s39bx7QhsGBHn5NdsASnolj7HnwDOzZ/xp4GLVlPPPscBrKUlwAbqeD/204XHm5F+kVfbJmXlFoPkhqRf/ffn7p5lwJ9yesnSHPiK+2+ymjL/Xnj8BukLEeC/Sb92b8pdXWe0lYGkryp1r76c6zUM2KCdMgbn12MT4JmywNjeD4PbgN0lbUz6ZXstMFnSyFzmrFb2afGc5udnSTtltFXn0vNyJfBn4Bqlbt7vSlqjjTyu5u1g8qm8XKrDJ0mtnOck/V7S1u3UpVj/ZmBxPq5NgKdzWsmTwKYVHF9JW8fZ3nuxO7T1ntgMeLKNH5yblNXjSVILqdiF29bxHE1qUT+au30PWE39iseOpHdJukbSM5JeAa6i5Xu8XFvH925gk9JnOH9evlY4hmo/772eA1hLd5O6Ej7awf2KX6pPA+9pY7s3SIGl5F8qzLM1z5E+wCWbFx6/CLxJ6mpaN9+GRcRahW3WkzS0bP9nKyy7ZUUjXo2Ir0TEKOAg4MuS9izfTul812mkX47rRcS6wMukrtbVeQ7YtHTepVDntuo0n/R8nwT8Jbd8/k5qmd5R9kVeLGPVcyppTVILalW2FdSzWIcVEXF2RIwBJgEHAJ9pY/PfAHtIGkFqiV1dyOfPEfFhUiv3UdKv8LYU6z8AGEF6XZ8FNlPLc5Obk7q7IXUhV/reLNfee3F1WpQrqYGWP7Ta8zSweRs/OJ8lBYBinZpI3e7tiojHI+JwYCPgO8B1+bPS1utfnn5eThsfEeuQus0reY+XexpYWPgMrxsRa0fEfnl9V573PsEBrCAiXib1N/9Y0kclrSlpDUn7SvpuhdlcBnxV0vZKtpRU+iDNAj6VT3rvQ/vdCv8g9Xm35Vrgs5LG5C/abxSOo5n0JXeBpI0AJG0qae+yPM6WNDAHlgNIX6KVlN2CpAPycYoUkFbSetfb2qQvkReARklfB9apsJi7875fzK/JoaQupPbcBpzI292FM8qWy10HHCBpN0kDSQN6ip+RfwAj1cYAlXKSPihpfP5SfoXUNdVql2TuapoB/Jz0pTU35/EuSQfnL9C3SOfo2uvW3F7SoflL/Ut5n3uAe0kB/bT8/O0BHAhck/ebBRya3/NbklohlbqW9LqMkLQe0KIFngcqzGhj38dILY79c+v0LFK3ciXuI32Jny9pqNKgmcl53a+BUyRtIWktUlCZWsnpAUmflrRh/hwty8nNpPdtM6v/bKxNep1elrQpcGqFx1PuPuBVpUE+Q/L3xjhJpcEa1wJnSlov//A5qZPl1C0HsDL5vMyXSR+kF0i/gk4Ebqhw/98A55J+Qb+a91s/rz6Z9KWxjNRH316e3wbOyl0HX22lnD+ShvvfQuq+u6Vsk9Nz+j25G+P/0fJc09+BpaRfqr8iDch4NK+7HBiTy26vjiVb5fxfIwWaiyPi1la2+zOpK/MxUnfHcsq6X9oSEf8EDiWdNH+J1K12/Wp2u430ZfKXNpbLy5gDnEB67Z4jPT/FEXKlAL9E0gMVVPtfSEHxFdKgl9tI3YptuRrYi0Lri/QZ/TLpdXqJ9KPnC+3k8b+k52YpcCRwaG4J/pP03tuX1EK/GPhM4TW/APgnKUhfQXpPVOqnpNf2b6RzeeWvy2bAna3tmH80/jvph98zpBZZRX/GzeeMDiQNmngq7/fJvPpnpOf6L6SBLMup/At+H2COpNeAHwKH5XNbb5A+23fmz8Yubex/NrAd6cfc71n9+7RV+fgOIJ1rXEh63S4jdYGXynkyr7uJ9t9bfZLaONdufVj+9X1VRIyocVWsH5A0C9gzIio5n2hWMf/pzsyqKiIm1roO1je5C9HMzOqSuxDNzKwuuQVmZmZ1qU+eAxswYEAMGTKk1tUwM6srb7zxRkRE3TRs+mQAGzJkCK+//vrqNzQzs1UkvVnrOnRE3URaMzOzIgcwMzOrSw5gZmZWl/rkOTAzs7asWLGCxYsXs3z58lpXpWYGDx7MiBEjWGONti6OUB8cwMysX1m8eDFrr702I0eOpOXFDfqHiGDJkiUsXryYLbbYotbV6RJ3IZpZv7J8+XKGDx/eL4MXgCSGDx/eJ1qgDmC9wIIFMHYsNDam+wULal0js76tvwavkr5y/A5gvcCBB8Kjj8LKlen+wANrXSOrBv9QMeteDmC9wLx50JwvUdjcnJat7/EPFStpaGhg4sSJjB07lgkTJvD973+f5ub2rlPavvPOO2/V40WLFjFu3LjuqGav5wDWC4weDQPyKzFgQFq2vsc/VKxkyJAhzJo1izlz5nDzzTfzxz/+kbPPPrvT+RUDWH/iANYLTJsGW28NDQ3pftq0WtfIqsE/VOpTtbt+N9poI6ZMmcKPfvQjIoKVK1dy6qmnsuOOO7Ltttvyk5/8BIAZM2bw/ve/n/3335/Ro0dz/PHH09zczBlnnMGbb77JxIkTOeKIIwBYuXIlxx57LGPHjuUjH/kIb75ZVzNEVS4i+txtzTXXDLPe5oknIsaMiWhoSPdPPFHrGvVPjzzySIe2HzMmYsCACEj3Y8Z0vQ5Dhw59R9qwYcPi73//e/zkJz+Jb33rWxERsXz58th+++1jwYIFceutt8agQYPiiSeeiKampthrr73iN7/5zTvyW7hwYTQ0NMSDDz4YEREf//jH48orr3xHea09D8Dr0Qu+wyu9+X9gZj1k1CiYM6fWtbCO6umu35tuuomHHnqI6667DoCXX36Zxx9/nIEDB7LTTjsxatQoAA4//HDuuOMOPvaxj70jjy222IKJEycCsP3227No0aLqVrpGHMDMzNoxenQadNPcXL2u3wULFtDQ0MBGG21ERPA///M/7L333i22mTFjxjuGv7c1HH7QoEGrHjc0NPTZLkSfAzMza0e1z1G/8MILHH/88Zx44olIYu+99+aSSy5hxYoVADz22GOrLg913333sXDhQpqbm5k6dSq77bYbAGusscaq7fsTt8DMzNpRja7f0qCLFStW0NjYyJFHHsmXv/xlAI455hgWLVrEdtttR0Sw4YYbcsMNNwCw4447cuKJJzJ//nw++MEPcsghhwBw3HHHse2227Lddttx7rnndm9lezGl83Z9y9ChQ8MXtDSz1sydO5dtttmm1tXosBkzZvC9732P6dOnd0t+rT0Pkt6IiKHt7SfpZOBYQMBPI+LCNrbbEbgbOCwiruuWSpdxF6KZmVVE0jhS8NoJmAAcIGnLVrZrAL4D3FTN+jiAmZnVgT322KPbWl9dsA1wb0S8ERFNwG3Aoa1sdxLwW+D5albGAczMzEoaJc0s3I4rW/8wsLuk4ZLWBPYDNituIGlT4BDgkmpXtuoBTFKDpAclTc/Le0p6QNIsSXeUmp+SBkmaKmm+pHsljSzkcWZOnydp7zaKMjOzrmmKiB0KtynFlRExl7e7Bv8EzAJWluVxIXB6RHR+cscK9UQL7GRgbmH5EuCIiJgIXA2cldOPBpZGxJbABaQnCUljgMOAscA+wMW5f9XMzHpYRFweEdtHxPuBpcBjZZvsAFwjaRHwMdJ39kerUZeqBjBJI4D9gcsKyQGskx8PA57Njw8GrsiPrwP2VPqX3sHANRHxVkQsBOaTTiCamVkPk7RRvt+cdP7r6uL6iNgiIkZGxEjSd/m/R8QN1ahLtVtgFwKnAcWm5DHAHyQtBo4Ezs/pmwJPA+STgy8Dw4vp2eKc1oKk40r9tk1NTd18GGZm3eOUU07hwgsvXLW89957c8wxx6xa/spXvsI555zD+eef38resNZaawHpsilXX/127PjFL37BiSeeWJ1Kt/RbSY8A04ATImKZpOMlHd8ThRdVLYBJOgB4PiLuL1t1CrBfRIwAfg78oDvKi4gppX7bxkb/P9vMeqfJkydz1113AdDc3MyLL77InMI/pe+66y4+8pGPcMYZZ7SbT3kA6ykRsXtEjImICRHxfznt0oi4tJVtP1ut/4BBdVtgk4GDcj/oNcCHJP0emBAR9+ZtpgKT8uNnyKNZJDWSuheXFNOzETnNzKz6uvl6KpMmTeLuu+8GYM6cOYwbN461116bpUuX8tZbbzF37lweeuihVa2phQsXsuuuuzJ+/HjOOuusVfmcccYZ3H777UycOJELLrgAgGeffZZ99tmHrbbaitNOO61L9awHVQtgEXFmRIzI/aCHAbeQzmcNk/TevNmHeXuAx43AUfnxx4Bb8vT+NwKH5VGKWwBbAfdVq95mZi1086W0N9lkExobG3nqqae466672HXXXdl55525++67mTlzJuPHj2fgwIGrtj/55JP5whe+wOzZs9l4441XpZ9//vnsvvvuzJo1i1NOOQWAWbNmMXXqVGbPns3UqVN5+umn31F+X9Kj/wPL57aOJfWh/o10DuzUvPpyYLik+cCXgTPyPnOAa4FHSMM2T4iI8mGbZmbVUYXrqUyaNIm77rprVQDbddddVy1Pnjy5xbZ33nknhx9+OABHHnlku/nuueeeDBs2jMGDBzNmzBiefPLJLte1N+uRk0URMQOYkR//DvhdK9ssBz7exv7nAv1nhkoz6z2qcD2V0nmw2bNnM27cODbbbDO+//3vs8466/C5z32Ol156qcX2bV02pVz5ZVT6+oA2z8RhZtaeKlxPZdKkSUyfPp3111+fhoYG1l9/fZYtW8bdd9/NpEmTWmw7efJkrrnmGgB+9atfrUpfe+21efXVV7tcl3rmAGZm1p7S9VSamtJ9viJyV4wfP54XX3yRXXbZpUXasGHD2GCDDVps+8Mf/pAf//jHjB8/nmeeeXv82rbbbktDQwMTJkxYNYijv/HlVMysX6nXy6l0t85eTqU3cQvMzMzqkgOYmZnVJQcwM+t3+uKpk47oK8fvAGZm/crgwYNZsmRJn/kS76iIYMmSJQwePLjWVekyTxpoZv3KiBEjWLx4MS+88EKtq1IzgwcPZsSIEbWuRpd5FKKZmQEehWhmZtYjHMDMzKwuOYCZmVldcgAzM7O65ABmZmZ1yQGsoJsvvGpmZlXkYfQFY8e2vOzP1lunyafNzPqDehtG7wBW0NiYrhpe0tCQrqBgZtYf1FsAcxdiwejRqeUF3XbhVTMzqxIHsIIqXHjVzMyqxF2IZmYGuAvRzMysRziAmZlZXXIAMzOzuuQAZmZmdckBzMzM6pIDmJmZ1SUHMDMzq0sOYGZmVpccwMzMrC5VPYBJapD0oKTpeVmSzpX0mKS5kr5YSL9I0nxJD0narpDHUZIez7ejql1nMzPr/Rp7oIyTgbnAOnn5s8BmwNYR0Sxpo5y+L7BVvu0MXALsLGl94BvADkAA90u6MSKW9kDdzcysl6pqC0zSCGB/4LJC8heAcyKiGSAins/pBwO/jOQeYF1JGwN7AzdHxEs5aN0M7FPNepuZWesknSzpYUlzJH2plfVH5F602ZLukjShWnWpdhfihcBpQHMh7T3AJyXNlPRHSVvl9E2BpwvbLc5pbaW3IOm4nOfMJl/Ey8ys20kaBxwL7ARMAA6QtGXZZguBD0TEeOBbwJRq1adqAUzSAcDzEXF/2apBwPKI2AH4KfCz7igvIqZExA4RsUNjY0/0jJqZ9TvbAPdGxBsR0QTcBhxa3CAi7iqc4rkHGFGtylSzBTYZOEjSIuAa4EOSriK1oK7P2/wO2DY/foZ0bqxkRE5rK93MzLpXY6knK9+OK1v/MLC7pOGS1gT2o+X3c7mjgT9Wq7JVC2ARcWZEjIiIkcBhwC0R8WngBuCDebMPAI/lxzcCn8mjEXcBXo6I54A/Ax+RtJ6k9YCP5DQzM+teTaWerHxr0f0XEXOB7wA3AX8CZgErW8tI0gdJAez0alW2Fn1t5wO/knQK8BpwTE7/AymazwfeAD4HEBEvSfoW8Ne83TkR8VLPVtnMzAAi4nLgcgBJ55F61VqQtC1p8N6+EbGkWnXxFZnNzAyo7IrMkjaKiOclbU5qie0SEcsK6zcHbgE+ExF3VbO+Hu1gZmYd8VtJw4EVwAkRsUzS8QARcSnwdWA4cLEkyN2S1aiIW2BmZgZU1gLrTTwXYj+2YAGMHQuNjel+wYJa18jMrHJugfVjY8fCo49CczMMGABbbw1z5tS6VmZWK/XWAnMA68caG2FlYQBsQwN4EhOz/qveApi7EPux0aNTywvS/ejRta2PmVlHOID1Y9OmpW7DhoZ0P21arWtkZlY5B7B+bNSodM6rqSndjxpV6xqZdQ8PUOofHMDM+rj++GV+4IFpgNLKlen+wANrXSOrBgcwsz6uP36Zz5uXRtdCup83r7b16Qn98YfKakchShoE/CswksLMHRFxTlVr1gUehWj2tv442rQ//kWkO465FqMQJTUA76JlfHmqkn0raYH9L+lqyU3A64WbmdWB/jjatD8OUKrHVqekk4B/ADcDv8+36RXvX0EL7OGIGNeVSvY0t8DM3rZgQeo2nDcvBa9p0zxgpy+qxxaYpPnAzp2dsb6SFthdksZ3JnMzqz2PNu0f6rTV+TTwcmd3brMFJmk2EKR+ya2ABcBbgICIiG1b3bEXcAvMzKzjeqoFJunL+eFYYDSp6/Ct0vqI+EEl+bR3OZUDOl07MzOztq2d75/Kt4H5BqnhVJE2A1hEPAkg6cqIOLK4TtKVwJGt7mhmZtaOiDgbQNLHI+I3xXWSPl5pPpWcAxtblnkDsH2lBZi1pj/+Z8XM3uHMCtNa1WYLTNKZwNeAIZJeIZ37AvgnMKUjNTQrV/pzbXPz23+u7ev/0zGzRNK+wH7AppIuKqxah/SXrcryqWAY/bcjouKI2Bt4EEfv1x//XGvW2/XgII4JwPuAs4GvF1a9CtwaEUsryqeCACbgEGA30sm12yPihk7Uucc4gPV+/XGmBLPergb/A1sjIlZ0dv/2RiGW/BjYEvh1Xj5e0ocj4oTOFmo2bdo7/1xrZv1D4W9apDZSS5X+TauSFtijwDaRN5Q0AJgTEdt0sM49xi0wM7OO68EuxHfnh6WG0JX5/tOk/xmfUUk+lbTA5gObA0/m5c1ympmZWYcV/qb14Yh4X2HV6ZIeACoKYJUMo18bmCtphqRbgUeAdSTdKOnGjlbczMwsk6TJhYVJdOAyX5W0wL6++k3MzMw67GjgZ5KGkf6qtRT4fKU7r/YcGKzqr9wqIv6fpCFAY0S82skKV53PgZmZdVwtrgeWyx0GEBEdmth3tS0wSccCxwHrA+8BRgCXAnt2vJpmZtbfSfp0RFxVmNS3lA50z2S+JScAOwH35owfl7RRx6prZma2SqmVt3a7W61GJQHsrYj4ZykySmqkA7MF57kTZwLPRMQBhfSLgM9HxFp5eRDwS9I8i0uAT0bEorzuTFJf6UrgixHx50rLNzOz3iUifpIfficilnc2n0pGe9wmqTQn4oeB3wAd+dvpycDcYoKkHYD1yrY7GlgaEVsCFwDfyduOAQ4jTSq8D3BxDopmZlbfHpZ0p6TzJe1fOhdWqUoC2BnAC8Bs4N+APwBnVZK5pBHA/sBlhbQG4L+B08o2Pxi4Ij++DtgzT2N1MHBNRLwVEQtJ/0HbqZLyzcp5Fnyz3iM3WA4nxZf9gb9JmlXp/qvtQoyIZuCn+dZRF5ICVbGf80Tgxoh4rmwKkU1Jl5cmIpokvQwMz+n3FLZbnNPMOsyz4Jv1HrmRMxnYHZgAzAHuqHT/9i6nsmquqtasbq4qSQcAz0fE/ZL2yGmbAB8H9qi0gpWSdBxptCQDBw5czdbWX82bl4IXpPt582pbH7N+7ingr8B5EXF8R3durwVWGnDR6lxVFeQ9GThI0n7AYNJ1XuYAbwHzc+trTUnzczPyGdI0VYvzQJFhpMEcpfSSETmthYiYQr5O2dChQyseZGL9y+jRLWfBHz261jUy69feR7rSyacknQE8DtwWEZdXsnMlk/k+WDZXFZIeiIjtKq1hboF9tTgKMae/VhiFeAIwPiKOl3QYcGhEfELSWOBq0nmvTYD/I/2peiVt8B+ZrS0LFrxzFvxRo2pdK7PeoRZ/ZJa0FimI7U5qIBER7253p6ySYfSSNDki7swLHZqrqgMuB66UNB94iTTykIiYI+la0hyMTcAJ7QUvs/aMGuVzXma9haSZwCDgLuB24P2liX4r2r+CFtj2wM9IXXoAy0j/33qgMxXuCW6BmZl1XCUtMEknA8eS5i78aURcWLZewA+B/YA3gM+2FS8kbRgRL3S2vqttSUXE/RExgTRCZEJETOzNwatLajXGur+VW8uyfcw+5r5Ybg+VLWkcKXjtRIoJB0jasmyzfYGt8u044JK28utK8Cpl0Odua665ZnTKmDERAwZEQLofM6Zz+bjc3lu2j9nH3BfL7aaygdejne9W0ijyywvL/wmcVrbNT4DDC8vzgI3by7ezt4pmo683ne5CbGyElYXTaw0N0NTUfRVzubUv28fsY+6L5XZT2ZL+SfpTccmUSCO8S+u3Af4X2BV4kzSobmZEnFTYZjpwfkTckZf/Dzg9Ima2Ut6giHhrdWltWW0XYp6jcLVpfcLo0WlsNfTsGOv+Vm4ty/Yx+5j7YrndV3ZTROxQuE0proyIuaRp/m4C/gTMIs1R21l3V5jWutU10YAHKknrTbdOdyE+8URqdjc0pPsnnuhcPi6395btY/Yx98Vyu6lsVtOFWH4DzgP+vSxttV2IwL+QJm6fS/ov2Hb5tgfwaKXlt9mFKOlfSFM2XQV8ijTiBNIfki+NiK0rjpI9zKMQzcw6rsJRiBtFxPOSNie1xHaJiGWF9fuTpgzcD9gZuCgidirL4yjgs8AOpKuVlLwK/CIirq+kvu39D2zvXMAIoHhxsVeBr1WSuZmZ9Tm/lTQcWEH6X+4ySccDRMSlpAnf9yNNvP4G8LnyDCLiCuAKSf8aEb/tbEUq+R9YlwqoBbfAzMw6rqdm4ihckfkrtDI1YXT1isylAoCR5Zd97kgBZmZmZUpBcq2uZNJeF2K3FGBmZlYU+YrMEXF2V/Lx/8DMzAzo+cl8Jf2c1rsQP1/J/qudzLerBZiZmbVheuHxYOAQ4NlKd65kNvouFWBmZtaa8gGCkn5Nd1yRubsKMDMzq9BWwEaVblxJC6xLBZiZmbVG0qu0PEX1d+D0Svev5BxYlwowMzNrTUSs3ZX9K+lC7FIBZmZmrZF0CHBLRLycl9cF9oiIGyrZv5LZ6A+RNKywvK6kj3aqtmZmZm/7Ril4AeQ5Fb9R6c6rDWBdLcDMzKwNrcWgisdmVBLAulSAmZlZG2ZK+oGk9+TbD4D7K925kgDWpQLMzMzacBLwT2AqcA2wHDih0p0raUmdBPxnLiCAmztSgJmZWTlJDcD0iPhgZ/NoN4B1RwFmZmblImKlpGZJw4rjLDqi3QDWHQWYmZm14TVgtqSbgVUzsEfEFyvZuZIuxC4VYGZm1obr861TKglgXSrAzMysNRFxRVf29/XAzMwM6LnrgUm6NiI+IWk2rV+ua9tK8mmzBdZdBZiZmZU5Od8f0JVM2utC7JYCzMzMygyVNDki7iwmSppMmjC+Iu39kblUwJPFGzACz8RhZmaddyHwSivpr+R1FWkvgHVLAZIaJD0oaXpe/pWkeZIelvQzSWvkdEm6SNJ8SQ9J2q6Qx1GSHs+3oyot28zMeqV3RcTs8sScNrLSTNoLYN1SAKkrcm5h+VfA1sB4YAhwTE7fl3SxzK2A44BLACStT5o8eGdgJ+AbktbrQPlmZta7rNvOuiGVZtJeAOtyAZJGAPsDl5XSIuIPkQH3kbokAQ4GfplX3QOsK2ljYG/g5oh4KSKWkqay2qeS8s3MrFeaKenY8kRJx9CBuXbbO5c1U9KxEfHTLhRwIXAa8I6LYuauwyN5e7DIpsDThU0W57S20svzO47UcmPgwIEVVs/MzGrgS8DvJB3B2/FkB2AgcEilmbQXwLpUgKQDgOcj4n5Je7SyycXAXyLi9kor256ImAJMgfQ/sO7I08zMul9E/AOYJOmDwLic/PuIuKUj+bQZwLqhgMnAQZL2AwYD60i6KiI+LekbwIbAvxW2fwbYrLA8Iqc9A+xRlj6jwjqYmVkvFRG3Ard2dv8emYkjt8C+GhEH5C7IzwN7RsSbhW32B04E9iMN2LgoInbKgzjuB0qjEh8Ato+Il9oqzzNxmJl1XE/NxNFdavF/rkuBJ4G7JQFcHxHnAH8gBa/5wBvA5wAi4iVJ3wL+mvc/p73gZWZm/YPnQjQzM6D+WmDtDaM3MzPrtRzAzMysLjmAmZlZXXIAMzOzuuQAZmZmFZN0iqQ5eUL2X0saXLZ+c0m35kncH8r/Ba4KBzAzM6uIpE2BLwI7RMQ4oAE4rGyzs4BrI+J9ed3F1aqPA5iZmXVEIzBEUiOwJvBs2foA1smPh7WyvlsrYmZmBtAoaWZheUqeZxaAiHhG0veAp4A3gZsi4qayPL4J3CTpJGAosFe1KusWmJmZlTRFxA6F25TiynwtxoOBLYBNgKGSPl2Wx+HALyJiBGl2pSslVSXWOICZmXWTBQtg7FhobEz3CxbUukbdbi9gYUS8EBErgOuBSWXbHA1cCxARd5Mmc9+gGpVxADMz6yYHHgiPPgorV6b7Aw+sdY263VPALpLWVJrMdk9gbivb7AkgaRtSAHuhGpXxXIhmZt2ksTEFr5KGBmhqql19OqqSuRAlnQ18EmgCHgSOAf4DmBkRN0oaA/wUWIs0oOO0Vs6TdU99HcDMzLrH2LGp5dXcDAMGwNZbw5w5ta5V5TyZr5lZPzVtWgpaDQ3pftq0Wteob3MLzMzMALfAzMzMeoQDmJmZ1SUHMDMzq0sOYGZmVpccwMzMrC45gJmZWV1yADMzs7rkAGZmZnXJAczMzOqSA5iZmdUlBzAzM6tLDmBmZlaXHMDMzKwuOYCZmVldqnoAk9Qg6UFJ0/PyFpLulTRf0lRJA3P6oLw8P68fWcjjzJw+T9Le1a6zmZn1fj3RAjsZmFtY/g5wQURsCSwFjs7pRwNLc/oFeTvy5akPA8YC+wAXS2rogXqbmVkvVtUAJmkEsD9wWV4W8CHgurzJFcBH8+OD8zJ5/Z55+4OBayLirYhYCMwHdqpmvc3MrPerdgvsQuA0oDkvDweWRURTXl4MbJofbwo8DZDXv5y3X5Xeyj6rSDpO0kxJM5uamspXm5lZH1O1ACbpAOD5iLi/WmUURcSUiNghInZobGzsiSLNzKyGqvlNPxk4SNJ+wGBgHeCHwLqSGnMrawTwTN7+GWAzYLGkRmAYsKSQXlLcx8zM+qmqtcAi4syIGBERI0mDMG6JiCOAW4GP5c2OAv43P74xL5PX3xIRkdMPy6MUtwC2Au6rVr3NzKw+1KKv7XTgGkn/BTwIXJ7TLweulDQfeIkU9IiIOZKuBR4BmoATImJlz1fbzMx6E6VGTt8ydOjQeP3112tdDTOzuiLpjYgYWut6VMozcZiZWV1yADMzs7rkAGZmZnXJAczMzOqSA5iZmdUlBzAzM6tLDmBmZlaXHMDMzKwuOYCZmVldcgAzM7O65ABmZmYVk3SKpDmSHpb0a0mDW9nmE5IeydtdXa26OICZmVlFJG0KfBHYISLGAQ3kidcL22wFnAlMjoixwJeqVR8HMDMz64hGYEi+buOawLNl648FfhwRSwEi4vlqVcQBzMzMSholzSzcjiuujIhngO8BTwHPAS9HxE1lebwXeK+kOyXdI2mfqlW2WhmbmVndaYqIHdpaKWk94GBgC2AZ8BtJn46IqwqbNZIuPLwHMAL4i6TxEbGsuyvrFpiZmVVqL2BhRLwQESuA64FJZdssBm6MiBURsRB4jBTQup0DmJmZVeopYBdJa0oSsCcwt2ybG0itLyRtQOpSXFCNyjiAmZlZRSLiXuA64AFgNimGTJF0jqSD8mZ/BpZIegS4FTg1IpZUoz6KiGrkW1NDhw6N119/vdbVMDOrK5LeiIihta5HpdwCMzOzuuQAZmZmdckBzMzM6pIDmJlVzYIFMHYsNDam+wVVGYtm/ZUHcZhZ1YwdC48+Cs3NMGAAbL01zJlT61pZW+ptEIcDmJlVTWMjrFz59nJDAzQ11a4+1r56C2DuQjSzqhk9OrW8IN2PHl3b+ljf4gBmZlUzbVrqNmxoSPfTptW6RtaXuAvRzMwAdyGamZn1CAcwMzOrS1ULYJIGS7pP0t8kzZF0dk7fU9IDkmZJukPSljl9kKSpkuZLulfSyEJeZ+b0eZL2rladzcysflSzBfYW8KGImABMBPaRtAtwCXBEREwErgbOytsfDSyNiC2BC4DvAEgaAxwGjAX2AS6W1FDFepuZWR2oWgCL5LW8uEa+Rb6tk9OHAc/mxwcDV+TH1wF75uvNHAxcExFv5YujzQd2qla9zcysPjRWM/PcUrof2BL4cUTcK+kY4A+S3gReAXbJm28KPA0QEU2SXgaG5/R7CtkuzmnlZR0HHAcwcODA6hyQmZn1GlUNYBGxEpgoaV3gd5LGAacA++VgdirwA+CYbihrCjAFQFJzDpDtaQT625wAPub+wcfcP1TjmId0c35VVdUAVhIRyyTdCuwLTMhX9QSYCvwpP34G2AxYLKmR1L24pJBeMiKntVfeartGJc2MiB06dCB1zsfcP/iY+4f+eMzlqjkKccPc8kLSEODDwFxgmKT35s1KaQA3Akflxx8Dbon0L+sbgcPyKMUtgK2A+6pVbzMzqw/VbIFtDFyRz4MNAK6NiOmSjgV+K6kZWAp8Pm9/OXClpPnAS6SRh0TEHEnXAo+Qmssn5K5JMzPrx6oWwCLiIeB9raT/DvhdK+nLgY+3kde5wLndXMUp3ZxfPfAx9w8+5v6hPx5zC31yLkQzM+v7PJWUmZnVJQcwMzOrS30ygEnaJ8+bOF/SGa2s73PzLnb2mCUNl3SrpNck/ajHK94FXTjmD0u6X9LsfP+hHq98J3XhmHfK84/OyvOTHtLjle+krnye8/rN8/v7qz1W6S7owms8UtKbhdf50h6vfE+LiD51AxqAJ4BRwEDgb8CYsm3+Hbg0Pz4MmJofj8nbDwK2yPk01PqYqnzMQ4HdgOOBH9X6WHromN8HbJIfjwOeqfXx9MAxrwk05scbA8+XlnvzrSvHXFh/HfAb4Ku1Pp4qv8YjgYdrfQw9eeuLLbCdgPkRsSAi/glcQ5pPsaivzbvY6WOOiNcj4g5gec9Vt1t05ZgfjIjSHJxzgCGSBvVIrbumK8f8RkSUZm0YTJqTtB505fOMpI8CC0mvcz3o0vH2N30xgK2aUzFrbe7EFvMuAsV5F1e3b2/UlWOuV911zP8KPBARb1Wpnt2pS8csaWdJc4DZwPGFgNabdfqYJa0FnA6c3QP17C5dfV9vIelBSbdJ2r3ala21HplKyqw3kjSWdNmej9S6Lj0h0hRuYyVtQ5pk4I+R/n/ZV30TuCAiXusnDZTngM0jYomk7YEbJI2NiFdqXbFq6YstsErmTly1jbo472Iv0ZVjrlddOmZJI0h/qP9MRDxR9dp2j255nSNiLvAa6fxfb9eVY94Z+K6kRcCXgK9JOrHK9e2qTh9vPvWxBCAi7iedS3svfVhfDGB/BbaStIWkgaSTnDeWbdPX5l3syjHXq04fs9Icnb8HzoiIO3uqwt2gK8e8Rf6yQ9K7ga2BRT1T7S7p9DFHxO4RMTIiRgIXAudFRG8faduV13hD5Yv9ShpF+v5a0EP1ro1ajyKpxg3YD3iM9AvkP3LaOcBB+fFg0qik+aQANaqw73/k/eYB+9b6WHromBeR5p98jdTnPqan69+Tx0y6CvjrwKzCbaNaH0+Vj/lI0kCGWcADwEdrfSzVPuayPL5JHYxC7OJr/K9lr/GBtT6Wat88lZSZmdWlvtiFaGZm/YADmJmZ1SUHMDMzq0sOYGZmVpccwMzMrC45gJl1gqSVhZndH5A0qQfKXCRpg2qXY1YvPJWUWee8GRETAZQuu/Nt4AM1rZFZP+MWmFnXrQMsBVDy35Ieztcb+2RO30PS9NIOkn4k6bP58SJJZ+eW3GxJW+f04ZJukjRH0mVAv5jQz6xSDmBmnTMkdyE+ClwGfCunHwpMBCYAewH/LWnjCvJ7MSK2Ay4BShde/AZwR0SMJc3buHk31t+s7jmAmXXOmxExMSK2BvYBfpmvybQb8OuIWBkR/wBuA3asIL/r8/39pAsTArwfuAogIn5PbuWZWeIAZtZFEXE3sAGwYTubNdHy8za4bH3pemQr8blps4o4gJl1UT5n1UC6hMftwCclNUjakNSKug94EhiTr3SwLrBnBVn/BfhULmNfYL0qVN+sbvmXnlnnDJE0Kz8WcFRErJT0O2BX4G9AAKdFxN8BJF0LPEy6xP2DFZRxNvDrfBXlu4CnuvcQzOqbZ6M3M7O65C5EMzOrSw5gZmZWlxzAzMysLjmAmZlZXXIAMzOzuuQAZmZmdckBzMzM6tL/B5ce6dwljh9eAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax0 = plt.subplots()\n", + "ax1 = ax0.twinx()\n", + "\n", + "ax0.set_xlabel(\"Bound\")\n", + "ax0.set_ylabel(\"Circuit depth\")\n", + "ax1.set_ylabel(\"Circuit width\")\n", + "p0 = ax0.plot(bound_vals, circuit_depths, 'b.', markersize=8, label=\"Depth\")\n", + "p1 = ax1.plot(bound_vals, circuit_widths, 'r.', markersize=8, label=\"Width\")\n", + "plt.title(\"Circuit depths and widths vs bound, unconstrained\")\n", + "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "49a09c34", + "metadata": {}, + "source": [ + "Here we can see that up to the point bound=0.05 beyond which the algorithm becomes unreliable, circuit width doesn't depend on bound while circuit depth has a maximum reduction of ~20% as bound is increased, yet the dependence is not strictly monotonic. Therefore, for both accuracy and efficiency, bound=0.001 is a good value for circuit optimization." + ] + }, + { + "cell_type": "markdown", + "id": "30654b60", + "metadata": {}, + "source": [ + "### k optimization" + ] + }, + { + "cell_type": "markdown", + "id": "6cee16bc", + "metadata": {}, + "source": [ + "And finally, let's look at how variation in k-value is going to affect the $E_k(t), E_p(t)$ curves and pick out an optimal k value for circuit optimization." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "264cfd0a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Studying k=31...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.782 at t=0.2.\n", + "QMOD synthesized.\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 11\u001b[0m dx_dt_exp_k \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m t_val \u001b[38;5;129;01min\u001b[39;00m t_vals_2:\n\u001b[1;32m---> 13\u001b[0m [x_t, dx_dt] \u001b[38;5;241m=\u001b[39m \u001b[43msimulate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mt_val\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mt_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mk_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtotal_counts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e6\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneed_sign_correction\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m \n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# sign correction is unnecessary since energies are not sign-sensitive\u001b[39;00m\n\u001b[0;32m 15\u001b[0m x_t_exp_k\u001b[38;5;241m.\u001b[39mappend(x_t)\n", + "Input \u001b[1;32mIn [7]\u001b[0m, in \u001b[0;36msimulate\u001b[1;34m(t_val, k, total_counts, need_sign_correction)\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# show(quantum_program)\u001b[39;00m\n\u001b[0;32m 17\u001b[0m job \u001b[38;5;241m=\u001b[39m execute(quantum_program)\n\u001b[1;32m---> 18\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mjob\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mvalue\u001b[38;5;241m.\u001b[39mparsed_counts\n\u001b[0;32m 19\u001b[0m wq_count0, wq_count1 \u001b[38;5;241m=\u001b[39m results2counts(results)\n\u001b[0;32m 20\u001b[0m sign_correction_factor \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:45\u001b[0m, in \u001b[0;36msyncify_function..async_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(async_func)\n\u001b[0;32m 44\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21masync_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs: Any, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m---> 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43masync_func\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:39\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(coro)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun\u001b[39m(coro: Awaitable[T]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# Use this function instead of asyncio.run, since it ALWAYS\u001b[39;00m\n\u001b[0;32m 36\u001b[0m \u001b[38;5;66;03m# creates a new event loop and clears the thread event loop.\u001b[39;00m\n\u001b[0;32m 37\u001b[0m \u001b[38;5;66;03m# Never use asyncio.run in library code.\u001b[39;00m\n\u001b[0;32m 38\u001b[0m loop \u001b[38;5;241m=\u001b[39m get_event_loop()\n\u001b[1;32m---> 39\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcoro\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:83\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 81\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 83\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 84\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:106\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 99\u001b[0m heappop(scheduled)\n\u001b[0;32m 101\u001b[0m timeout \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 102\u001b[0m \u001b[38;5;241m0\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ready \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping\n\u001b[0;32m 103\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mmin\u001b[39m(\u001b[38;5;28mmax\u001b[39m(\n\u001b[0;32m 104\u001b[0m scheduled[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39m_when \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime(), \u001b[38;5;241m0\u001b[39m), \u001b[38;5;241m86400\u001b[39m) \u001b[38;5;28;01mif\u001b[39;00m scheduled\n\u001b[0;32m 105\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 106\u001b[0m event_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_selector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_events(event_list)\n\u001b[0;32m 109\u001b[0m end_time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock_resolution\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:324\u001b[0m, in \u001b[0;36mSelectSelector.select\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 322\u001b[0m ready \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 324\u001b[0m r, w, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_select\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_readers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_writers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mInterruptedError\u001b[39;00m:\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ready\n", + "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:315\u001b[0m, in \u001b[0;36mSelectSelector._select\u001b[1;34m(self, r, w, _, timeout)\u001b[0m\n\u001b[0;32m 314\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_select\u001b[39m(\u001b[38;5;28mself\u001b[39m, r, w, _, timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m--> 315\u001b[0m r, w, x \u001b[38;5;241m=\u001b[39m \u001b[43mselect\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 316\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m r, w \u001b[38;5;241m+\u001b[39m x, []\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "k = 31\n", + "bound = 0.001\n", + "t_vals_2 = np.arange(start=0, stop=1.1, step=0.1)\n", + "k_vals = [31, 15, 7, 3]\n", + "x_t_exp = []\n", + "dx_dt_exp = []\n", + "for k_val in k_vals:\n", + " print(\"Studying k={}...\".format(k_val))\n", + " k = k_val\n", + " x_t_exp_k = []\n", + " dx_dt_exp_k = []\n", + " for t_val in t_vals_2:\n", + " [x_t, dx_dt] = simulate(t_val=t_val, k=k_val, total_counts=1e6, need_sign_correction=False) \n", + " # sign correction is unnecessary since energies are not sign-sensitive\n", + " x_t_exp_k.append(x_t)\n", + " dx_dt_exp_k.append(dx_dt)\n", + " x_t_exp.append(x_t_exp_k)\n", + " dx_dt_exp.append(dx_dt_exp_k)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "268bcd98", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "t_cont = np.linspace(start=0, stop=1, num=100)\n", + "x_t_pred = np.sin(t_cont) + np.cos(t_cont)\n", + "dx_dt_pred = np.cos(t_cont) - np.sin(t_cont)\n", + "x_t_exp = np.array(x_t_exp)\n", + "dx_dt_exp = np.array(dx_dt_exp)\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", + "ax1.set_xlabel('t')\n", + "ax1.set_ylabel('E_k, E_p')\n", + "ax1.set_title(\"E_k and E_p vs t for different k\")\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", + "ax2.set_title(\"E_k+E_p vs t for different k\")\n", + "ax2.set_xlabel('t')\n", + "ax2.set_ylabel('E_k+E_p')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "for i in range(4):\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, k={}\".format(k_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, k={}\".format(k_vals[i]))\n", + " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"k={}\".format(k_vals[i]))\n", + "ax1.legend(loc='best')\n", + "ax2.legend(loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "207b294e", + "metadata": {}, + "source": [ + "So it seems that $k=31$ might be a slight overkill for this problem as all circuits with $k\\geq7$ perform pretty well in this interval. Let's look at how circuit depths and widths (unconstrained) depend on $k$." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "6b92e17d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Done for k=127.\n", + "Done for k=63.\n", + "Done for k=31.\n", + "Done for k=15.\n", + "Done for k=7.\n", + "Done for k=3.\n" + ] + } + ], + "source": [ + "k_vals = [127, 63, 31, 15, 7, 3]\n", + "circuit_widths = []\n", + "circuit_depths = []\n", + "for k_val in k_vals:\n", + " k = k_val\n", + " qmod = create_model(main)\n", + " qprog = synthesize(qmod)\n", + " circuit_width = QuantumProgram.from_qprog(qprog).data.width\n", + " circuit_depth = QuantumProgram.from_qprog(qprog).transpiled_circuit.depth\n", + " circuit_widths.append(circuit_width)\n", + " circuit_depths.append(circuit_depth)\n", + " print('Done for k={}.'.format(k_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3faa79df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "k_vals = np.array(k_vals)\n", + "fig, ax0 = plt.subplots()\n", + "ax1 = ax0.twinx()\n", + "ax0.set_xlabel(\"log_2(k+1)\")\n", + "ax0.set_ylabel(\"Circuit depth\")\n", + "ax1.set_ylabel(\"Circuit width\")\n", + "p0 = ax0.plot(np.log2(k_vals+1), circuit_depths, 'b.', markersize=8, label=\"Depth\")\n", + "p1 = ax1.plot(np.log2(k_vals+1), circuit_widths, 'r.', markersize=8, label=\"Width\")\n", + "plt.title(\"Circuit depths and widths vs k, unconstrained\")\n", + "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "0b05a02c", + "metadata": {}, + "source": [ + "We can see that while circuit width scales approximately linearly with $\\log_2(k+1)$ as expected, circuit depth increases dramatically with k while not providing a significant boost in accuracy. Therefore, a k value of ~15 might be a good choice for this problem that provides both good accuracy and efficient circuit. The analysis routine used in this document can also be adapted to other problems by modifying the $\\mathcal{M}$ matrix used in the ``operate()`` function." + ] + }, + { + "cell_type": "markdown", + "id": "09aadab4", + "metadata": {}, + "source": [ + "## Summary" + ] + }, + { + "cell_type": "markdown", + "id": "3726527f", + "metadata": {}, + "source": [ + "In this work we investigated a quantum algorithm[1] for solving linear differential equations. The algorithm is adapted to solve the second-order harmonic oscillator equation, and the routine can be conveniently implemented in Classiq with high-level state preparation and operation programs. By building a quantum circuit for each time point, one can obtain a solution vector $(x(t), dx/dt(t))$ from a set of initial conditions $(x(0), dx/dt(0))$. Results turn out to agree with theory within ~1%, and the optimal bound and k values found to give both good accuracy and efficient circuits (in terms of circuit depth and width) are bound=0.001 and $k=15$. Further work can be done on variants of the harmonic oscillator equations (e.g., with damping) or other more complex differential equations that are expected to cost more resources to test the applicability of this quantum algorithm." + ] + }, + { + "cell_type": "markdown", + "id": "f1db3d7a", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "id": "3d4b8332", + "metadata": {}, + "source": [ + "[1] Xin, Tao et al., Phys. Rev. A 101, 032307 (2020)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qasm new file mode 100644 index 0000000..dde97e4 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qasm @@ -0,0 +1,603 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:59:36.493993+00:00 +// Random seed: 2307696162 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2,q3 { +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2,q3; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation q0,q1,q2,q3; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_19044 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_19044 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494028619088 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494028619088 q0,q1,q2,q3,q4; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_19044 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_19044 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_19044 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q4,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4; + operate_iteration_11 q0,q1,q2,q3,q4,q5; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2,q3 { +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3 { + prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2,q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4]; diff --git a/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qmod new file mode 100644 index 0000000..650d9a4 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.0_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qasm new file mode 100644 index 0000000..59ce3b9 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qasm @@ -0,0 +1,787 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:59:45.604936+00:00 +// Random seed: 3507303778 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.001961335930211545) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.001961335930211545) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644200141776 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644074554064_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644200141776 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139644074554064_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.06842744166965213) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.06842744166965213) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644200150736 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644200153424_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644200150736 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139644200153424_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(9.527425386396606e-07) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643836056912 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_139643836056912 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_1150089 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_1150089 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643973933200 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_139643973933200 q0,q1,q2,q3,q4; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_1150089 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_1150089 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_1150089 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q6; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_139643817710736 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643817714000_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643817710736 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643817714000_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643817710992 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643779224528_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643817710992 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643779224528_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644181561744 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643817710544_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644181561744 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643817710544_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644181564752 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644181576464_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644181564752 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139644181576464_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.001961335930211545) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.001961335930211545) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q2,q3; + ry(-9.527425386396606e-07) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qmod new file mode 100644 index 0000000..ea198ea --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.9048, + 0.0905, + 0.0045, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.1_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.1_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qasm new file mode 100644 index 0000000..8bd7847 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qasm @@ -0,0 +1,907 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:59:55.814897+00:00 +// Random seed: 1734933839 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.007539314595367964) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.007539314595367964) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494499326160 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494055180496_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494499326160 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494055180496_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.13255153229667405) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.13255153229667405) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494021965968 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494038880080_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494021965968 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494038880080_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494021952080 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494028977744_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494021952080 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494028977744_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.4205343352839653) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494054974672 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494054974672 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494054051984 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494034249104_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494054051984 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140494034249104_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(-0.25268025514207854) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q0; + ry(0.25268025514207854) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(1.4582413691399869e-05) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494022907856 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494022907856 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_20287 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_20287 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494030864016 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494019282192 q0,q1,q2,q3,q4 { + mcx_140494030864016 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494019282192 q0,q1,q2,q3,q4; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_20287 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_20287 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_20287 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q5; + operate_iteration_11 q0,q1,q2,q3,q4,q5; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_140494053162064 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494053160976_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494053162064 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140494053160976_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494053161616 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053147216_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494053161616 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494053147216_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494053151248 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494037513744_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494053151248 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494037513744_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494057914768 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029079504_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494057914768 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029079504_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494059809808 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029084560_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494059809808 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029084560_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.007539314595367964) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.007539314595367964) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3; + ry(-1.4582413691399869e-05) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[6]; diff --git a/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qmod new file mode 100644 index 0000000..52bfb2a --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.8187, + 0.1637, + 0.0164, + 0.0011, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.2_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.2_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qasm new file mode 100644 index 0000000..de64506 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qasm @@ -0,0 +1,869 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:00:05.767369+00:00 +// Random seed: 3224207174 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.016304401198125224) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.016304401198125224) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494051267152 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494018993808_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494051267152 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494018993808_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.19271148954365508) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.19271148954365508) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494027391888 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494033508112_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494027391888 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494033508112_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.5010930132653572) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494021163472 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494021163472 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3 { + ry(7.062309100716516e-05) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation q0,q1,q2,q3; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494033296272 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494500167376 q0,q1,q2,q3,q4 { + mcx_140494033296272 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494500167376 q0,q1,q2,q3,q4; +} + +gate ccircuit_21803 q0,q1 { +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494033305232 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494033305232 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_21803 q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_21803 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + ccircuit_21803 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; + ccircuit_21803 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q4,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q5; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494020159952 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494025961104_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494020159952 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140494025961104_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494025956752 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494025959568_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494025956752 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494025959568_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494036046224 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494025956304_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494036046224 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494025956304_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494039130000 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494039122064_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494039130000 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494039122064_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494051915920 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494039135120_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494051915920 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494039135120_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.016304401198125224) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.016304401198125224) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3; + ry(-7.062309100716516e-05) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[6]; diff --git a/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qmod new file mode 100644 index 0000000..653a38b --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.7408, + 0.2222, + 0.0333, + 0.0033, + 0.0003, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.3_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.3_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qasm new file mode 100644 index 0000000..7859f21 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qasm @@ -0,0 +1,869 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:00:27.977623+00:00 +// Random seed: 941443977 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.027864689448403115) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.027864689448403115) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140124322785296 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124238487632_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140124322785296 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140124238487632_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.249194053733249) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.249194053733249) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140124606136016 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124182322448_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140124606136016 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140124182322448_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.5639426413606289) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.5639426413606289) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140124601469200 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140124601469200 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(-0.35010577776714547) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(0.35010577776714547) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.00021353872901232803) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140124236731984 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140124236731984 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_177392 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_177392 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140124226682640 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140124244750480 q0,q1,q2,q3,q4 { + mcx_140124226682640 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140124244750480 q0,q1,q2,q3,q4; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_177392 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_177392 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + ccircuit_177392 q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q6; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5; + operate_iteration_9 q0,q1,q2,q3,q4,q5; + operate_iteration_10 q0,q1,q2,q3,q4; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_140124098673168 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140124098309136_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140124098673168 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140124098309136_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140124212932048 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124098303376_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140124212932048 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140124098303376_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140124333858768 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124212920720_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140124333858768 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140124212920720_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3 { + ry(-0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140124095390224 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124095382608_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140124095390224 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140124095382608_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140124095891600 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140124095381648_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140124095891600 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140124095381648_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.249194053733249) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.249194053733249) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.027864689448403115) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.027864689448403115) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3; + ry(-0.00021353872901232803) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qmod new file mode 100644 index 0000000..3b14878 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6703, + 0.2681, + 0.0536, + 0.0072, + 0.0007, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.4_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.4_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qasm new file mode 100644 index 0000000..e7455b7 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qasm @@ -0,0 +1,873 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:00:40.600059+00:00 +// Random seed: 3884170481 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.041863875590072236) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.041863875590072236) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054791587152 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053965815632_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054791587152 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053965815632_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.3022513774207075) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.3022513774207075) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054791588112 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054791589520_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054791588112 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054791589520_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.6154797086703874) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.6154797086703874) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053932384720 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053932384720 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(-0.3875966866551805) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(0.3875966866551805) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3 { + ry(0.0004987861663879026) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation q0,q1,q2,q3; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054395518032 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140054395518032 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_664393 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_664393 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140053924593104 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054390252496 q0,q1,q2,q3,q4 { + mcx_140053924593104 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140054390252496 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_664393 q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_664393 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; + ccircuit_664393 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q6; + operate_iteration_15 q0,q1,q2,q3,q4,q6; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054403002960 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054411617744_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054403002960 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054411617744_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428631632 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054402996432_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054428631632 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054402996432_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054415934544 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054428641936_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054415934544 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054428641936_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054428175504 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054428184528_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054428175504 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054428184528_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054403350288 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054428187600_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054403350288 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054428187600_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.041863875590072236) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.041863875590072236) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3; + ry(-0.0004987861663879026) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[6]; diff --git a/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qmod new file mode 100644 index 0000000..7f3793e --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6065, + 0.3033, + 0.0758, + 0.0126, + 0.0016, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.5_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.5_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qasm new file mode 100644 index 0000000..789f866 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qasm @@ -0,0 +1,895 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:00:50.725546+00:00 +// Random seed: 4084305271 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.05797921974465749) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.05797921974465749) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053942045712 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053942046288_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053942045712 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053942046288_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.35211173681543134) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.35211173681543134) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054418326864 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054418325712_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054418326864 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054418325712_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053966294672 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054418335696_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053966294672 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054418335696_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.6590580358264089) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.6590580358264089) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053972319312 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053972319312 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053972311888 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054405239888_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053972311888 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054405239888_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q0,q4; + ry(0.4205343352839653) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.0009896009744205724) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140054414542544 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054793284560 q0,q1,q2,q3,q4 { + mcx_140054414542544 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140054793284560 q0,q1,q2,q3,q4; +} + +gate ccircuit_665580 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_665580 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054791137872 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140054791137872 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6,q5; + ccircuit_665580 q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_665580 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_665580 q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053838103696 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053838106896_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053838103696 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053838106896_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053838110224 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053838114064_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053838110224 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140053838114064_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054426001232 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053849444880_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054426001232 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053849444880_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054414045328 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053849451856_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054414045328 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053849451856_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.05797921974465749) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.05797921974465749) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3; + ry(-0.0009896009744205724) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qmod new file mode 100644 index 0000000..9e811b8 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.5488, + 0.3293, + 0.0988, + 0.0198, + 0.003, + 0.0004, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.6_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.6_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qasm new file mode 100644 index 0000000..c0c9f1c --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qasm @@ -0,0 +1,947 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:01.187051+00:00 +// Random seed: 1744318579 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0759194164787075) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0759194164787075) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494051926544 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494024001744_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494051926544 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494024001744_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.3989858236500822) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.3989858236500822) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494052704144 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494019763792_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494052704144 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494019763792_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494063116816 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494052694864_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494063116816 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494052694864_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.6966983611772631) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.6966983611772631) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494028873488 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494028873488 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(-0.4499925615859728) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(0.4499925615859728) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494060319376 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494060318992_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494060319376 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140494060318992_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.12488642529889075) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.12488642529889075) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.0017542495903396446) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_5 q1,q2,q3; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494030908368 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494030908368 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_22981 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_22981 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494057525584 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494056942864 q0,q1,q2,q3,q4 { + mcx_140494057525584 q0,q1,q2,q3,q4; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494056942864 q0,q1,q2,q3,q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_22981 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_22981 q5,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q6; + ccircuit_22981 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5; + operate_iteration_10 q0,q1,q2,q3,q4; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_140494028651728 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494028642128_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494028651728 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140494028642128_o1 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494056728336 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494028644752_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494056728336 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140494028644752_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494029085072 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494029087952_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494029085072 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140494029087952_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494021253456 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494024162192_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494021253456 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494024162192_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494021259856 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494021247632_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494021259856 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494021247632_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3 { + ry(-0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494029462480 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029463568_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494029462480 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029463568_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494035893328 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029464912_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494035893328 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029464912_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.3989858236500822) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.3989858236500822) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.0759194164787075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.0759194164787075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q2,q3; + ry(-0.0017542495903396446) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[6]; diff --git a/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qmod new file mode 100644 index 0000000..1764fce --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4966, + 0.3476, + 0.1217, + 0.0284, + 0.005, + 0.0007, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.7_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.7_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qasm new file mode 100644 index 0000000..0fbd835 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qasm @@ -0,0 +1,1023 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:11.459187+00:00 +// Random seed: 42262636 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.09542237144256743) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.09542237144256743) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054404280464 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054432977872_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054404280464 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054432977872_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.4430703480957983) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.4430703480957983) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054812337552 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054815325200_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054812337552 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054815325200_o0 q0,q1,q2,q3; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054429280912 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054432978320_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054429280912 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054432978320_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.7297276562269666) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0,q4; + ry(0.7297276562269666) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054815454864 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054815454864 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(-0.47667961158977007) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0,q4; + ry(0.47667961158977007) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054407094480 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054407094672_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054407094480 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054407094672_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.14218639878307168) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.14218639878307168) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053975708752 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140053975708752 q0,q1,q2,q3; + x q0; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053975700368 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140053975705040_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140053975700368 q0,q1,q2,q3,q4; + x q0; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2_140053975705040_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0; + ry(-0.3805063771123649) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_1 q1,q2,q3,q0,q4; + ry(0.3805063771123649) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.0028636967676518204) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_5 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140054401260816 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054420273808 q0,q1,q2,q3,q4 { + mcx_140054401260816 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140054420273808 q0,q1,q2,q3,q4; +} + +gate ccircuit_666914 q0,q1 { +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054401262544 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140054401262544 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_666914 q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_666914 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + ccircuit_666914 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q6,q5; + ccircuit_666914 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_140054422391248 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140054422398608_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140054422391248 q0,q1,q2,q3,q4; + x q0; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2_140054422398608_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054418534800 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054418527824_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054418534800 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054418527824_o1 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054418536016 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054418536656_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054418536016 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054418536656_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.14218639878307168) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.14218639878307168) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428716496 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054428723856_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054428716496 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140054428723856_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4 { + ry(-0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053965806992 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053838637264_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053965806992 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053838637264_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053838299728 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053838310416_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053838299728 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053838310416_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4 { + ry(-0.7297276562269666) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.7297276562269666) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054429339664 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053838308176_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054429339664 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053838308176_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054429340688 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054429339792_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054429340688 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054429339792_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2 { + ry(-0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1 { + ry(-0.09542237144256743) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q0; + ry(0.09542237144256743) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3; + ry(-0.0028636967676518204) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qmod new file mode 100644 index 0000000..6dc3bcb --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4493, + 0.3595, + 0.1438, + 0.0383, + 0.0077, + 0.0012, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.8_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.8_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qasm new file mode 100644 index 0000000..5b5ba8a --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qasm @@ -0,0 +1,1037 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:21.709918+00:00 +// Random seed: 3060571039 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.11625291979306625) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.11625291979306625) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054810454032 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054426579280_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054810454032 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054426579280_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.4845500458030609) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.4845500458030609) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054791775440 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054810454736_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054791775440 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054810454736_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054422853456 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054810455952_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054422853456 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054810455952_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.7590702092666635) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.7590702092666635) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054431809488 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054431809488 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054790759504 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054393380944_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054790759504 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054393380944_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q0,q4; + ry(0.5010930132653572) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054404883664 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054404882448_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054404883664 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054404882448_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.15933393728799927) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.15933393728799927) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053847185232 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140053847185232 q0,q1,q2,q3,q4; + x q0; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0,q4; + ry(-0.4012471419183608) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0,q4; + ry(0.4012471419183608) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.0043896421513258815) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_5 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140053969230480 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053976993744 q0,q1,q2,q3,q4 { + mcx_140053969230480 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140053976993744 q0,q1,q2,q3,q4; +} + +gate ccircuit_668346 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_668346 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053942403984 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140053942403984 q0,q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_668346 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_668346 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6; + ccircuit_668346 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14 q0,q1,q2,q3,q4,q5; + operate_iteration_15 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054416252496 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140054427099216_o2 q0,q1,q2,q3 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140054416252496 q0,q1,q2,q3; + x q0; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o2_140054427099216_o2 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428043664 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054428057104_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054428043664 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054428057104_o1 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053925760080 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054428055696_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140053925760080 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054428055696_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.15933393728799927) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.15933393728799927) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428054864 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053942275472_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054428054864 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140053942275472_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053849601936 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054410945104_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053849601936 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054410945104_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053837826832 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053929729296_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053837826832 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053929729296_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054416254992 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053837832144_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054416254992 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053837832144_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4 { + ry(-0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054794362320 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053942278032_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054794362320 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053942278032_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054794362768 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054794368720_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054794362768 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054794368720_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2 { + ry(-0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1 { + ry(-0.11625291979306625) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q0; + ry(0.11625291979306625) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3; + ry(-0.0043896421513258815) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qmod new file mode 100644 index 0000000..08b2826 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4066, + 0.3659, + 0.1647, + 0.0494, + 0.0111, + 0.002, + 0.0003, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t0.9_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t0.9_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qasm b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qasm new file mode 100644 index 0000000..0d1c992 --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qasm @@ -0,0 +1,1025 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:31.794546+00:00 +// Random seed: 1152002887 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.13820053728385998) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.13820053728385998) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053935501008 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054432607376_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053935501008 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054432607376_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(pi/6) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053953938640 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054404886736_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053953938640 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054404886736_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053953949264 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053983243728_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053953949264 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140053983243728_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-pi/4) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(pi/4) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054412323600 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054412323600 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053972315088 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053972316240_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053972315088 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140053972316240_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q0; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q0,q4; + ry(pi/6) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053946246864 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054412316560_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140053946246864 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054412316560_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.1763238388157515) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.1763238388157515) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054419897040 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140054419897040 q0,q1,q2,q3; + x q0; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053968875792 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140054419897680_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140053968875792 q0,q1,q2,q3,q4; + x q0; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2_140054419897680_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0; + ry(-0.420534335283965) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_1 q1,q2,q3,q0,q4; + ry(0.420534335283965) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0.006402884247391269) q3; + prep_ancilla_0_statepreparation_rygate_1 q2,q3; + prep_ancilla_0_statepreparation_rygate_2 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_5 q1,q2,q3; + prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + x q3; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054428635152 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140054428635152 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_669851 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_669851 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; + x q3; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140054429331024 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053942052112 q0,q1,q2,q3,q4 { + mcx_140054429331024 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140053942052112 q0,q1,q2,q3,q4; +} + +gate ccompose_expanded___12 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___12 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; + x q3; +} + +gate ccompose_expanded___25 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___25 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; + ccircuit_669851 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q3; +} + +gate ccompose_expanded___38 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___38 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q3; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3 { + x q3; +} + +gate ccompose_expanded___51 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___51 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3 { + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_669851 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; + x q2; +} + +gate ccompose_expanded___64 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___64 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q2; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q0,q5; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3 { + x q2; +} + +gate ccompose_expanded___77 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___77 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3 { + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; + x q1; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; + ccircuit_669851 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q6,q5; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3 { + x q1; +} + +gate ccompose_expanded___90 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___90 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3 { + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3 { + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4; + operate_iteration_14_rzgate q0,q1,q2,q3,q4; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4; +} + +gate ccompose_expanded___98 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___98 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_15_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q6; + operate_iteration_2 q0,q1,q2,q3,q4,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q6; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_5 q0,q1,q2,q3,q4,q6; + operate_iteration_6 q0,q1,q2,q3,q4,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q6; + operate_iteration_14 q0,q1,q2,q3,q4; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_140053953583056 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140053953588368_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + mcx_hybrid_gray_code_maslov15_140053953583056 q0,q1,q2,q3,q4; + x q0; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2_140053953588368_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054396730384 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053953585360_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054396730384 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140053953585360_o1 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054426654800 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054396729424_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140054426654800 q0,q1,q2; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1_140054396729424_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054398854800 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054398856720_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054398854800 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054398856720_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054398850064 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054398853136_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054398850064 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054398853136_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4 { + ry(-pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053965800208 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054418797840_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053965800208 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054418797840_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054806554576 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054418794704_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054806554576 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054418794704_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1 { + ry(-0.13820053728385998) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q0; + ry(0.13820053728385998) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3; + ry(-0.006402884247391269) q3; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[7]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qmod b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qmod new file mode 100644 index 0000000..a6be1be --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.qmod @@ -0,0 +1,61 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.3679, + 0.3679, + 0.1839, + 0.0613, + 0.0153, + 0.0031, + 0.0005, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(4.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 15); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k15_bound0.001_t1.0_noConstraints.synthesis_options.json b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k15_bound0.001_t1.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qasm new file mode 100644 index 0000000..9d72e36 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qasm @@ -0,0 +1,1157 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:56:40.105343+00:00 +// Random seed: 41106343 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2,q3,q4 { +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate ccircuit_1130780 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_1130780 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_139643844522704 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_139643844522704 q0,q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643732375632 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_2_rzgate_mcx_1 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_139643732375632 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_3_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7; + ccircuit_1130780 q7,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_5_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1130780 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + ccircuit_1130780 q8,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_15_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q6,q8; + ccircuit_1130780 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_17_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_19_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1130780 q7,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_21_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1130780 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_25_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_27_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7; + ccircuit_1130780 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_31_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2,q3,q4 { +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5]; diff --git a/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qmod new file mode 100644 index 0000000..1707f60 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.0_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qasm new file mode 100644 index 0000000..61c5645 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qasm @@ -0,0 +1,1471 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:56:57.333824+00:00 +// Random seed: 1249838887 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-4.763712693198303e-07) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(4.763712693198303e-07) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054412240464 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054412233808_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054412240464 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054412233808_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.001961335930211545) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.001961335930211545) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054412243984 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054412232720_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054412243984 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054412232720_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.06842744166965213) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.06842744166965213) q0; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140053965872912 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054814088656 q0,q1,q2,q3,q4 { + mcx_140053965872912 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054814096784_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054814088656 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054814096784_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140053923407888 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140053923407888 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_650671 q0,q1 { +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053923410384 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140053923410384 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_650671 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054403053456 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140054403053456 q0,q1,q2,q3,q4,q5,q6; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_1_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_3_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q7; + ccircuit_650671 q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_7_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + ccircuit_650671 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q6; + ccircuit_650671 q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + ccircuit_650671 q8,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_19_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_650671 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_21_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + ccircuit_650671 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_25_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_27_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_650671 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_31_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate mcx_140054392855120 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054392862608 q0,q1,q2,q3,q4 { + mcx_140054392855120 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054392856464_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054392862608 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054392856464_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054392853968 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054392860816_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054392853968 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140054392860816_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054791343888 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054392848592_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054791343888 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054392848592_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054419888144 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053967602768_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054419888144 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053967602768_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053929182736 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053929182800_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053929182736 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053929182800_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054815316304 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053929183312_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054815316304 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053929183312_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.001961335930211545) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.001961335930211545) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-4.763712693198303e-07) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(4.763712693198303e-07) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[8]; diff --git a/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qmod new file mode 100644 index 0000000..b5c9614 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.9048, + 0.0905, + 0.0045, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.1_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.1_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qasm new file mode 100644 index 0000000..ecd9a90 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qasm @@ -0,0 +1,1523 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:57:13.215400+00:00 +// Random seed: 1912164734 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-7.2912068456999346e-06) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(7.2912068456999346e-06) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494029006736 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494034745744_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494029006736 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494034745744_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.007539314595367964) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.007539314595367964) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494026743248 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494061632912_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494026743248 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494061632912_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.13255153229667405) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.13255153229667405) q0; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494027498960 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494025283536 q0,q1,q2,q3,q4 { + mcx_140494027498960 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494034492304_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494025283536 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494034492304_o0 q0,q1,q2,q3,q4; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494059954704 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494056121680_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494059954704 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494056121680_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494039346768 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494039346768 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.25268025514207854) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.25268025514207854) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494038816912 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140494038816912 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate ccircuit_1300 q0,q1 { +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494038810768 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494038810768 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_1300 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494038634128 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140494038634128 q0,q1,q2,q3,q4,q5,q6; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + ccircuit_1300 q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_7_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + ccircuit_1300 q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_1300 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_15_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8; + ccircuit_1300 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_19_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + ccircuit_1300 q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_21_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + ccircuit_1300 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_25_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + ccircuit_1300 q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_31_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494018562192 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494018569808_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494018562192 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494018569808_o0 q0,q1,q2,q3,q4,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494018571472 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494018567952_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494018571472 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494018567952_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494020523152 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494020255888_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494020523152 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494020255888_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494020514320 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494020252944_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494020514320 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494020252944_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3 { + ry(-0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494020455248 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494020450384_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494020455248 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494020450384_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494018730640 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494020453328_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494018730640 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494020453328_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.007539314595367964) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.007539314595367964) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-7.2912068456999346e-06) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(7.2912068456999346e-06) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[7]; diff --git a/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qmod new file mode 100644 index 0000000..51d94fe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.8187, + 0.1637, + 0.0164, + 0.0011, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.2_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.2_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qasm new file mode 100644 index 0000000..0035561 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qasm @@ -0,0 +1,1579 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:57:30.711067+00:00 +// Random seed: 1374606300 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-3.531154550358258e-05) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(3.531154550358258e-05) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643806501776 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644329165968_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643806501776 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139644329165968_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.016304401198125224) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.016304401198125224) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643806504656 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643806507792_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643806504656 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643806507792_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643806514832 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644911145680_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643806514832 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139644911145680_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.19271148954365508) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.19271148954365508) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643970024592 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644210571600_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643970024592 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_139644210571600_o0 q0,q1,q2,q3,q4,q5; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_139644342400080 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644294011280 q0,q1,q2,q3,q4 { + mcx_139644342400080 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644072552400_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644294011280 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139644072552400_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0; + ry(0.5010930132653572) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644334170128 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644334170128 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_139643820940240 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_139643820940240 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_1135978 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1135978 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644165863312 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_139644165863312 q0,q1,q2,q3,q4,q5,q6; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_139644051814352 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_139644051814352 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_1_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_3_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; + ccircuit_1135978 q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q7; + operate_iteration_5_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1135978 q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_9_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_11_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; + ccircuit_1135978 q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_1135978 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_17_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_19_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; + ccircuit_1135978 q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_21_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1135978 q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_25_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_1135978 q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_29_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_31_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate mcx_139643823345424 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643780216784 q0,q1,q2,q3,q4 { + mcx_139643823345424 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139644207072336_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643780216784 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139644207072336_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_139644127097488 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643895008464 q0,q1,q2,q3,q4 { + mcx_139644127097488 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643823346704_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643895008464 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643823346704_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644175503760 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643823344336_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644175503760 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_139643823344336_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_139643952521168 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644106877008_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643952521168 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139644106877008_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_139644106870800 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643952522000_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644106870800 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139643952522000_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3 { + ry(-0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643827958736 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643827950800_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643827958736 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643827950800_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643818800144 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643827955088_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643818800144 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643827955088_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.016304401198125224) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.016304401198125224) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-3.531154550358258e-05) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(3.531154550358258e-05) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[8]; diff --git a/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qmod new file mode 100644 index 0000000..bd72e69 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.7408, + 0.2222, + 0.0333, + 0.0033, + 0.0003, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.3_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.3_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qasm new file mode 100644 index 0000000..3a06d14 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qasm @@ -0,0 +1,1539 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:57:47.941373+00:00 +// Random seed: 1738293370 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.00010676936450616402) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.00010676936450616402) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494057767568 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494057770000_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494057767568 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494057770000_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.027864689448403115) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.027864689448403115) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494056664592 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494056656720_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494056664592 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494056656720_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.249194053733249) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(0.249194053733249) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494056655568 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494028596240_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494056655568 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494028596240_o0 q0,q1,q2,q3,q4,q5; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494038978640 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494028592912_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494038978640 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494028592912_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.5639426413606289) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0; + ry(0.5639426413606289) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494059200336 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494059200336 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.35010577776714547) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.35010577776714547) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494054553552 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494054553552 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_5485 q0,q1 { +} + +gate mcx_140494029070672 q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494051039376 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx_140494029070672 q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140494051039376 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_5485 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494034725712 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140494034725712 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_3_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + ccircuit_5485 q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7; + ccircuit_5485 q8,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_5485 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_15_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_5485 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_19_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + ccircuit_5485 q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_21_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + ccircuit_5485 q8,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_5485 q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_29_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_31_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate mcx_hybrid_gray_code_maslov15_140494053905616 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494053905360_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494053905616 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140494053905360_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494053908304 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053901392_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494053908304 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494053901392_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494053903504 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053434640_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494053903504 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494053434640_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494053191888 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053911248_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494053191888 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494053911248_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494052896144 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494052897232_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494052896144 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494052897232_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4 { + ry(-0.249194053733249) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.249194053733249) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494052544464 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053193168_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494052544464 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494053193168_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494052554256 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494053283216_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494052554256 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494053283216_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.027864689448403115) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.027864689448403115) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.00010676936450616402) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.00010676936450616402) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[8]; diff --git a/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qmod new file mode 100644 index 0000000..0326a9a --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6703, + 0.2681, + 0.0536, + 0.0072, + 0.0007, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.4_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.4_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qasm new file mode 100644 index 0000000..c94c9d8 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qasm @@ -0,0 +1,1551 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:58:02.567153+00:00 +// Random seed: 712224739 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0002493930831939513) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0002493930831939513) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494032948432 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494022217616_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494032948432 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494022217616_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.041863875590072236) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.041863875590072236) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494022256592 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494022252880_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494022256592 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494022252880_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.3022513774207075) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.3022513774207075) q0; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494051198160 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494027476624 q0,q1,q2,q3,q4 { + mcx_140494051198160 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494051484624_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494027476624 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494051484624_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(-0.6154797086703874) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(0.6154797086703874) q0; +} + +gate mcx_140494024051408 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494055830992 q0,q1,q2,q3,q4 { + mcx_140494024051408 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494055830992 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494054297616 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140495374191696_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494054297616 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1_140495374191696_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0; + ry(-0.3875966866551805) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.3875966866551805) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494057789264 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494057789264 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_9282 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15_140494061351824 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140494061351824 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_9282 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494020127568 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140494020127568 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_1_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + ccircuit_9282 q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_5_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_9282 q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_11_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; + ccircuit_9282 q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_15_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + ccircuit_9282 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_9282 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_21_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; + ccircuit_9282 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_25_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_9282 q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_29_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_31_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494020878416 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494023998352_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494020878416 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1_140494023998352_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494024031184 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494024023184_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494024031184 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494024023184_o0 q0,q1,q2,q3,q4,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494024021968 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494024024784_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494024021968 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494024024784_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494031695120 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494024020944_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494031695120 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494024020944_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494024420880 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494031699856_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494024420880 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494031699856_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4 { + ry(-0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494023820752 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494023763664_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494023820752 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494023763664_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494023985552 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494023833744_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494023985552 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494023833744_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.041863875590072236) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.041863875590072236) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.0002493930831939513) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.0002493930831939513) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[6]; diff --git a/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qmod new file mode 100644 index 0000000..c765861 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6065, + 0.3033, + 0.0758, + 0.0126, + 0.0016, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.5_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.5_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qasm new file mode 100644 index 0000000..8f00805 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qasm @@ -0,0 +1,1563 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:58:18.480633+00:00 +// Random seed: 1946673580 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0004948004872102862) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0004948004872102862) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494031536528 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494062716432_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494031536528 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494062716432_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.05797921974465749) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.05797921974465749) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494062466384 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494062461712_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494062466384 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140494062461712_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.35211173681543134) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(0.35211173681543134) q0; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140494034725840 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494033261712 q0,q1,q2,q3,q4 { + mcx_140494034725840 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494051273616_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494033261712 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494051273616_o0 q0,q1,q2,q3,q4; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494033263056 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494055328080_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494033263056 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494055328080_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0; + ry(-0.6590580358264089) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.6590580358264089) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494030030608 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494030030608 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140494022200784 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140494022200784 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_13628 q0,q1 { +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494052576144 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140494052576144 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_13628 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494020005648 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140494020005648 q0,q1,q2,q3,q4,q5,q6; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_1_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_13628 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_5_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_7_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_13628 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_9_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; + ccircuit_13628 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_15_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + ccircuit_13628 q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_19_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_13628 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q8; + operate_iteration_21_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q7; + operate_iteration_23_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_13628 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_25_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_13628 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_29_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_31_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate mcx_140494050010256 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494034090896 q0,q1,q2,q3,q4 { + mcx_140494050010256 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140494500273168_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494034090896 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140494500273168_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494035825872 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494050003600_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494035825872 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140494050003600_o0 q0,q1,q2,q3,q4,q5; +} + +gate mcx_140494035573584 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494035463056 q0,q1,q2,q3,q4 { + mcx_140494035573584 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494035991888_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140494035463056 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494035991888_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494026363344 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494035581584_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494026363344 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494035581584_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494050454224 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494035569616_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140494050454224 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140494035569616_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4 { + ry(-0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140494035941968 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494049914512_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494035941968 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494049914512_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494035934864 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494035932176_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494035934864 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494035932176_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.05797921974465749) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.05797921974465749) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.0004948004872102862) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.0004948004872102862) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[6]; diff --git a/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qmod new file mode 100644 index 0000000..4476839 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.5488, + 0.3293, + 0.0988, + 0.0198, + 0.003, + 0.0004, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.6_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.6_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qasm new file mode 100644 index 0000000..fea0d48 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qasm @@ -0,0 +1,1665 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:58:35.031722+00:00 +// Random seed: 3315134875 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0008771247951698223) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0008771247951698223) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643804266704 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643826295248_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643804266704 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643826295248_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.0759194164787075) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.0759194164787075) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643919030928 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643804260304_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643919030928 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643804260304_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643919037456 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643965284432_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643919037456 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139643965284432_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.3989858236500822) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.3989858236500822) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643920319888 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643920322960_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643920319888 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_139643920322960_o0 q0,q1,q2,q3,q4,q5; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_139644163256848 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643920328656 q0,q1,q2,q3,q4 { + mcx_139644163256848 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643818685264_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643920328656 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643818685264_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.6966983611772631) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0; + ry(0.6966983611772631) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644005580240 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644005580240 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.4499925615859728) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.4499925615859728) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644289340752 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643826533968_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644289340752 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643826533968_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644289338512 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139644077197456_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644289338512 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_139644077197456_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0,q4; + ry(-0.12488642529889075) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_1 q1,q2,q3,q0; + ry(0.12488642529889075) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(0) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_6 q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643978973712 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_139643978973712 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate ccircuit_1140602 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15_139643978977104 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_139643978977104 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_1140602 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_139643980168784 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_compose_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_139643980168784 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_3_compose_compose_aux_control_name q8,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_1140602 q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_7_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + ccircuit_1140602 q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_9_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q7; + ccircuit_1140602 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_13_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1140602 q7,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q7; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q8; + operate_iteration_19_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_1140602 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_21_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_23_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_1140602 q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_25_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_27_compose_compose_aux_control_name q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + ccircuit_1140602 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_31_compose_compose_aux_control_name q6,q0; + operate_iteration_3_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6; +} + +gate mcx_hybrid_gray_code_maslov15_139643775694544 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643775694352_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643775694544 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_139643775694352_o1 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643993119760 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643993128848_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643993119760 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643993128848_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate mcx_139643891635216 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643839568912 q0,q1,q2,q3,q4 { + mcx_139643891635216 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643835834000_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643839568912 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643835834000_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_139643722934160 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643814699984 q0,q1,q2,q3,q4 { + mcx_139643722934160 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643891642896_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643814699984 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643891642896_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643814700752 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643891637200_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643814700752 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_139643891637200_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_139643978720208 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643978715216_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643978720208 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139643978715216_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_139644063318416 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643978723856_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644063318416 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643978723856_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4 { + ry(-0.3989858236500822) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.3989858236500822) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643826365008 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643826363024_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643826365008 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643826363024_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644063323152 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643826364816_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644063323152 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643826364816_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2 { + ry(-0.0759194164787075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.0759194164787075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1 { + ry(-0.0008771247951698223) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q0; + ry(0.0008771247951698223) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q3,q4; + ry(0) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[6]; diff --git a/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qmod new file mode 100644 index 0000000..ac73aed --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4966, + 0.3476, + 0.1217, + 0.0284, + 0.005, + 0.0007, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.7_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.7_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qasm new file mode 100644 index 0000000..5e7a409 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qasm @@ -0,0 +1,1719 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:58:52.529516+00:00 +// Random seed: 1916223402 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0014318483838259102) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0014318483838259102) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644323253840 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644094868048_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644323253840 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139644094868048_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.09542237144256743) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.09542237144256743) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644323264848 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644140312592_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644323264848 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139644140312592_o0 q0,q1,q2,q3,q4; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139644323250832 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644140307792_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644323250832 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139644140307792_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-0.4430703480957983) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0; + ry(0.4430703480957983) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139642092974288 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139642092971024_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139642092974288 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_139642092971024_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.7297276562269663) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(0.7297276562269663) q0; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_139643800211152 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644928233552 q0,q1,q2,q3,q4 { + mcx_139643800211152 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644928233552 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0; + ry(-0.47667961158977007) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0; + ry(0.47667961158977007) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644944629840 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139644933377488_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644944629840 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_139644933377488_o1 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_139643968029776 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643951853840_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643968029776 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643951853840_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0; + ry(-0.14218639878307088) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_1 q1,q2,q3,q0,q4; + ry(0.14218639878307088) q0; +} + +gate mcx_139642092966608 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643995558864 q0,q1,q2,q3,q4 { + mcx_139642092966608 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643995558864 q0,q1,q2,q3,q4; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643833381328 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_139644170021456_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139643833381328 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_139644170021456_o2 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_7_mcx_0 q1,q2,q3,q4,q0; + ry(-0.3805063771123649) q0; + prep_ancilla_0_statepreparation_rygate_7_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.3805063771123649) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(5.16191365590357e-08) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_6 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_139644124679120 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_139644124679120 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_1145681 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15_139643761396752 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_139643761396752 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1145681 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643893376784 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_1_compose_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_139643893376784 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_1_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_3_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7; + ccircuit_1145681 q8,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_7_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_1145681 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_9_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; + operate_iteration_11_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q7,q6; + ccircuit_1145681 q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7; + operate_iteration_15_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + ccircuit_1145681 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1145681 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; + operate_iteration_21_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1145681 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; + operate_iteration_27_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + ccircuit_1145681 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_31_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4 { + ry(-0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643959015504 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643854998032_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643959015504 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643854998032_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139643959012432 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139643854997072_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139643959012432 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_139643854997072_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.14218639878307088) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.14218639878307088) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644308697424 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1_139644010787856_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644308697424 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1_139644010787856_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_139643954661648 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644170363280 q0,q1,q2,q3,q4 { + mcx_139643954661648 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644288637200_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644170363280 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139644288637200_o0 q0,q1,q2,q3,q4; +} + +gate mcx_139643850365456 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644170367440 q0,q1,q2,q3,q4 { + mcx_139643850365456 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644288645840_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_139644170367440 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139644288645840_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4 { + ry(-0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644011767120 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643833610512_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644011767120 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_139643833610512_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_139644344699216 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644011770256_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_139644344699216 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_139644011770256_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2,q3,q4 { + ry(-0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643727400720 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643727407248_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643727400720 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643727407248_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643824271120 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643727399440_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643824271120 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643727399440_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1,q2 { + ry(-0.09542237144256743) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.09542237144256743) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q0,q1 { + ry(-0.0014318483838259102) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q1,q0; + ry(0.0014318483838259102) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q3,q4; + ry(-5.16191365590357e-08) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[8]; diff --git a/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qmod new file mode 100644 index 0000000..1e72b3b --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4493, + 0.3595, + 0.1438, + 0.0383, + 0.0077, + 0.0012, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.8_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.8_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qasm new file mode 100644 index 0000000..75791f2 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qasm @@ -0,0 +1,1759 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:59:09.179869+00:00 +// Random seed: 3905011817 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0021948210756629408) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0021948210756629408) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054426568336 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054425198288_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054426568336 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054425198288_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.11625291979306625) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.11625291979306625) q0; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053847189776 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054414354320_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053847189776 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054414354320_o0 q0,q1,q2,q3; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053933168336 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053965879632_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053933168336 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053965879632_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0; + ry(-0.4845500458030609) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_1 q1,q2,q3,q0,q4; + ry(0.4845500458030609) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053976496080 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054428595792_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053976496080 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140054428595792_o0 q0,q1,q2,q3,q4,q5; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx_140053981257360 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054404947024 q0,q1,q2,q3,q4 { + mcx_140053981257360 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054793346192_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054404947024 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054793346192_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-0.7590702092666635) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_1 q1,q2,q3,q4,q0; + ry(0.7590702092666635) q0; +} + +gate mcx_140054389996368 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053976420112 q0,q1,q2,q3,q4 { + mcx_140054389996368 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053976420112 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140056657323408 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053976432464_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140056657323408 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1_140053976432464_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.5010930132653572) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054418941712 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054413109264_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054418941712 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054413109264_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0,q4; + ry(-0.15933393728799927) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0,q4; + ry(0.15933393728799927) q0; +} + +gate mcx_140054405300432 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053838732112 q0,q1,q2,q3,q4 { + mcx_140054405300432 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053838732112 q0,q1,q2,q3,q4; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054807595088 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140053838732176_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054807595088 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_140053838732176_o2 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_7_mcx_0 q1,q2,q3,q4,q0; + ry(-0.4012471419183608) q0; + prep_ancilla_0_statepreparation_rygate_7_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.4012471419183608) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(1.2287812309317772e-07) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_6 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054813988752 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140054813988752 q0,q1,q2,q3,q4,q5; +} + +gate ccircuit_655667 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15_140054810610512 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140054810610512 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_655667 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_1_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054392774992 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140054392774992 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q8,q7; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + ccircuit_655667 q7,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_5_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; + operate_iteration_7_compose_compose_aux_control_name q8,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q6; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + ccircuit_655667 q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_11_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + ccircuit_655667 q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_13_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + ccircuit_655667 q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_17_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8; + operate_iteration_19_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q8,q7,q6; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q7,q6,q8; + ccircuit_655667 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_21_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_23_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + ccircuit_655667 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_27_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q8; + ccircuit_655667 q6,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_31_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q8; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054431594896 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140054431132368_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054431594896 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_140054431132368_o2 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054791370896 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054791366608_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054791370896 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054791366608_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054791358032 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054791364816_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054791358032 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054791364816_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.15933393728799927) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.15933393728799927) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053841761296 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053841757328_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053841761296 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1_140053841757328_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054394849680 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054394859984_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054394849680 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140054394859984_o0 q0,q1,q2,q3,q4,q5; +} + +gate mcx_140053954031184 q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054394858640 q0,q1,q2,q3,q4 { + mcx_140053954031184 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053976954512_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054394858640 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140053976954512_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053953482384 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054430918160_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053953482384 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054430918160_o0 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053953486800 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054423582736_o0 q0,q1,q2,q3 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053953486800 q0,q1,q2,q3; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o0_140054423582736_o0 q0,q1,q2,q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2,q3 { + ry(-0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q3,q0; + ry(0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q3,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053845429072 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053845435664_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053845429072 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053845435664_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053927087312 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053845435600_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053927087312 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053845435600_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1,q2 { + ry(-0.11625291979306625) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.11625291979306625) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q0,q1 { + ry(-0.0021948210756629408) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q1,q0; + ry(0.0021948210756629408) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q3,q4; + ry(-1.2287812309317772e-07) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[8]; diff --git a/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qmod new file mode 100644 index 0000000..2705d00 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4066, + 0.3659, + 0.1647, + 0.0494, + 0.0111, + 0.002, + 0.0003, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t0.9_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t0.9_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qasm b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qasm new file mode 100644 index 0000000..f8ea8ed --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qasm @@ -0,0 +1,1735 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T02:59:24.285512+00:00 +// Random seed: 4154355338 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2,q3,q4 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.0032014421236956346) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.0032014421236956346) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054792564560 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054792559312_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054792564560 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054792559312_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.13820053728385998) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.13820053728385998) q0; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053976719312 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054430094736_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053976719312 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054430094736_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2,q3,q4 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q3,q0,q4; + ry(pi/6) q0; +} + +gate r1tof4 q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate r1tof4_dg q0,q1,q2,q3 { + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + t q3; + cx q0,q3; + tdg q3; + cx q1,q3; + h q3; + t q3; + cx q2,q3; + tdg q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140056288506896 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053966276624_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140056288506896 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140053966276624_o0 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-pi/4) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q2,q3,q4,q0,q5; + ry(pi/4) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054396943120 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054396943120 q0,q1,q2,q3,q4,q5; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate rcccx q0,q1,q2,q3 { + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + u2(0,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(0,pi) q3; +} + +gate rcccx_dg q0,q1,q2,q3 { + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u1(pi/4) q3; + cx q1,q3; + u1(-pi/4) q3; + cx q0,q3; + u2(-2*pi,pi) q3; + u1(pi/4) q3; + cx q2,q3; + u1(-pi/4) q3; + u2(-2*pi,pi) q3; +} + +gate mcx q0,q1,q2,q3,q4 { + h q4; + cu1(pi/2) q3,q4; + h q4; + rcccx q0,q1,q2,q3; + h q4; + cu1(-pi/2) q3,q4; + h q4; + rcccx_dg q0,q1,q2,q3; + c3sqrtx q0,q1,q2,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140055169466960 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053976715152_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140055169466960 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140053976715152_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q3,q4,q0,q5; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_1 q1,q2,q3,q4,q0; + ry(pi/6) q0; +} + +gate mcx_140054415380048 q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140053980700048 q0,q1,q2,q3 { + mcx_140054415380048 q0,q1,q2,q3; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054411566160_o1 q0,q1,q2,q3 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053980700048 q0,q1,q2,q3; + x q1; + x q2; +} + +gate prep_ancilla_0_statepreparation_rygate_6_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_o1_140054411566160_o1 q0,q1,q2,q3; +} + +gate prep_ancilla_0_statepreparation_rygate_6 q0,q1,q2,q3 { + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0; + ry(-0.1763238388157515) q0; + prep_ancilla_0_statepreparation_rygate_6_mcx_0 q1,q2,q3,q0; + ry(0.1763238388157515) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054813087440 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054813087440 q0,q1,q2,q3,q4; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140056439597392 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140053967610064_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140056439597392 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_0_statepreparation_rygate_7_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_140053967610064_o2 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation_rygate_7_mcx_0 q1,q2,q3,q4,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_7_mcx_1 q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5 { + ry(2.7476383618393225e-07) q4; + prep_ancilla_0_statepreparation_rygate_1 q3,q4; + prep_ancilla_0_statepreparation_rygate_2 q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_3 q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_4 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2,q3,q4,q5; + prep_ancilla_0_statepreparation_rygate_6 q1,q2,q3,q4; + prep_ancilla_0_statepreparation_rygate_7 q0,q1,q2,q3,q4,q5; +} + +gate main_prep_ancilla_0 q0,q1,q2,q3,q4,q5 { + prep_ancilla_0_statepreparation q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + x q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053946241424 q0,q1,q2,q3,q4,q5,q6,q7 { + r1tof4 q0,q1,q2,q6; + r1tof q3,q4,q7; + ccx q6,q7,q5; + r1tof q3,q4,q7; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4,q5,q6,q7 { + mcx_hybrid_gray_code_maslov15_140053946241424 q0,q1,q2,q3,q4,q5,q6,q7; +} + +gate ccircuit_660242 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_660242 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___14 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___14 q0,q1; +} + +gate mcu1(param0) q0,q1,q2,q3,q4,q5 { + cu1(pi/16) q4,q5; + cx q4,q3; + cu1(-pi/16) q3,q5; + cx q4,q3; + cu1(pi/16) q3,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q3,q2; + cu1(-pi/16) q2,q5; + cx q4,q2; + cu1(pi/16) q2,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q2,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q3,q1; + cu1(-pi/16) q1,q5; + cx q4,q1; + cu1(pi/16) q1,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q1,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q2,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; + cx q3,q0; + cu1(-pi/16) q0,q5; + cx q4,q0; + cu1(pi/16) q0,q5; +} + +gate mcx_gray q0,q1,q2,q3,q4,q5 { + h q5; + mcu1(pi) q0,q1,q2,q3,q4,q5; + h q5; +} + +gate mcx_hybrid_gray_code_maslov15_140053983507088 q0,q1,q2,q3,q4,q5 { + mcx_gray q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_140053983507088 q0,q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_1_compose_compose_aux_control_name q8,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q8; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; + x q4; +} + +gate mcx_140054811286608 q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054393162640 q0,q1,q2,q3,q4,q5,q6 { + r1tof4 q0,q1,q2,q6; + mcx_140054811286608 q6,q3,q4,q5; + r1tof4_dg q0,q1,q2,q6; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2,q3,q4,q5,q6 { + mcx_hybrid_gray_code_maslov15_140054393162640 q0,q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_2_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; + x q4; +} + +gate ccompose_expanded___29 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___29 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; + x q4; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + ccircuit_660242 q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; + x q4; +} + +gate ccompose_expanded___44 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___44 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_5_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; + x q4; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q7; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_6_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; + x q4; +} + +gate ccompose_expanded___59 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___59 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_7_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q3; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_7_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_7_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_8_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q4; +} + +gate operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + ccircuit_660242 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_8_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; + x q0; +} + +gate operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_8_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_8_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_9_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q4; +} + +gate ccompose_expanded___74 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_9_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___74 q0,q1; +} + +gate operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_9_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_9_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q1; +} + +gate operate_iteration_9 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_9_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_9_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_9_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_10_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q4; +} + +gate operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(2*pi) q0; +} + +gate operate_iteration_10_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; + x q0; +} + +gate operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_10_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_10_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_10_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_11_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q4; +} + +gate ccompose_expanded___89 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_11_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___89 q0,q1; +} + +gate operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_11_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_11_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q2; +} + +gate operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_11_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_11_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_11_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_12_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q4; +} + +gate operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + ccircuit_660242 q8,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q8,q7; +} + +gate operate_iteration_12_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; + x q0; +} + +gate operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_12_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_12_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_13_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q4; +} + +gate ccompose_expanded___104 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_13_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___104 q0,q1; +} + +gate operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_13_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_13_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q1; +} + +gate operate_iteration_13 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_13_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_13_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_13_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_14_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q4; +} + +gate operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q6,q7; + rz(2*pi) q0; +} + +gate operate_iteration_14_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; + x q0; +} + +gate operate_iteration_14 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_14_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_14_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_14_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_15_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q4; +} + +gate ccompose_expanded___119 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_15_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___119 q0,q1; +} + +gate operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7; + operate_iteration_15_compose_compose_aux_control_name q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_15_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q4; +} + +gate operate_iteration_15 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_15_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_15_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_15_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_16_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; +} + +gate operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q8; + ccircuit_660242 q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q6,q8; +} + +gate operate_iteration_16_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; + x q0; +} + +gate operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_16_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_16_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_16_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_17_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; +} + +gate ccompose_expanded___134 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_17_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___134 q0,q1; +} + +gate operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_17_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_17_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q1; +} + +gate operate_iteration_17 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_17_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_17_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_17_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_18_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; + x q3; +} + +gate operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_18_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; + x q0; +} + +gate operate_iteration_18 q0,q1,q2,q3,q4,q5 { + operate_iteration_18_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_18_rzgate q0,q1,q2,q3,q4,q5; + operate_iteration_18_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_19_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; + x q3; +} + +gate ccompose_expanded___149 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_19_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___149 q0,q1; +} + +gate operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_19_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_19_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q2; +} + +gate operate_iteration_19 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_19_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_19_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_19_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_20_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q3; +} + +gate operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7; + ccircuit_660242 q7,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; +} + +gate operate_iteration_20_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; + x q0; +} + +gate operate_iteration_20 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_20_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_20_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_20_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_21_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q3; +} + +gate ccompose_expanded___164 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_21_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___164 q0,q1; +} + +gate operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_compose_compose_aux_control_name q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q8; +} + +gate operate_iteration_21_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q1; +} + +gate operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_21_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_21_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_21_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_22_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q3; +} + +gate operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(2*pi) q0; +} + +gate operate_iteration_22_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; + x q0; +} + +gate operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_22_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_22_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_22_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_23_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q3; +} + +gate ccompose_expanded___179 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_23_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___179 q0,q1; +} + +gate operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; + operate_iteration_23_compose_compose_aux_control_name q7,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q7,q8,q6; +} + +gate operate_iteration_23_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q3; +} + +gate operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_23_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_23_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_23_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_24_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; +} + +gate operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; + ccircuit_660242 q6,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q6,q7; +} + +gate operate_iteration_24_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_24_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_24_igate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_24_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_25_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; + x q2; +} + +gate ccompose_expanded___194 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_25_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___194 q0,q1; +} + +gate operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q7,q6; + operate_iteration_25_compose_compose_aux_control_name q7,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q7; +} + +gate operate_iteration_25_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q1; +} + +gate operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_25_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_25_compose q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_26_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q2; +} + +gate operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_26_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; + x q0; +} + +gate operate_iteration_26 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_26_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_26_rzgate q0,q1,q2,q3,q4,q5,q6; + operate_iteration_26_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_27_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q2; +} + +gate ccompose_expanded___209 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_27_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___209 q0,q1; +} + +gate operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; + operate_iteration_27_compose_compose_aux_control_name q8,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q8,q6,q7; +} + +gate operate_iteration_27_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q2; +} + +gate operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_27_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_27_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_27_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_28_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; + x q1; +} + +gate operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; + ccircuit_660242 q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_28_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; + x q0; +} + +gate operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_28_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_28_igate q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_29_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q1; +} + +gate ccompose_expanded___224 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_29_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___224 q0,q1; +} + +gate operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_29_compose_compose_aux_control_name q6,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; +} + +gate operate_iteration_29_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q1; +} + +gate operate_iteration_29 q0,q1,q2,q3,q4,q5,q6 { + operate_iteration_29_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_29_compose q0,q1,q2,q3,q4,q5,q6; + operate_iteration_29_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_30_inplace_prepare_int_0 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q0,q7,q6; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5,q0,q6; + rz(2*pi) q0; +} + +gate operate_iteration_30_inplace_prepare_int_1 q0,q1,q2,q3,q4 { + x q0; +} + +gate operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q7 { + operate_iteration_30_inplace_prepare_int_0 q1,q2,q3,q4,q5; + operate_iteration_30_rzgate q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_30_inplace_prepare_int_1 q1,q2,q3,q4,q5; +} + +gate ccompose_expanded___233 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_31_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___233 q0,q1; +} + +gate operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5,q6; + operate_iteration_31_compose_compose_aux_control_name q6,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8 { + operate_iteration_31_compose q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate main_operate q0,q1,q2,q3,q4,q5,q6,q7,q8 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_1 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_2 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_3 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_4 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_5 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_6 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_7 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_8 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_9 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_10 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_11 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_12 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_13 q0,q1,q2,q3,q4,q5,q8; + operate_iteration_14 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_15 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_16 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_17 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_18 q0,q1,q2,q3,q4,q5; + operate_iteration_19 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_20 q0,q1,q2,q3,q4,q5,q7,q8; + operate_iteration_21 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_22 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_23 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_24 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_25 q0,q1,q2,q3,q4,q5,q6,q7; + operate_iteration_26 q0,q1,q2,q3,q4,q5,q7; + operate_iteration_27 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_28 q0,q1,q2,q3,q4,q5,q6,q7,q8; + operate_iteration_29 q0,q1,q2,q3,q4,q5,q6; + operate_iteration_30 q0,q1,q2,q3,q4,q5,q6,q8; + operate_iteration_31 q0,q1,q2,q3,q4,q5,q6,q7,q8; +} + +gate mcx_hybrid_gray_code_maslov15_140055129693200 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140055129686800_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140055129693200 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_140055129686800_o2 q0,q1,q2,q3,q4,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054393982160 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o2_140055129692496_o2 q0,q1,q2,q3,q4,q5 { + x q0; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054393982160 q0,q1,q2,q3,q4,q5; + x q0; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o2_140055129692496_o2 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140053953319824 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053953323664_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140053953319824 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140053953323664_o1 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054419893200 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140054419896720_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054419893200 q0,q1,q2,q3,q4; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140054419896720_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2,q3,q4 { + ry(-0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053953330320 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o1_140053953316240_o1 q0,q1,q2,q3,q4 { + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053953330320 q0,q1,q2,q3,q4; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o1_140053953316240_o1 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140053953327760 q0,q1,q2,q3,q4,q5 { + r1tof4 q0,q1,q2,q5; + ccx q5,q3,q4; + r1tof4_dg q0,q1,q2,q5; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054419747664_o0 q0,q1,q2,q3,q4,q5 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140053953327760 q0,q1,q2,q3,q4,q5; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4,q5 { + mcx_hybrid_gray_code_maslov15_o0_140054419747664_o0 q0,q1,q2,q3,q4,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054403936336 q0,q1,q2,q3,q4 { + mcx q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054403925840_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + x q3; + mcx_hybrid_gray_code_maslov15_140054403936336 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; + x q3; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054403925840_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4,q5 { + ry(-pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q3,q4,q0,q5; + ry(pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q3,q4,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428634896 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054417755536_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054428634896 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054417755536_o0 q0,q1,q2,q3,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140054422388880 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054417759696_o0 q0,q1,q2,q3,q4 { + x q0; + x q1; + x q2; + mcx_hybrid_gray_code_maslov15_140054422388880 q0,q1,q2,q3,q4; + x q0; + x q1; + x q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_o0_140054417759696_o0 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1,q2,q3,q4 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q2,q3,q0,q4; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q2,q3,q0,q4; +} + +gate mcx_hybrid_gray_code_maslov15_140053942446544 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053942449744_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053942446544 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053942449744_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053972323728 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053942452048_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053972323728 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053942452048_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q0,q1,q2 { + ry(-0.13820053728385998) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.13820053728385998) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q0,q1 { + ry(-0.0032014421236956346) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_0_qinverse q1,q0; + ry(0.0032014421236956346) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2,q3,q4,q5; + prep_ancilla_1_statepreparation_qinverse_rygate_5_qinverse q2,q3,q4; + prep_ancilla_1_statepreparation_qinverse_rygate_6_qinverse q3,q4; + ry(-2.7476383618393225e-07) q4; +} + +gate main_prep_ancilla_1 q0,q1,q2,q3,q4,q5 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2,q3,q4,q5; +} + +qreg q[9]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3],q[4],q[5]; +main_prep_ancilla_0 q[1],q[2],q[3],q[4],q[5],q[6]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5],q[6],q[7],q[8]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3],q[4],q[5],q[6]; diff --git a/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qmod b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qmod new file mode 100644 index 0000000..fd99c39 --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.qmod @@ -0,0 +1,77 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.3679, + 0.3679, + 0.1839, + 0.0613, + 0.0153, + 0.0031, + 0.0005, + 0.0001, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(5.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 31); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k31_bound0.001_t1.0_noConstraints.synthesis_options.json b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k31_bound0.001_t1.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qasm new file mode 100644 index 0000000..6de3a33 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qasm @@ -0,0 +1,151 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:07.244239+00:00 +// Random seed: 2386251146 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1 { +} + +gate prep_ancilla_0_statepreparation q0,q1 { + prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_672940 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_672940 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1 { +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qmod new file mode 100644 index 0000000..2823169 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.qmod @@ -0,0 +1,44 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([1.0, 0.0, 0.0, 0.0], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.0_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qasm new file mode 100644 index 0000000..16b8329 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qasm @@ -0,0 +1,183 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:18.266889+00:00 +// Random seed: 2524318709 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.13685488333930426) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_178717 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_178717 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140124097599888 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140124097599888 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + ry(-0.13685488333930426) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qmod new file mode 100644 index 0000000..130d489 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.9048, + 0.0905, + 0.0045, + 0.0002 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.1_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.1_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qasm new file mode 100644 index 0000000..b16cfe7 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:24.529890+00:00 +// Random seed: 54559310 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.420534335283965) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.420534335283965) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.25268025514207854) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.25268025514207854) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.2651030645933481) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_673093 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_673093 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053922494352 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140053922494352 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.2651030645933481) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qmod new file mode 100644 index 0000000..5a745d8 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.8188, + 0.1638, + 0.0164, + 0.0011 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.2_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.2_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qasm new file mode 100644 index 0000000..3dbf9a0 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:30.144567+00:00 +// Random seed: 2959323418 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.5010930132653572) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.385422979087309) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_673304 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_673304 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054418336976 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140054418336976 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.385422979087309) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qmod new file mode 100644 index 0000000..17a43bf --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.741, + 0.2223, + 0.0333, + 0.0033 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.3_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.3_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qasm new file mode 100644 index 0000000..f966496 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:36.886979+00:00 +// Random seed: 273266975 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.5639426413606289) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.5639426413606289) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.35010577776714547) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.35010577776714547) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.4983881074664971) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_673515 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_673515 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053965801104 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140053965801104 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.4983881074664971) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qmod new file mode 100644 index 0000000..4c53d67 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6708, + 0.2683, + 0.0537, + 0.0072 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.4_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.4_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qasm new file mode 100644 index 0000000..d9fd359 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:47.565660+00:00 +// Random seed: 1112532146 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.6154797086703874) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.6154797086703874) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.38759668665518077) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.38759668665518077) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.604502754841415) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_178902 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_178902 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140124100070160 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140124100070160 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.38759668665518077) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.38759668665518077) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.604502754841415) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qmod new file mode 100644 index 0000000..8ef3500 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6076, + 0.3038, + 0.0759, + 0.0127 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.5_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.5_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qasm new file mode 100644 index 0000000..5d0e8d1 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:55.499391+00:00 +// Random seed: 1068456232 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.6590580358264091) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.6590580358264091) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.420534335283965) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.420534335283965) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.7042234736308627) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_673726 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_673726 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054421522768 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140054421522768 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.420534335283965) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.6590580358264091) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.6590580358264091) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.7042234736308627) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qmod new file mode 100644 index 0000000..91f7be5 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.5507, + 0.3304, + 0.0991, + 0.0198 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.6_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.6_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qasm new file mode 100644 index 0000000..c13417a --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:04:06.576454+00:00 +// Random seed: 4240218510 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.6966983611772631) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.6966983611772631) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.4499925615859728) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.4499925615859728) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.7979716473001645) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_179113 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_179113 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140124227297424 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140124227297424 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.7979716473001645) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qmod new file mode 100644 index 0000000..5655160 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4995, + 0.3496, + 0.1224, + 0.0286 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.7_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.7_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qasm new file mode 100644 index 0000000..1b7349a --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:04:13.319775+00:00 +// Random seed: 849117775 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.7297276562269663) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.7297276562269663) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.47667961158977007) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.47667961158977007) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.8861406961915966) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_26634 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_26634 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494032097552 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140494032097552 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.8861406961915966) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qmod new file mode 100644 index 0000000..ee4bfa1 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4534, + 0.3628, + 0.1451, + 0.0387 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.8_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.8_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qasm new file mode 100644 index 0000000..64f24eb --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:04:18.453641+00:00 +// Random seed: 511516784 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.7590702092666634) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.7590702092666634) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(0.5010930132653572) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(0.9691000916061218) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_1152255 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_1152255 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643835533904 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_139643835533904 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.7590702092666634) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.7590702092666634) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-0.9691000916061218) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qmod new file mode 100644 index 0000000..3022678 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4121, + 0.3709, + 0.1669, + 0.0501 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t0.9_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t0.9_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qasm b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qasm new file mode 100644 index 0000000..d579c23 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qasm @@ -0,0 +1,211 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:04:25.523272+00:00 +// Random seed: 4280070181 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-pi/4) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(pi/4) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q0; + ry(pi/6) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1 { + ry(pi/3) q1; + prep_ancilla_0_statepreparation_rygate_1 q0,q1; + prep_ancilla_0_statepreparation_rygate_2 q0,q1; +} + +gate main_prep_ancilla_0 q0,q1 { + prep_ancilla_0_statepreparation q0,q1; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1 { + x q0; + x q1; +} + +gate cccircuit_26847 q0,q1,q2 { +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1 { + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2 { + operate_iteration_0_inplace_prepare_int_0 q1,q2; + cccircuit_26847 q1,q2,q0; + operate_iteration_0_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1 { + x q1; +} + +gate mcphase(param0) q0,q1 { + cp(pi/2) q0,q1; +} + +gate ccz q0,q1,q2 { + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + cx q0,q2; + u(0,-pi/8,-pi/8) q2; + cx q1,q2; + u(0,-7*pi/8,-7*pi/8) q2; + mcphase(pi/2) q0,q1; +} + +gate cccompose_expanded___8 q0,q1,q2 { + ccx q0,q1,q2; + ccz q0,q1,q2; +} + +gate operate_iteration_1_compose q0,q1,q2 { + cccompose_expanded___8 q0,q1,q2; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1 { + x q1; +} + +gate operate_iteration_1 q0,q1,q2 { + operate_iteration_1_inplace_prepare_int_0 q1,q2; + operate_iteration_1_compose q1,q2,q0; + operate_iteration_1_inplace_prepare_int_1 q1,q2; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1 { + x q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494032464464 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_140494032464464 q0,q1,q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1 { + x q0; +} + +gate operate_iteration_2 q0,q1,q2 { + operate_iteration_2_inplace_prepare_int_0 q1,q2; + operate_iteration_2_rzgate q0,q1,q2; + operate_iteration_2_inplace_prepare_int_1 q1,q2; +} + +gate cccompose_expanded___14 q0,q1,q2 { + ccz q0,q1,q2; + ccx q0,q1,q2; +} + +gate operate_iteration_3_compose q0,q1,q2 { + cccompose_expanded___14 q0,q1,q2; +} + +gate operate_iteration_3 q0,q1,q2 { + operate_iteration_3_compose q1,q2,q0; +} + +gate main_operate q0,q1,q2 { + h q0; + operate_iteration_0 q0,q1,q2; + operate_iteration_1 q0,q1,q2; + operate_iteration_2 q0,q1,q2; + operate_iteration_3 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1; + ry(-pi/3) q1; +} + +gate main_prep_ancilla_1 q0,q1 { + prep_ancilla_1_statepreparation_qinverse q0,q1; +} + +qreg q[3]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2]; +main_prep_ancilla_0 q[1],q[2]; +main_operate q[0],q[1],q[2]; +id q[0]; +main_prep_ancilla_1 q[1],q[2]; diff --git a/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qmod b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qmod new file mode 100644 index 0000000..767c6a3 --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.qmod @@ -0,0 +1,49 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.375, + 0.375, + 0.1875, + 0.0625 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(2.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 3); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k3_bound0.001_t1.0_noConstraints.synthesis_options.json b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k3_bound0.001_t1.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qasm new file mode 100644 index 0000000..fbba672 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qasm @@ -0,0 +1,321 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:40.556929+00:00 +// Random seed: 4150830073 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2 { +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + prep_ancilla_0_statepreparation_computationalbasisstatepreparation q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15 q0,q1,q2,q3,q4; +} + +gate ccircuit_671219 q0,q1 { +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054428755536 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140054428755536 q0,q1,q2,q3; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_671219 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + ccircuit_671219 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2 { +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_computationalbasisstatepreparation_qinverse q0,q1,q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qmod new file mode 100644 index 0000000..a7b24d4 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 1.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.0_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qasm new file mode 100644 index 0000000..2187da9 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qasm @@ -0,0 +1,417 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:48.157303+00:00 +// Random seed: 4123639854 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.06842744166965213) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.06842744166965213) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054414092048 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054414097744_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054414092048 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054414097744_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.00392267186042309) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054404278992 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140054404278992 q0,q1,q2,q3; +} + +gate ccircuit_671540 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_671540 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053966539280 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140053966539280 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; + ccircuit_671540 q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4 { + operate_iteration_7_compose q0,q1,q2,q3,q4; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q5; + operate_iteration_6 q0,q1,q2,q3; + operate_iteration_7 q0,q1,q2,q3,q5; +} + +gate mcx_hybrid_gray_code_maslov15_140054815425040 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054805907152_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054815425040 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054805907152_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054815321296 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054425749840_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054815321296 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054425749840_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.06842744166965213) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2; + ry(-0.00392267186042309) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qmod new file mode 100644 index 0000000..bc4ef9d --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.9048, + 0.0905, + 0.0045, + 0.0002, + 0.0, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.1_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.1_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qasm new file mode 100644 index 0000000..307bba7 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qasm @@ -0,0 +1,455 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:01:56.889654+00:00 +// Random seed: 2022758483 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.13255153229667405) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.13255153229667405) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494035464144 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494035458384_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494035464144 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494035458384_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.4205343352839653) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494054789008 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494054789008 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.25268025514207854) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.25268025514207854) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.015078629190735928) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494051303952 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494051303952 q0,q1,q2,q3,q4; +} + +gate ccircuit_24249 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_24249 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494056096592 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_2_rzgate_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140494056096592 q0,q1,q2,q3; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + ccircuit_24249 q5,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q4; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.25268025514207854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494039345040 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494039346064_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494039345040 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494039346064_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494039341200 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494039340304_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494039341200 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494039340304_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.13255153229667405) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2; + ry(-0.015078629190735928) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qmod new file mode 100644 index 0000000..40a0d7e --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.8187, + 0.1637, + 0.0164, + 0.0011, + 0.0001, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.2_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.2_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qasm new file mode 100644 index 0000000..714eb02 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qasm @@ -0,0 +1,455 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:05.830969+00:00 +// Random seed: 3442225311 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.19271148954365508) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.19271148954365508) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494059838160 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494059840976_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494059838160 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494059840976_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.5010930132653572) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494020862864 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494020862864 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.30627736916966936) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.30627736916966936) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.03260880239625045) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494028186704 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140494028186704 q0,q1,q2,q3; +} + +gate ccircuit_24650 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_24650 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494037656208 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_2_rzgate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494037656208 q0,q1,q2,q3,q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_24650 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_2_rzgate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4; + operate_iteration_1 q0,q1,q2,q3,q4; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.30627736916966936) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494055113552 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494055127120_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494055113552 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494055127120_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494029512336 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494055119504_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494029512336 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494055119504_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.19271148954365508) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2; + ry(-0.03260880239625045) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qmod new file mode 100644 index 0000000..51f1eca --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.7408, + 0.2222, + 0.0333, + 0.0033, + 0.0003, + 0.0, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.3_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.3_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qasm new file mode 100644 index 0000000..fcde061 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qasm @@ -0,0 +1,455 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:13.384899+00:00 +// Random seed: 3283878260 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.24919405373324854) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.24919405373324854) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054423720272 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054426396240_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054423720272 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054426396240_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.5639426413606289) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.5639426413606289) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053927691984 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140053927691984 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.35010577776714547) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.35010577776714547) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.05572937889680623) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054432181456 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140054432181456 q0,q1,q2,q3,q4; +} + +gate ccircuit_672001 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_672001 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054810904080 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140054810904080 q0,q1,q2,q3; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_672001 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4 { + operate_iteration_7_compose q0,q1,q2,q3,q4; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q4; + operate_iteration_7 q0,q1,q2,q3,q4; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.35010577776714547) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054423269904 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054423272528_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054423269904 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054423272528_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054423272720 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140054423260496_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054423272720 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140054423260496_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.5639426413606289) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.24919405373324854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.24919405373324854) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2; + ry(-0.05572937889680623) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qmod new file mode 100644 index 0000000..700f0ac --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6703, + 0.2681, + 0.0536, + 0.0072, + 0.0007, + 0.0001, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.4_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.4_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qasm new file mode 100644 index 0000000..9c28a8e --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qasm @@ -0,0 +1,455 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:20.720341+00:00 +// Random seed: 1475784917 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.3022513774207075) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.3022513774207075) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139645767786000 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139642093689424_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139645767786000 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139642093689424_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.6154797086703874) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.6154797086703874) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644009686800 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_139644009686800 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.3875966866551805) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.3875966866551805) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.08372775118014447) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644214408592 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_139644214408592 q0,q1,q2,q3,q4; +} + +gate ccircuit_1151276 q0,q1 { +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139644214401232 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_139644214401232 q0,q1,q2,q3; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + ccircuit_1151276 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5; + ccircuit_1151276 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q5; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q5; + operate_iteration_6 q0,q1,q2,q3,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.3875966866551805) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643951131920 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643951121296_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643951131920 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643951121296_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139644002704912 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643951124304_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139644002704912 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643951124304_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.6154797086703874) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.3022513774207075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2; + ry(-0.08372775118014447) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qmod new file mode 100644 index 0000000..b42cb8c --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.6065, + 0.3033, + 0.0758, + 0.0126, + 0.0016, + 0.0002, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.5_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.5_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qasm new file mode 100644 index 0000000..eb9da4b --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qasm @@ -0,0 +1,455 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:28.166972+00:00 +// Random seed: 717442833 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.35211173681543134) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.35211173681543134) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494037713232 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494025419920_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494037713232 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494025419920_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.6590580358264089) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.6590580358264089) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494018864272 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494018864272 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.4205343352839653) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.11595843948931497) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494061905040 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140494061905040 q0,q1,q2,q3; +} + +gate ccircuit_25123 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_25123 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494036945040 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_1_compose_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494036945040 q0,q1,q2,q3,q4; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; + ccircuit_25123 q4,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_1_compose_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q5; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494052546384 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494052544016_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494052546384 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494052544016_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494052541776 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494052550736_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494052541776 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494052550736_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.6590580358264089) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1 { + ry(-0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q0; + ry(0.35211173681543134) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q1,q2; + ry(-0.11595843948931497) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qmod new file mode 100644 index 0000000..0d15f31 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.5488, + 0.3293, + 0.0988, + 0.0198, + 0.003, + 0.0004, + 0.0, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.6_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.6_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qasm new file mode 100644 index 0000000..4a0bd71 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qasm @@ -0,0 +1,483 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:35.936564+00:00 +// Random seed: 3011436525 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.39898582365008195) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.39898582365008195) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494029119568 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029115088_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494029119568 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029115088_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.6966983611772631) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.6966983611772631) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494051212752 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494051212752 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.4499925615859728) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.4499925615859728) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(-0.12488642529889075) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(0.12488642529889075) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.151838832957415) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_4 q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494055378448 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140494055378448 q0,q1,q2,q3; +} + +gate ccircuit_25591 q0,q1 { +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494057582672 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494057582672 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_25591 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; + ccircuit_25591 q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4 { + operate_iteration_7_compose q0,q1,q2,q3,q4; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3; + operate_iteration_7 q0,q1,q2,q3,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1 { + ry(-0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q0; + ry(0.12488642529889075) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2 { + ry(-0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4499925615859728) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494033999504 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494033996048_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494033999504 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494033996048_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494033998672 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494034000784_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140494033998672 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494034000784_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.6966983611772631) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1 { + ry(-0.39898582365008195) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q0; + ry(0.39898582365008195) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q1,q2; + ry(-0.151838832957415) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qmod new file mode 100644 index 0000000..a028571 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4966, + 0.3476, + 0.1217, + 0.0284, + 0.005, + 0.0007, + 0.0001, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.7_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.7_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qasm new file mode 100644 index 0000000..75a5f2e --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qasm @@ -0,0 +1,521 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:43.707573+00:00 +// Random seed: 500408136 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.4430703480957983) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.4430703480957983) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643926084880 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139644931976784_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643926084880 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139644931976784_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.7297276562269663) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.7297276562269663) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139644172522640 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_139644172522640 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.47667961158977007) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.47667961158977007) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(-0.14218639878307168) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(0.14218639878307168) q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643928528592 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2 { + x q0; + mcx_hybrid_gray_code_maslov15_139643928528592 q0,q1,q2; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.3805063771123649) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.3805063771123649) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.19084474288513487) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_4 q1,q2; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_139644206377872 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_139644206377872 q0,q1,q2,q3; +} + +gate ccircuit_1151767 q0,q1 { +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643988577552 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_139643988577552 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_1151767 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; + ccircuit_1151767 q5,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.3805063771123649) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.14218639878307168) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.14218639878307168) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.47667961158977007) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_139643827029392 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643827038864_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643827029392 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643827038864_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_139643827037328 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_139643827034896_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_139643827037328 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_139643827034896_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.7297276562269663) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.4430703480957983) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2; + ry(-0.19084474288513487) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qmod new file mode 100644 index 0000000..711831b --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4493, + 0.3595, + 0.1438, + 0.0383, + 0.0077, + 0.0012, + 0.0002, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.8_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.8_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qasm new file mode 100644 index 0000000..3e9ca2f --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qasm @@ -0,0 +1,521 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:02:52.699466+00:00 +// Random seed: 2474276792 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-0.4845500458030609) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(0.4845500458030609) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054404551440 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053965730384_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140054404551440 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053965730384_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-0.7590702092666635) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(0.7590702092666635) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053932435280 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140053932435280 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-0.5010930132653572) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(0.5010930132653572) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(-0.15933393728799858) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(0.15933393728799858) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140054428287760 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2 { + x q0; + mcx_hybrid_gray_code_maslov15_140054428287760 q0,q1,q2; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.4012471419183608) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.4012471419183608) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.2325058395861325) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_4 q1,q2; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140054405374288 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140054405374288 q0,q1,q2,q3; +} + +gate ccircuit_672464 q0,q1 { +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140054810906832 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_0_igate_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140054810906832 q0,q1,q2,q3,q4; +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_672464 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4,q5 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4,q5; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_1_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4,q5 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4,q5; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; + operate_iteration_3_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_672464 q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_5_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q4,q5; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0,q4; + rz(-pi) q0; + operate_iteration_0_igate_mcx_1 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_7_compose_compose_aux_control_name q5,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4,q5 { + operate_iteration_7_compose q0,q1,q2,q3,q4,q5; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4,q5; + operate_iteration_1 q0,q1,q2,q3,q4,q5; + operate_iteration_2 q0,q1,q2,q3; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q4; + operate_iteration_7 q0,q1,q2,q3,q4,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4012471419183608) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.15933393728799858) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.15933393728799858) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.5010930132653572) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140053925774608 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053925782224_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053925774608 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053925782224_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140053925789264 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140053925782864_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140053925789264 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140053925782864_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.7590702092666635) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(0.4845500458030609) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2; + ry(-0.2325058395861325) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qmod new file mode 100644 index 0000000..7929340 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.4066, + 0.3659, + 0.1647, + 0.0494, + 0.0111, + 0.002, + 0.0003, + 0.0 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t0.9_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t0.9_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qasm b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qasm new file mode 100644 index 0000000..9c9d7f4 --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qasm @@ -0,0 +1,521 @@ +// Generated by Classiq. +// Classiq version: 0.50.0 +// Creation timestamp: 2024-09-26T03:03:00.274112+00:00 +// Random seed: 311974026 + +OPENQASM 2.0; +include "qelib1.inc"; +gate main_identity_0 q0 { +} + +gate main_identity_1 q0,q1,q2 { +} + +gate mcx_hybrid_gray_code_maslov15 q0,q1 { + cx q0,q1; +} + +gate mcx_hybrid_gray_code_maslov15_o0 q0,q1 { + x q0; + mcx_hybrid_gray_code_maslov15 q0,q1; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_1_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_1 q0,q1 { + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_1_mcx_0 q1,q0; + ry(pi/6) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140493815947600 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140494029864848_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140493815947600 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_2_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140494029864848_o0 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(-pi/4) q0; + prep_ancilla_0_statepreparation_rygate_2_mcx_0 q1,q2,q0; + ry(pi/4) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494051723152 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2 { + x q1; + mcx_hybrid_gray_code_maslov15_140494051723152 q0,q1,q2; + x q1; +} + +gate prep_ancilla_0_statepreparation_rygate_3_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(-pi/6) q0; + prep_ancilla_0_statepreparation_rygate_3_mcx_0 q1,q2,q0; + ry(pi/6) q0; +} + +gate prep_ancilla_0_statepreparation_rygate_4_mcx_0 q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_0_statepreparation_rygate_4 q0,q1 { + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(-0.1763238388157515) q0; + prep_ancilla_0_statepreparation_rygate_4_mcx_0 q1,q0; + ry(0.1763238388157515) q0; +} + +gate mcx_hybrid_gray_code_maslov15_140494059207120 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2 { + x q0; + mcx_hybrid_gray_code_maslov15_140494059207120 q0,q1,q2; + x q0; +} + +gate prep_ancilla_0_statepreparation_rygate_5_mcx_0 q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2 { + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(-0.4205343352839653) q0; + prep_ancilla_0_statepreparation_rygate_5_mcx_0 q1,q2,q0; + ry(0.4205343352839653) q0; +} + +gate prep_ancilla_0_statepreparation q0,q1,q2 { + ry(0.27640107456771995) q2; + prep_ancilla_0_statepreparation_rygate_1 q1,q2; + prep_ancilla_0_statepreparation_rygate_2 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_3 q0,q1,q2; + prep_ancilla_0_statepreparation_rygate_4 q1,q2; + prep_ancilla_0_statepreparation_rygate_5 q0,q1,q2; +} + +gate main_prep_ancilla_0 q0,q1,q2 { + prep_ancilla_0_statepreparation q0,q1,q2; +} + +gate operate_iteration_0_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; + x q2; +} + +gate mcx q0,q1,q2,q3 { + h q3; + p(pi/8) q0; + p(pi/8) q1; + p(pi/8) q2; + p(pi/8) q3; + cx q0,q1; + p(-pi/8) q1; + cx q0,q1; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + p(pi/8) q2; + cx q1,q2; + p(-pi/8) q2; + cx q0,q2; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q1,q3; + p(pi/8) q3; + cx q2,q3; + p(-pi/8) q3; + cx q0,q3; + h q3; +} + +gate mcx_hybrid_gray_code_maslov15_140494058632272 q0,q1,q2,q3 { + mcx q0,q1,q2,q3; +} + +gate operate_iteration_0_igate_mcx_0 q0,q1,q2,q3 { + mcx_hybrid_gray_code_maslov15_140494058632272 q0,q1,q2,q3; +} + +gate ccircuit_26122 q0,q1 { +} + +gate operate_iteration_0_igate q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + ccircuit_26122 q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_0_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; + x q0; +} + +gate operate_iteration_0 q0,q1,q2,q3,q4 { + operate_iteration_0_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_0_igate q0,q1,q2,q3,q4; + operate_iteration_0_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_1_inplace_prepare_int_0 q0,q1,q2 { + x q1; + x q2; +} + +gate ccompose_expanded___10 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_1_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___10 q0,q1; +} + +gate operate_iteration_1_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_1_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_1_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q1; +} + +gate operate_iteration_1 q0,q1,q2,q3,q4 { + operate_iteration_1_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_1_compose q0,q1,q2,q3,q4; + operate_iteration_1_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_2_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q2; +} + +gate r1tof q0,q1,q2 { + h q2; + t q2; + cx q1,q2; + tdg q2; + cx q0,q2; + t q2; + cx q1,q2; + tdg q2; + h q2; +} + +gate mcx_hybrid_gray_code_maslov15_140494020567056 q0,q1,q2,q3,q4 { + r1tof q0,q1,q4; + ccx q4,q2,q3; + r1tof q0,q1,q4; +} + +gate operate_iteration_2_rzgate_mcx_1 q0,q1,q2,q3,q4 { + mcx_hybrid_gray_code_maslov15_140494020567056 q0,q1,q2,q3,q4; +} + +gate operate_iteration_2_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_2_inplace_prepare_int_1 q0,q1,q2 { + x q2; + x q0; +} + +gate operate_iteration_2 q0,q1,q2,q3,q4 { + operate_iteration_2_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_2_rzgate q0,q1,q2,q3,q4; + operate_iteration_2_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_3_inplace_prepare_int_0 q0,q1,q2 { + x q2; +} + +gate ccompose_expanded___21 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_3_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___21 q0,q1; +} + +gate operate_iteration_3_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q5,q4; + operate_iteration_3_compose_compose_aux_control_name q5,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_3_inplace_prepare_int_1 q0,q1,q2 { + x q2; +} + +gate operate_iteration_3 q0,q1,q2,q3,q4,q5 { + operate_iteration_3_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_3_compose q0,q1,q2,q3,q4,q5; + operate_iteration_3_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_4_inplace_prepare_int_0 q0,q1,q2 { + x q0; + x q1; +} + +gate operate_iteration_4_igate q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; + ccircuit_26122 q5,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_4_inplace_prepare_int_1 q0,q1,q2 { + x q1; + x q0; +} + +gate operate_iteration_4 q0,q1,q2,q3,q4,q5 { + operate_iteration_4_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_4_igate q0,q1,q2,q3,q4,q5; + operate_iteration_4_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_5_inplace_prepare_int_0 q0,q1,q2 { + x q1; +} + +gate ccompose_expanded___32 q0,q1 { + cx q0,q1; + cz q0,q1; +} + +gate operate_iteration_5_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___32 q0,q1; +} + +gate operate_iteration_5_compose q0,q1,q2,q3,q4,q5 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q5; + operate_iteration_5_compose_compose_aux_control_name q5,q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q5,q4; +} + +gate operate_iteration_5_inplace_prepare_int_1 q0,q1,q2 { + x q1; +} + +gate operate_iteration_5 q0,q1,q2,q3,q4,q5 { + operate_iteration_5_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_5_compose q0,q1,q2,q3,q4,q5; + operate_iteration_5_inplace_prepare_int_1 q1,q2,q3; +} + +gate operate_iteration_6_inplace_prepare_int_0 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6_rzgate q0,q1,q2,q3,q4 { + rz(-pi) q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q0; + rz(-pi) q0; + operate_iteration_2_rzgate_mcx_1 q1,q2,q3,q0,q4; + rz(2*pi) q0; +} + +gate operate_iteration_6_inplace_prepare_int_1 q0,q1,q2 { + x q0; +} + +gate operate_iteration_6 q0,q1,q2,q3,q4 { + operate_iteration_6_inplace_prepare_int_0 q1,q2,q3; + operate_iteration_6_rzgate q0,q1,q2,q3,q4; + operate_iteration_6_inplace_prepare_int_1 q1,q2,q3; +} + +gate ccompose_expanded___39 q0,q1 { + cz q0,q1; + cx q0,q1; +} + +gate operate_iteration_7_compose_compose_aux_control_name q0,q1 { + ccompose_expanded___39 q0,q1; +} + +gate operate_iteration_7_compose q0,q1,q2,q3,q4 { + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; + operate_iteration_7_compose_compose_aux_control_name q4,q0; + operate_iteration_0_igate_mcx_0 q1,q2,q3,q4; +} + +gate operate_iteration_7 q0,q1,q2,q3,q4 { + operate_iteration_7_compose q0,q1,q2,q3,q4; +} + +gate main_operate q0,q1,q2,q3,q4,q5 { + h q0; + operate_iteration_0 q0,q1,q2,q3,q4; + operate_iteration_1 q0,q1,q2,q3,q4; + operate_iteration_2 q0,q1,q2,q3,q4; + operate_iteration_3 q0,q1,q2,q3,q4,q5; + operate_iteration_4 q0,q1,q2,q3,q4,q5; + operate_iteration_5 q0,q1,q2,q3,q4,q5; + operate_iteration_6 q0,q1,q2,q3,q5; + operate_iteration_7 q0,q1,q2,q3,q5; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o2 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2 { + ry(-0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_0_qinverse q1,q2,q0; + ry(0.4205343352839653) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q0,q1 { + ry(-0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_0_qinverse q1,q0; + ry(0.1763238388157515) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o1 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_0_qinverse q1,q2,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate mcx_hybrid_gray_code_maslov15_140493815533456 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140493815531920_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140493815533456 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140493815531920_o0 q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_140493815531088 q0,q1,q2 { + ccx q0,q1,q2; +} + +gate mcx_hybrid_gray_code_maslov15_o0_140493815538512_o0 q0,q1,q2 { + x q0; + x q1; + mcx_hybrid_gray_code_maslov15_140493815531088 q0,q1,q2; + x q0; + x q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q0,q1,q2 { + mcx_hybrid_gray_code_maslov15_o0_140493815538512_o0 q0,q1,q2; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2 { + ry(-pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_0_qinverse q1,q2,q0; + ry(pi/4) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse_mcx_1_qinverse q1,q2,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q0,q1 { + mcx_hybrid_gray_code_maslov15_o0 q0,q1; +} + +gate prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q0,q1 { + ry(-pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_0_qinverse q1,q0; + ry(pi/6) q0; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse_mcx_1_qinverse q1,q0; +} + +gate prep_ancilla_1_statepreparation_qinverse q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse_rygate_0_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_1_qinverse q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_2_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_3_qinverse q0,q1,q2; + prep_ancilla_1_statepreparation_qinverse_rygate_4_qinverse q1,q2; + ry(-0.27640107456771995) q2; +} + +gate main_prep_ancilla_1 q0,q1,q2 { + prep_ancilla_1_statepreparation_qinverse q0,q1,q2; +} + +qreg q[6]; +main_identity_0 q[0]; +main_identity_1 q[1],q[2],q[3]; +main_prep_ancilla_0 q[1],q[2],q[3]; +main_operate q[0],q[1],q[2],q[3],q[4],q[5]; +id q[0]; +main_prep_ancilla_1 q[1],q[2],q[3]; diff --git a/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qmod b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qmod new file mode 100644 index 0000000..9fecd2f --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.qmod @@ -0,0 +1,53 @@ +qfunc prep_ancilla(ancilla_reg: qnum, bound: real) { + inplace_prepare_state([ + 0.3679, + 0.3679, + 0.1839, + 0.0613, + 0.0153, + 0.0031, + 0.0005, + 0.0001 + ], bound, ancilla_reg); +} + +qfunc compose(gate1: qfunc (qbit), gate2: qfunc (qbit), q: qbit) { + gate1(q); + gate2(q); +} + +qfunc operate(ancilla_reg: qnum, work_q: qbit, k: int) { + H(work_q); + repeat (index: k + 1) { + control (ancilla_reg == index) { + if ((index % 4) == 0) { + I(work_q); + } else { + if ((index % 4) == 1) { + compose(X, Z, work_q); + } else { + if ((index % 4) == 2) { + RZ(6.2832, work_q); + } else { + compose(Z, X, work_q); + } + } + } + } + } +} + +qfunc main(output work_q: qbit, output ancilla_reg: qnum) { + allocate(1, work_q); + allocate(3.0, ancilla_reg); + within { + prep_ancilla(ancilla_reg, 0.001); + } apply { + operate(ancilla_reg, work_q, 7); + } + if (False) { + H(work_q); + } else { + I(work_q); + } +} diff --git a/models/k_optimization/k7_bound0.001_t1.0_noConstraints.synthesis_options.json b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.synthesis_options.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/models/k_optimization/k7_bound0.001_t1.0_noConstraints.synthesis_options.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 023335d0b04f62b61c08c838e301f580a05bc278 Mon Sep 17 00:00:00 2001 From: Tony Niu <1801938676@qq.com> Date: Fri, 27 Sep 2024 21:51:38 -0700 Subject: [PATCH 3/5] Updated .ipynb to make it prettier --- Classiq_open-challenge_ODE.ipynb | 584 ++++++++++++++++++------------- 1 file changed, 346 insertions(+), 238 deletions(-) diff --git a/Classiq_open-challenge_ODE.ipynb b/Classiq_open-challenge_ODE.ipynb index ab63757..62718fa 100644 --- a/Classiq_open-challenge_ODE.ipynb +++ b/Classiq_open-challenge_ODE.ipynb @@ -2,10 +2,14 @@ "cells": [ { "cell_type": "markdown", - "id": "fcd550c9", + "id": "837f9880-d63f-4ac8-b373-207b8e488e51", "metadata": {}, "source": [ - "# Classiq Q-SITE 2024 Open Challenge - Team QubitSquad" + "
\n", + " Q-Site Hackathon 2024
\n", + " Classiq Open Challenge
\n", + " Team QubitSquad\n", + "
" ] }, { @@ -13,7 +17,7 @@ "id": "5cd0a4d1", "metadata": {}, "source": [ - "## Introduction" + "## **1. Introduction**" ] }, { @@ -21,15 +25,27 @@ "id": "62af4d5e", "metadata": {}, "source": [ - "The Classiq Q-SITE open challenge asks us to implement a quantum algorithm in the paper by Tao Xin, et al.[1] in 2020 to solve the linear differential equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$, with the condition $x(0)=1$, $\\frac{dx}{dt}(0)=1$. After the equation is solved, we are asked to: 1) Evaluate the kinetic energy $E_k=\\frac{1}{2}\\left(\\frac{dx}{dt}\\right)^2$ and the potential energy $E_p=\\frac{1}{2}x^2$ as a function of $t$, assuming both unit mass and spring constant; 2) Analyze how $E_k$ and $E_p$ vary when different values for the bounds are used in the algorithm; 3) Analyze the gate count when optimizing the circuit width and depth." - ] - }, - { - "cell_type": "markdown", - "id": "cb52b688", - "metadata": {}, - "source": [ - "Therefore, let's start with the original algorithm suggested in the paper and see how it can be adapted to solve this challenge." + "The Classiq Q-SITE Open Challenge requires the implementation of a quantum algorithm, as described in the **2020 paper** by **Tao Xin et al.**[1], for solving the linear differential equations.\n", + "\n", + "$$\n", + "\\left\\{\n", + "\\begin{aligned}\n", + " \\frac{d^2x(t)}{dt^2} + x(t) &= 0 \\\\\n", + " x(0) &= 1 \\\\\n", + " \\frac{dx}{dt}(0) &= 1\n", + "\\end{aligned} \\hspace{9cm} (1)\n", + "\\right.\n", + "$$\n", + "\n", + "Upon solving the equation, the following tasks are required:\n", + "\n", + "1. Compute the kinetic energy, $\\displaystyle E_k = \\frac{1}{2} \\left( \\frac{dx}{dt} \\right)^2$, and the potential energy, $\\displaystyle E_p = \\frac{1}{2} x^2$, as functions of time $t$, assuming unit mass and spring constant.\n", + " \n", + "2. Investigate the behavior of $E_k$ and $E_p$ under varying boundary conditions within the algorithm.\n", + "\n", + "3. Assess the gate count while optimizing the circuit in terms of width and depth.\n", + "\n", + "We begin by examining the original algorithm proposed in the paper and explore how it can be adapted to address the current challenge." ] }, { @@ -37,7 +53,7 @@ "id": "18502e3a", "metadata": {}, "source": [ - "## Theory" + "## **2. Theory**" ] }, { @@ -45,7 +61,7 @@ "id": "a7fae9cd", "metadata": {}, "source": [ - "### The original quantum algorithm" + "### **2.1. The original quantum algorithm**" ] }, { @@ -53,16 +69,46 @@ "id": "17350eff", "metadata": {}, "source": [ - "The paper focuses on solving the linear differential equation (LDE) $d\\mathbf{x}(t)/dt=\\mathcal{M}\\mathbf{x}(t)+\\mathbf{b}$, where $\\mathbf{x}(t)$ and $\\mathbf{b}$ are $N$-dimensional vectors and $\\mathcal{M}$ is an arbitrary $N\\times N$ matrix. One can easily check that the analytical solution can be written as $\\mathbf{x}(t) = e^{\\mathcal{M}t}\\mathbf{x}(0) + (e^{\\mathcal{M}t} - I)\\mathcal{M}^{-1}\\mathbf{b}$, where matrix exponentials are defined by the Taylor expansion of an exponent: $e^{\\mathcal{M}t}\\equiv \\sum_{k=0}^\\infty \\frac{(\\mathcal{M}t)^k}{k!}$. While matrix inversions and matrix multiplications scale at least as $O(N^3)$ classically, a quantum algorithm is capable of achieving an $O(\\log N)$ speedup in time complexity for this problem. The solution $\\mathbf{x}(t)$ can first be approximated as a Taylor expansion:\n", + "The paper focuses on solving the linear differential equation (LDE) \n", + "\n", + "$$\\displaystyle\\frac{d\\mathbf{x}(t)}{dt} = \\mathcal{M}\\mathbf{x}(t)+\\mathbf{b}, \\hspace{8.8cm} (2)$$\n", + "\n", + "where $\\mathbf{x}(t)$ and $\\mathbf{b}$ are $N$-dimensional vectors and $\\mathcal{M}$ is an arbitrary $N\\times N$ matrix. One can easily check that the analytical solution can be written as \n", + "\n", + "$$\\displaystyle \\mathbf{x}(t) = e^{\\mathcal{M}t}\\mathbf{x}(0) + (e^{\\mathcal{M}t} - I)\\mathcal{M}^{-1}\\mathbf{b}, \\hspace{6.3cm} (3)$$\n", + "\n", + "where matrix exponentials are defined by the Taylor expansion of an exponent given by\n", + "\n", + "$$\\displaystyle e^{\\mathcal{M}t}\\equiv \\sum_{k=0}^\\infty \\frac{(\\mathcal{M}t)^k}{k!}. \\hspace{9.2cm} (4)$$\n", + "\n", + "While matrix inversions and matrix multiplications scale at least as $O(N^3)$ classically, a quantum algorithm is capable of achieving an $O(\\log N)$ speedup in time complexity for this problem. The solution $\\mathbf{x}(t)$ can first be approximated as a Taylor expansion:\n", + "\n", "$$\n", "\\begin{align}\n", - " \\mathbf{x}(t) \\approx \\sum_{m=0}^k\\frac{(\\mathcal{M}t)^m}{m!}\\mathbf{x}(0) + \\sum_{n=1}^k \\frac{(\\mathcal{M}t)^{n-1}t}{n!}\\mathbf{b} \\hspace{5cm} (1)\n", - "\\end{align}\n", + " \\mathbf{x}(t) \\approx \\sum_{m=0}^k\\frac{(\\mathcal{M}t)^m}{m!}\\mathbf{x}(0) + \\sum_{n=1}^k \\frac{(\\mathcal{M}t)^{n-1}t}{n!}\\mathbf{b} \n", + "\\end{align} \\hspace{5.1cm} (5)\n", "$$\n", - "where the integer $k$ gives the approximation order ($k\\rightarrow\\infty$ for perfect solution). We can encode the vectors $\\mathbf{x}(0)$ and $\\mathbf{b}$ as normarlized quantum states: $|x(0)\\rangle = \\sum_jx_j(0)/||x(0)||\\cdot|j\\rangle$, $|b\\rangle = \\sum_jb_j/||b||\\cdot|j\\rangle$, and represent the matrix $\\mathcal{M}$ as a quantum operator $A=\\sum_{i, j}\\mathcal{M}_{ij}/||\\mathcal{M}||\\cdot|i\\rangle\\langle j|$. The $k$-th order approximation thereby evaluates to\n", + "\n", + "where the integer $k$ gives the approximation order ($k\\rightarrow\\infty$ for perfect solution). We can encode the vectors $\\mathbf{x}(0)$ and $\\mathbf{b}$ as normarlized quantum states:\n", + "\n", + "$$\n", + "\\left\\{\n", + "\\begin{aligned}\n", + "\\displaystyle |x(0)\\rangle &= \\frac{1}{||x(0)||} \\sum_jx_j(0) \\cdot|j\\rangle,\\\\ \n", + "\\displaystyle |b\\rangle &= \\frac{1}{||b||} \\sum_jb_j \\cdot |j\\rangle, \n", + "\\end{aligned} \\hspace{6.7cm} (6)\n", + "\\right.\n", + "$$\n", + "\n", + "and represent the matrix $\\mathcal{M}$ as a quantum operator \n", + "\n", + "$$\\displaystyle A = \\frac{1}{||\\mathcal{M}||} \\sum_{i, j}\\mathcal{M}_{ij} \\cdot |i\\rangle\\langle j|. \\hspace{7.7cm} (7)$$\n", + "\n", + "The $k$-th order approximation thereby evaluates to\n", + "\n", "$$\n", "\\begin{align}\n", - " \\mathbf{x}(t)\\approx \\sum_{m=0}^k\\frac{||x(0)||(||\\mathcal{M}||At)^m}{m!}|x(0)\\rangle + \\sum_{n=1}^k\\frac{||b||(||\\mathcal{M}||A)^{n-1}t^n}{n!}|b\\rangle \\hspace{1cm} (2)\n", + " \\mathbf{x}(t)\\approx \\sum_{m=0}^k\\frac{||x(0)||(||\\mathcal{M}||At)^m}{m!}|x(0)\\rangle + \\sum_{n=1}^k\\frac{||b||(||\\mathcal{M}||A)^{n-1}t^n}{n!}|b\\rangle \\hspace{1.2cm} (8)\n", "\\end{align}\n", "$$" ] @@ -72,7 +118,7 @@ "id": "6f487542", "metadata": {}, "source": [ - "Furthermore, if **$A$ is unitary** and so are its powers, we can write $U_m\\equiv A^m, U_n\\equiv A^n, C_m\\equiv||x(0)||(||\\mathcal{M}||t)^m/m!, D_n\\equiv||b||(||\\mathcal{M}||t)^{n-1}t/n!$ and write Equation (2) as" + "Furthermore, if **$A$ is unitary** and so are its powers, we can write $U_m\\equiv A^m$, $U_n\\equiv A^n$, $\\displaystyle C_m \\equiv \\frac{1}{m!} ||x(0)||(||\\mathcal{M}||t)^m$, $\\displaystyle D_n \\equiv \\frac{1}{n!} ||b||(||\\mathcal{M}||t)^{n-1}t$ and write **Equation (8)** as follows:" ] }, { @@ -84,7 +130,7 @@ "\\begin{align}\n", " |x(t)\\rangle \\approx\\frac{1}{\\mathcal{N}^2}\\left(\\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{3cm} (3)\n", + "\\end{align} \\hspace{3.6cm} (9)\n", "$$" ] }, @@ -93,7 +139,7 @@ "id": "b52e8c3a", "metadata": {}, "source": [ - "where $\\mathcal{N}^2=\\mathcal{C}^2 + \\mathcal{D}^2, \\mathcal{C}\\equiv\\sqrt{\\sum_mC_m}, \\mathcal{D}\\equiv\\sqrt{\\sum_nD_n}$ is a normalization factor. The $j$th element of the solution vector $\\mathbf{x}(t)$ is then $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$. The quantum circuit that extracts $x_j(t)$ is drawn below." + "where $\\mathcal{N}^2=\\mathcal{C}^2 + \\mathcal{D}^2, \\mathcal{C}\\equiv\\sqrt{\\sum_mC_m}, \\mathcal{D}\\equiv\\sqrt{\\sum_nD_n}$ are normalization factors. The $j$-th element of the solution vector $\\mathbf{x}(t)$ is then $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$. The quantum circuit that extracts $x_j(t)$ is drawn below." ] }, { @@ -109,7 +155,13 @@ "id": "1d64b140", "metadata": {}, "source": [ - "Vertically, this circuit is made up of three parts: 1) the first ancilla register of one qubit at the top, 2) the second ancilla register of $T=\\log_2(k+1)$ qubits in the middle, and 3) $\\log_2N$ work qubits for state encoding at the bottom. Horizontally, the circuit comprises of four parts: encoding, entangling, decoding, and measurement." + "The circuit is organized vertically into three components:\n", + "\n", + "1. The first ancilla register, consisting of one qubit, positioned at the top,\n", + "2. The second ancilla register, composed of $T = \\log_2(k+1)$ qubits, located in the middle,\n", + "3. The work register, containing $\\log_2 N$ qubits for state encoding, positioned at the bottom.\n", + "\n", + "Horizontally, the circuit is divided into four parts: encoding, entangling, decoding, and measurement." ] }, { @@ -117,7 +169,7 @@ "id": "56e7af18", "metadata": {}, "source": [ - "#### Encoding" + "#### **Encoding**" ] }, { @@ -128,7 +180,7 @@ "Starting off from the initial state $|\\psi_0\\rangle=|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes|\\phi\\rangle$, one first applies a gate\n", "$$\n", "\\begin{align}\n", - " V=\\frac{1}{\\mathcal{N}}\\begin{pmatrix}\\mathcal{C} & \\mathcal{D} \\\\ \\mathcal{D} & -\\mathcal{C}\\end{pmatrix} \\hspace{7cm} (4)\n", + " V=\\frac{1}{\\mathcal{N}}\\begin{pmatrix}\\mathcal{C} & \\mathcal{D} \\\\ \\mathcal{D} & -\\mathcal{C}\\end{pmatrix} \\hspace{9.2cm} (10)\n", "\\end{align}\n", "$$" ] @@ -138,7 +190,7 @@ "id": "08461902", "metadata": {}, "source": [ - "on the top ancilla qubit to convert $|0\\rangle\\rightarrow\\frac{1}{\\mathcal{N}}(\\mathcal{C}|0\\rangle + \\mathcal{D}|1\\rangle)$ and generate separate subspaces for $|x(0)\\rangle$ and $|b\\rangle$. Then, controlled by the state of the top ancilla qubit, one applies $V_{S1}, U_{x}$ for $|0\\rangle$ or $V_{S2}, U_b$ for $|1\\rangle$, where $U_x|\\phi\\rangle = |x(0)\\rangle, U_b|\\phi\\rangle = |b\\rangle$, and the first columns of $V_{S1}, V_{S2}$ are" + "on the top ancilla qubit to convert $\\displaystyle |0\\rangle\\rightarrow\\frac{1}{\\mathcal{N}}(\\mathcal{C}|0\\rangle + \\mathcal{D}|1\\rangle)$ and generate separate subspaces for $|x(0)\\rangle$ and $|b\\rangle$. Then, controlled by the state of the top ancilla qubit, one applies $V_{S1}, U_{x}$ for $|0\\rangle$ or $V_{S2}, U_b$ for $|1\\rangle$, where $U_x|\\phi\\rangle = |x(0)\\rangle, U_b|\\phi\\rangle = |b\\rangle$, and the first columns of $V_{S1}, V_{S2}$ are" ] }, { @@ -147,11 +199,12 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", - " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}[\\sqrt{C_0}, \\sqrt{C_1}, ..., \\sqrt{C_{k-1}}, \\sqrt{C_k}]\n", - " \\\\\n", + "\\left\\{\n", + "\\begin{aligned}\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}[\\sqrt{C_0}, \\sqrt{C_1}, ..., \\sqrt{C_{k-1}}, \\sqrt{C_k}]\\\\\n", " V_{S2}(:, 2) &= \\frac{1}{\\mathcal{D}}[\\sqrt{D_1}, \\sqrt{D_2}, ..., \\sqrt{D_k}, 0]\n", - "\\end{align} \\hspace{3cm} (5)\n", + "\\end{aligned} \\hspace{3.6cm} (11)\n", + "\\right.\n", "$$" ] }, @@ -173,7 +226,7 @@ " |\\psi_1\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{1cm} (6)\n", + "\\end{align} \\hspace{1.8cm} (12)\n", "$$" ] }, @@ -182,7 +235,7 @@ "id": "a1898564", "metadata": {}, "source": [ - "#### Entangling" + "#### **Entangling**" ] }, { @@ -203,7 +256,7 @@ " |\\psi_2\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle U_m|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle U_{n-1}|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{1cm} (7)\n", + "\\end{align} \\hspace{3.2cm} (13)\n", "$$" ] }, @@ -212,7 +265,7 @@ "id": "19f830cf", "metadata": {}, "source": [ - "#### Decoding" + "#### **Decoding**" ] }, { @@ -233,7 +286,7 @@ " |\\psi_3\\rangle = \\frac{1}{\\mathcal{N}^2}|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes\\left(\n", " \\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", " \\right) + \\text{other subspaces}\n", - "\\end{align} \\hspace{3mm} (8)\n", + "\\end{align} \\hspace{10mm} (14)\n", "$$" ] }, @@ -242,7 +295,7 @@ "id": "99106393", "metadata": {}, "source": [ - "#### Measurement" + "#### **Measurement**" ] }, { @@ -250,7 +303,7 @@ "id": "a7897697", "metadata": {}, "source": [ - "Finally, we measure and focus only on the subspace where all ancilla qubits are in state $|0\\rangle$. The 'other subspaces' part in Equation (8) then goes away, and the work qubits are in the solution state $|x(t)\\rangle$ given by Equation (3), and $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$ can be extracted." + "Finally, we measure and focus only on the subspace where all ancilla qubits are in state $|0\\rangle$. The 'other subspaces' part in **Equation (14)** does not matter, and the work qubits are in the solution state $|x(t)\\rangle$ given by **Equation (9)**, and $x_j(t) = \\mathcal{N}^2\\langle j|x(t)\\rangle$ can be extracted." ] }, { @@ -258,7 +311,7 @@ "id": "ebdf7a39", "metadata": {}, "source": [ - "### Adapting to this challenge" + "### **2.2. Adapting to this challenge**" ] }, { @@ -266,7 +319,7 @@ "id": "e338845d", "metadata": {}, "source": [ - "To adapt this algorithm to the Classiq challenge, we need to translate the equation $\\frac{d^2x(t)}{dt^2} + x(t) = 0$ into the paper's language. Although it might seem that we are dealing with a second-order differential equation rather than first order as shown in the paper, we can transform this second-order equation into a first-order vector equation by defining the state vector as $\\mathbf{x}(t) = (x(t), dx(t)/dt)$, and this implies" + "To adapt this algorithm to the Classiq challenge, we need to translate the equation $\\displaystyle \\frac{d^2x(t)}{dt^2} + x(t) = 0$ into the paper's language. Although it might seem that we are dealing with a second-order differential equation rather than first order as shown in the paper, we can transform this second-order equation into a first-order vector equation by defining the state vector as $\\displaystyle \\mathbf{x}(t) = \\left( x(t), \\frac{dx(t)}{dt} \\right)$, and this implies" ] }, { @@ -276,26 +329,30 @@ "source": [ "$$\n", "\\begin{align}\n", - " \\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}&= \n", + " \\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix} = \n", " \\begin{pmatrix}\\frac{dx}{dt} \\\\ \\frac{d^2x}{dt^2}\\end{pmatrix}\n", - " \\\\\n", - " &= \\begin{pmatrix}\\frac{dx}{dt} \\\\ -x\\end{pmatrix}\n", - " \\\\\n", - " &=\n", - " \\begin{pmatrix}\n", - " 0 & 1 \\\\ -1 & 0\n", - " \\end{pmatrix}\n", - " \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix}\n", - "\\end{align} \\hspace{4cm} (9)\n", + " = \\begin{pmatrix}\\frac{dx}{dt} \\\\ -x\\end{pmatrix}, \\hspace{10.3cm} (15)\n", + "\\end{align}\n", "$$" ] }, { "cell_type": "markdown", - "id": "7ff3a861", + "id": "0a01d65d-a698-473f-a070-f19ae217dfbf", "metadata": {}, "source": [ - "which is of the form used in the paper, with $\\mathcal{M} = \\begin{pmatrix} 0 & 1 \\\\ -1 & 0\\end{pmatrix}$ and $\\mathbf{b}=0$. The initial conditions $x(0)=1$, $\\frac{dx}{dt}(0)=1$ are then translated into $\\mathbf{x}(0) = (1, 1)$." + "which can be written as\n", + "\n", + "$$\n", + "\\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt} \\end{pmatrix} =\n", + "\\begin{pmatrix}\n", + " 0 & 1 \\\\ -1 & 0\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}x \\\\ \\frac{dx}{dt}\n", + "\\end{pmatrix}, \\hspace{9.8cm} (16) \n", + "$$\n", + "\n", + "which is of the form used in the paper, with $\\mathcal{M} = \\begin{pmatrix} 0 & 1 \\\\ -1 & 0\\end{pmatrix}$ and $\\mathbf{b}=0$. The initial conditions $x(0) = 1$, $\\displaystyle \\frac{dx(0)}{dt} = 1$ are then translated into $\\mathbf{x}(0) = (1, 1)$." ] }, { @@ -312,21 +369,18 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", - " U_m &= A^m=\\mathcal{M}^m\n", - " \\\\\n", - " C_m &= ||x(0)||(||\\mathcal{M}||t)^m/m! = \\sqrt{2}t^m/m!\n", - " \\\\\n", - " D_n &=0, \\mathcal{D}=0\n", - " \\\\\n", - " \\mathcal{N} &= \\mathcal{C} = \\sqrt{\\sum_{m=0}^k C_m}\n", - " \\\\\n", - " V &= \\begin{pmatrix}1 & 0\\\\0 & -1\\end{pmatrix}\n", - " \\\\\n", - " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}(1, \\sqrt{t}, \\sqrt{\\frac{t^2}{2!}}, \\sqrt{\\frac{t^3}{3!}}, ..., \\sqrt{\\frac{t^k}{k!}})\n", - " \\\\\n", - " |x(0)\\rangle &= \\frac{1}{\\sqrt{2}} (1, 1)\n", - "\\end{align} \\hspace{2cm} (10) \n", + "\\left\\{\n", + "\\begin{aligned}\n", + " \\mathcal{D} &= 0, \\\\\n", + " D_n &=0, \\\\\n", + " U_m &= A^m=\\mathcal{M}^m, \\\\\n", + " C_m &= ||x(0)||(||\\mathcal{M}||t)^m/m! = \\sqrt{2}t^m/m!, \\\\\n", + " \\mathcal{N} &= \\mathcal{C} = \\sqrt{\\sum_{m=0}^k C_m}, \\\\\n", + " V &= \\begin{pmatrix}1 & 0\\\\0 & -1\\end{pmatrix}, \\\\\n", + " |x(0)\\rangle &= \\frac{1}{\\sqrt{2}} (1, 1), \\\\\n", + " V_{S1}(:, 1) &= \\frac{1}{\\mathcal{C}}(1, \\sqrt{t}, \\sqrt{\\frac{t^2}{2!}}, \\sqrt{\\frac{t^3}{3!}}, ..., \\sqrt{\\frac{t^k}{k!}}),\n", + "\\end{aligned} \\hspace{7cm} (17) \n", + "\\right. \n", "$$" ] }, @@ -343,7 +397,7 @@ "id": "1088cf5e", "metadata": {}, "source": [ - "## Implementation" + "## **3. Implementation**" ] }, { @@ -351,12 +405,12 @@ "id": "7b51c3f4", "metadata": {}, "source": [ - "### Code structure" + "### **3.1. Code structure**" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, "id": "336886f3", "metadata": {}, "outputs": [], @@ -373,12 +427,12 @@ "id": "e0410740", "metadata": {}, "source": [ - "In Classiq SDK, instead of explicitly applying gates in the encoding stage, we can directly prepare the state of the $\\log_2 (k+1)$ ancilla register according to $V_{S1}$ in Equation (10)." + "In Classiq SDK, instead of explicitly applying gates in the encoding stage, we can directly prepare the state of the $\\log_2 (k+1)$ ancilla register according to $V_{S1}$ in **Equation (17)**." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "3d5b7339", "metadata": {}, "outputs": [], @@ -404,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "4d84afce", "metadata": {}, "outputs": [], @@ -439,12 +493,12 @@ "id": "9c4ac290", "metadata": {}, "source": [ - "Since the decoding part of the quantum circuit is just the inverse of the encoding part implemented by prep_ancilla, we can use a within_apply statement to do the whole operation." + "Since the decoding part of the quantum circuit is just the inverse of the encoding part implemented by ``prep_ancilla()``, we can use a ``within_apply`` statement to do the whole operation." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "70b4780d", "metadata": {}, "outputs": [], @@ -468,7 +522,7 @@ "id": "5da7c314", "metadata": {}, "source": [ - "However, there still is a problem with this algorithm: it cannot distinguish between positive and negative dx/dt values. This is because the probabilities we measure are not sensitive to the sign of amplitudes. To solve this, an extra option is added to the above main() function to apply a Hadamard gate to the work qubit before measurement to measure in x-basis. In this way, the difference in the |0> and |1> counts from a second round of measurement would give the relative signs between x(0) and dx/dt(0), although there is still an overall sign ambiguity due to the inability to detect global phase. This would be one drawback of this algorithm, and for now we have to rely on the knowledge that $x(t)>0$ for $0 0$ for $0 < t < 1$." ] }, { @@ -481,7 +535,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "27e97125", "metadata": {}, "outputs": [], @@ -511,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "bcefb798", "metadata": { "scrolled": true @@ -571,11 +625,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "eb0365cd", - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -583,16 +635,16 @@ "text": [ "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.384 and dx/dt(t)=-0.305 at t=1.\n" + "x(t)=1.385 and dx/dt(t)=-0.299 at t=1.\n" ] }, { "data": { "text/plain": [ - "[1.3843075398628262, -0.3047144219415329]" + "[1.384633102942848, -0.2990851269014466]" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -611,12 +663,12 @@ "id": "d0635c26", "metadata": {}, "source": [ - "The analytical solution for this problem is $x^*(t)=\\sin(t)+\\cos(t)$ and $\\frac{dx}{dt}(t)^*=\\cos(t)-\\sin(t)$, and they evaluate to $x^*(1)\\sim1.382$ and $\\frac{dx}{dt}(1)\\sim-0.301^*$ at $t=1$. The algorithm's approximations are therefore within ~1% of the exact values, and the algorithm gives the expected signs. Now let's try plotting the solution as a function of time." + "The analytical solution for this problem is $x^*(t)=\\sin(t)+\\cos(t)$ and $\\displaystyle\\frac{dx^*}{dt}(t)=\\cos(t)-\\sin(t)$, and they evaluate to $x^*(1)\\sim1.382$ and $\\displaystyle\\frac{dx^*}{dt}(1)\\sim-0.301$ at $t=1$. The algorithm's approximations are therefore within ~1% of the exact values, and the algorithm gives the expected signs. Now let's try plotting the solution as a function of time." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "4fae8d0c", "metadata": { "scrolled": true @@ -628,52 +680,52 @@ "text": [ "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "x(t)=1.001 and dx/dt(t)=0.999 at t=0.0.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", + "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "x(t)=1.179 and dx/dt(t)=0.780 at t=0.2.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.250 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "x(t)=1.250 and dx/dt(t)=0.660 at t=0.30000000000000004.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.310 and dx/dt(t)=0.531 at t=0.4.\n", + "x(t)=1.309 and dx/dt(t)=0.532 at t=0.4.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.358 and dx/dt(t)=0.399 at t=0.5.\n", + "x(t)=1.356 and dx/dt(t)=0.398 at t=0.5.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.390 and dx/dt(t)=0.260 at t=0.6000000000000001.\n", + "x(t)=1.390 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.408 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "x(t)=1.408 and dx/dt(t)=0.122 at t=0.7000000000000001.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.415 and dx/dt(t)=-0.021 at t=0.8.\n", + "x(t)=1.415 and dx/dt(t)=-0.023 at t=0.8.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.407 and dx/dt(t)=-0.165 at t=0.9.\n", + "x(t)=1.405 and dx/dt(t)=-0.162 at t=0.9.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.381 and dx/dt(t)=-0.299 at t=1.0.\n", + "x(t)=1.381 and dx/dt(t)=-0.302 at t=1.0.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.347 and dx/dt(t)=-0.436 at t=1.1.\n", + "x(t)=1.343 and dx/dt(t)=-0.436 at t=1.1.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.295 and dx/dt(t)=-0.574 at t=1.2000000000000002.\n", + "x(t)=1.295 and dx/dt(t)=-0.565 at t=1.2000000000000002.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.232 and dx/dt(t)=-0.701 at t=1.3.\n", + "x(t)=1.228 and dx/dt(t)=-0.697 at t=1.3.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.156 and dx/dt(t)=-0.820 at t=1.4000000000000001.\n", + "x(t)=1.154 and dx/dt(t)=-0.818 at t=1.4000000000000001.\n", "QMOD synthesized.\n", "QMOD_H synthesized.\n", - "x(t)=1.072 and dx/dt(t)=-0.930 at t=1.5.\n" + "x(t)=1.069 and dx/dt(t)=-0.920 at t=1.5.\n" ] } ], @@ -691,22 +743,18 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "37087d14", - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAHWCAYAAAClnYmGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACDlUlEQVR4nO3dd3gUVdsG8Ht2k930QnpICIR0ICShCYogRQREwe8VLFRBsBesqC/FAhbEiiAdFVFUQF4pghikl1QChADpgVRI77t7vj8CK0t6SLLZ5P5d1164M2dmnkli9s6ZM2ckIYQAERERkZ7I9F0AERERdWwMI0RERKRXDCNERESkVwwjREREpFcMI0RERKRXDCNERESkVwwjREREpFcMI0RERKRXDCNERESkVwwjRAbgmWeewciRIxvU9pFHHsHEiRNbuKLG27BhAyRJQlJSUpO2nz59Orp27dqsNTXXcdrD94dInxhGiNq4xMRErFmzBm+99ZZ22ZUrV7Bw4UJERUVVa//GG2/gt99+Q3R0dCtWaRj+7//+D2PGjGnUNiUlJVi4cCEOHDhQ43pD/v7Ud25ErYVhhKiN++KLL9CtWzfcc8892mVXrlzBokWLavywCw4ORt++ffHpp5+2YpVtX2VlJfbt24exY8c2aruSkhIsWrSo1g9sQ/7+1HduRK2FYYSoDausrMSmTZsa3a0/ceJEbN26FUVFRS1UmeE5dOgQCgsLGx1G6sLvD1HzYBghamWlpaXw8/ODn58fSktLtcuvXbsGFxcXDBo0CGq1GgBw+PBh5OTkYMSIEdp2Bw4cQL9+/QAAM2bMgCRJkCQJGzZs0LYZOXIkiouLsW/fvnrrWb9+PYYNGwZHR0colUoEBARgxYoV1dp17doV999/Pw4fPoz+/fvDxMQEnp6e+O6776q1PXv2LIYNGwZTU1O4ubnh/fffh0ajafDXaPv27ejZsydMTEzQs2dPbNu2rVqbBQsWQCaTYf/+/TrLZ8+eDYVCUe0yyM6dOxEQEKAzHqS+4yQlJcHBwQEAsGjRIu3XeuHChQBa/vvTs2dPnR6XGzQaDTp37oz//Oc/2mU//fQT+vTpA0tLS1hZWaFXr1744osvat13fedG1KoEEbW648ePC7lcLl5++WXtskceeUSYmpqKuLg47bL3339fSJIk8vPztcsyMjLEu+++KwCI2bNni++//158//33Ij4+XtumsrJSmJqaildeeaXeWvr16yemT58uPvvsM/HVV1+Je++9VwAQX3/9tU47Dw8P4evrK5ycnMRbb70lvv76axESEiIkSRJnzpzRtktPTxcODg7C1tZWLFy4UHzyySfC29tbBAYGCgAiMTGxznr+/PNPIZPJRM+ePcWyZcvE22+/LaytrUWPHj2Eh4eHtl1FRYUIDg4WHh4eoqCgQAghxJ49ewQA8d5771Xbr5+fn3j11VcbdZyioiKxYsUKAUBMmDBB+7WOjo4WQrT89+fdd98VMplMpKen6yz/559/BADxyy+/CCGE2Lt3rwAghg8fLpYvXy6WL18unnvuOfHwww/Xuu/6zo2oNTGMEOnJvHnzhEwmEwcPHhS//PKLACA+//xznTaTJ08WdnZ21bY9deqUACDWr19f6/59fHzE6NGj662jpKSk2rJRo0YJT09PnWUeHh4CgDh48KB2WVZWllAqlTofqi+99JIAIE6cOKHTztraukFhJCgoSLi4uIi8vDztshsftjeHESGEiImJEQqFQsyaNUvk5uaKzp07i759+4rKykqddgkJCQKACA0NbfRxsrOzBQCxYMGCarW29PcnLi5OABBfffWVzvJnnnlGWFhYaL93L774orCyshIqlarO/d2qrnMjak28TEOkJwsXLkSPHj0wbdo0PPPMMxgyZAheeOEFnTZXr16Fra1tk/Zva2uLnJycetuZmppq/zs/Px85OTkYMmQIEhISkJ+fr9M2ICAAgwcP1r53cHCAr68vEhIStMt27dqFO+64A/3799dp9/jjj9dbS3p6OqKiojBt2jRYW1trl48cORIBAQHV2vfs2ROLFi3CmjVrMGrUKOTk5GDjxo0wMjLSabdz505YW1vjrrvuatJxatPS3x8fHx8EBQXh559/1i5Tq9X49ddfMW7cOO33zsbGpsGX5YjaIoYRIj1RKBRYt24dEhMTUVhYiPXr10OSpGrthBBN2r8Qosb93erIkSMYMWIEzM3NYWNjAwcHB+1tqreGkS5dulTb3tbWFrm5udr3ycnJ8Pb2rtbO19e33lqSk5MBoFHbv/baa+jduzdOnjyJBQsW1Bgmdu7ciXvvvVcbUppynNq09Pdn0qRJOHLkCC5fvgygakxKVlYWJk2apG3zzDPPwMfHB6NHj4abmxueeOIJ7Nmzp0l1EekDwwiRHv35558AgLKyMly8eLHaejs7O50P+sbIzc2Fvb19nW3i4+MxfPhw5OTkYNmyZdi5cyf27duHl19+GQCqDTqVy+U17qepH8jNISEhQfu1i4mJqba+pKQEBw4caPT8Ig3R0t8foCqMCCHwyy+/AAC2bNkCa2tr3Hfffdo2jo6OiIqKwo4dO/DAAw8gNDQUo0ePxrRp05pUG1FrYxgh0pPTp0/j3XffxYwZMxAcHIxZs2ZV64nw8/NDbm5uteX1/UWtUqmQmpoKf3//Otv973//Q3l5OXbs2IE5c+ZgzJgxGDFihM6lm8by8PCoMVjFxcU1aFsADd5eo9Fg+vTpsLKywltvvYXNmzdj69atOm3+/vtvlJeXY/To0U06Tl1f65b+/gBAt27d0L9/f/z8889QqVTYunUrxo8fD6VSqdNOoVBg3Lhx+OabbxAfH485c+bgu+++w6VLl2rdd0N6ZohaA8MIkR5UVlZi+vTpcHV1xRdffIENGzYgMzNT2yNxw8CBAyGEQHh4uM5yc3NzAEBeXl6N+z937hzKysowaNCgOuu40dNxc89Gfn4+1q9f39hT0hozZgyOHz+OkydPapdlZ2dj06ZN9W7r4uKCoKAgbNy4UecDft++fTh37ly19suWLcPRo0exatUqvPfeexg0aBCefvppnbEYu3btQt++feHk5NSk45iZmQGo+Wvd0t+fGyZNmoTjx49j3bp1yMnJ0blEA1SNXbmZTCZDYGAgAKC8vLzW/dZ1bkStSm9DZ4k6sPnz5wtJksTff/+tXfb+++8LAGLnzp3aZeXl5cLOzk7MmzdPZ/uKigphY2MjfH19xZo1a8TmzZtFQkKCdv3SpUuFmZmZ9pbX2pw/f14oFArRq1cv8fXXX4sPP/xQdO/eXfTu3bvanS8eHh5i7Nix1fYxZMgQMWTIEO37K1euCDs7uybf2rt7926dW27feeedGm/tPXfunDAxMRHTp0/XLrtw4YIwMzPTuaXVw8NDLFy4sMnHEUKIgIAA4ezsLJYvXy42b94sYmJihBAt//25ITU1VUiSJCwtLUWnTp1ERUWFzvrx48eLu+++WyxcuFCsWbNG/Pe//xU2NjYiKChIqNXqOvdd27kRtSaGEaJWFh4eLoyMjMTzzz+vs1ylUol+/foJV1dXkZubq13+wgsvCC8vr2r7+f3330VAQIAwMjKqdhvpgAEDxOTJkxtUz44dO0RgYKAwMTERXbt2FR999JFYt25dk8OIEEKcPn1aDBkyRJiYmIjOnTuL9957T6xdu7ZBYUQIIX777Tfh7+8vlEqlCAgIEFu3bhXTpk3ThoQbXys3NzedW3OFEOKLL74QAMTPP/8szpw5IwCIkydPNuk4Nxw9elT06dNHKBSKarfCtvT354Y777xTABCzZs2qtu7XX38V9957r3B0dBQKhUJ06dJFzJkzp9r8JDWp69yIWoskhB5HnhFRvRISEuDn54fdu3dj+PDh9baPiopCSEgIIiIiEBQU1PIFtmEff/wxli1bhvT09BYbH8HvD9HtYxghMgBPP/00Ll261KB5JB555BFoNBps2bKlFSpr27Zs2QK1Wo1HH320RY/D7w/R7WEYISIiIr3i3TRERESkVwwjREREpFcMI0RERKRXDCNERESkV0b1N+nYNBoNrly5AktLS06dTERE1AhCCBQWFsLV1RUyWe39Hwwj9bhy5Qrc3d31XQYREZHBSk1NhZubW63rDSqMHDx4EJ988gnCw8ORnp6Obdu2Yfz48bW2P3DgAO65555qy9PT0+Hs7NygY1paWgKo+kJaWVk1qW4iIqKOqKCgAO7u7trP0toYVBgpLi5G79698cQTT+Chhx5q8HZxcXE6QcLR0bHB2964NGNlZcUwQkRE1AT1DXMwqDAyevRonceAN5SjoyNsbGwa1La8vFznKZcFBQWNPh4RERE1XIe4myYoKAguLi4YOXIkjhw5UmfbJUuWwNraWvvieBEiIqKW1a7DiIuLC1auXInffvsNv/32G9zd3TF06FBERETUus28efOQn5+vfaWmprZixURERB2PQV2maSxfX1/4+vpq3w8aNAjx8fH47LPP8P3339e4jVKphFKpbK0SiYiIOrx23TNSk/79++PSpUv6LoOIiIiu63BhJCoqCi4uLvoug4iIiK4zqMs0RUVFOr0aiYmJiIqKQqdOndClSxfMmzcPly9fxnfffQcA+Pzzz9GtWzf06NEDZWVlWLNmDf7++2/s3btXX6dAREREtzCoMBIWFqYzidncuXMBANOmTcOGDRuQnp6OlJQU7fqKigq88soruHz5MszMzBAYGIi//vqrxonQiIiISD8kIYTQdxFtWUFBAaytrZGfn89Jz4iIiBqhoZ+hHW7MCBEREbUt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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -724,6 +772,7 @@ "plt.plot(t_vals, x_t_simulation, 'r.', label=\"x(t) simulated\")\n", "plt.plot(t_vals, dx_dt_simulation, 'b.', label=\"dx/dt(t) simulated\")\n", "plt.legend()\n", + "plt.savefig('position-velocity-vs-time.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, @@ -732,7 +781,7 @@ "id": "39d752e1", "metadata": {}, "source": [ - "So with $k=31$ and bound=0.001 the solution returned by the algorithm agrees very well with prediction. Let's now turn to how less strict bounds are going to affect the accuracy of the algorithm by looking at the time-dependence of kinetic and potential energy." + "So with $k=31$ and bound=0.001 the solution returned by the algorithm agrees very well with prediction. Let's now see how less strict bounds are going to affect the accuracy of the algorithm by looking at the time-dependence of kinetic and potential energy." ] }, { @@ -740,12 +789,12 @@ "id": "4a451eab", "metadata": {}, "source": [ - "### Bound optimization" + "### **3.2. Bound optimization**" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 10, "id": "9512349a", "metadata": { "scrolled": true @@ -757,94 +806,94 @@ "text": [ "Studying bound=0.001...\n", "QMOD synthesized.\n", - "x(t)=0.999 and dx/dt(t)=1.001 at t=0.0.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", "QMOD synthesized.\n", - "x(t)=1.094 and dx/dt(t)=0.897 at t=0.1.\n", + "x(t)=1.096 and dx/dt(t)=0.894 at t=0.1.\n", "QMOD synthesized.\n", - "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "x(t)=1.178 and dx/dt(t)=0.783 at t=0.2.\n", "QMOD synthesized.\n", - "x(t)=1.251 and dx/dt(t)=0.661 at t=0.30000000000000004.\n", + "x(t)=1.251 and dx/dt(t)=0.660 at t=0.30000000000000004.\n", "QMOD synthesized.\n", - "x(t)=1.311 and dx/dt(t)=0.532 at t=0.4.\n", + "x(t)=1.310 and dx/dt(t)=0.532 at t=0.4.\n", "QMOD synthesized.\n", - "x(t)=1.357 and dx/dt(t)=0.399 at t=0.5.\n", + "x(t)=1.357 and dx/dt(t)=0.401 at t=0.5.\n", "QMOD synthesized.\n", - "x(t)=1.390 and dx/dt(t)=0.261 at t=0.6000000000000001.\n", + "x(t)=1.390 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.411 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "x(t)=1.409 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.414 and dx/dt(t)=0.020 at t=0.8.\n", + "x(t)=1.414 and dx/dt(t)=0.022 at t=0.8.\n", "QMOD synthesized.\n", - "x(t)=1.405 and dx/dt(t)=0.161 at t=0.9.\n", + "x(t)=1.403 and dx/dt(t)=0.163 at t=0.9.\n", "QMOD synthesized.\n", - "x(t)=1.382 and dx/dt(t)=0.302 at t=1.0.\n", + "x(t)=1.381 and dx/dt(t)=0.302 at t=1.0.\n", "Studying bound=0.010...\n", "QMOD synthesized.\n", "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", "QMOD synthesized.\n", - "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", + "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", "QMOD synthesized.\n", - "x(t)=1.179 and dx/dt(t)=0.778 at t=0.2.\n", + "x(t)=1.180 and dx/dt(t)=0.778 at t=0.2.\n", "QMOD synthesized.\n", - "x(t)=1.252 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "x(t)=1.250 and dx/dt(t)=0.654 at t=0.30000000000000004.\n", "QMOD synthesized.\n", - "x(t)=1.310 and dx/dt(t)=0.530 at t=0.4.\n", + "x(t)=1.311 and dx/dt(t)=0.533 at t=0.4.\n", "QMOD synthesized.\n", - "x(t)=1.358 and dx/dt(t)=0.398 at t=0.5.\n", + "x(t)=1.359 and dx/dt(t)=0.398 at t=0.5.\n", "QMOD synthesized.\n", - "x(t)=1.389 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", + "x(t)=1.390 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.409 and dx/dt(t)=0.125 at t=0.7000000000000001.\n", + "x(t)=1.408 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.415 and dx/dt(t)=0.014 at t=0.8.\n", + "x(t)=1.415 and dx/dt(t)=0.013 at t=0.8.\n", "QMOD synthesized.\n", - "x(t)=1.407 and dx/dt(t)=0.148 at t=0.9.\n", + "x(t)=1.404 and dx/dt(t)=0.155 at t=0.9.\n", "QMOD synthesized.\n", "x(t)=1.387 and dx/dt(t)=0.280 at t=1.0.\n", "Studying bound=0.050...\n", "QMOD synthesized.\n", - "x(t)=1.001 and dx/dt(t)=0.999 at t=0.0.\n", + "x(t)=0.999 and dx/dt(t)=1.001 at t=0.0.\n", "QMOD synthesized.\n", "x(t)=1.094 and dx/dt(t)=0.896 at t=0.1.\n", "QMOD synthesized.\n", - "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "x(t)=1.180 and dx/dt(t)=0.777 at t=0.2.\n", "QMOD synthesized.\n", - "x(t)=1.250 and dx/dt(t)=0.652 at t=0.30000000000000004.\n", + "x(t)=1.251 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", "QMOD synthesized.\n", - "x(t)=1.311 and dx/dt(t)=0.512 at t=0.4.\n", + "x(t)=1.312 and dx/dt(t)=0.510 at t=0.4.\n", "QMOD synthesized.\n", - "x(t)=1.357 and dx/dt(t)=0.355 at t=0.5.\n", + "x(t)=1.357 and dx/dt(t)=0.357 at t=0.5.\n", "QMOD synthesized.\n", - "x(t)=1.390 and dx/dt(t)=0.191 at t=0.6000000000000001.\n", + "x(t)=1.390 and dx/dt(t)=0.189 at t=0.6000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.409 and dx/dt(t)=0.009 at t=0.7000000000000001.\n", + "x(t)=1.409 and dx/dt(t)=0.008 at t=0.7000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.413 and dx/dt(t)=0.016 at t=0.8.\n", + "x(t)=1.416 and dx/dt(t)=0.012 at t=0.8.\n", "QMOD synthesized.\n", - "x(t)=1.407 and dx/dt(t)=0.151 at t=0.9.\n", + "x(t)=1.409 and dx/dt(t)=0.147 at t=0.9.\n", "QMOD synthesized.\n", - "x(t)=1.385 and dx/dt(t)=0.282 at t=1.0.\n", + "x(t)=1.386 and dx/dt(t)=0.281 at t=1.0.\n", "Studying bound=0.100...\n", "QMOD synthesized.\n", "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", "QMOD synthesized.\n", - "x(t)=1.096 and dx/dt(t)=0.894 at t=0.1.\n", + "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", "QMOD synthesized.\n", - "x(t)=1.179 and dx/dt(t)=0.779 at t=0.2.\n", + "x(t)=1.178 and dx/dt(t)=0.780 at t=0.2.\n", "QMOD synthesized.\n", - "x(t)=1.251 and dx/dt(t)=0.651 at t=0.30000000000000004.\n", + "x(t)=1.251 and dx/dt(t)=0.653 at t=0.30000000000000004.\n", "QMOD synthesized.\n", - "x(t)=1.310 and dx/dt(t)=0.511 at t=0.4.\n", + "x(t)=1.310 and dx/dt(t)=0.509 at t=0.4.\n", "QMOD synthesized.\n", - "x(t)=1.357 and dx/dt(t)=0.356 at t=0.5.\n", + "x(t)=1.357 and dx/dt(t)=0.358 at t=0.5.\n", "QMOD synthesized.\n", - "x(t)=1.388 and dx/dt(t)=0.192 at t=0.6000000000000001.\n", + "x(t)=1.390 and dx/dt(t)=0.190 at t=0.6000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.409 and dx/dt(t)=0.012 at t=0.7000000000000001.\n", + "x(t)=1.408 and dx/dt(t)=0.010 at t=0.7000000000000001.\n", "QMOD synthesized.\n", - "x(t)=1.414 and dx/dt(t)=0.188 at t=0.8.\n", + "x(t)=1.415 and dx/dt(t)=0.184 at t=0.8.\n", "QMOD synthesized.\n", - "x(t)=1.408 and dx/dt(t)=0.392 at t=0.9.\n", + "x(t)=1.409 and dx/dt(t)=0.393 at t=0.9.\n", "QMOD synthesized.\n", "x(t)=1.385 and dx/dt(t)=0.613 at t=1.0.\n" ] @@ -874,22 +923,18 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 11, "id": "97000dff", - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABSMAAAK/CAYAAACStdgKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3iUVdrH8e8zM5lJ7xVISIAQCGBogkFKXBBEZGUtq6IC0iywymJb66K+yooiYMdV7Kyu7oquYkEELCAIiPQeDEJCEkghPZl53j8Co5GWAGGS8Ptc11wwTznnPjMDObnnFMM0TRMRERERERERERGRembxdAAiIiIiIiIiIiJydlAyUkRERERERERERM4IJSNFRERERERERETkjFAyUkRERERERERERM4IJSNFRERERERERETkjFAyUkRERERERERERM4IJSNFRERERERERETkjFAyUkRERERERERERM4IJSNFRERERERERETkjFAyUkRERERERERERM4IJSNFzmJTpkzBMAxPh9Hg/PDDD/Tq1Qs/Pz8Mw2DNmjVnPIajvTevvfYahmGwa9euGsePFW9DaEd9OPza5ObmejqUk6J/dyIiItIQ+mm17W+ebX1NaNz9TfU1pTFQMlLkFHz++ecYhnHMxxtvvOHpEE+bxt5W0zR5+OGH+eabb457XWVlJVdeeSUHDhxgxowZvPnmm7Rs2fIMRVl3x4q3MbVj6dKlTJkyhfz8fE+HIiIi0iQ1ln5cY4nzaGrb14TG1d9sCn1NUH9TpKGxeToAkcbsp59+AuDpp58mJCTkiPODBg060yHVm8be1q1bt/L3v/+ddu3aHfe6HTt28PPPP/PPf/6TsWPHnqHoauf666/n6quvxuFwuI8dK97Nmzc32Hb83tKlS3nooYcYNWoUwcHBng5HRESkyWks/bjGEufR1LavCY2rv9kU+pqg/qZIQ6NkpMgpWLt2LUFBQUycOLHJD4Vv7G1dtWoVAF27dj3uddnZ2QCntZNSXFyMn5/fKZdjtVqxWq01jh0r3obcDhERETmzzmQ/Li0tjfj4eF577bU639uY+5u17WtCw+6n/b6/qb6miNQHTdMWOQU//fQTXbp0Oe2dpZ9//plbbrmFpKQkfHx8CAsL48orrzxircDD64Fs377d/S1fUFAQN9xwAyUlJTWu/fbbbzn33HPx9vam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3qG4uJgnn3yyxvmDBw/SokULrrjiClJSUvD39+fLL7/khx9+qDGC9GgSEhL46quvmDZtGs2aNaN9+/Z069bthDH91v/93/+xYMECevfuzS233ILNZmP27NmUl5czbdq0OpX1W6fy3tTVP/7xDxYtWkTPnj0ZN24cycnJHDhwgNWrV/Pll19y4MCBM1LG7x1+L+677z6uvvpqvLy8GDp0qLvTeCzp6en88Y9/5KKLLmLZsmW89dZbDB8+vMYUqdq+b1dffTV33303f/rTn7j11lspKSnhhRdeoG3btkfdlKc2avPensrnWkRE5ETqu8/qiTibal8T1N88nWX8Xn31Nxt6XxPU35QG6gzv3i3SJEybNs0Ejvl44403TNM0zcrKStNut5sRERHuY7WRl5dn3nDDDWZ4eLjp7+9vDho0yNy8ebPZsmVLc+TIke7r/v73v5uAmZOTU+P+V1991QTM9PR097ElS5aY3bp1M+12u9mqVSvzxRdfdN9/Otp6WFhYmLljxw738zfffNPs379/rdq9YMECEzANwzB3795d41x5ebl55513mikpKWZAQIDp5+dnpqSkmM8///wJy92zZ485aNAg09/f3wTMp59++pjXLlq0yATM995774hzq1evdpfj6+trXnDBBebSpUtrXHOs9+R4avveHO19PVa8xzq+b98+c8KECWZsbKzp5eVlRkdHm/379zdfeumlWrfjVMs4WjseeeQRs3nz5qbFYjni3O8dLnfjxo3mFVdcYQYEBJghISHmxIkTzdLS0iOur837Zpqm+cUXX5gdO3Y07Xa7mZSUZL711ltHvA91aZNpnvi9PZXPtYiIyInUd5/1aPr161ejv3o64zTNxt/XNM3G1d+sa1/TNGvXVzxRG06ljGP1y+qrv3k6+5p1bVdt3lf1N6UhMkyzHlZ1FREANm7cyIUXXsi///1vrrzySpYtW0bLli09HVa9ycrKIiYmhsLCQgICAgC4/PLL6dWrF7fffruHoxMRERGRo2ksfVb1NUVEmgatGSlSj9avX0+nTp04//zzuffee7nssssoKyvzdFj1Zv369VitVt59910qKyt5+eWX+fHHHxk3bpynQxMRERGRY2gsfVb1NUVEmgYlI0Xq0fr16znnnHMAmDhxIh07duTGG2/0cFT1Z/369YwePZp33nmH0NBQ/vWvf7FgwYKTWmxbRERERM6MxtJnVV9TRKRp0DRtETltxo0bR/fu3Rtk51VEREREGjf1NUVEmgaNjBSR02b9+vW0a9fO02GIiIiISBOkvqaISNOgkZEictoEBQWxdetWoqKiPB2KiIiIiDQx6muKiDQNSkaKiIiIiIiIiIjIGaFp2iIiIiIiIiIiInJG2DwdQEPgcrnYu3cvAQEBGIbh6XBERERE6sQ0TQ4ePEizZs2wWPRdc2Ok/qiIiIg0drXtkyoZCezdu5fY2FhPhyEiIiJySnbv3k2LFi08HYacBPVHRUREpKk4UZ9UyUggICAAqH6xAgMDPRyNiIiISN0UFhYSGxvr7tNI46P+qIiIiDR2te2TKhkJ7qkwgYGB6vyJiIhIo6XpvY2X+qMiIiLSVJyoT6pFhUREREREREREROSMUDJSREREREREREREzgglI0VEREREREREROSM0JqRIiIiIiKNgGmaVFVV4XQ6PR2KSA1WqxWbzaZ1a0VEpFaUjBQRERERaeAqKirIzMykpKTE06GIHJWvry8xMTHY7XZPhyIiIg2ckpEiIiIiIg2Yy+UiPT0dq9VKs2bNsNvtGoEmDYZpmlRUVJCTk0N6ejqJiYlYLFoNTEREjk3JSBERERGRBqyiogKXy0VsbCy+vr6eDkfkCD4+Pnh5efHzzz9TUVGBt7e3p0MSEZEGTF9ZiYiIiIg0AhptJg2ZPp8iIlJb+okhIiIiIiIiIiIiZ4SSkSIiIiIiIiIiInJGKBkpIiIiIiIiIiIiZ4SSkSIiIiIiInJcaWlpTJo0ydNhiIhIE6BkpIiIiIiI1Jt+/fphGMYRjxEjRpzVsZwJSiCKiEhDZPN0ACIiIiIi0jSZpsmPP/7Ik08+ybXXXlvjnL+//ymVnZaWxqhRoxg1apTHYxEREZHa08hIERERERGpF9u2bePgwYP07duX6OjoGo8znQA8nbG4XC6mTp1KQkICPj4+pKSk8P7777vP5+TkEB0dzWOPPeY+tnTpUux2OwsXLgSqk6kTJ05k4sSJBAUFER4ezgMPPIBpmrWu5/A106ZNo02bNjgcDuLi4nj00UcZNWoUS5YsYdasWe4RoLt27apVucXFxYwYMQJ/f39iYmKYPn16nV4fERGR49HISBERERGRRsQ0TUornR6p28fLimEYtb5+1apV2Gw2zjnnnHqM6szHMnXqVN566y1efPFFEhMT+frrr7nuuuuIiIigX79+REREMGfOHIYNG8bAgQNJSkri+uuvZ+LEifTv399dzuuvv86YMWNYsWIFK1euZPz48cTFxTFu3Lha1QNwzz338M9//pMZM2bQu3dvMjMz2bx5MxMnTmTr1q107NiRhx9+GICIiIhalXvnnXeyZMkSPvzwQyIjI7n33ntZvXo1nTt3PuXXTkRERMlIEREREZFGpLTSSfKDn3uk7o0PD8LXXvtfIVavXo3T6SQsLKzG8WuvvZbZs2ef7vBOOZYPP/yQRYsWMXPmzGOWU15ezmOPPcaXX35JamoqAK1ateLbb79l9uzZ7iThxRdfzLhx47j22mvp3r07fn5+TJ06tUZZsbGxzJgxA8MwSEpKYt26dcyYMYNx48bVqp6DBw8ya9Ysnn32WUaOHAlA69at6d27NwB2ux1fX1+io6NrHX+3bt145ZVXeOutt9yJ09dff50WLVqc1OsuIiLye0pGioiIiIhIvVi9ejXXXHMNDz30UI3joaGhdS7rscceqzHtubS0lO+//56JEye6j23cuJG4uLiTjmXt2rWkpKQcN47t27dTUlLChRdeWON4RUUFXbp0qXHsySefpGPHjrz33nusWrUKh8NR4/x5551XY6Rpamoq06dPx+l01qqeTZs2UV5eXmO05YmcqNwdO3ZQUVFBz5493edCQ0NJSkqqdR0iIiLHo2SkiIiIiEgj4uNlZePDgzxWd12sXr2aRx99lDZt2hz1/J/+9CccDgc7duzgwIEDvPvuu3Tv3v2o19500038+c9/dj+/9tprufzyy7nsssvcx5o1a3bSsUB1MnLIkCEUFhZy/fXXM2TIEMaPH1/jmqKiIgA++eQTmjdvXuPc75ONO3bsYO/evbhcLnbt2kWnTp2OWffv1aYeHx+fWpdX23IPHDhQ5zJFRETqQslIEREREZFGxDCMOk2V9pSdO3eSn59/3JGGa9eu5cYbb+Sdd97h7bffZvr06fzrX/866rWhoaE1RjH6+PgQGRl53ORiXWKB6pGGPj4+DB48mClTphwxehAgOTkZh8NBRkaGe0r20VRUVHDddddx1VVXkZSUxNixY1m3bh2RkZHua5YvX17jnu+//57ExESsVmut6klMTMTHx4eFCxcyduzYI87b7Xaczprri56o3JCQELy8vFi+fLl7lGleXh5bt249bntFRERqq+H3YkREREREpNFZtWoVAFFRUWRlZdU4FxkZSUlJCWVlZdx+++0AtG/fnjfffNMjsVgsFkpLS9mzZw/Dhw/nrbfeokOHDkctKyAggDvuuIO//vWvuFwuevfuTUFBAd999x2BgYHutRvvu+8+CgoKePrpp/H392f+/PmMHj2ajz/+2F1WRkYGkydP5sYbb2T16tU888wz7p2ra1OPt7c3d999N3fddRd2u53zzz+fnJwcNmzYwJgxY4iPj2f58uXs2rULf39/QkNDa1XumDFjuPPOOwkLCyMyMpL77rsPi8VSH2+NiIichZSMFBERERGR02716tVA9ei933I4HBQWFrJu3To6dOiA1Wp1X1+XacynMxa73c769etJTU1lz5492GzH/zXpkUceISIigqlTp7Jz506Cg4Pp2rUr9957LwCLFy9m5syZLFq0iMDAQADefPNNUlJSeOGFF7j55psBGDFiBKWlpfTo0QOr1cptt91WY1r4ieoBeOCBB7DZbDz44IPs3buXmJgYbrrpJgDuuOMORo4cSXJyMqWlpaSnpxMfH3/Ccp944gmKiooYOnQoAQEB3H777RQUFJzKWyAiIuJmmKZpejoITyssLCQoKIiCggJ3Z0FERESksVBfpvE73ntYVlZGeno6CQkJeHt7eyjC02/27Nk89dRTrF+/nsLCQv7whz/w3//+l9atW3sknldeeYXs7GwGDRrEuHHjWLJkCf7+/vVWX1paGp07dz7uzt2NSVP9nIqISO3Vtk/aoMbaf/311wwdOpRmzZphGAbz5s074T2LFy+ma9euOBwO2rRpw2uvvVbvcYqIiDQUVZVO8veV8MvmA/y8YT/79xRRXlKJvmsUkYZu7dq1XHzxxXTr1o20tDT+8Y9/eCwReTiejh070rVrV2655RZGjx7tsVhEREROp43f7WXv9nycVS5PhwI0sGnaxcXFpKSkMHr06Bq74h1Leno6Q4YM4aabbuLtt992L9wcExPDoEGe2WFQRETkdHG5TEoKKijKK+PggTKKDpT/+ve86r+XHqwEwApYDKg8lIP0cljxD3HgH+pd/Wfwb/4eUv2n3btBdQNE5Cyzdu1a5s6dy4wZMzwdCgCzZs1y/33MmDGMGTPGg9GIiIicHmXFlSx6czMAY6b3wWrz/LjEBvVbyODBgxk8eHCtr3/xxRdJSEhw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R70/Ojr6iF2vT3QPQI8ePfj2228BCA8Px2q1HrXu45UhIiJNy+FkZGPcvAaUjBSRs5Rpmqx/YQNvb/qUQQHdaGO1YRgGeTipGBzPhf3iPR2iiIhIk7B8+fIaz7///nsSExNJTk6mqqqK5cuXu6dp79+/ny1btpCcnAxAREQEWVlZmKbpHl25Zs2aOtXfrl07qqqqWLVqlXua9pYtW8jPz69xXV2maaempnLfffdRWVnpPr5gwQKSkpKOOkX78D2PPvoo2dnZ7l2vFyxYQGBgoLu9R7NmzRpiYqrXrLbb7XTr1o2FCxcybNgwAFwuFwsXLmTixInHfyFERKRJKC2qoCivHIBwTdMWEWkcynaXMffB/1AW7MUo7574W6t/udkQbOW8m7oTFFz3KWgiIiJydBkZGUyePJkbb7yR1atX88wzzzB9+nQSExO59NJLGTduHLNnzyYgIIC//e1vNG/enEsvvRSAtLQ0cnJymDZtGldccQWfffYZn376KYGBgbWuPykpiYsuuogbb7yRF154AZvNxqRJk/D53ZTzukzTHj58OA899BBjxozh7rvvZv369cyaNYsZM2a4r/nggw+455573Gs5Dhw4kOTkZK6//nqmTZtGVlYW999/PxMmTMDhcADVO4UnJCTQoUMHysrKePnll/nqq6/44osv3OVOnjyZkSNH0r17d3r06MHMmTMpLi7mhhtuqHX8IiLSeOVmFAEQFOGDw6dxpvUsng5ARORMMU2THa/v5PFH/knL4BiG2qPxtxrk42TXBTEM+lsvJSJFREROsxEjRlBaWkqPHj2YMGECt912G+PHjwfg1VdfpVu3blxyySWkpqZimibz5893jzZs3749zz//PM899xwpKSmsWLGCO+64o84xvPrqqzRr1ox+/fpx2WWXMX78ePfoxJMRFBTEF198QXp6Ot26deP222/nwQcfdLcLoKCggC1btrifW61WPv74Y6xWK6mpqVx33XWMGDGChx9+2H1NRUUFt99+O506daJfv3789NNPfPnll/Tv3999zVVXXcWTTz7Jgw8+SOfOnVmzZg2fffbZEZvaiIhI03R4J+3GOioSwDB/vwjLWaiwsJCgoCAKCgrq9C2riDQelfsrmfe3z8j1K6OfVxSBh0ZDrvU3OPfGLkRE+Hk4QhGRk6e+TON3vPewrKyM9PR0EhIS8Pb29lCE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li1ERkYecf3cuXP529/+xpw5c+jVqxdbt25l1KhRGIbBU0895YEWiDQepmmy6r712MoPEO9rw2Wa/Cvka/pe+0dSY8/xdHgiIiIiIiIiZ43cs2DzGmiAIyOfeuopxo0bxw033EBycjIvvvgivr6+zJkz56jXL126lPPPP5/hw4cTHx/PwIEDueaaa044mlLkbOeqcLH4ph8IrMoj3MtCuelkevP/ce0tY5WIFBERERERETnD3DtpxzXd9SKhgSUjKyoqWLVqFQMGDHAfs1gsDBgwgGXLlh31nl69erFq1Sp38nHnzp3Mnz+fiy+++Jj1lJeXU1hYWOMhcjapyKtkwc3fkRBchq/FII9Snkz+lH/c/DAtAqM9HZ6IiIiIiIjIWcV0meTuLgKqp2k3ZQ1qmnZubi5Op5OoqKgax6Oioti8efNR7xk+fDi5ubn07t0b0zSpqqripptu4t577z1mPVOnTuWhhx46rbGLNBYF2w7yw1Or6BBhBQy2W/fxRa9dPHfxVCxGg/p+QkREREREROSsUJBTSmW5E6uXhZBoX0+HU68afeZh8eLFPPbYYzz//POsXr2a//73v3zyySc88sgjx7znnnvuoaCgwP3YvXv3GYxYxHP2Ls5m47OraBdkBWCxzwa2/8nFY0PuUCJSRERERERExEMOb14T1twfi7Vp/37eoEZGhoeHY7Va2bdvX43j+/btIzr66FNHH3jgAa6//nrGjh0LQKdOnSguLmb8+PHcd999WCxHvoEOhwOHw3H6GyDSgG15Ywfla38h1seKyzR5PeQr+l4zmH4te3o6NBEREREREZGz2q/rRTbtKdrQwEZG2u12unXrxsKFC93HXC4XCxcuJDU19aj3lJSUHJFwtFqrR32Zpll/wYo0IiumrsWyfg+hNgtlppN/NP8P1900WolIERERERERkQbg8MjIiNimvXkNNLCRkQCTJ09m5MiRdO/enR49ejBz5kyKi4u54YYbABgxYgTNmzdn6tSpAAwdOpSnnnqKLl260LNnT7Zv384DDzzA0KFD3UlJkbOVy+nim3tWEG9UYLUY5FLKrPb/Y9bwRwm0B3o6PBEREREREZGznmn+unnN2TAyssElI6+66ipycnJ48MEHycrKonPnznz22WfuTW0yMjJqjIS8//77MQyD+++/nz179hAREcHQoUN59NFHPdUEkQahvKSS5fd+T2tvAIMt1n18fN5aXhryFF4WL0+HJyIiIiIiIiJAUV45ZcWVWCwGoc38PB1OvTNMzWWmsLCQoKAgCgoKCAzUaDFp/AoyDrJl5mqa2asT9196r6PwYm/+cu4NGIbh4ehEROR0U1+m8dN7KCIicvbauSaHT19cR1hzf65+oIenwzlpte3PNLiRkSJyan5ZmkXBB1toZrfgNE3mBH9O6lX9GdXqD54OTURERERERER+59fNa5r+epGgZKRIk7LhX9vw/jGTIKuFEtPJE83eZfJ1k2gfluTp0ERERERERETkKHIzzp6dtEHJSJEmY+Vza4nIyMdqMcg2S5ne5l1mXfc44T7hng5NRERERERERI4h59DmNeGxSkaKSCPx/bTVNNtfhMUw2GLk8O+uX/PKZc/hbfP2dGgiIiIiIiIicgwlhRUU55eDAeEtNE1bRBo40zT59qEfiC8twzAM1lr3sqLfLl648CkshuXEBYiIiIiIiIiIxxxeLzI40he799mRpjs7WinSBJmmyZJ7v6e1qxLDMFjptYufB5cypdfdng5NRERERERERGoh9/DmNbFnx6hIUDJSpFFyOl0suWspbb1MMAyW2rdRcpkvt3W+3tOhiYiIiIiIiEgt5RzavOZsWS8SlIwUaXSqKpwsues7krwNABY7NuJzdSyj2l/s4chEREREREREpC4Ob15ztuykDUpGijQq5UWVfHPvd7TztQLwuc8aWl7fmQGt+ng4MhERERERERGpi/LSKgpzSgGI0MhIEWloinNK+f6R5e5E5Id+P9B1VF9SY7t7ODIRERERERERqavD60X6hzrw9vfycDRnjpKRIo1AYUYxK59cQZJv9T/Z9wOW8YdxQzknsr2HIxMRERERERGRk3F4vcizaVQkKBkp0uDt31jAutmraXsoETk36Bsuu+la2oS09HBkIiIiIiIiInKycg7vpH0WrRcJSkaKNGhZK/az9e21tPGp/qf6esgSRt08luaB0R6OTERERERERERORe7hzWs0MlJEGoJfFu5j1/820srHhss0mRO+hL9MmEiYb4inQxMRERERERGRU1BZ4SQvsxjQyEgRaQB2/mcP+77dSrx3dSLy5agl3DlhMgEOP0+HJiIiIiIiIiKnaP+eIkwTfAK88A2yezqcM0rJSJEGZtPruyj8aRexDhtO0+Sfzb7h/lvu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oU9RH4/UW1erV6/mmmuu4aGHHqpxPDQ0tE7lbN++nZKSEi688MIaxysqKujSpUuNY08++SQdO3bkvffeY9WqVUesfXfeeefVSOCkpqYyffp0nE7nCevZtGkT5eXlNUZano7Yd+zYQUVFBT179nSfDw0NJSkpqdb1SOOXlpZ23OUQXnvttSOO1ea7+yuvvNKd5BYRERE5bP+eIkwTfAPtTToRWRdKRor8RvaefP71j+9I9Qqgmd1CJS629ohkyGXtPR2aiJxhhmHUeYSip6xevZpHH32UNm3aHPX8n/70JxwOBzt27ODAgQO8++67dO/e/Yjrioqqd/n75JNPaN68eY1zv0827tixg7179+Jyudi1axedOnWqdbwnqic/P7/WZZ1M7CIiIiIiZ4qmaB9JyUiRQ37ZmcsHT63gfIc/0V7Vicid58cwaGhbT4cmInJMO3fuJD8/n5SUlGNes3btWm688Ubeeecd3n77baZPn86//vWvI65LTk7G4XCQkZHhXmPxaCoqKrjuuuu46qqrSEpKYuzYsaxbt47IyEj3NcuXL69xz/fff09iYiJWq/WE9URERODj48PChQuPOU3bbrfjdDrrFHvr1q3x8vJi+fLlxMXFAZCXl8fWrVuP214RERERkZOVs1ub1/yekpEiwPZNe/ns2bWc7+1HpJeFMlzsuaA5/QcdfZSRiEhDsWrVKgCioqLIysqqcS4yMpKSkhLKysq4/fbbAWjfvj1vvvnmUcsKCAjgjjvu4K9//Ssul4vevXtTUFDAd999R2BgICNHjgTgvvvuo6CggKeffhp/f3/mz5/P6NGj+fjjj91lZWRkMHnyZG688UZWr17NM8884965ujb13H333dx1113Y7XbOP/98cnJy2LBhA2PGjAEgPj6e5cuXs2vXLvz9/QkNDT1hmf7+/owZM4Y777yTsLAwIiMjue+++7BY6j41XkRERESkNtw7aWtkpJuSkXLWW//jLr7+5xZ6+/oQbrNQipPsgXH0+0MrT4cmInJCq1evBiAxMbHGcYfDQWFhIevWraNDhw5YrVb39cebUv3II4+4d6beuXMnwcHBdO3alXvvvReo3vxj5syZLFq0yL0o9ZtvvklKSgovvPACN998MwAjRoygtLSUHj16YLVaue222xg/fnyt63nggQew2Ww8+OCD7N27l5iYGG666Sb3/XfccQcjR44kOTmZ0tJS0tPTT1gmwBNPPEFRURFDhw4lICCA22+/nYKCgpN+/UVEREREjsVZ5eLA3mIAIuKUjDxMu2mj3QvPZmt+2M6yOemc72cn1GahGCf5QxLo2aelp0MTkTPoeLsUN3azZ8/mqaeeYv369RQWFvKHP/yB//73v7Ru3bre6vz9Ttdyemg37aZN76GIiEjTk5NxkH8/9gMOXxtjpvepscFjU6TdtEVOYPP6DJbN2UFvP29CbBYO4qR4WGt6nhfr6dBERE6btWvXcvHFF9OtWzdM02TatGn1mogUEREREZFqh9eLDI/1b/KJyLpQMlLOSunbM1n4wgb6+vkSYrNQgJOqKxLp3r35iW8WEWlE1q5dy9y5c5kxY4anQxEREREROavkar3Io1IyUs46ezNy+WTmavr6+LsTkebVSaR0jvF0aCIip92ePXuIjT2zI74XL158RusTEREREWmIfh0ZqWTkb2n7SDmr5O4r4L0nltHH25/QQ1OznX9uS0clIkWkidq5c6enQxAREREROeu4XCa5vxQB2rzm95SMlLNGQV4xbz+2mL72QMJsFopwUnF5Iud0bebp0ERERERERESkCcnfV0JVhQub3UJwlK+nw2lQlIyUs0JxYRlzHv6CPrZgIrwslOCkdFhrUs7VGpEiIiIiIiIicnrlHp6i3cIfi0Wb1/yWkpHS5JWVVvDSw/Ppawkl0stCKU6Khrami3bNFhEREREREZF6kKPNa45JyUhp0irLq3hxyv/obYYR5WWhHBcFFyfQ9XwlIkVERERERESkfrg3r9F6kUdQMlKaLKfTxfNTPqRXZTgxXhYqcLF/UBzd+7b0dGgiIiIiIiIi0kSZpknu7kOb12hk5BGUjJQmyXSZvPDQPHqWh9PMbqESF7kD4uhxQYKnQxMRERERERGRJuzg/jLKS6qwWA1Cm/l5OpwGR8lIaXJM0+TFR+fRrSiMFnYLVbjISmtOjwFKRIqIiIiIiIhI/To8RTu0mR9Wm1Jvv6dXRJqcV6b9j3MOhBJrt+DExd6+zUi9qI2nwxIRERERERGRs4B78xqtF3lUSkZKk/L6jE9olxVIS4cFFyYZvaLpdXGip8MSERERERERkbNETobWizweJSOlyXjn+c9JyPAj3mHFhcnPPSPp88ckT4clIiIiIiIiImeR3N0aGXk8SkZKkzDvla+I3mqn1aFEZHrXMPr8qZ2nwxIRkQYuLS2NSZMmeToMEREREWkiigvKKSmsAAPCmvt7OpwGSclIafQ+ffsbAtcZtPG2AbAjJZh+f+7g4ahERM6sfv36YRjGEY8RI0Z4OrTTTglEEREREWmoDq8XGRLli5fD6uFoGiabpwMQORWL/rsc6w+VtPX2AmBrxwD+cM05Ho5KROTMMk2TH3/8kSeffJJrr722xjl/f30bKyIiIiJypmiK9olpZKQ0Wkvn/0j51wdJPpSI3JTkyx+u6+zZoEREPGDbtm0cPHiQvn37Eh0dXeNR12Sky+Vi6tSpJCQk4OPjQ0pKCu+//z4AOTk5REdH89hjj7mvX7p0KXa7nYULFwLVoxYnTpzIxIkTCQoKIjw8nAceeADTNGtVx2+vmTZtGm3atMHhcBAXF8ejjz7KqFGjWLJkCbNmzXKP/ty1a1etyi0uLmbEiBH4+/sTExPD9OnT6/TaiIiIiIicyOHNa8K1ec0xaWSkNEo/frWRvAU5pHj7ALCxjYOBN3TzcFQi0pSYpkmJy3XG6/W1WDAMo073rFq1CpvNxjnnnPrI8KlTp/LWW2/x4osvkpiYyNdff811111HREQE/fr1Y86cOQwbNoyBAweSlJTE9ddfz8SJE+nfv7+7jNdff50xY8awYsUKVq5cyfjx44mLi2PcuHG1qgPgnnvu4Z///CczZsygd+/eZGZmsnnzZiZOnMjWrVvp2LEjDz/8MAARERG1KvfOO+9kyZIlfPjhh0RGRnLvvfeyevVqOnfufMqvm4iIiIgIQI5GRp6QkpHS6Gxcup3d/8ugq8MPgA0tvRg0toeHoxKRpqbE5cL/m2/OeL1FffrgZ63b2jKrV6/G6XQSFhZW4/i1117L7Nmz+fDDD1m0aBEzZ848bjnl5eU89thjfPnll6SmpgLQqlUrvv32W2bPnk2/fv24+OKLGTduHNdeey3du3fHz8+PqVOn1ignNjaWGTNmYBgGSUlJrFu3jhkzZjBu3Lha1XHw4EFmzZrFs88+y8iRIwFo3bo1vXv3BsBut+Pr60t0dHStY+/WrRuvvPIKb731ljtx+vrrr9OiRYs6vdYiIiIiIsdSVlzJwf1lAIS30HJJx6JkpDQq6T/uZvN7W+nhqP6GYX1zCxfdfJ6HoxIR8azVq1dzzTXX8NBDD9U4HhoaCsDatWtJSUk5YTnbt2+npKSECy+8sMbxiooKunTp4n7+5JNP0rFjR9577z1WrVqFw+Gocf15551XY3Rnamoq06dPx+l01qqOTZs2UV5eXmO05anGvmPHDioqKujZs6f7XGhoKElJSbWuQ0RERETkeA6vFxkY7o23n5eHo2m4lIyURmPvpn2sfGMNqY5gANZHwaCJvTwblIg0Wb4WC0V9+nik3rpavXo1jz76KG3atDnq+bVr1zJkyBAKCwu5/vrrGTJkCOPHjz/iuqKi6vVtPvnkE5o3b17j3G8Tjjt27GDv3r24XC527dpFp06dah1rberw8fGpdXm1LffAgQN1LlNEREREpC4OrxcZofUij0vJSGkUcnYeYMk/v6ePo3qUz/pwJ4Mm9avzumoiIrVlGEadp0t7ws6dO8nPzz/uyMdNmzbh4+PD4MGDmTJlyhGjBw9LTk7G4XCQkZHhXrvx9yoqKrjuuuu46qqrSEpKYuzYsaxbt47IyEj3NcuXL69xz/fff09iYiJWq7VWdSQmJuLj48PChQsZO3bsEeftdjtOp7NOsYeEhODl5cXy5cuJi4sDIC8vj61btx4zDhERERGRuji8XqQ2rzk+JSOlwcv7pYDPn11MP69wANYHVzDo9j8oESkiQvXmNQBRUVFkZWXVOBcZGUl5eTl79uxh+PDhvPXWW3To0OGYZQUEBHDHHXfw17/+FZfLRe/evSkoKOC7774jMDCQkSNHct9991FQUMDTTz+Nv78/8+fPZ/To0Xz88cfucjIyMpg8eTI33ngjq1ev5plnnnHvXF2bOry9vbn77ru56667sNvtnH/++eTk5LBhwwbGjBlDfHw8y5cvZ9euXfj7+xMaGlqrcseMGcOdd95JWFgYkZGR3HfffVhOYiSqiIiIiMjR5GrzmlpRMlIatKKcIj6c8QX9vaIwDIP1gWUMunuAEpEiIoesXr0aqB5N+FsOh4PCwkLWr19Pamoqe/bswWY78Y/9Rx55hIiICKZOncrOnTsJDg6ma9eu3HvvvSxevJiZM2eyaNEiAgMDAXjzzTdJSUnhhRde4OabbwZgxIgRlJaW0qNHD6xWK7fddluNaeHHq+OwBx54AJvNxoMPPsjevXuJiYnhpptuAuCOO+5g5MiRJCcnU1paSnp6OvHx8Scs94knnqCoqIihQ4cSEBDA7bffTkFBwSm8+iIiIiIi1SrKqsjbVwJAeKw2rzkewzRN09NBeFphYSFBQUEUFBS4f7kSzyvNL+PtRz5koC0Gi2GwwbeUC+8bgMWqUSwicnqVlZWRnp5OQkIC3t7eng7n/9m78+io6vv/48+ZyUpWQkhCICxCRAEJAgVTlE00RaQVqyJQQpGioHwRY4NFK0GUaJG1sgpoUNRiVaS/uiBNBatlzUADAgIhEpYkEAOZ7NvM7w/K6JQtgZCb5fU4557jnXs/9/MaJh6Gdz5LjVq1ahWnTp0iJiaG8ePHs3nzZnx9r9+Xo/79+9OtW7cr7twt1Xe5n1N9l6n/9BmKiIjUb5lpeXz0agpNAjwY+6fbjY5jiKp+n1FVR+qk8oJy3nrpI2chcp9XkQqRIiJXITU1lS5dutC9e3cef/xxHnnkEaMjiYiIiIg0OKczNEW7qjRNW+qcypJKVsx4nyGWCMwmE/s9Chn0/N0qRIqIXIWFCxc6/3vcuHGMGzfOwDQiIiIiIg2Tc71IbV5zRSpGSp1iL7ez9Pn3GGppjcVk4ju3Qu6crkKkiEh9sWnTJqMjiIiIiIjUutMqRlaZKjxSZzgqHSx+9l3uNZ8rRB62FDJgxl2Y3fRjKiIiIiIiIiJ1U2W5ndwThYA2r6kKVXmkTnDYzxUih5pb42YyccRcyB0Jd2F2sxgdTURERERERETkknIzC7HbHXg2ccOvWcPaEPN6UDFSDOdwOFj87F8YQgRuJhNHKeLn0wdh8VAhUkRERERERETqtp9uXmMymQxOU/epGCmGcjgcLP3j+wxxtMTdZOIYxfxs+gDcvLScqYiIiIiIiIjUfefXiwzWepFVomKkGOr1Fz7iFxUtcDeZOOEo5tY/9sOjiYfRsUREREREREREquTHkZFaL7IqVIwUw6x66W8MKg7Gw2Qiy15C5z/cjpevp9GxRERERERERESqxG538MPxAkA7aVeVipFiiLf+9Bn98gPwNJk5ZS+jQ/xt+DZtYnQsEREREREREZEqO5tVREW5HTdPCwEhqmtUhYqRUuveW5hMdK43XiYzOfZyWk7uRmBz/fZAREREREREROqX8+tFNm/li9mszWuqQsVIqVUfLP2K7icteJss5NorCJ7YmdBWzYyOJSIiIiIiIiJSbdq8pvpUjJRasz5pK12+r8THZOGsvQK/RyJp1S7U6FgiIiIiIiIiIlclR5vXVJuKkVIrPvuLlcj9Rfia3LBVVuI2oi3tbmpldCwREamC/v37M2XKFKNjXFJdzyciIiIiDZPD4eD0sXOb12hkZNWpGCnX3T8/3kvErjP4m9zJr7RTMawFN93azuhYIiINSr9+/TCZTBccsbGxRker8xYvXkzbtm3x8vKid+/ebN++vUbaXOmer776iqFDhxIeHo7JZOLjjz+uqbckIiIiIrXAllNCWXEFZjcTQS18jI5Tb6gYKdfV1xu+I3hrFoEmDwrtdvIHN6XrzzsaHUtEpEFxOBzs2rWLOXPmkJmZ6XIsWbLE6Hh12tq1a4mLiyMhIQGr1UpUVBQxMTGcOnXqmtpU5Z7CwkKioqJYvHjxdX2PIiIiInJ9nP7vFO1m4b5Y3FRiqyr9Scl1s3XTEXy+PEoQnhTZHZy6w5deA7saHUtEpME5dOgQ+fn59O3bl7CwMJfD17dm1q6pqKhg0qRJBAQEEBwczPPPP4/D4QCgtLSUyZMnExISgpeXF7fffjs7duxwad+2bVsWLFjg8lq3bt2YMWOG87x///5MnjyZqVOnEhQURFhYmMt1OFfAi42NxdfXlxYtWjB37txrel/z5s1j/PjxjB07lk6dOrFs2TKaNGnCG2+8cU1tqnLP4MGDeemllxg2bNg1vQcRERERMUbO+Z20I7ReZHWoGCnXRcqWY7h/fojmeFNsd5DR04M7hvYwOpaISJU5HA6Kyipq/Thf4KuOlJQU3Nzc6Nr1+v3CZ/Xq1bi5ubF9+3YWLlzIvHnzWLlyJQBTp07lww8/ZPXq1VitVjp06EBMTAy5ublX1Y+Pjw/btm1j9uzZzJw5k40bNzqvx8fHs3nzZtavX88XX3zBpk2bsFqtzuuJiYn4+vpe9sjIyACgrKyMlJQUBg0a5GxvNpsZNGgQW7ZsuWi+qrS5mueKiIiISP1zfift5q21XmR1uBkdQBqePbsyqVi/l5b4UmJ3cKiTiXseus3oWCIi1VJcXkmn6Rtqvd99M2No4lG9v56tViuVlZU0a9bM5fVRo0axfPnyGskVERHB/PnzMZlMdOzYkT179jB//nxGjhzJ0qVLSUpKYvDgwQCsWLGCjRs3smrVKuLj46vVT9euXUlISAAgMjKSRYsWkZyczF133UVBQQGrVq1izZo13HnnncC54mWrVj9uiDZhwgQeeuihy/YRHh4OQE5ODpWVlYSGhrpcDw0N5cCBAxdtW5U2V/NcEREREalfHA6Hc5q2Nq+pHhUjpUbt33+a/PettMafEruDve0quO+3A42OJSLSoFmtVkaMGMELL7zg8npQUFCN9XHbbbdhMpmc59HR0cydO5fDhw9TXl5Onz59nNfc3d3p1asX+/fvr3Y//zu6s0WLFs51FtPS0igrK6N3797O60FBQXTs2NHlvCbft4iIiIjIxRTllVGcX47JBM1aaZp2dagYKTXm0OFcct7aRjtHAKV2B7vCSnhw4t1GxxIRuSre7hb2zYwxpN/qslqtzJo1iw4dOlz0+rBhw/D09CQtLY3c3FzWrl1Lz549rzVqtZjN5gumoJeXl19wn7u7u8u5yWTCbrdXuZ/ExEQSExMve8++ffto3bo1wcHBWCwWsrOzXa5nZ2cTFhZ20bZVaXM1zxURERGR+uX8qMjAMB/cPar/Hb4x05qRUiOOHD3D8VXf0M4RQJndwY6mhTzw1F1GxxIRuWomk4kmHm61fvx09GFVHDlyhLNnzxIVFXXJe1JTU+nevTs7duxg5syZV7Xpy7Zt21zOt27dSmRkJB06dMDDw4NvvvnGea28vJwdO3bQqVMn52vNmzcnMzPTeW6z2UhPT69Whvbt2+Pu7u6S5cyZMxw8eNB5PmHCBHbv3n3Z4/w0bQ8PD3r06EFycrKzvd1uJzk5mejo6ItmqEqbq3muiIiIiNQvP64XqVGR1aWRkXLNjp6wcWT519zkCKTc4WBLkwJGPjO42v+gFhGR6ktJSQHOrUeYlZXlci0kJISioiJKSkp4+umnAbj55pt5++23q91PRkYGcXFxPPbYY1itVl577TXmzp2Lj48PEydOJD4+nqCgIFq3bs3s2bMpKipi3LhxzvYDBw4kKSmJoUOHEhgYyPTp07FYqvcbZF9fX8aNG0d8fDzNmjUjJCSE5557DrP5x9+tVneadlxcHGPGjKFnz5706tWLBQsWUFhYyNixY533LFq0iHXr1jmLi1VpU5V7CgoKOHz4sPM8PT2d3bt3O/8cRURERKTuOj8ysrnWi6w2FSPlmhzLLuDA4k10tjel3OHgazcbo56/B5NZhUgRkdpwfifpyMhIl9c9PT2x2Wzs2bOHzp07Owt/VquVW265xXlfUlISY8eOveIu3rGxsRQXF9OrVy8sFgtPPvkkjz76KACvvPIKdrud0aNHk5+fT8+ePdmwYQNNmzZ1tp82bRrp6ence++9BAQE8OKLL1Z7ZCTAq6++SkFBAUOHDsXPz4+nn36avLy8aj/nvOHDh3P69GmmT59OVlYW3bp14/PPP3fZfCYnJ4e0tLRqtanKPTt37mTAgAHO87i4OADGjBlDUlLSVb8nEREREbn+nCMjVYysNpPjSv/6MMDixYt59dVXycrKIioqitdee41evXpd8v6zZ8/y3HPP8dFHH5Gbm0ubNm1YsGAB99xzT5X6s9lsBAQEkJeXh7+/f029jQbv+OkC/jP/n0TZm1LhcPAvk42RL96DxV2z/0WkfikpKSE9PZ127drh5eVldJwatXz5cubNm8fevXux2WwMHDiQjz76iPbt2wOQkJDA5s2b2bRpk7FB5You93Oq7zL1nz5DERGR+qOkoJxVv/8XAL+bdweeTdyv0KJxqOr3mTo3MnLt2rXExcWxbNkyevfuzYIFC4iJieG7774jJCTkgvvLysq46667CAkJ4YMPPqBly5YcPXqUwMDA2g/fiGTmFmFd8E+6ny9EVtoY/mKMCpEiInVMamoq99xzDz169MDhcDB79mxnIRLgs88+Y9GiRQYmFBERERGpX86PivQP9lIh8irUuWLkvHnzGD9+vHNNpWXLlvHJJ5/wxhtv8Ic//OGC+9944w1yc3P597//7dyBs23btrUZudHJzitmy9xkelU2pdLh4OvyfB6YeTce3vofUESkrklNTeXdd99l/vz5F72+ffv2Wk4kIiIiIlK//bh5jaZoX406NYytrKyMlJQUBg0a5HzNbDYzaNAgtmzZctE2f/vb34iOjuaJJ54gNDSULl26kJiYSGVl5SX7KS0txWazuRxSNWeLytj06j/oVRlIpcPBN6UF3Dd9IN6+HkZHExGRizhx4gQRERFGxxCpM7766iuGDh1KeHg4JpOJjz/++IptNm3aRPfu3fH09KRDhw4XrOlZWVnJ888/T7t27fD29qZ9+/a8+OKLV1yLVUREROqnnAwVI69FnSpG5uTkUFlZ6bK4O1x8h9Dzjhw5wgcffEBlZSWffvopzz//PHPnzuWll166ZD8vv/wyAQEBzkP/SKua4rIK1r/yBX0qArE7HPy7pJBfPHsHvoHeRkcTEZFLOHLkiNERROqUwsJCoqKiWLx4cZXuT09PZ8iQIQwYMIDdu3czZcoUfve737FhwwbnPX/6059YunQpixYtYv/+/fzpT39i9uzZvPbaa9frbYiIiIiBTh8rACBYm9dclTo3Tbu67HY7ISEhvP7661gsFnr06MGJEyd49dVXSUhIuGibadOmOXeshHMLbKogeXkVlXbWvLKRwWUBAOwoKebO+GiCQvQ/noiIiNQfgwcPZvDgwVW+f9myZbRr1465c+cCcPPNN/P1118zf/58YmJiAPj3v//Nr371K4YMGQKcWzLovffe0zIIIiIiDVBZSQVnTxUB2kn7atWpkZHBwcFYLBays7NdXs/OziYsLOyibVq0aMGNN96IxWJxvnbzzTeTlZVFWVnZRdt4enri7+/vcsilORwOVs5JZnCRLwC7S0rp+X+3EtIq0NhgIiIiItfZli1bXJYQAoiJiXFZQujnP/85ycnJHDx4EID//Oc/fP3115ctemrZIBERkfop53gBOMAnwIMm/lqy7mrUqWKkh4cHPXr0IDk52fma3W4nOTmZ6Ojoi7bp06cPhw8fxm63O187ePAgLVq0wMNDPxQ14Y3X/sWQM54A7C8pp8Nvb6RNhwt3NhcRERFpaLKysi66hJDNZqO4uBiAP/zhDzz88MPcdNNNuLu7c+uttzJlyhRGjRp1yedq2SAREZH6KUeb11yzOlWMBIiLi2PFihWsXr2a/fv3M3HiRAoLC527a8fGxjJt2jTn/RMnTiQ3N5cnn3ySgwcP8sknn5CYmMgTTzxh1FtoUNas2sagkw5MmDhSWknQ/S25qVtro2OJiIiI1Bnvv/8+77zzDu+++y5Wq5XVq1czZ84cVq9efck206ZNIy8vz3kcO3asFhOLiIjI1Tr9381rglWMvGp1bs3I4cOHc/r0aaZPn05WVhbdunXj888/d/5GOiMjA7P5xxpqREQEGzZs4KmnnqJr1660bNmSJ598kmeeecaot9BgrP/rHqIPFWHBjRNldrgzkB59OxodS0RERKTWhIWFXXQJIX9/f7y9z23iFx8f7xwdCXDLLbdw9OhRXn75ZcaMGXPR53p6euLp6Xl9w4uIiEiNO795jdaLvHp1rhgJMGnSJCZNmnTRa5s2bbrgtejoaLZu3XqdUzUuyV8c5qaUU3jiwalyO2d6ePKLe7sZHUtERESkVkVHR/Ppp5+6vLZx40aXJYSKiopcflkOYLFYXJYREhERkfqvorySMycLAU3TvhZ1shgpxtq29TghX6bjgxe5FXa+jzRx/6jbjI4lIiIics0KCgo4fPiw8zw9PZ3du3cTFBRE69atmTZtGidOnOCtt94CYMKECSxatIipU6fyyCOP8M9//pP333+fTz75xPmMoUOHMmvWLFq3bk3nzp3ZtWsX8+bN45FHHqn19yciIiLXT+7JQux2B54+bvg21QyHq6VipLjYt+80lvV7aerwIb/Swd6wMkY8NujKDUVERETqgZ07dzJgwADneVxcHABjxowhKSmJzMxMMjIynNfbtWvHJ598wlNPPcXChQtp1aoVK1euJCYmxnnPa6+9xvPPP8/jjz/OqVOnCA8P57HHHmP69Om198ZERETkuju/XmTzCD9MJpPBaeovFSPFKeN4Hrlv76Ctw48iu4OdfkWMiovR/2AiIiLSYPTv3x+Hw3HJ60lJSRdts2vXrku28fPzY8GCBSxYsKAGEoqIiEhd5VwvUlO0r0md201bjHEqt4gDS76ircOPUruDf7vnM/LZuzGbVYgUEREREREREck59uPISLl6KkYKeYWlbJnzDzrZA6lwOPgX+Yya/gssbvrxEBFp7Pr378+UKVOMjnFJdT2fiIiIiDQM9ko7Occ1MrImqNrUyJWUV/BZ4gZ62JtS6XDwr/J8hk+/C3dPi9HRRESkGvr164fJZLrgiI2NNTpanbZ48WLatm2Ll5cXvXv3Zvv27TXS7krXv/rqK4YOHUp4eDgmk4mPP/64pt6SiIiIiFwHZ7KKqCy34+5pIaC5t9Fx6jUVIxuxSruDtTM/5fbKpjgcDraUFXLf9IF4+3oYHU1ERKrB4XCwa9cu5syZQ2ZmpsuxZMkSo+PVWWvXriUuLo6EhASsVitRUVHExMRw6tSpa2pXlecWFhYSFRXF4sWLr+t7FBEREZGacX6KdnCELyYtaXdNVIxspBwOB6tf+ow7y5sCsLO0mLum9cEvUNV9EZH65tChQ+Tn59O3b1/CwsJcDl9f32t+fkVFBZMmTSIgIIDg4GCef/55lw1ASktLmTx5MiEhIXh5eXH77bezY8cO5/W2bdtesLFHt27dmDFjhvO8f//+TJ48malTpxIUFERYWJjLdThXwIuNjcXX15cWLVowd+7ca3pf8+bNY/z48YwdO5ZOnTqxbNkymjRpwhtvvHFN7ary3MGDB/PSSy8xbNiwa3oPIiIiIlI7Tmf8d4q21ou8ZipGNlKrZydzd9G5/4FSS0rp9VQPmoX4G5xKRKQOcTigrLD2j8vs8nspKSkpuLm50bVr1+vwBwGrV6/Gzc2N7du3s3DhQubNm8fKlSud16dOncqHH37I6tWrsVqtdOjQgZiYGHJzc6vdj4+PD9u2bWP27NnMnDmTjRs3Oq/Hx8ezefNm1q9fzxdffMGmTZuwWq0uz0hMTMTX1/eyR0ZGBmVlZaSkpDBo0CBnW7PZzKBBg9iyZcslM16p3dU+V0RERETqttPOkZEqRl4rN6MDSO1797V/MfDMuanYB0vLufHRm2nZJtjgVCIidUx5ESSG136/z54ED59qNbFarVRWVtKsWTOX10eNGsXy5ctZv349X3755QWjE6sqIiKC+fPnYzKZ6NixI3v27GH+/PmMHz+ewsJCli5dSlJSEoMHDwZgxYoVbNy4kVWrVhEfH1/lfrp27UpCQgIAkZGRLFq0iOTkZO666y4KCgpYtWoVa9as4c477wTOFS9btWrl8owJEybw0EMPXbaf8PBwTp06RWVlJaGhoS7XQkNDOXDgwCXb5uTkXLbdla6LiIiISP3jsDt+3Elbm9dcMxUjG5mPk3by8xN2zJg5WlZB8xFt6NCppdGxRETkGlitVkaMGMELL7zg8npQUBAAqampREVFXfXzb7vtNkymH9fFiY6OZu7cuVRWVpKWlkZ5eTl9+vRxXnd3d6dXr17s37+/Wv3878jOFi1aONdZTEtLo6ysjN69ezuvBwUF0bFjR5c2QUFBzvctIiIiIlIT8nKKKSupxOJmpmmLJkbHqfdUjGxEktfto8uBfNxwI7O8EvM9zbmlV3ujY4mI1E3uTc6NUjSi32qyWq3MmjWLDh06XPR6amoqQ4YMwWazMXr0aIYMGcKjjz56rUmrzGw2u6wxCVBeXn7Bfe7u7i7nJpMJu91erb4SExNJTEy87D379u0jLCwMi8VCdna2y7Xs7GzCwsIu2TY4OPiy7a50XURERETqn5xj59aLbNbSB4tFKx5eK/0JNhLb/nmE8G2ZeOFGToUdWx9fogd1MTqWiEjdZTKdmy5d24epejvzHTlyhLNnz1525OP+/fvx9vZm8ODBTJo0qdqFyG3btrmcb926lcjISCwWC+3bt8fDw4NvvvnGeb28vJwdO3bQqVMnAJo3b05mZqbzus1mIz09vVoZ2rdvj7u7u0uWM2fOcPDgQZf7JkyYwO7duy97hIeH4+HhQY8ePUhOTna2tdvtJCcnEx0dfckcV2p3tc8VERERkbrrdIbWi6xJGhnZCOzblYXXxsP44c3ZCgfHOlkYen9Po2OJiEgNSElJAc6tSZiVleVyLSQkhNLSUk6cOMHIkSNZs2YNnTt3rnYfGRkZxMXF8dhjj2G1WnnttdecO1n7+PgwceJE4uPjCQoKonXr1syePZuioiLGjRsHwMCBA0lKSmLo0KEEBgYyffp0LBZLtTL4+voybtw44uPjadasGSEhITz33HOYza6/V63ONO24uDjGjBlDz5496dWrFwsWLKCwsJCxY8c671m0aBHr1q1zKS5eqV1VnltQUMDhw4ed5+np6ezevdv5ZygiIiIidYfWi6xZKkY2cBlpZ8h/fxctHb4UVDr4NqKCh8YOMDqWiIjUkPO7SUdGRrq87unpic1mY+/evURHR3PixAnc3Fz/2k9KSmLs2LEXTKH+X7GxsRQXF9OrVy8sFgtPPvmky+jKV155BbvdzujRo8nPz6dnz55s2LCBpk2bAjBt2jTS09O59957CQgI4MUXX6z2yEiAV199lYKCAoYOHYqfnx9PP/00eXl51X7OecOHD+f06dNMnz6drKwsunXrxueff+6y+UxOTg5paWnValeV5+7cuZMBA378+zguLg6AMWPGkJSUdNXvSURERERqlsPhcO6k3VwjI2uEyXGlf4E0AjabjYCAAPLy8vD39zc6To35IbuQvQu+pL0jgBK7g60BxYx69m6XTQhERARKSkpIT0+nXbt2eHl5GR2nRq1atYpTp04RExPD+PHj2bx5M76+vgAkJCSwefNmNm3aZGxIqZLL/Zw21O8yjYk+QxERkbqp4EwJq6f9G5PZxKML+uLmUb0ZPo1JVb/PaM3IBqqgoJQdC/9Be0cAZXYH33gWMPIPd6kQKSLSyKSmptKlSxe6d+/O448/ziOPPOK89tlnnzF79mwD04mIiIiI1G2n/7t5TdOwJipE1hBN026ASssq2Jj4GT+zN6PC4eBf5nxGTf8FZu34JCLS6CxcuND53+PGjXOu4wiwfft2IyKJiIiIiNQb5zev0RTtmqPqVANTWWln3Qt/52f2ZtgdDr6pLGBEQgxu7qrei4iIiIiIiIhUhzavqXkqRjYgDoeD92b+ndsrm+FwONhaXsiw6Xfi4a0BsCIiIiIiIiIi1eUcGdna1+AkDYeKkQ3Imlmf0b/03M6l1rJi7n72Dpr4exqcSkRERERERESk/ikuKKPgTCkAwa00MrKmqBjZQPxlbjL9889V6b8tLeW2+F4EBqtqLyIiIiIiIiJyNXIyzm1eE9DcW7NOa5CKkQ3Ax8u/Ifq0GyaTicNlZdz0eBdCw5saHUtEREREREREpN46/d/1IoO1eU2NUjGynvvHe7voml6OBTPHyioIGX0DbSLDjI4lIiIiIiIiIlKvnT6m9SKvB40xrce2fnKANv85gwfuZJfbsfwyjE63tjM6loiIiEiNslqtzJkzh7Nnz3LLLbcwYcIE2rXTdx4RERG5vn7cvEYjI2uSRkbWU/u2ZOD/r+N4405uhR1bXz969b/Z6FgiIiIiNW748OHce++9zJo1ixtvvJH777+fL774wuhYIiIi0oCVFVeQd6oYgOaapl2jNDKyHjq2L4fSv+2nOU2wVTrIuMWNe3/V3ehYIiIiItdF06ZNGTlyJAC33nor9913HwMHDuTuu+82OJmIiIg0VDnHz21e49vUE28/D4PTNCwaGVnP5By3cfztbTR3NKHI7uDb1hXcO6aP0bFERERErpv27dszd+5cHA4HAIGBgcYGEhERkQbv/BRtbV5T81SMrEcKz5awZ/EmIhz+lNodbA8q5oFJA4yOJSIiDVz//v2ZMmWK0TEuqa7nk2tXWlrK0qVLad26Nb/4xS/o0qULgwYN4sSJE0ZHExERkQYq5/zmNRHavKamqRhZT5QVV7D5T58T6WhKucPBN14FjJp6NyaTyehoIiJSB/Tr1w+TyXTBERsba3S0Om/x4sW0bdsWLy8vevfuzfbt26+5zVdffcXQoUMJDw/HZDLx8ccf11jfjdFHH33E4cOHOXDgADNmzOCpp56itLSUESNG0KFDB6PjiYiISAP0407aGhlZ01SMrAcqKyv55MW/0dXRjEqHg3+ZbIya/gtMZhUiRUQEHA4Hu3btYs6cOWRmZrocS5YsMTpenbZ27Vri4uJISEjAarUSFRVFTEwMp06duqY2hYWFREVFsXjx4hrtu6H77W9/S1FR0SWv+/j4cNttt/Hoo4+yaNEivvrqKw4fPlyLCUVERKQxqCivJDfz3HcSTdOueddcjLRarYwcOZJ77rmHZ555hvT09JrIJT/xQcLf+Jm9OQ6Hg2/s+YyYORiLm+rIIiJyzqFDh8jPz6dv376EhYW5HL6+NTOtpKKigkmTJhEQEEBwcDDPP/+8c/2+0tJSJk+eTEhICF5eXtx+++3s2LHDpX3btm1ZsGCBy2vdunVjxowZzvP+/fszefJkpk6dSlBQEGFhYS7X4VyRLzY2Fl9fX1q0aMHcuXOv6X3NmzeP8ePHM3bsWDp16sSyZcto0qQJb7zxxjW1GTx4MC+99BLDhg2r0b4burfffpuCggLn+cSJEzl79qzLPRUVFbWcSkRERBqbH04U4rA78PJ1x7epp9FxGpxrrmgNHz6ce++9l1mzZnHjjTdy//3388UXX9RENgHee2E9fSqCAdhWUciwhLtw97AYnEpEpOFzOBwUlRfV+nG+wFcdKSkpuLm50bVr1+vwJ3HO6tWrcXNzY/v27SxcuJB58+axcuVKAKZOncqHH37I6tWrsVqtdOjQgZiYGHJzc6+qHx8fH7Zt28bs2bOZOXMmGzdudF6Pj49n8+bNrF+/ni+++IJNmzZhtVqd1xMTE/H19b3skZGRAUBZWRkpKSkMGjTI2d5sNjNo0CC2bNly0XxX0+Z6Pqeh+d+f/3feecfl5yg7Oxt/f//ajiUiIiKNzMlDZwEIaeOv5fGuA7drfUDTpk0ZOXIkALfeeiv33XcfAwcO5O67777mcI3d+698yh3FQQDsKisiZnp/vH21nbyISG0oriim97u9a73fbSO30cS9SbXaWK1WKisradasmcvro0aNYvny5TWSKyIigvnz52MymejYsSN79uxh/vz5jBw5kqVLl5KUlMTgwYMBWLFiBRs3bmTVqlXEx8dXq5+uXbuSkJAAQGRkJIsWLSI5OZm77rqLgoICVq1axZo1a7jzzjuBc8XLVq1aOdtPmDCBhx566LJ9hIeHA5CTk0NlZSWhoaEu10NDQzlw4MBF215Nm+v5nIbuYsX5kpISA5KIiIhIY3J0bw4ArTsHGZykYbrmYmT79u2ZO3cucXFxmEwmAgMDayCWrHvtn9x2xhdMsL+shNvib8Mv0NvoWCIiUgdZrVZGjBjBCy+84PJ6UFDNfXm67bbbXH4rHB0dzdy5czl8+DDl5eX06dPHec3d3Z1evXqxf//+avfzv6M7W7Ro4VxDMS0tjbKyMnr3/rFIHBQURMeOHV3Oa/J9S92j0QkiIiJyPZUVV5B5KA+ANl2aXeFuuRrXXIwsLS1l6dKlLFiwgM6dO3P06FHuueceTpw4QcuWLWsiY6Pzxeot3Hrcgtlk4khZGTc90ZXmLQKMjiUi0qh4u3mzbeQ2Q/qtLqvVyqxZsy65q/CwYcPw9PQkLS2N3Nxc1q5dS8+ePa81arWYzeYLRrmVl5dfcJ+7u7vLuclkwm63V7mfxMREEhMTL3vPvn37aN26NcHBwVgsFrKzs12uZ2dnExYWdtG2V9Pmej6nIXr33Xfp27cvt9xyi9FRREREpBE6diAXu91BQIg3gSHVm7EkVXPNxciPPvoIOLeg/J49e0hNTSU1NZURI0Zw8uRJ7XBYTf/+OJX2+0txM1k4UV5B89hIItqHXrmhiIjUKJPJVO3p0kY4cuQIZ8+eJSoq6pL3pKam8thjj/GXv/yFd955h7lz5/Lee+9Vq59t21wLs1u3biUyMpIOHTrg4eHBN998Q5s2bYBzRcYdO3YwZcoU5/3NmzcnMzPTeW6z2aq96V379u1xd3dn27ZttG7dGoAzZ85w8OBB+vXrB1RvmraHhwc9evQgOTmZ++67DwC73U5ycjKTJk26aNuraXM9n9PQ3HHHHSQkJJCfn4+7uzsVFRUkJCTQp08funXrRvPmzY2OKCIiIg3c0b0/ABoVeT1VuRj529/+liVLltCkycX/Yebj48Ntt93GbbfdVmPhGpvUzYdotjUHT9w5XVGJaWg4N3drbXQsERGpw1JSUoBzaw1mZWW5XAsJCaGoqIiSkhKefvppAG6++WbefvvtaveTkZFBXFwcjz32GFarlddee425c+fi4+PDxIkTiY+PJygoiNatWzN79myKiooYN26cs/3AgQNJSkpi6NChBAYGMn36dCyW6m3I5uvry7hx44iPj6dZs2aEhITw3HPPYTb/uB9fdadpx8XFMWbMGHr27EmvXr1YsGABhYWFjB071nnPokWLWLduHcnJyVVuU1BQ4PIL2fT0dHbv3u38M6rqcxqbzZs3A+d2iE9JScFqtWK1Wnn22Wc5e/aspmiLiIjIdeVwOFSMrAVVLka+/fbbzJ4921mMnDhxIi+//LLLGpEVFRW4uV3zYMtG6fvUTEyffY8PXpytsHOmTyAD+3e8ckMREWnUzu8kHRkZ6fK6p6cnNpuNPXv20LlzZ2fhz2q1ukx/TUpKYuzYsVfcxTs2Npbi4mJ69eqFxWLhySef5NFHHwXglVdewW63M3r0aPLz8+nZsycbNmygadOmzvbTpk0jPT2de++9l4CAAF588cVqj4wEePXVVykoKGDo0KH4+fnx9NNPk5eXV+3nnDd8+HBOnz7N9OnTycrKolu3bnz++ecuG8vk5OSQlpZWrTY7d+5kwIABzvO4uDgAxowZQ1JSUpWf01hFRkYSGRnJww8/7HwtPT2dnTt3smvXLgOTiYiISEOWc7yAorwy3DzMhEcGGh2nwTI5rvSvj/8ym81kZWUREhICgL+/P7t37+aGG24Azq1x1K5dO4qKiq5f2uvEZrMREBBAXl4e/v7+td7/qaNnOLZsG6EOHwoqHRzq4sbQMT+v9RwiIo1VSUkJ6enptGvXDi8vL6Pj1Kjly5czb9489u7di81mY+DAgXz00Ue0b98egISEBDZv3symTZuMDSpXdLmfU6O/y8i102coIiJivJ2ffc+29Udo2zWYIY93vXIDcVHV7zNXPYzxYjXMkpKSq31co5X/QxGHln1DG0cAxXYHqRGVPDSmr9GxRESkgUhNTeWee+6hR48eOBwOZs+e7SxEAnz22WcsWrTIwIQiIiIiInXD0T2aol0banROtdbxqZ7SwjK2z9lIR0cQZXYHWwOL+c3/3W10LBERaUBSU1N59913mT9//kWvb9++vZYTiYiIiIjUPSUF5WSnn1v+R8XI68t85Vt+9O6772K1WikvL79eeRqNyopK/jHr73R0BFHhcPAvr3x+M+1uFXRFRKRGnThxgoiICKNjiIiIiIjUaRn7f8DhgKBwH/yCGtbSTXVNlUdG3nHHHSQkJJCfn4+7uzsVFRUkJCTQp08funXrRvPmza9nzgbF4XDwtxkf8zN7CHaHg3+ZbIxOuEeFSBERqXFHjhwxOoKIiIiISJ2nXbRrT5WLkZs3bwbg0KFDpKSkYLVasVqtPPvss5w9e1aFtGr44IV1RFeE4HA4+Maez4jEwZgt1RqkKiIiItIoHD9+nPDwcMxmfVcSERGR68Nud5DxbS6gYmRtqPaakZGRkURGRvLwww87X0tPT2fnzp3s2rWrRsM1RH9N/BvRJedGkW6vKOD+l+7Gzd1icCoRERGRuqlTp07s3r2bG264wegoIiIi0kCdOmqjpKAcD283wtoHGB2nwauRDWzatWtHu3btePDBB2vicQ3WR3P/TrStKQD/KSvk7oQBeHq7G5xKREREpO5yOBxGRxAREZEG7vwU7Yibg7Bo5up1pz/hWuBwOHh3ynN45J4b8vtdWQm9pv4cvwBvg5OJiIiIiIiIiDRuR/dovcjaVCMjI+XyNn/8/zga4E2p6Qi2sjP0Gvsrmof5Gx1LREREpM556623XM4rKir46KOPCAkJcb4WGxtb27FERESkgSrMK+V0Rj4ArTsHGZymcVAxshb8fPA97P/me7J9cznoc4acpTN4fMHruHl4GB1NREREpE558803Xc7Ly8v54IMP8PY+N6PEZDKpGCkiIiI15vzGNc1b++ET4GlwmsZBxcha4OHlxvjEJ1j+/FROe/uR27wNrz/1GBP+vBKzRZvXiIiIiJz35Zdfupz7+fnx7rvvagMbERERuS7OrxepKdq1R2tG1hI3DwsTX36V5gWnwWTiVLMI3oifqEXZRUREREREREQMUFlp59j+cyMjVYysPTVajDSbzQwcOJCUlJSafGyDYTabefTlBTTNzwGzmeM+obzzxylGxxIRERERERERaXSyj+RRVlyBl687IW21t0dtqdFi5BtvvEHfvn154oknavKxDYq7uzu/m/kyfvm5YLGQZvLlw1f+aHQsERERkTrp2WefJShIi8mLiIhIzTs/Rbt15yDMZpPBaRqPGi1G/va3v2XGjBls3bq1Jh/b4Pj4+PHbZ5+jSaENh5s7e/Mr+XzZPKNjiYiIiNQ506ZNIzAw0OgYIiIi0gB9v0frRRrhmouRK1eurIkcjU6zZqGMfGICnsWFONw92X40m3+/v9roWCIiIi769+/PlClTjI5xSXU9n4iIiIjUTfm5JeSeLMRkgtY3qxhZm665GPn3v/+df/7zn87zoqIiHn744Wt9bKPQqu2NDBv5a9xKS7B7epOcsof//ONTo2OJiEg91K9fP0wm0wVHbGys0dHqtMWLF9O2bVu8vLzo3bs327dvv+Z2X331FUOHDiU8PByTycTHH39co32LiIiIyLU7P0U7tF0AXr7uBqdpXK65GPnWW28xffp0Dhw4wMGDB+nbty8xMTE1ka1RuCnqNgbH3IG5vJxKb1/+3+cbOZKiae4iIlJ1DoeDXbt2MWfOHDIzM12OJUuWGB2vzlq7di1xcXEkJCRgtVqJiooiJiaGU6dOXVO7wsJCoqKiWLx4cY33LSIiIiI143wxUlO0a99VFyOfeuopVq9ezZEjR1i5ciWjRo1i+PDhrFy5krFjx9ZkxgavR/8h9O/ZEVNlBRW+Abz3zrtkpX1ndCwREaknDh06RH5+Pn379iUsLMzl8PX1vebnV1RUMGnSJAICAggODub555/H4XA4r5eWljJ58mRCQkLw8vLi9ttvZ8eOHc7rbdu2ZcGCBS7P7NatGzNmzHCe9+/fn8mTJzN16lSCgoIICwtzuQ7ninyxsbH4+vrSokUL5s6de03va968eYwfP56xY8fSqVMnli1bRpMmTXjjjTeuqd3gwYN56aWXGDZsWI33LSIiIiLXrrLczvEDuYCKkUa46mLkgAEDOHbsGImJiTz44IOkp6cTHh7Ohg0b+OSTT2oyY6PQd1gsvdsFgd1OuX8QSX9eSF5WptGxREQaLYfDgb2oqNaPnxb5qiolJQU3Nze6du16Hf4kYPXq1bi5ubF9+3YWLlzIvHnzXNaMnjp1Kh9++CGrV6/GarXSoUMHYmJiyM3NrXY/Pj4+bNu2jdmzZzNz5kw2btzovB4fH8/mzZtZv349X3zxBZs2bcJqtbo8IzExEV9f38seGRkZlJWVkZKSwqBBg5xtzWYzgwYNYsuWLZfMeLXtavoZIiIiInL1Th46S0WZnSYBHgRHXPsv76V63Kp6429/+1uWLFlCkyZNAPjlL3/JL3/5S+f1kpIS9u7dS2pqKv/4xz8YMmRIzadt4H7xSBzF8xP4z1kHJU1DWD4rgUmJc2ji5290NBGRRsdRXMx33XvUer8drSmY/vt3bVVZrVYqKytp1sz1t7qjRo1i+fLlrF+/ni+//PKC0YlVFRERwfz58zGZTHTs2JE9e/Ywf/58xo8fT2FhIUuXLiUpKYnBgwcDsGLFCjZu3MiqVauIj4+vcj9du3YlISEBgMjISBYtWkRycjJ33XUXBQUFrFq1ijVr1nDnnXcC54qXrVq1cnnGhAkTeOihhy7bT3h4OKdOnaKyspLQ0FCXa6GhoRw4cOCSbXNycq6qXU0/o7FZuXIlv/vd74yOISIiIg3ET6dom0wmg9M0PlUeGfn2229TUFDgPJ84cSJnz551nnt5edGtWzceeeQR5s+fX6MhG5NhT71AR7d8AIqahbN0WhxlJcUGpxIRkbrMarUyYsQIdu/e7XK8/PLLAKSmphIVFXXVz7/ttttcvqRFR0dz6NAhKisrSUtLo7y8nD59+jivu7u706tXL/bv31+tfv53ZGeLFi2cayimpaVRVlZG7969ndeDgoLo2LGjS5ugoCA6dOhw2cPNrcq/i5U6oiY3TKzqBkM/tWnTJrp3746npycdOnQgKSnpgntOnDjBb37zG5o1a4a3tze33HILO3fuvKqMIiIicn19vzcH0BRto1T52/j/Tht75513iI+PJzAwEIDs7GzatWtHUVFRjQZsjEY8P4+3pj3OEc8Q8oNbsSz+/3hi/lIsbtrdSUSktpi8veloTTGk3+qyWq3MmjWLDh06XPR6amoqQ4YMwWazMXr0aIYMGcKjjz56rVGrzGw2X/A9ory8/IL73N1d/54zmUzY7fZq9ZWYmEhiYuJl79m3bx9hYWFYLBays7NdrmVnZxMWFnbJtsHBwVfVrqaf0di89dZb3HPPPYSHh2M2mxk5ciRPPPHEVT3r/AZDjzzyCPfff/8V709PT2fIkCFMmDCBd955h+TkZH73u9/RokUL56aNZ86coU+fPgwYMIDPPvuM5s2bc+jQIZo2bXpVGUVEROT6OZtdRN6pYsxmExE3BRkdp1G66qEBF1vTqqSk5JrCyI9Gz1rEqvgJHPcLJzeoJa/HT+KxuUswmy1GRxMRaRRMJlO1p0sb4ciRI5w9e/ayIx/379+Pt7c3gwcPZsaMGdx1113V6mPbtm0u51u3biUyMhKLxUL79u3x8PDgm2++oU2bNsC5QuOOHTuYMmUKAM2bNycz88d1kG02G+np6dXK0L59e9zd3dm2bRutW7cGzhWADh48SL9+/Zz3VXWatpubGz169CA5OZn77rsPALvdTnJyMpMmTbpkWw8Pj6tqV9PPaCyeeuopunXrRlRUlHPDRLvdzptvvkm3bt2u6pmDBw92LilQFcuWLaNdu3bODZNuvvlmvv76a+bPn+8sRv7pT38iIiKCN99809muXbt2V5VPRERErq+j356bot0iMgAPb82YMUKN/qlrnn3NMZnNjP3TYl7//RNkB4aT7RdK0nNPMTZxof6cRUTEKSXl3OjN0NBQsrKyXK6FhIRQWlrKiRMnGDlyJGvWrKFz587V7iMjI4O4uDgee+wxrFYrr732mrMw4+Pjw8SJE4mPjycoKIjWrVsze/ZsioqKGDduHAADBw4kKSmJoUOHEhgYyPTp07FYqvfLNV9fX8aNG0d8fDzNmjUjJCSE5557DrPZdcWZoKAggoKq9hvuuLg4xowZQ8+ePenVqxcLFiygsLCQsWPHOu9ZtGgR69atIzk5ucrtCgoKOHz4sPP+9PR0du/e7fzzqWrfcm7DxNTUVD755BP279/PiRMniI6OZsOGDZw4caJW1ijfsmWLy2ZDADExMc5iO8Df/vY3YmJiePDBB9m8eTMtW7bk8ccfZ/z48Zd8bmlpKaWlpc5zm81W49lFRETkQhnn14vsHGxwksarWsXId999l759+3LLLbdcrzzyExY3dx55eT6vT/s9PwSGkuEWwHuznmXkH182OpqIiNQR53eTjoyMdHnd09MTm83G3r17iY6O5sSJExeslZiUlMTYsWOvuIN3bGwsxcXF9OrVC4vFwpNPPukyzfuVV17BbrczevRo8vPz6dmzJxs2bHBOUZ02bRrp6ence++9BAQE8OKLL1Z7ZCTAq6++SkFBAUOHDsXPz4+nn36avLy8aj/nvOHDh3P69GmmT59OVlYW3bp14/PPP3fZWCYnJ4e0tLRqtdu5cycDBgxw3h8XFwfAmDFjnGsNVqXvxqgubpiYlZV10c2GbDYbxcXFeHt7c+TIEZYuXUpcXBzPPvssO3bsYPLkyXh4eDBmzJiLPvfll1/mhRdeuO75RURE5EflpZWcOHgW0HqRRjI5rvQvkP/q168fu3fvJj8/H3d3dyoqKhg5ciR9+vShW7duNG/enBtvvJHKysrrnbnG2Ww2AgICyMvLw9+/7u1cbcs9xcqXZmLzD8ZUUU63EH9+NfkZo2OJiDQYJSUlpKen065dO7y8vIyOU6NWrVrFqVOniImJYfz48WzevBlfX18AEhIS2Lx5M5s2bTI2pFTJ5X5O6/p3maqyWCxkZmYSEhICnNsw8eWXX3auUQ5QUVFRY5sQmUwm1q1b55wufzE33ngjY8eOZdq0ac7XPv30U4YMGUJRURHe3t54eHjQs2dP/v3vfzvvmTx5Mjt27GDLli0Xfe7FRkZGRETU+89QRESkLvs+NYdPlqTiF+TF6FnRmnlaw6r6nbTKu2lv3ryZvLw8vvvuO1avXs3TTz9NZmYmzz77LD//+c+58cYbayS4XMg/KITfPP0UTQrycLi5szs7j+S3VxgdS0RE6oHU1FS6dOlC9+7defzxx3nkkUec1z777DNmz55tYDoRVxfbMDE3N9d5np2dXeuFurCwsItuNuTv74/3fzecatGiBZ06dXK55+abbyYjI+OSz/X09MTf39/lEBERkevr6Pkp2rc0UyHSQNX+tXJkZCSRkZE8/PDDztfS09PZuXMnu3btqtFw8qOQlu15cOwI/vLW+5R6+/LNvsP4/v1Det/7a6OjiYhIHbZw4ULnf48bN865jiPA9u3bjYgkUmV1YcPE6OhoPv30U5fXNm7cSHR0tPO8T58+fPfddy73HDx40Lmpk4iIiBjP4XDw/d4cQFO0jVblkZGX065dOx588EESExNr4nFyCe069+KXvxqEW2kJdk9vNvxrK/u+2Wx0LBEREZFac62jGAoKCti9eze7d+8Gftxg6PwoxmnTphEbG+u8f8KECRw5coSpU6dy4MABlixZwvvvv89TTz3lvOepp55i69atJCYmcvjwYd59911ef/11nnjiiWvKKiIiIjUnN7OQgtxSLG5mWnZsanScRq1GipFSezr//Bfc3acL5vIy7N4+fPTxeo5+m2p0LBEREZEa8e6772K1WikvL78uz9+5cye33nort956K3Bug6Fbb72V6dOnA5CZmekyvbpdu3Z88sknbNy4kaioKObOncvKlSuJiYlx3vOzn/2MdevW8d5779GlSxdefPFFFixYwKhRo67LexAREZHqOz9Fu2XHQNw9LAanadyqvIFNQ1YfF33f/PYCNh3MwWFxw912hseeiiM4QlOBRESuRkPewEYajsawgU1D3jDxShrKZygiIlJXfTzPyomDZ7ljeCRdB0QYHadBqvENbKRu6Td6Cr1DLGC3U+7flBVzZ2P7IcfoWCIiIiJXTRsmioiIyPVQWlxB5uE8QOtF1gXV3sBG6o5f/N8LlL40hV3lAZQGNmfZC3/k/xJfxdvXz+hoIiIiIldNGyaKiIhITTq+Pxe73UFgaBMCmjcxOk6jp5GR9dyv/riAzmWZABQFhbHkuXjKy0oNTiUiIiJSs7RhooiIiFyt8+tFalRk3aBiZAPwYOJyIvO+ByC/aRhLn5lCZUWFsaFERERERERERAzmsDtUjKxjVIxsCEwmRry6gjY/fA9Arn8Irz/7FA673dhcIiIiIiIiIiIGyjleQJGtDDdPC+EdAo2OI6gY2WCY3dwZ/epiWvxwDEwmsr2b8uYLf0CbpYuIiIiIiIhIY3V077nNfiNuaorFXWWwukCfQgPi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S+TqiLE5k55UPjoXQgghhBBCCCGEEEJ0CAkjhRBCCCGEEEIIIYQQHULCyA5itVp55JFHsFqt4S5FHEfGJjLJuEQuGZvIJOMSuWRsRCSR/4+RScYlcsnYRCYZl8gk4xK5Im1sZAIbIYQQQgghhBBCCCFEh5AjI4UQQgghhBBCCCGEEB1CwkghhBBCCCGEEEIIIUSHkDBSCCGEEEIIIYQQQgjRISSMFEIIIYQQQgghhBBCdAgJI8+h5557jh49emCz2Rg/fjxffPHFadd/4403GDBgADabjaFDh7J06dIOqrT7acvYvPDCC1x44YUkJCSQkJDAlClTvnYsxdlp6/fMEa+//jqapjFnzpz2LbAba+vY1NXVcdddd5GRkYHVaqVfv37yM60dtHVcnn76afr374/dbicnJ4ef/vSneDyeDqq2e1i9ejUzZ84kMzMTTdNYvHjx126zatUqRo0ahdVqpU+fPrz00kvtXqfoPqQfjVzSj0Ym6Ucjl/SjkUn60cjU6XpSJc6J119/XVksFvWPf/xDffXVV+r2229X8fHxqry8/KTrr127VhmNRvXkk0+q7du3qwcffFCZzWZVUFDQwZV3fW0dm+uvv14999xzasuWLWrHjh3qlltuUXFxcerw4cMdXHnX1tZxOaKwsFBlZWWpCy+8UM2ePbtjiu1m2jo2Xq9XjRkzRk2bNk2tWbNGFRYWqlWrVqn8/PwOrrxra+u4vPLKK8pqtapXXnlFFRYWqg8//FBlZGSon/70px1cede2dOlS9ctf/lK99dZbClCLFi067fr79+9XUVFR6p577lHbt29XzzzzjDIajeqDDz7omIJFlyb9aOSSfjQyST8auaQfjUzSj0auztaTShh5jowbN07dddddLY+DwaDKzMxU8+fPP+n6c+fOVdOnT2+1bPz48eoHP/hBu9bZHbV1bI4XCARUTEyMevnll9urxG7pbMYlEAioiRMnqr///e/q5ptvluavnbR1bJ5//nnVq1cv5fP5OqrEbqmt43LXXXepSy65pNWye+65R51//vntWmd3diaN33333acGDx7catm8efPU1KlT27Ey0V1IPxq5pB+NTNKPRi7pRyOT9KOdQ2foSeU07XPA5/OxadMmpkyZ0rLMYDAwZcoU1q1bd9Jt1q1b12p9gKlTp55yfXF2zmZsjudyufD7/SQmJrZXmd3O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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -897,21 +942,22 @@ "x_t_exp = np.array(x_t_exp)\n", "dx_dt_exp = np.array(dx_dt_exp)\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", - "ax1.set_xlabel('t')\n", - "ax1.set_ylabel('E_k, E_p')\n", - "ax1.set_title(\"E_k and E_p vs t for different bounds\")\n", - "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", - "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", - "ax2.set_title(\"E_k+E_p vs t for different bounds\")\n", - "ax2.set_xlabel('t')\n", - "ax2.set_ylabel('E_k+E_p')\n", - "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "ax1.set_xlabel(r'$t$')\n", + "ax1.set_ylabel(r'$E_k$, $E_p$')\n", + "ax1.set_title(r'$E_k$ and $E_p$ vs $t$ for different bounds')\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=r'$E_p$ expected')\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=r'$E_k$ expected')\n", + "ax2.set_title(r'$E_k$ + $E_p$ vs $t$ for different bounds')\n", + "ax2.set_xlabel(r'$t$')\n", + "ax2.set_ylabel(r'$E_k$ + $E_p$')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=r'$E_p$ + $E_k$ expected')\n", "for i in range(4):\n", - " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, bound={:.3f}\".format(bound_vals[i]))\n", - " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, bound={:.3f}\".format(bound_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=r'$E_p$, bound={:.3f}'.format(bound_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=r'$E_k$, bound={:.3f}'.format(bound_vals[i]))\n", " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"bound={:.3f}\".format(bound_vals[i]))\n", "ax1.legend(loc='best')\n", "ax2.legend(loc='best')\n", + "plt.savefig('ek-ep-vs-t-bounds.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, @@ -933,7 +979,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 12, "id": "b850159c", "metadata": {}, "outputs": [ @@ -941,7 +987,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The circuit width is 9 and the circuit_depth is 4994.\n" + "The circuit width is 9 and the circuit_depth is 4553.\n" ] } ], @@ -965,7 +1011,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 13, "id": "1ca2cc13", "metadata": {}, "outputs": [ @@ -973,7 +1019,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "The constrained circuit width is 15 and the circuit_depth is 2324.\n" + "The constrained circuit width is 15 and the circuit_depth is 2426.\n" ] } ], @@ -997,7 +1043,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 14, "id": "c9362625", "metadata": {}, "outputs": [ @@ -1024,12 +1070,12 @@ "id": "0308d8b9", "metadata": {}, "source": [ - "So the minimum circuit width possible is when we have exactly one extra auxiliary qubit beside the work qubit and the 5-qubit ancilla register. The circuit width and depth turn out to be fairly flexible to optimization. Let's also see how for the unconstrained condition, the circuit depth and width depend on the bound value for state preparation." + "So the minimum circuit width possible is when we have exactly one extra auxiliary qubit beside the singular work qubit and the 5-qubit ancilla register. The circuit width and depth turn out to be fairly flexible to optimization. Let's also see how for the unconstrained condition, the circuit depth and width depend on the bound value for state preparation." ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 15, "id": "0e917eb6", "metadata": { "scrolled": true @@ -1070,20 +1116,18 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 16, "id": "6f7d0e89", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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d+4UWX/lyhXpdvzSaN++PczMzDBz5kzk5uYqrHvxv+S6devi77//VrhjdcuWLUhOTn7tPuRj6SkzMK38A2bRokUK+3/5zlegsIcmPj4eMTExRdY9evQIz549U1i2adMmhSEQjh49iiNHjij05pQm1uJkZ2cXOY5169aFmZnZK/8jlv/X/XLPRHHtVpa8XQsXLixzna1atUJeXh7mz5+Pd999V/riatWqFX755Rfcvn37ldfblTaONz3++fn5RU5h2djYwMHBQakeicDAQNSoUQO///47fv/9dzRv3lzhNFpZf78vWrx4sfSzEAKLFy+Gvr4+2rVrBwDo1KkT8vPzFcoBwLx58yCTyaTjaW5ujpo1axa5tnTJkiVKxVEcVbxnilO3bt0icf7www+v7GV8FWU+t5o1awYbGxt89913Cr+b7du34/z582W6A/jlYYl0dHTg4+MDANI+yvIeLu7vPz09HStWrCh1jCVp2rQp6tati7lz50rDFr1IPtSMrq4ugoKCsGnTJty4cUNaf/78+WI/a0mzeFq2kqtbty7WrFmDnj17on79+ujfvz8aNGiAJ0+e4PDhw1i/fn2Znrtqbm6OefPmISwsDG+99Rb69OmD6tWr4/Tp08jOzpZONYSFhWHDhg3o0KEDQkNDceXKFfz6669Frs0pTtOmTQEUXqQdFBQEXV1d9OrVq9iy8rGlZs6cic6dO6NTp044deoUtm/fLg2NITd+/Hhs3rwZnTt3xsCBA9G0aVM8fvwYiYmJ2LBhA65du6awjZubG959910MHz5cSlisrKwUTuuWJtbiXLx4Ee3atUNoaCi8vLygp6eHP/74A3fu3HllPebm5tL1W0+fPkWtWrWwc+dOJCUlKb3vlzVq1Ai9e/fGkiVLkJ6ejpYtW2L37t3Fjn1VEj8/P+jp6eHChQv46KOPpOWtW7eWxuB6XXJXmjjkx3/y5Mno1asX9PX10aVLF6UH287MzISjoyM++OAD+Pr6olq1ati1axeOHTumVM+avr4+evTogbVr1+Lx48dFniVc1t+vnJGREXbs2IEBAwagRYsW2L59O7Zu3Yr//e9/0qntLl26ICAgAJMnT8a1a9fg6+uLnTt34s8//0RERITC31xYWBi++uorhIWFoVmzZti/f7/UE1gWpX3PyGQy+Pv7K9yEUpywsDAMGzYMISEheO+993D6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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1098,6 +1142,7 @@ "p1 = ax1.plot(bound_vals, circuit_widths, 'r.', markersize=8, label=\"Width\")\n", "plt.title(\"Circuit depths and widths vs bound, unconstrained\")\n", "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.savefig('dephts-widths-vs-bound.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, @@ -1114,7 +1159,7 @@ "id": "30654b60", "metadata": {}, "source": [ - "### k optimization" + "### **3.3. k optimization**" ] }, { @@ -1127,7 +1172,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "264cfd0a", "metadata": { "scrolled": true @@ -1143,31 +1188,96 @@ "QMOD synthesized.\n", "x(t)=1.095 and dx/dt(t)=0.894 at t=0.1.\n", "QMOD synthesized.\n", + "x(t)=1.178 and dx/dt(t)=0.782 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.660 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.532 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.356 and dx/dt(t)=0.400 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.389 and dx/dt(t)=0.260 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.409 and dx/dt(t)=0.125 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.022 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.406 and dx/dt(t)=0.162 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.382 and dx/dt(t)=0.303 at t=1.0.\n", + "Studying k=15...\n", + "QMOD synthesized.\n", + "x(t)=1.000 and dx/dt(t)=1.000 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.895 at t=0.1.\n", + "QMOD synthesized.\n", "x(t)=1.179 and dx/dt(t)=0.782 at t=0.2.\n", - "QMOD synthesized.\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Input \u001b[1;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 11\u001b[0m dx_dt_exp_k \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m t_val \u001b[38;5;129;01min\u001b[39;00m t_vals_2:\n\u001b[1;32m---> 13\u001b[0m [x_t, dx_dt] \u001b[38;5;241m=\u001b[39m \u001b[43msimulate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mt_val\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mt_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mk_val\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtotal_counts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1e6\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneed_sign_correction\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m \n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# sign correction is unnecessary since energies are not sign-sensitive\u001b[39;00m\n\u001b[0;32m 15\u001b[0m x_t_exp_k\u001b[38;5;241m.\u001b[39mappend(x_t)\n", - "Input \u001b[1;32mIn [7]\u001b[0m, in \u001b[0;36msimulate\u001b[1;34m(t_val, k, total_counts, need_sign_correction)\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[38;5;66;03m# show(quantum_program)\u001b[39;00m\n\u001b[0;32m 17\u001b[0m job \u001b[38;5;241m=\u001b[39m execute(quantum_program)\n\u001b[1;32m---> 18\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mjob\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39mvalue\u001b[38;5;241m.\u001b[39mparsed_counts\n\u001b[0;32m 19\u001b[0m wq_count0, wq_count1 \u001b[38;5;241m=\u001b[39m results2counts(results)\n\u001b[0;32m 20\u001b[0m sign_correction_factor \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:45\u001b[0m, in \u001b[0;36msyncify_function..async_wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(async_func)\n\u001b[0;32m 44\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21masync_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs: Any, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Any) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[1;32m---> 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43masync_func\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\classiq\\_internals\\async_utils.py:39\u001b[0m, in \u001b[0;36mrun\u001b[1;34m(coro)\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun\u001b[39m(coro: Awaitable[T]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m T:\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# Use this function instead of asyncio.run, since it ALWAYS\u001b[39;00m\n\u001b[0;32m 36\u001b[0m \u001b[38;5;66;03m# creates a new event loop and clears the thread event loop.\u001b[39;00m\n\u001b[0;32m 37\u001b[0m \u001b[38;5;66;03m# Never use asyncio.run in library code.\u001b[39;00m\n\u001b[0;32m 38\u001b[0m loop \u001b[38;5;241m=\u001b[39m get_event_loop()\n\u001b[1;32m---> 39\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcoro\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:83\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 81\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 83\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 84\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\nest_asyncio.py:106\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 99\u001b[0m heappop(scheduled)\n\u001b[0;32m 101\u001b[0m timeout \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 102\u001b[0m \u001b[38;5;241m0\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m ready \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping\n\u001b[0;32m 103\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mmin\u001b[39m(\u001b[38;5;28mmax\u001b[39m(\n\u001b[0;32m 104\u001b[0m scheduled[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;241m.\u001b[39m_when \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime(), \u001b[38;5;241m0\u001b[39m), \u001b[38;5;241m86400\u001b[39m) \u001b[38;5;28;01mif\u001b[39;00m scheduled\n\u001b[0;32m 105\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m--> 106\u001b[0m event_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_selector\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 107\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_events(event_list)\n\u001b[0;32m 109\u001b[0m end_time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clock_resolution\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:324\u001b[0m, in \u001b[0;36mSelectSelector.select\u001b[1;34m(self, timeout)\u001b[0m\n\u001b[0;32m 322\u001b[0m ready \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 324\u001b[0m r, w, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_select\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_readers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_writers\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mInterruptedError\u001b[39;00m:\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ready\n", - "File \u001b[1;32m~\\AppData\\Local\\Programs\\Python\\Python310\\lib\\selectors.py:315\u001b[0m, in \u001b[0;36mSelectSelector._select\u001b[1;34m(self, r, w, _, timeout)\u001b[0m\n\u001b[0;32m 314\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_select\u001b[39m(\u001b[38;5;28mself\u001b[39m, r, w, _, timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m--> 315\u001b[0m r, w, x \u001b[38;5;241m=\u001b[39m \u001b[43mselect\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mselect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 316\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m r, w \u001b[38;5;241m+\u001b[39m x, []\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.660 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.530 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.398 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.390 and dx/dt(t)=0.262 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.408 and dx/dt(t)=0.123 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.414 and dx/dt(t)=0.023 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.404 and dx/dt(t)=0.163 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.381 and dx/dt(t)=0.301 at t=1.0.\n", + "Studying k=7...\n", + "QMOD synthesized.\n", + "x(t)=1.001 and dx/dt(t)=0.999 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.094 and dx/dt(t)=0.895 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.179 and dx/dt(t)=0.781 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.250 and dx/dt(t)=0.658 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.531 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.358 and dx/dt(t)=0.399 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.388 and dx/dt(t)=0.265 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.410 and dx/dt(t)=0.124 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.417 and dx/dt(t)=0.023 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.407 and dx/dt(t)=0.160 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.384 and dx/dt(t)=0.301 at t=1.0.\n", + "Studying k=3...\n", + "QMOD synthesized.\n", + "x(t)=0.999 and dx/dt(t)=1.001 at t=0.0.\n", + "QMOD synthesized.\n", + "x(t)=1.095 and dx/dt(t)=0.895 at t=0.1.\n", + "QMOD synthesized.\n", + "x(t)=1.178 and dx/dt(t)=0.782 at t=0.2.\n", + "QMOD synthesized.\n", + "x(t)=1.251 and dx/dt(t)=0.657 at t=0.30000000000000004.\n", + "QMOD synthesized.\n", + "x(t)=1.310 and dx/dt(t)=0.532 at t=0.4.\n", + "QMOD synthesized.\n", + "x(t)=1.353 and dx/dt(t)=0.397 at t=0.5.\n", + "QMOD synthesized.\n", + "x(t)=1.384 and dx/dt(t)=0.253 at t=0.6000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.397 and dx/dt(t)=0.114 at t=0.7000000000000001.\n", + "QMOD synthesized.\n", + "x(t)=1.395 and dx/dt(t)=0.034 at t=0.8.\n", + "QMOD synthesized.\n", + "x(t)=1.371 and dx/dt(t)=0.187 at t=0.9.\n", + "QMOD synthesized.\n", + "x(t)=1.332 and dx/dt(t)=0.336 at t=1.0.\n" ] } ], "source": [ - "k = 31\n", "bound = 0.001\n", "t_vals_2 = np.arange(start=0, stop=1.1, step=0.1)\n", "k_vals = [31, 15, 7, 3]\n", @@ -1189,20 +1299,18 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "id": "268bcd98", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAHwCAYAAACfeoOHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAADS90lEQVR4nOzdd5xU1f3/8deZPtt7X1g6LG3pVUARwS4GK8YYNWqiMWqs8Rtj/GmiidHYotFYY4kVKwgqoKAILNJZ+i5sL2yv087vjxmWBRZY2DJbPk8f97Ezc+/c+5lZ3DPvOeeeq7TWCCGEEEIIIYQQnZ3B3wUIIYQQQgghhBAtIQFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWCCGEEEIIIUSXIAFWdAlKqWuUUiv9cNwUpZRWSpk6+tgdTSk1SCm1QSlVpZS6tR32P0MpldPk/lal1AzfbaWUelUpVaaUWuN77NdKqUKlVLVSKrKt62mNI1+LEEKIY/NXG96ZKaUeVkqVKKUK2mn/y5VS1/tuz1dKLWmybopSapevfb1IKRWrlPrO1/7/oz3qaY2mr0UIkAAr/EAplaWUqvP94Ty4POvvuk5FV3ktSqkHlVJvnmCzu4FlWutgrfXT7V2T1nqo1nq57+5UYBaQpLUer5QyA08AZ2mtg7TWB9q7nqZ8v9czO/KYQgjRFfir3fOFYPcRx61WSiW097FPlu+L7/7HWd8L+D2QqrWOa+96tNZvaa3PavLQQ8Czvvb1Y+AGoAQI0Vr/vr3raUq+3BCnotv3KolO63yt9df+LqKNdJfX0hv436k8USll0lq7WnnsLK11je9+LGADtp5iPUattbsV9QghhDi2dmv3lFJaa62OsXqV1npqexy3g/UCDmiti072iW3Q3oK3zd16xP1tWmvtp3qEOCnSAyu6JKXU35VSK5VSoc2sG6+UWqWUKldK5SulnlVKWZqs10qpm3zDZ8qVUs8ppZRvnVEp9bhvWM9e4Nx2qP0apdT3vroqlFLblVIzj7HtPUqpD4547Cml1NNN9rXXN+wnUyk1v5l9zAH+AFzm+7Z6YzPbLAVOB571bTNQKRWqlHpDKVWslNqnlPo/pZThiNfwpFLqAPBgM/u0K6Ve8w0L3gaMO2J9llLqTKXUdcB/gEm+Y78D7PBtVu6rDaXUYKXUV0qpUqXUDqXUpU329ZpS6nml1EKlVA1wulIqQSn1oa/+TNVkWLSvR/o93+urUt7hzGN96/6L98PFZ7567m7ud3PEa7lVKbVNKZV0om2FEKKnO14b3g7HylJK3ef7G12mvKer2JrZzur7TDCsyWPRvt7mGKVUlFLqc982pUqpFQfbxCP2853v5kZfG3LZEevPBL4CEnzrX/M9foGvLSpX3iGzQ454DfcopTYBNaqZ05qUUrN8nycqlLdHXDVZ19jLqZTaA/TlUBv3DvAL4G7f/TOVUgal1L1KqT1KqQO+9jLC9/yDp1Zdp5TaDxxso69VSmX43uPFSqneTY7f7Ocu32t8gUPtf/nxfpe+fcUrpTYppe460baiG9NayyJLhy5AFnDmST7nGmAl3i9dXgIWAwHH2HYMMBHvCIMUIAO4rcl6DXwOhOENKsXAHN+6m4DtQDIQASzzbW9q49fiAm4HzMBlQAUQ0cy2vYFaINh33wjk+15fIFAJDPKtiweGHuOYDwJvnqCu5cD1Te6/AXwCBPvex53AdUe8ht/63md7M/t7FFjhex+TgS1ATnPv3cHfb5N1KU3fd99rzQZ+6TveKLzDnVJ961/zvYdTfP9GAoB1wAOABW9jvReY3eT9qAfO8b2nfwV+bOnvFZhx8LX4jvETEO3v/7dkkUUWWdp7aUW719I2XB9vH6dY7xYOtevfAw8fY9tXgEea3L8Z+NJ3+694w5bZt5wGqGO9BqD/cWpqbEN89wcCNXhPpTHjPaVnN2Bp8ho2+F5Dc+1tFFAFzPM9/3a8bfT1zb13R/4OfW3ow03u/w74EUgCrMC/gXd861J8r+8NvG2zHbjQV+8QvG30/wE/HPF+HOtz1wl/r/g+nwB98H4WucHf/x/I4t9FemCFv3zs+xbu4PKrFjzHDLyDtwE6X2td29xGWut1WusftdYurXUW3j+804/Y7FGtdbnWej/ekJrme/xS4J9a62ytdSneBqs9XkuR7zhOrfW7eHscj+rt1VrvwxuO5voeOgOo1Vr/6LvvAYYppexa63yt9SkNuT2SUsoIXA7cp7Wu8r2P/wB+3mSzPK31M773ua6Z3VyK94NAqdY6G2jNebXn4R1i/KrveOuBD4FLmmzzidb6e621BxiON1A+pLV2aK334v3QdHmT7VdqrRdq71Dj/wIjT7ImpZR6AjgLOF1rXXyqL04IIbqYdmvDT2DiEcfd08LnPdukXX8EuOIY273N4e3Elb7HAJx4vyju7Wu7V2itT3rI7TFcBnyhtf5Ka+0EHscbDCc32eZp32torr09B9iqtf7A9/x/Aq2ZHOom4H6tdY7WugHvl77zjuj5fVBrXeOr5ybgr1rrDO0dTvwXIK1pLyzH/tzVUqm+5/1Ja/3iqb0s0V3IObDCXy7SJ3/+TH+8IWO81tpxrI2UUgPxTgA0Fm9PnAlvb1xTTf+w1wJBvtsJeHv6DtrXgrpO5bXkHtHw7fMduzlv421s36BJY6q1rvENTboTeFkp9T3we6319pOspTlReD9sNH39+4DEJvezOb5TeS+PpTcw4YjhRSa8wbO5enrjHZ7VdHsj3h7hg478N2BTJ3cuTxjeiS8u01pXtPA5QgjRHbRZG66Umoq3d44mj5U3uXue1vrgJD8/6lM7B/bItuhY7e0yIEApNQEoxBuyFvjW/R1vkFuivGcdvai1fvQUamlOAk3aSK21RymVTcvb3MPaW6219j3/VPUGFiilPE0ec+Odn6K5enoDT6nDZzBWeOs/+LqO9bmrpebj7eX94EQbiu5PemBFV5KBdwjpIqXUoONs9zzeYcADtNYheM//PNaEEEfKxztE56Bep1JoCyQqXwvY5Dh5x9j2fWCG7/zKuRz6Nhit9WKt9Sy83wpvx9vL2JyT/Za4BO+3zU2/Pe0F5J7EPtvyvcwGvtVahzVZgrTWvz5GPdlA5hHbB2utz2nh8VryfpXh7Rl+VSk1pYX7FUKInqrZNlxrvbLp32rfY03/drfFDLVHtkXNtre+ETnv4f3S+Argc611lW9dldb691rrvsAFwB3qGPNXnII8mrS3vs8HybS8zT2svW3y/FOVDZx9xO/BprU+Vj3ZwI1HbG/XWv/QgmO19PPJg3g/m7ztGyUmejAJsKJL0Vq/gzeQfq2U6neMzYLxnhtarZQaDPz6GNs15z3gVqVUklIqHLi3VQUfW4zvOGal1CV4zxtZ2NyGvqGpy4FX8YayDADlvW7bhUqpQKABqMY7pLg5hUBKcxNOHOOYBxvxR5RSwb5hQHcAJ7oUT1PvAfcppcJ94fu3J/HcI30ODFRK/dz3npmVUuOaTnJxhDVAlW/SC7vyTs41TCk17hjbH6kQ73mzx6W9lwGaD3yklBrfwn0LIUSP1MI2vD3c7GvXI4D7gXePs+3beIf0zqfJF8ZKqfOUUv194bACb4/k8drcE7YhTbwHnKuUmqm8l5H7Pd52vSUBEOALYKhS6mLfMN9bgdZcnucFvO1/b2iczOrCE2x/n1JqqG/7UN9nm5YoBJJUk8k2j8GJ97ShQOCNln6eEd2T/PKFvxyc/e7gsuDET/HSWr+O9xpmS5VSKc1scifeobZVeHskj9dQHeng5BIb8Z57+lELnnMqr2U1MADvt4mPAPP08a91+jZwJk0aU7z//96B95vbUrzn+R4rrL/v+3lAKfVTC+oDb+CswTv50UrfsV9p4XMB/ox36FAmsITDh/ueFN834GfhPTcpD+9QpMfwTi7R3PZuvL2jab7jl+Cd6bilM17+Ffg/3zlWd56gtq+Aa/H+Oxjdwv0LIURX1p5t+PFMUkdfB7YlX0y+jbcd2gvsAR4+Tn2r8bZ9CcCiJqsGAF/j/bJ4FfAvrfWyY+zmQeB1Xxty6TG2aXrMHcBVwDN426vz8Z4nfMzTpY54fgnecPcocMBX6/ctee4xPAV8ine4dBXeCZ0mHOf4C/C2yf9TSlXinTTr7BYeayneS/oUKKVKjreh7/24GO9Q5lckxPZcqu3OPxdCtIRS6hq8MwN2h2vZCSGEEJ2WUioLb5vbHa7XLoRAemCFEEIIIYQQQnQREmBFp6GUeqGZoUHVSqkX/F3byepOr0UIIYQ4EX+1e0qpXsc4brVSqr0mYhRC+JEMIRZCCCGEEEII0SVID6wQQgghhBBCiC5BAqwQQgghhBBCiC7B5O8CTkVUVJROSUnxdxlCCCG6iXXr1pVoraP9XUdXJm2zEEKItnSstrlLBtiUlBTS09P9XYYQQohuQim1z981dHXSNgshhGhLx2qbZQixEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguQQKsEEIIIYQQQoguoV0DrFLqFaVUkVJqyzHWK6XU00qp3UqpTUqp0e1ZjxBCCCGEEEKIrqu9e2BfA+YcZ/3ZwADfcgPwfDvXI4QQnZrWGqfDjdba36UIIYQQQrSY1pr9lfvb/Tim9ty51vo7pVTKcTa5EHhDez+p/aiUClNKxWut89uzLiGEaC9aa9zVblwVLtzVbtxVbtzVbhw1LuoqHdRVO6mtc1Bf76LKUUu1s55ap4MGpxunU6MdBtAGMLuxhRgIjwwgISGS6N6hRPYNJiTajsGg/P0yhRBCCCEaaa35e/rfeX/H+7x7/rv0De3bbsdq1wDbAolAdpP7Ob7HjgqwSqkb8PbS0qtXrw4pTgghDnLXu2nIbji05DRQn99ATXE9NWX1VNbXUmGoocbkwBHgwRmgcdsMYDZhMlowYTlqnxoPdeYaas2V1JkrqbVXUWuuxGGqI6ghgvDaWML3xpK/sw7vn0dw46KBWpTHTZA2k2AKo1d4NBFJQQQk2bH2smJLsWEOM3fwOySEEEKInsijPTzy4yO8t/M95g+ZT5+QPu16PH8H2BbTWr8IvAgwduxYGVsnhGhzHoeH2l21FG4uIWdnAflFpZRUV1PlbsBhcKOtBgwmEyZlwaptWD12VLiC8IN7sAN2Goy11JmrqD24mOqoMdVTa3RSY3BTY/BQZzDgMVmxG4IJNAYTbAglzNybcGMYwSqA4rpiMhz5lHm20+Apw+5yEeYyE+EMIKIhnLC6GFwNoWRrF9ml+XhKPVRnVFGlqql3OaHeQKAzgARTNCmxMcT3CSJxSAhhI4Ik3AohhBCiTbg9bv70w5/4ZM8nXDvsWm4bfRtKte9IMX8H2Fwgucn9JN9jQgjRbrTWZGXk8r/FKygprsTiMGF1W7G7ArC7gjDqg38abSibjRDApZy+QFpNhamCWlM99UYXDWY3TosCmxGjzYYtMJCwwDAi7AkkB4YTHRhKeICNULuZEJvZ+9NuxmY2nnTdNQ0uSqobyKuoZFdpNpkl2RwoOoCjtBZDlSag1kZIfQhxziSMFhNYwINmc80uvttVRmlWDRWLHdS4FW5sBBmjSApNIDEpjPg+QUSH2ogKshAVZCU62HpKNQohhBCiZ3B6nNy/4n4WZS3iNyN/w00jb2r38Ar+D7CfArcopf4HTAAq5PxXIURbcx5wUvFjBcvWbGBN9W5MmImrTSREx2IzhFFpqaDeWE9VQCkuSwnYDJhDLdhDAwgJDSIyPIz4iCgSQiIIC7ASajcTbDNj7OBzUQOtJgKtJnpHBjKpbzwwvtntymrLycjMYtfePIryKmkocRJUHkBMZSwWt61xO4exnrL6nWRVlPLTzhpKTQ4OGKBMW/G4IrCraCLtkUQH2YkPs3PeiHhmDo7BZJQrsAkhhBA9mcPt4O7v7uab/d9w+5jbuXbYtR127HYNsEqpd4AZQJRSKgf4E2AG0Fq/ACwEzgF2A7XAL9uzHiFE96e1pn5vPeXflVOwspAvazZSGFNNpCGCiPpYUhhIhaWMnPB8+qYk8su50wiLDvR32W0qPCCMyUPTmDw07bDHtdZUl9eTuS+P7P2FFOc6MOVFEFkRg8lhb9zOrVxU2Iops+dQwXoq3TVsrnXy5b4wwj4fwRWjx3D5uGQSwuwIIYQQomepd9Vz+/LbWZm7knvH38v8IfM79PiqK16qYezYsTo9Pd3fZQghOon6/fWUfVNG2TdlbNu8lzXD96NjjMQ1JGBzB+JWbooCC1GJRk6fPprTRw3skCEuXUlDnYuyghqKcirYtzmfov0V1FW6wWNB4X2vaswVZEVsITNoP/uUlaFRE7hx/ExOHxzf4b3RbU0ptU5rPdbfdXRl0jYLIUT3V+us5dalt7KmYA0PTHqAeQPntduxjtU2S4AVQnQ57lo35cvLKV1USvHiYlaH72H/6AoC7cHE1iZgwEidqYaS8FKiBkZy6VlT6BUbfuIdi6O4nR6Kd1aQvbyYHRm5lDtdKGXEYagnOyyDzLAd5FrdjI8bz+/OuJAB0XH+LvmUSIBtPWmbhRCie6t2VPObb37DxuKNPDzlYc7vd367Hu9YbbO/z4EVQogWqc+u58BnByj5tISctXmsPi2b6j4uoufEEOJIpL9OpEQXkZtSwIjRA7huxjRslmP/iXNXOWjYW45jXxUYFIYgM8ZAs/dnkAWD77bB0rMnMjKaDcQNDSduaDjjGIjL6SZrTTEZX2djKTDTr3QUHtzk5e7hgb0PUxRQzpjYkVw38wIGRklPtxBCCNEdVDRUcNNXN7G9dDt/m/Y3ZqfM9lstEmCFEJ2S1pqarTWUfFhCycclbKrOZNvUIoxDLcT3TSLW05+IBgdFIUU4hmjOnj6O8alnHHN/7honDXvLadhTQcPeclxFdQAoiwE0aKen2ecps8EbZAMPD7bNhV1joBll6t4THJnMRvpPiaP/lDi0R1OQWcHOpXmYNiuS9g0EoGRfDo/ufpmCoP0Mj+nH+ZPnMD55PFaj1c/VCyGEEOJkldaXcsOSG9hbsZcnZjzB6b1O92s9EmCFEJ2G1pqaTTUUvVtE3oI8vo/bRcHQGkJnhBFdl0AfIqlyVJAfU0RSajxXnDWV2LCgZvflqXXSsLfCt5TjLKgFvIHVkhJK4JhYrH3DMCcEoYwKj8ONp9qJp8aJu9qBp9qJu8Z52GPuygacedW4a5zgbv70C2U1YgwyY/AFW6Mv/DYbegPMKGPX7aFUBkV8vzDi+4UxnVTKC2vZviqfdSsUkTmJKBRVe8t4a+c3PBb6HEnR4Zw5eibTUqYRExDj7/KFEEIIcQLFtcX8asmvyKnO4ZkznmFK4hR/lyTnwAoh/K92Vy1F7xSx7YudrEzZQ0MixDkTCHAG48FDcWARrnjNhIlDOXfSiGYv4+Kpdx0KrHvKcRbUgPb2oFpSQrD2DcXaNwxLUhCqlZeB0VqjG9y4q514mgu7Nd7H3b77nhonNPenVoHBbjqqh9cYbME2KBxzYlCXHYJbW+ngx2+zWfddNuZqF2ZtoMFYx/6wbWRFbMYa7WTasKnM6DWDIZFDMCj/9lzLObCtJ22zEEJ0LwU1BVy3+DqK64p5buZzjIsb16HHl0mchBCdiqPEQdG7RXy9dA2bI/OwBgUQV5eEUZtoMNZRGFpCaL9QLpo5idSU2KOe72lw0ZBV2Tgk2Jlb7Q2JJoW1VwjWfmFY+4ViSQr2+7Be7dF46lzesFvjbAy2jQH3iLDrqXUBYIqyYx8ZTUBaNOboAL++htaoqnbw8cLdbF1dQGStmwBtxI2bvNBdZEZsoiI6lwmDRzMtaRqT4icRYO741yoBtvWkbRZCiO4juyqbXy35FRUNFTx/5vOkxaR1eA0SYIUQfudxedj/eTYffLWCPFMFEUQR3hANQJntAJVRdQwYkcJlMycQEnj4+ZIehxtHVmXjeayO3CrwAEaFJTnYG1j7hmLtFYIyd+3zUD21Tuq2HqB2QxENeytAgzkpiICRMQSMjMIY0nXPJd2SU84Hi/aQs/UAKQ5FuMc7SVZJQDZ7IzeRE5nBgL69mJY8jenJ00kMSuyQuiTAtp60zUII0T1kVmRy/ZLraXA38O9Z/2Zo5FC/1CEBVgjhN7V7avnf60vIqCkgvj4Zq9uOW7koCCrEkGTm9CmjOX30AAxNriWqnW4a9lUdCqw5Vd7zTg2+wNo3FGvfUCy9Q7r1TMHuygZqN5ZQu7EIZ041KLD2DSUgLQb70EgMAWZ/l3hKqhtcfLI+l0+WZaEK6xnoMBDnC7M15nL2RG0gK3wzgcmK03qdxvSk6YyIHoHJ0D5TN0iAbT1pm4UQouvbVbaLXy35FRrNi7NeZFDEIL/VIgFWCNGhPC4PxZ8W8/biLykKcpBU0w+HoZ7c0EJihsRwyewp9IkNa9xeuzw49ldS7xsS7NjvC6wKzEnB2PqGYu0X5g2s1u4bWI/HWVxL3cZiajcU4yqpA6PCNiiCgLRo7EMiUOau975ordmUU8Fbq/fx9bo8kuoVI2pMxKIwGBROYz2ZEZvJDN9EZUw+E3uPZ3rSdCYnTCbUGtpmdUiAbT1pm4UQomvbdmAbN351IxaDhZdmv0Tf0L5+rUcCrBCiQzgKHWT9O4t3t39NQ7yN+JoU6oy1FCaUc93VZzE42Tv7rHZ5cORUNZ7D2rCvClweb2BNCPL2sPYLw5oSgsEmE6Y3pbXGmVtN7YZiajcW46lyoKxG7EMjCUiLwdovrEvOblxR5+Tj9bm89eM+MgurGdRgZHyxiUibArNCG9zkh+1hV9hPZEdkMDipP49MfYSEoIRWH1sCbOtJ2yyEEF3XxuKN/PqrXxNkCeLls14mOSTZ3yUds22WT4VCiDZRuaaSHc/t4BPn9xjjwokJGUy1o4rs/sXcOH82feLDcORWU7ks29vDmlXZeO1Vc3wgQRPivIG1TygGu/xpOh6lFJakYCxJwYSe04eGvRXUbiiibksJtT8VYQgyYx8eRUBaDJZewV1mJuNQu5lfTE7h6km9WbevjLdX7+fNjXm43JrxxSbGlRjpXTeIhNKB6L2a6j3FWEYHQvNXUhJCCCFEC6QXpHPzNzcTaY/kP2f9p02+GG5P8ilRCHHKtFtT8kkJm57fzJLEnwgKTyC+fgQVrgpyh1Twm/lnkRhqo3ZjCYUfrveewwmYYgMIGBuLrV8Ylj6hGAO75nmcnYEyKGz9w7D1D0Nf1J/6HaXUbiimZm0hNavyMUbYCDg4k3FsoL/LbRGlFGNTIhibEsEfz0vlw59yeGvVPp4prSWwQTFzu5HRbiuRg3sRpGz+LlcIIYToeGX7YOtHMPY6sIWc8m5W5a3i1qW3Eh8Uz3/O+k+rrtPesGcPFQsWEP3737frl+cSYIUQJ81d4yb/lXzWvf4T343JIDK1D70aRnNAl1IwvJ7fXDmHaK2o/jGf/PQCPLUuTDF2wi7sh314FMYgi79fQrekTAbsQ6OwD43CU+/yzmS8sZiq5dlULcvGHB/oPV92ZDSmsK4R/MIDLVx/Wl+um9qHH/eW8taP+1hoK+BTXcPg7DrGl9bRL7rrzsoshBBCnBStYcNbsOhecFTB1gUw/0MIij7pXX2b/S13LL+DlNAUXpz1IpH2yFMqyXXgAMXPPEP5+x9gCAggbN48LCkpp7SvlpAAK4RoMecBJ7nP5rLykx9YN2Uf8ZMG0dc5jkJVgmO0h5suPYfQgnpqPt5Dwc4yUGBPjSRwUgLWvqFdZihrd2CwmQgcE0vgmFjcVQ7qNnnPl61YlEXFoiwsKSHemYyHR3WJHnClFJP6RTKpXyQl1Q28n57DwvV5JPYN9ndpQgghRMeoLobPfgc7voDeU2Dk5bDwbnh1Dvx8AYT1avGuvtr3FXd/dzcDwwfy4qwXT2liRE99PaWvv8GBF1/E09BA+OWXE3XLzZjCw096XydDJnESQpxQQ14D+x/fzzcrl5MxpYRk51DsriByAooJHJ7ADeeOwr69nOof83GX1mMIMhM4Po7ACfGYQqV3rDNxHaijdmMxtRuKcBXVgUFhGxhOQFo0tiGRPXaGZ5nEqfWkbRZCiHa0fSF8divUV8DMB2DizWAwwP4f4e1LwRzgDbExQ064qy/2fsH9K+9neNRw/nXmvwi2nNyXwdrjofKLLyh68klcefkEnXEGMXfeibVvn1N9dc2SWYiFECetfl89mY9lsmjrV+wbX0NK7UgsbhtZgUWEp/XhVxMHYNxQQu3GYnB5sKSEEDQpAfvQSJTJ4O/yxXForXHm11C7sZi6DcW4KxpQZgO21EhvmB0Q3qN+hxJgW0/aZiGEaAf1lbD4Plj/JsQOh4tfhNjUw7cp2AJv/gxc9TD/fUgef8zdLdi1gD/98CfGxo3l2TOeJcAccFLl1K5dS+Fjf6N+yxZsqanE3HMPgROOfbzWkFmIhRAtVpdVx65Hd/F51mIKR3romzqS/lUm9gSVkDQmlrt6D0KvL6bh5a0oi4HAMTEETkzAEt81JgkSvpmME4KwJAQROjsFx75K70zGm0uo21iMIcB0aCbj3iEogwz/FkIIITrUvh9gwY1QkQNT74AZ94GpmXlE4obBdYvhjYvgjQvh0v/CgDOP2uyd7e/wl9V/YUrCFJ48/UnsJnuLS2nIzKToH/+g+utvMMXFkfDYo4Scfz7K0PFfdkuAFUI0qt9fz7bHtvFxwUKqBlrpo9IIqoSdQWUMHTWQ+4JScG8sxrFxL6ZoO6Hn9yVwTKxcp7WLUwaFtU8o1j6hhJ3fj/pdZd5rzP5URM3qAoyhVgLSogmamogxWCbgEkIIIdqVqwGWPgw/PAPhveGXi6DXxOM/JzwFrlsCb14M71wGc/8Nw+c1rn596+s8nv44M5Jn8I/p/8BibFl77ioro+Rfz1P2zjsYLBaib/sdEb/4BQZ7y8NvW5NPnUIIHIUOfvr7T3xUuBB3Yjh93BOJKHezLaic04b2535PPO7NZTipwjYkkqBJ8Vj7h8mkTN2QMhmwD4nEPiQST4Ob+owD1G4opmpFDtU/5hM8I4ngqYkoc888V1YIIYRoVwVb4KMboGgrjP4FzP4LWFt4wfOgGLjmC3jnCvjweqgthQk38O+N/+bZDc9yVu+zeHTao5gNJ5680eNwUPbmW5S88AKe6mrC5s0j+tbfYoqKauULbD0JsEL0YM5yJ6v+uYqP8r/EGpZI78AZNFQ6yAip4tz+vbm0PALP9mp0kJngGcneSZnCZFKmnsJgNRKQFkNAWgzO4loqFmVRuXgfNT8WEDInhYCR0TK0WAghRLfnqa/HmZODJSUFZWqn+ORxww9Pw9JHwB4OV74HA2ef/H5soXDVh/DBtehFd/FM3je8VLmN8/uez0NTHsJkOH79WmuqvvySon88gTMnh8BppxF7111YBww4xRfW9iTACtEDuevdfP38N3ya9Q1hln4MUGdSV11Pdmgt58XHcmmJA/bWYOodQtBZvbEPi+pRE/qIo5mjA4i6OpX6PeVULMyk7N0dVH+fS9i5fbH2Ofmp94UQQojOyFNbS/32HdRv3dq4NOzdC243xrAwgmfNInjObAInTGi7MFuaCR//GvavgiEXwHn/hMBTuyYrAGY7+pI3+Nv75/Nm5Tbm2ZL44+Q/YzhBeK1dv56ix/5G3YYNWAcOJPnl/xA0Zcqp19FOJMAK0YN4XB4+e/NzFm1fQaxzKKkNs6lx11Eb6mR2WAQRFU7UAQcBo2IInBSPJaGFQ1ZEj2HrF4b15jRqNxRRuTiL4n9vwjY0ktCz+2CO8t/5MEIIIcTJclfX0LA9wxtUt22jbutWHHszweMBwBgVhW1oKkFnzsSSlEzNqlVUfvEF5e+/3zZhVmv46Q1Y/AdQBu95qyMug1aeouXRHh5Z+yjvOXKZH9CXe7YuR310g3f/zUwC5cjOpuiJJ6ha9CXG6CjiH/5/hM6dizJ2ztOFJMAK0QO4PC4++OxDvl63ht5VYxhedzYOcy2BYZo55jCsTg8mk5HAc5MJHBODIeDE50aInksZFIGjY7EPi6J6ZS5Vy3MozFhH0MR4gmf2whgo/36EEEJ0Lu6qKuq3ZVC/bVtjz6ojK8sbIgFTTAy21FRCZs/BNnQotqGpmGJiDpvvI+xnF+Opr6dm5Uoqv1zcujBbXQSf3go7F0HKaXDR8xCW3PrX6XHzpx/+xCd7PuHaYddy2+jbUAlPw1cPQH25d4Zi3zm17spKSp5/gbI33wSjkajf/IbI667FENi5ryoh14EVohurc9Xxv2/fZeUPW+hfMoGQhkgs1gaS7DaGYUIpsA2OIGhSgndSJjmfUZwCd5WDyq/2UbO2AGU1ETIzmaBJCV1q2LlcB7b1pG0WQnQW7srKw4Jq/dZtOPbta1xviotrDKm21FTsQ4diio4+6eM0DbPVS5fiqa1tWZjN+Aw++x00VMOZD8KEm6ANLkfj9Dj5w4o/8GXWl/wm7TfcNOKmQwF8/Zvw6W8hYTT60nco+2QxJc89h7uyktC5c4n+3a2YY2NbXUNbOlbbLAFWiG7I5XHxyqrXWL1sJ4MKJxHqCiXM7qS/xUYsBlSAiaDxcd5JmcJt/i5XdBPOghrKF2bSsLMMY4SN0LNTvOdPd4HZqiXAtp60zUIcX0FNAe/teI9aVy0JgQkkBieSGORdgi3B/i6vy3KVlXnD6rZt1G/1hlZndnbjenNCwqGwOnQottRUTJGtOL/0GFoUZl01sOhe2Pg2xI+EuS9CzOA2Ob7D7eCub+9iafZSbh9zO9cOu/aobXTG51Q/eSNFG0NxVGgCJk0k9u67sQ0Z0iY1tDUJsEL0EJllmTz26r/omzmZeHcoUXYPA80WrChMSUEET04gYHg0ytx1esdE11K/s4zyL/biKqzF0juE0HP7YO0V4u+yjksCbOtJ29wzuRxudqUXsW1lLsqgmHb5IKKSZP6EpjIOZPD6ttdZnLkYjcZqtFLrqj1smxBLSGOYTQhKIDEokaTgJBICE0gISiDAHOCn6jsXV2lpY0g9eN6qMze3cb05KckXVr1B1TY0FVN4eIfX2WyYDQkkOKGW4LgDBP7sZtTp9zZ7PuqpqHfVc/vy21mZu5J7x9/L/CHzj9qmbvMWih57jNr0dCyhbmImmQj6wwJUzKA2qaE9SIAVopvTWvPqx2+weW0RI8rHMCQQkoxm3AZFQFo0oZMTsCTJN7yiY2iPpia9gMol+/BUO7GPjCZ0dgqmiM7Z4y8BtvWkbe5Zygpq2PpdHtt/zKeh1kV4XAD1tS4aap1MOL8vabN6YejBp6VorVmZu5LXt77O6oLVBJgC+NnAn3HVkKuID4ynoqGC3OrcZpe86jwa3A2H7S/CFnFUwD24xAfFYzV2v0vcuUpKqN+6lTpfUK3fug1Xfn7jenPvXo3Dfw8GVmNo55sV31NVTs0Lt1P59TKq8+x4nPh6Zs8keM6cVs9mXOus5dalt7KmYA0PTHqAeQPnHbbemZdH0ZP/pPKzzzBGRBB9628JmzoQ9c6loD0w/wNIHN3al9kuJMAK0Y3lZObw2H+fo1fxeFINoQyxmcBkIOzMXoRNiJdJmYTfeBpcVH2bQ/WKXLTWBE1JJOT0ZAy2zjWHoATY1pO2uftzuz1kbihhy3e55O4ow2BU9B0VzbBpiSQMCKO+xsm3b+1gz/pi4vuFMvOaIYRG96yeQ4fbwRd7v+CNbW+wu3w3MQExXDXkKn428GeEWFo2EkVrzYH6A95AW5VLXk0eOVU5jeE2ryYPl8d12HNi7DEkBjfpvQ1KarwdGxiL2dA5PwdorXEVFePI3EvDnj049mbSsHcPjt17cBUXN25nSUk5vGc1dQjGkM49sgeA/I3w0Y1QnAFjr8Mz7X5q1qxvZpjxqYXZakc1v/nmN2ws3sjDUx7m/H7nN65zV1dz4MWXKH39ddCaiGuuIfKGX2EM8o2QOLAH/nsR1JbCZW9Cv9Pb+MW3ngRYIbohj8vDW//6H+vz8xhZMZphgRBrNNPQK4je81MxhXa/b2RF1+SqaKBycRa164swBJgIObM3gePjUMbOMZRdAmzrSdvcfVWV1rNtZR7bvs+jtsJBUISVoaclkjolgYCQw4dAaq3ZuaaQ7/63E49HM3Vef1KnJnSJc+FPhXY6cVdVUVGcw1ebF7By+2I8FRX0VTFMChpGH0MMurIKd0UFnopK3BUVGIKCMCclYklKxpyU5L2dnIw5Ph5lPnHQdHvcFNcVNwbanOqcxqCbW5VLQW0BHu1p3N6ojMQGxHoD7hHn3iYGJRJtj8ZoaPvLpRzMGBqNx+nEmZPjDamZmTj27sWxZy/OzCw81dWNz1GBAZiTYjHHBGAeOADjhOkYUoeiA2y4tdu7eI742dLbzT23yXqP9uDyuI65n6bvaWO9vn/XiiN+ag1561D7V4PZDv1nQUTvw7YzOFxEbcohbvUeon/ah6neiSPIRtG4PhRN7E/Z0ES00XDoOc0ca3nOcnaW7uTRaY8yO2W29/12uSj/4AOKn3kW94EDhJx/PjG334Y5IeHoX1JlPrx5MRzYDRe/BEMvau2vvU1JgBWim8n5IYcnPnyReMcohhvCGGQz4jEbiLywH6Fj47rthwXRtTlyq6n4Yi8NeyswRdsJPbsPtiERfv/32h0DrFLqFeA8oEhrPayZ9Qp4CjgHqAWu0Vr/5Fv3C+D/fJs+rLV+/UTHk7a5e9Eezf6MUrZ8m8u+zSVooPfQSIZNS6TXsMgTDg+uKq1n6RsZ5Gwvo/ewSE7/+WACO+mXqlprdG0t7ooK3JWVuMsrfLcr8FT4bpf71vnuH3zcU1Nz3H0bgoIwhoZ6l7BQDMEheKqqcOTm4MzLB6ezycYGTHGxjcHWkpzkDbiJ3tvGqJZNiuf0OCmsKSSvOo/c6lxyqnMab+dW51JcW4zm0Od/k8GE1Wj1vg9NHm8aQA+7fXAbTePtg9tYHB4SDkDiAe1bvLfjS8HUJP+VBkFupCI3EnKjfD8jFWVBtPoaqG3JpEwYDUYMyoBRGVGow14zHP4+eW94wOVAazcYjGiDGZQ6ersmt80Ozci9HsZvdzNmlwe7AyrtsHagYtUQA1t6g6eZ/+eCzEH89bS/MiN5Blprqr/9lqK/P45jzx7sY8cQe8892IcPP/6LrCuDty+D7DVw3hMw9ujJn/xFAqwQ3YSzzMlHf/2ENexjZPUohgcqoo0mHH1D6H3FEIzBbTMhgBDtRWtNfUYpFQszcZXUYe0bSui5fbEk+m/il24aYKcB1cAbxwiw5wC/xRtgJwBPaa0nKKUigHRgLKCBdcAYrXXZ8Y4nbXPb0h4P7rIyXIWFOAsLcRUVe28XFeIqKkLXN2CKjcUcF4cpPg5zXDzm+DhMcXEYw8JO+UuhuioHGT/ks3VFLpUl9diDzfSfGEXKxDAsYQqn24nD48DhdjT+PPhYmDWMYVHDMBlMvteg2fxtLqs+2o3RYmDGlYPpPyamLd+mo2itcZeX4youxlVUjLus1Bc+mwbPQ0H0YGg9LEgeyWw+FEJDQjCGhlJh87DNsY8MZw61dsWAXqM4LfVseiWmYggJwRgWhjE4+LjDQbXbjauwEEdODs6cXJw52YduZ2cfNoQWQNlsmBMTsST5gm3TkJuUdGho6Ak43A7vUGRf721edR4Oj8N7DN9/4O3xO3gb1bR3EaxVDQTmlRGUW05AXhmBueUE5pdhLznUm+oxKOpjQ6lNDKcmJoC6CKgNcVBnr8DjLIKGapR312ALheA4VHA8BMWhgqIx1pVjLM/GWL7fu7gaMAJGWzjGyH4YIgdgih6IMbwfRpMFozJiNBi9P5U3dJoMpqNuH7ad4ehtDz5uUCc5QkhrWPcqLP4/MJrgnH/A8HknHciPPZvxoWHGGA/1mCulqN++ncLHHqN21Y+Ye/ci5s47CT7zzJb/HXDUwvu/gF1L4Iz/g9Pu7BRfJEiAFaKL01qT/V42z3/zXyKsQxhpCGegzYjLYiD64gGEpMX4vRdLiJOh3R5qVhdQ+fU+PHUuAkbFEDo7BaMfemm6Y4AFUEqlAJ8fI8D+G1iutX7Hd38HMOPgorW+sbntjkXa5pbz1NYeCqVFhTgKCnAWFuAoLMRVWIi7qBhPyQFwHX6eo1YKHWLDHWLGYwRjlRtjeR3KffjQRrfFRF1kIHXhAdRE2KkKt1IZZqEyzEx5iJHSEAPVVs+hMOpyEHggmuSc4SQWDsGoTeSH7GFL7AoyIzbhMbhb/NqCLcFMjJ/I1MSpTE6YTFxgHGUFNXz9WgZFWZUMGBfLtMsHYgs8uXMytdZ4KitxFRXhLCryvnfFxbiKirzLwdvFxWiHo9l9GIKCMIaEYAg7GEZDDwXT0BAMoU0eDzsUWFVAAEop3B43y3OW8/rW11lftJ5gSzCXDryUK4dcSUxA2wdzT309zrw8nNm+YJudgzM3B4cv4DYdegveiYEOC7aJSZiTk7yBNz4eZTm5L7i1240zN5cG33Dfhr0Hz1Hdi6eionE7FRCAtU8fLH37Yk3phSXSjDWgBovOQZVshcIt4PDVqowQPRjihkP8CO/P2GEQEHH8YtxO736y10D2au/PCt+lckx27yREyeMheQIkjYfAtr9MznFVFXivsbprCfSdARf+C0ITW73bE4VZa58+FD/7HBULFmAMCSHq5psJv/yyk/5dA973+JObYdO7MOHXMPsvbXJt2taQACtEF1a/r54v/m8RP8ZmMbJuJMMDFZEGE44BofS+bDDGIOl1FV2Xp85F5bJsqr/3XoYj6LREgqcnY7C2/TlZx9JDA+znwKNa65W++98A9+ANsDat9cO+x/8I1GmtHz/esdqibX7h7vsxlIzG6KpCeapAV+GhBpeqxmmopcFUS725jlpzHbXWBuqtRurMJuqtJuotvsVqxmkyopQRMKAweH9qw+H3G38qwOi7r1DagMKI7yw1wPvvUONG40Ir16HbjYsbrVwoj5PgmnrCqusJq27w/XQSXuUgrMpFRLWbsGo3gQ1Hf/aqtUBZEJQGK0qDoTQYyoJ8t30/KwLBbTz8i0rl0YTVQGQlRFZpoiohokoTVakaHwuv1hiOOGSdxUBxaBAFcROpDp0Iplg8NFBq201mdBa5kRqX2YrSJgyYUJhQmFH64G3vYmjymFOVUG3YSrVxKy5VDoDVk0CQZxhB7qEMzu9L73wPTjPs7GWhLMQIWmNrqCO4pozg6nKCaioIriknuLrc+7PJbZP78EAPUG+1UxUY1rhUB4ZSFXTofk1AMHW2QOqtAXiMpzZ5nIcGyo2rKDV+jcNQhNkTSYT7TMLdUzDgp5nVtcbeUENYRQnhFcWEV5QQVlnc5HYJRs+hLx48SlEZFEF5aBRlIVGUhUZTHhpNWUgUFSGR2OuriS7NJ8q3RJfmE1lWcNh7Xh0QQklEPMUR8ZSEx1MdHoY9uJ5YayEp7kxSnHtIdO3HiPcLlTplJ8vUl33mfmSZ+5Jl7keOqTdO1TafWSLcxQx0ZDDQmcFAxzb6OHdjwvua84yJ7LSkssOSyg5zKnmmZPTJ9qi20IS6FVxf8Qw2Xc9bIdexOOD8djmWyeWgf9YWUnelM2jPeqxO70zVLqOJNWkz+W78edTbAlt1DKU9XF35IufUfsx39jN4IfQO3Ork/r9JTQjhT+cPbVUdjfUco23uXNNACiEOoz2afc/t49Uf3yc4oh+zXWkMCDLisBoJnTeQ4BHR/i5RiFYz2E2EndOHoInxVHyZSdXSbGrWFhA6K4WAsbGoHnwpjs5OKXUDcANAr169Wr0/d3AQ5sKdoILwmINwG+JxG0PQBhMGwO5bwl2A04OlrBqLoxKzowqLowqLsxKLowqzsxLtqcKjqnGpahzGGuotHuotUGtV1FmgzqKptSrqLZpaq6bWoqm3Qq0V73rfT5dJ+cICRFR7w2FEpYGIauW7DxHVmvAqD2E1nqOColtBRZCZsiALBZFB7OhlpTzYRlWgFUegxhPgxmSvJ8hUTaS7nHBPJRFaE6s1Jg21KowKQxQVnhjKamI5YIzjgDEBjZUkVx59HVn0d+5loN5Ngq0Yi1VDtJH95r7sMg9mvXkwe40DqKkPIKS6jNDqUkKqGrC5InGbk9AGCwE1uSTveYvYonWYmly+pdYWSGVwBBVBEd6fwRFUBoVTGRzceNttOtSTatcphHjGol2aBnJwuTZgqd2MveYrwmq+xFZlRNcMwW75GcP3RBFVvIaBOz/A5jz6PNJ6i70xjGYn9PcG0qCjQ6rT3H4jNlxUUmpaRplxOW5Vg82TQqLjBkI8o3xfcviRUtTZgqizBZEfm3L0ao+H4JpywiuKD4VcX8Dtt28rITXlze7WoxTlIdEUR8Szu/cwSiLiKQmPQ4caiTMV0Me5hyHOPaS4vibaXQROwAmlhkgyzf1It00ky9SPLHM/ioxx7RYaAUqN0fxoj+ZH+zQALLqefo5dDHRuY6BjG6PrVzOj7isAqlUQuyxD2Gkewg5LKrvNg2gw2Ft1/ABPNb+s/BfT6payxzyAZ8PuJs+U3OrXdSwuk4Xt/Uezvf/oxjAbV7SfjamTKQtrmxEAWhl4PeRGKg2hXF79OoGeav4Z/gccqnNdAk96YIXopGq21/DNncv4fsBeRjiGMyIQwg0mHEPCSblkkFwaR3RbDfsrqfh8L479VZjjAgg9py+2ge17Ifoe2gPb+YcQ11egD+yhIS+TuoJcagqLqC0up7a0ntp6CzXuMOo8odTpMOpUOPWE4KaZ3h2tseh6LK4azM4qLPUVmOtKvaHXUYXFUYnF6fvpqMagm/T0mc1gNEB9w1G7NYSGYo6JwRQTgyk2FlNsjPd+bCymmFjMsTEYrRpVthuKt0PxTu/Pkp1QmdtkR2aI7A/Rgw4tUYO8j5lP4oNjVSHkpkPOWshJh9yfwBcOXdYYdlsuZUvpBAoPBGE0KwaMjWXYtCRiUoLRTqf3HNv8fFwFBTjzC3AW5OPKL8BZUIArPx93k2GjBxkjIxvPw1Vmc+O5p67iYnRd3dG/UquiJMhEdvL51IWejslQyYDk3QwfNoCAuETv+xcdjSGwdT1JrbG3Yi9vbH2Dz/Z8htPjZHrydK4Zeg2jY0Z3m1N1PA0NOHNzcebk4MzLwxgaiqVvPyxJ8RiqsqBgs3fJ3+T92eD73SsDRA44YgjwcAjqhF+oa+29VEz26kPDjoszvOuUwTt0OXkC9JroHX4cmtzy8z73LoePb4aqfJh2F0y7E4zd7HNZ+ivw+R3e9+bKd8Hevu1wc2QIsRBdhMflYd/f9/HOms+wJCUx2hhOf6uRepuRhMsGEZQa5e8ShWh3WmvqNpdQ8WUW7tJ6rAPDCTu3D+bY9vlQ20MD7LnALRyaxOlprfV43yRO64CDV7b/Ce8kTqXHO1aHt8115VC617sc2AOle9AH9uIsyaW2xkOdJ4xaT5j3p7kXtaYE6oih1hNKrcNGXZ0Rp6P5z0AWk8ZqdmEzOLGqBmzKQXCYmZDYQEKTwgnvE0NAr3gMdl8PjtbeD7JHhtTiHVBbcmjH5gCIGnh4SI0eDOEp3klf2prHTfn2LWxdlknGdisNTithxlyGBixmsH0Ztuh4SBoHSWO8P2OGHrcOT20tzoJCXAX5hwJuQUHjY9rh9IZ5Xwg9/HY0pugYjEGB7K/cz/d537N+/Q4ifxxOQEMoG5O+QY05wOTkSUxJnMKAsAEdGha11qQXpvP61tf5NudbrEYrF/S7gJ+n/pw+oX06rI4O43JA+b5D//8UboWCTd5/u27fOcQmO8QN84bUuOEQNwJiUsHSha/tW1cGOesOhdqc9MYveQiOP3QebfIE7+s1HfGFmLMOvv4zrH7e+wXT3Be9//90V1s/ho9+5X2tV30EIfEdengJsEJ0AdVbqll56yq+G7aT4e5URgRCqMGEc1gEvecNwmCTUf+iZ9EuD9U/5FG5dD+6wU3guDhCZvVu89m2u2OAVUq9g7c3NQooBP4EmAG01i/4LqPzLDAH72V0fqm1Tvc991rgD75dPaK1fvVEx+tUbXNdme+D+V4o3eMLuL7bdYcmU3ZqK3UBg6kNHEytrS91piRqVbQ39Dps1Fa5qKtyUlPegLPh8ImMrBYXIbYqQgwFBHsyCSGbYGMRIcYiQgIaMMX2PTykRg+EkKQOmRTF4/aQuamErd/lkp1RhjIo+o6MYuj0RJJ6G1H56329tOu8Pw+GbJMdEkZB0ljfMg5Cmrl2ZBuqrq7l8zfXcmCDm6qQYhb2eZmygHxi7DFMTpzMlMQpTIqfRKg1tF2O7/K4+Hrf17y29TW2HthKuDWcywdfzmWDLiPS3sETAbU1Zz2UZR36oqd0z6HbFTney70cFBDl61EdcSisRvaDdrg+bKfidkHR1iaTQ62G8v3edSab9/+H5PGQPBGswfDF76FkB4y/Ac78c9cO8y21Zxn8b753Yqyff+z9d9FBJMAK0Yl5XB6y/5bNh98tRg+IZowpjL5WI3U2I0lXDCFw0Alm5xOim3PXOKn6Zj/VP+ajTAaCZyQRfFoiytw2H666Y4DtaF2mba4thdLMJsF2z6FeqPryJhsq75DCyL5oaxgNRXlUFldT6Qij0hVDlTuGSpVMpSeBKkcobs/h/xYDQiyERNkIjrQTEmUjJNJOsO9nUIQVo7Htg2x1WQPbVuaybWUeNRUOgsKtpE5NIHVKAoFhxzhXVGtvT1xOum9Z6+2JO9gLF5xweKCNT2uXD+17NxSz/K3tNNS6CJpSy4a4pawqXEWVowqDMjA8ajhTEqcwNWEqqZGpGFsZrGqcNXy06yPe3PYmeTV59A7pzdWpV3NBvwuwmTrX+X7H5aiFsswmIfXgiIRM3zD1Jp/zbWHe8BHR9+glILJTXDalU6jMh5w1h0Jt3gbw+C6zFJwAFz0H/c7wa4kdLncdvHWJd+j1VR9C/MgOOawEWCE6qZrtNay+cS3LUrczzDiIEQEQbDDhSoui19yBHToTqxCdnbO4lopFWdRvO4Ax1ELU9cMxR7f+w7QE2NbrFm1zbelhQ5Ibe27ryg4/RzVqkLdH1XdOmPZoaisdVJbUUXmgnqoDdVSW1FPp+1ld1oD2HPq8pQyKoDCrN+BG2QmJtBESefC2ncBQS4snL9MeTc72MrZ8l0vmphK0R9MrNYKh0xJJGR6J4VSCsqvBe97jwXNpc9Z6Qy54L4MSO/RQoE0c631v2qBnubbSwfK3tpO5sYT4/qHMuHog+9nD93nf833u92wp2YJGE2oNZXK8t3d2csJkogNafv5lYU0hb21/iw92fECVs4rRMaO5Zug1TE+efvLX/ewoDVW+L132Hr1U5R++bUCkL5QeGVT7nPhSNaJ5znrI3wAlu2DIeX45F7RTKN4J/50LDZVwxTuQMrXdDykBVohORns0OU/n8NknS6kfFspYX69rtd1Ir/lDCOjfQ/9ACtECDXvLqV5dQMSlg1DG1vcaSIBtPWmbj83j9lBd1kDlgXoqS+qo8v2sLPGG3ZqKw69bajQZCD4YaiNthETZG3+GRNmwBZppqHGR8UM+W1fkUlFchy3QzJDJ8QydlkBoG3ypc5TqYt8EUb5Am/sTOKq862yhkDjGe95g7yneYHsyk081obVmx48FrHh3J1rD1EsGMGRKPEopyurLWJW3qjHQHqg/AMDgiMFMTpjM1MSppEWnYW5mMp0dpTt4Y9sbLNy7EA8ezux1Jr8Y+gtGRI845bekTdVXHBFOMw99gVJTdPi2gTGHgmlkk5Aa3gfsYX4pX/QQFTnw34u9Q9MveRUGn9uuh5MAK0QnUr+vnnU3rOfr3lsZYunHiEAIUEY8Y2LodeEADBbpdRWiI0mAbT1pm0+dy+n2htoD9VSVHOy9PdSTW1/jPGx7s9WIx61xuzzE9wtl6LRE+o2OxtRGQ+pbxOP2TlSV02TW46JtgAajxRtie0+BlCmQNP6khx1XHqhj6RsZ5O4oJ2V4JDOuGkxg6KFh0B7tYWfZTlbmruT73O/ZULQBl3YRYApgQvwEpiZOZXLCZPZX7ue1ra+xKn8VdpOdiwdczFVDriIpOKmN35AWcDu971HxzqPPS609cPi2wfGHek4P61Ht4z0XUwh/qS2Ft+ZB3nq44BkYdVW7HUoCrBCdgNaawjcL+eKlb6kcYWO8OZTeViNVgUZSfj4Ue0r7TFIhhDg+CbCtJ21z+3HUuQ7vvT1QhzIoBk+MJyopyN/lHVJXBvt/hKyV3qVgk3eiIIPZ20ObMsU77DB5AlhOPKO49mg2Lcth1cd7MFuMzJg/iH6jm7/eZbWjmtUFq/kh9wdW5q4kryavcV20PZorh1zJJQMvabfJoI4uXnvPTc39yXv+YO46yN8IrvpD24QkNQmoB3tU+3lnpW7B+yOE3zRUw3s/hz1LYdZDMOV37XIYCbBC+Jmz1MmmX2/hy4CNDArszYhAhVUZYHwcvc7vjzJ30nNvhOgBJMC2nrTN4ij1FbB/NWStgH3feyfD0W4wmCBhtDfQ9p4KvSYct1exNL+Gr1/dRvH+KgZOiGXaZQOxHuda6Fprsiqz+CHvB0IsIcxOmY3F2LYzlx+lpuTwsJq7Dup8V54y2byTXyWOgcTR3nOIw1PAbG/fmoRoTy4HLLgRtn4Ek2/1Btk2nghMAqwQflS2tIwvHvqWA0MV462hJFuMVAYZ6PuLEdiSZSiQEP4mAbb1pG0WJ9RQ5Q20+1ZC1veQ9xN4XN6JoRLSfEOOp0Kvid7zaptwuz2sW5hF+qJ9BIZaOOPqISQP8dOkRI5ab+/ywaCak35okisUxAzxBtXEMd5JrmKGQDPn5QrR5XncsPAuSH8Z0q6C859q02taS4AVwg88Dg87/m8XnxSsZWBoIsMDFBZlgMkJ9DqnL8okva5CdAYSYFtP2mZx0hw13suUZH3v7aHNSfderkQZvNchTZnqC7STGicnKsyq5OtXt1FeWMvw05OYNLcf5vacN8LjhuIdTXpW06Fwm7cnGbzDgBNHe2dlThzjvbyInKMqehKtYfmj8O2jMOhcmPdym40ukAArRAer3VnLl7etILdvA+MtISRajJSHGBjwi5FYEzvROUtCCAmwbUDaZtFqjlrvhFD7vveeQ5uz1nc9WgVxw71htvcUXPETWbWklE1LcwiLDeDMa1KJ7RPS+uNr7b12ak66L6z+5J2oxlnjXW8NbdKz6hsOHBzX+uMK0R2sfhEW3Q29J3svs2Nr/fnmx2qb266PVwjRaP/LOby37Hv694vh7AArJqXwnJbA0Dl92+SSH0IIIUS3YwmAvtO9C3ivv5mbfmhSqPRX4Md/YUJxWuxQ+kw6n282j+XDv6czZk4KY89NwXgy172tK/cOYz4YVnPXQXWhd53R4g3No+YfCqwR/drkerdCdEsTbvBea3j5X71fRrVBgD0WCbBCtCFXlYtvblvNLlsp02NjiTcbKQ2FQb8cjTVOZhQUQgghWsxsOzSMGMDV4A2aWSth30qSsp/i8gBY4bqe9IWns+/7jZx5noGIUZMhKPrwfbkaoGDL4ZMsHdh1aH3kAOh7+qGwGjcMTFaEECdh+DwYcgGY2nfSNAmwQrSRAz+W899/LaNfWBjn2ENQCjynJzB8Vl+UQXpdhRBCiFYxWaH3JO/CXeByYM1bz5n7VtJn3UKW75zKe29Zmfjp7YzstQvVZ7J3xuPcdVCw2TccGQiM8Z6zOvIyb1hNGN14jq0QopXaObyCBFghWk1rzerHtvDT/n2cFh1BrNlAcZiHYdeNwxx9chduF0IIIUQLmSzeS/D0mkC/0yC+rIZlr6zj+13Xkpmdy8yyfxBiLIKEUTDhpkMTLYUktvnlPoQQHUcCrBCt4Cx38r87lxEaYGJOcDDaoHGfEU/azH7S6yqEEEJ0oIDwQM654zS2r8pnxXtG/lf6FKNnJdN7eDRRSUHSLgvRTUiAFeIUla+t4LVnlzIuIoLeVgP5YU7SfjUJc6RcmFwIIYTwB6UUQyYnkDgwnGVvbmf1Z1ms/iwLW5CZ5MHhJA2JIHlIBMERNn+XKoQ4RRJghThJWmv2PrefRVvWc2Z0BGEmA8Uj7Yy9bKp8uyuEEEJ0AiFRdi68bRQ1FQ3kZJSSnVFGdkYpu9KLAAiPC2gMs4kDw7DY5COxEF2F/N8qxElwVbtYecs6soNLOTskAo/RjfuiPoya0MvfpQkhhBDiCIGhVgZNjGfQxHi01pTm1ZCdUUp2RikZK/PYvCwHg0ER2zeEZF+gjekdjOFkLscjhOhQEmCFaKGa7TUs+P23RA2wMsMaSKGljsG/mUxQfLC/SxNCCCHECSiliEwMIjIxiLQze+F2esjfU97YO7vm80zWfJaJxW4iaVA4yakRJA8JJ1QmZBSiU5EAK0QLFH5QxHvvrWTi4EjizQb2RNUz9bczMVrlfyEhhBCiKzKaDSQNjiBpcAST5vajrtpBzvayxh7avRuKAQiJsjX2ziYOCscWaPZz5UL0bPLpW4jj8Lg87Lh3N8srtzKrdxR2o2b/KCvTLp2Kkin4hRBCiG7DHmRhwNhYBoyNRWtNRVEd2Rml7N9Wys61hWxdkYdSEN07hF6+3tnYPqEYTTLcWIiOJAFWiGNwFDlY9Yt15A8o5ezwSGoNDhyXDGDy6N7+Lk0IIYQQ7UgpRVhsAGGxAQyfkYTb7aEos7Kxd3bdl/tIX5iFyWokcWBYYw9teFyAfMEtRDuTACtEMyrXVLLoru+JHm1hqjWELEsVw387jdDoIH+XJoQQQogOZjQaiO8fRnz/MMaf35eGOhe5O3zDjbeVsm/zAQACw6wkD/GdPzs4Anuwxc+VC9H9SIAV4gh5/8njs09XMWFcFFEmAxtjqjn7t7MxmI3+Lk0IIYQQnYDVbqJvWjR906IBqCyp8/XOlpG5sYTtqwoAiEoOInlwBMmpEcT3D8UknyWEaDUJsEL4eBwedvxuF987tzJzcDRGg2brGCPnXnK2v0sTQgghRCcWEmVn6GmJDD0tEY9HU7y/iuyMUnIyStm4NJv1X+3HaDaQ0D+UUbN6k5wa4e+SheiyJMAKATgKHay98icKhh3grJAoygz1qMv6Mzutr79LE0IIIUQXYjAoYlNCiE0JYezZKTjqXeTtKicno4y9G4v5/LmNzLlxOH1GRPm7VCG6JJk2TfR4lemVLLxoGZ60aibYQ9hhLSfpzsmMkPAqhBBCiFay2EykDI9i6qUDuOz+cUQlBfHlvzeTtanE36UJ0SVJgBU9WuHbhXz0wDf0n2ojxWRhZVQppz9wHpGRMlmTEEIIIdqWNcDMBb9LIyopiEUvbiZrs4RYIU6WBFjRI2m3Zve9e1j89fdMHx6JzaD5cYyHy++8EJNcz00IIYQQ7cQaYOb8W9OITAhi0b8lxApxsuSTuuhxXJUu1l38Exn12zkjJpoDqo6SyxK55NIZ/i5NCCGEED2ALdDbE3swxO7bcsDfJQnRZUiAFT1K3d46vj7/W9wDyhhlC+EnczEJd05m4ugB/i5NCCGEED3IYSH2hc3s2yohVoiWkAAreozy78r59JavSJlgIs5oYVFkIbMfuJCEqGB/lyaEEEKIHuhgiA2PD2DR85vZLyFWiBOSACt6hLz/5LHk1WVMHB6GUh6+HtnAr+6ah1UuKC6EEEIIP7IFmrnwtlGExwewUEKsECckAVZ0a9qt2X7ndrZsWc/k2CjyVA375sVy3ZWz/F2aEEIIIQTgC7G/axJit0mIFeJY2j3AKqXmKKV2KKV2K6XubWZ9L6XUMqXUeqXUJqXUOe1dk+gZXNUufpj/A7Uql1RbCN+bCoi9YyJnjUv1d2lCCCGEEIexBXlDbFicN8Rmbyv1d0lCdErtGmCVUkbgOeBsIBW4Qil1ZHr4P+A9rfUo4HLgX+1Zk+gZ6nPqWXzdV8T2chFuMPNBeA7n/3EufWPC/V2aEEIIIUSzbEFmLrwtjbCYAL54fhPZGRJihThSe/fAjgd2a633aq0dwP+AC4/YRgMhvtuhQF471yS6ucp1lXz94BKGpwTSgIdPhlbxu7svJ8Bq8ndpQgghhBDHZQ+ycOHtvhD7r01kb5cQK0RT7R1gE4HsJvdzfI819SBwlVIqB1gI/La5HSmlblBKpSul0ouLi9ujVtENFHxYwIY3V5IWFU6mrmHnheHcdvW5KKX8XZoQQgghRIscCrF2Fj63iRwJsUI06gyTOF0BvKa1TgLOAf6rlDqqLq31i1rrsVrrsdHR0R1epOj8tv9tC8Wrt9LHEsRSQz7RvxvL3Clp/i5LCCGEEOKk2YMsXHjbKEJj7HwhIVaIRu0dYHOB5Cb3k3yPNXUd8B6A1noVYAOi2rku0Y1ot+b733+L5cABAjDzZvB+LvrjRaQmyhcdQgghhOi67MHeEBsS7QuxO8r8XZIQftfeAXYtMEAp1UcpZcE7SdOnR2yzH5gJoJQagjfAyhhh0SKuahff3rGY3mYDVR4P/xtwgHv+MJ8Qu8XfpQkhhBBCtNphIfbZjeRKiBU9XLsGWK21C7gFWAxk4J1teKtS6iGl1AW+zX4P/EoptRF4B7hGa63bsy7RPdTureKnB7+hvz2QDHcVG+YEcP+v5mIwyPmuQgghhOg+AkK8ITY4ys7nz20kd6eEWNFzqa6YFceOHavT09P9XYbwo8LlOZQu3EmAMvGVymfkDVMZ1/fI+cGEEKJllFLrtNZj/V1HVyZtsxDtr7bSwcdPrqfqQB3n3TKSxIFyeUDRfR2rbe4MkzgJcVIyXl1P/aK9GDHxqnUvF95/gYRXIYQQQnR7ASEWLrp9FMERNj5/diN5u6QnVvQ8EmBFl/LTEz8QvKOaErebV+PyuP9PVxMdbPd3WUIIIYQQHSIgxMKFvhD72bObyNtV7u+ShOhQEmBFl6C15sc/LyemyE22q4FvR7n56x2XYzbKP2EhhBBC9CyBoVZviA238tmzG8nbXe7vkoToMPLpX3R6Ho+HH+77hqQ6I3tcdWw7w84d88/0d1lCCCGEEH5zMMQGhVn5/JmN5EuIFT2EBFjRqbkb3Pxw91f0xso2dxVFc6O57pwp/i5LCCGEEMLvAkOtXHTHKALDrHwmIVb0EBJgRaflrHSy6r6vSTEF8JOnDH7ej0umjPJ3WUIIIYQQnUZgqJWLbm8SYvdU+LskIdqVBFjRKdXn1bH2waWkWAJYqQuJu2kUZ40Y5O+yhBBCCCE6ncAwb4gNCLXw2TMbKNgrIVZ0XxJgRadTvaOKjf9YQS9LAEtUDiN/N53xfZP9XZYQQgghRKflDbGjCQix8OnTEmJF9yUBVnQqZT+WsuOl1SSYbHxszGTmnecwJCHa32UJIYQQQnR6QeG+EBssIVZ0XxJgRadR8GU++z9cT7TRwju2XVx+3yX0jgz1d1lCCCGEEF1GULh3Yid7sIXPnt5AQaaEWNG9SIAVncK+t/dR8s12Qg1mXg/azq/vu5qoILu/yxJCCCGE6HKCwm3MvWMUtmALnz21gcLMSn+XJESbkQAr/G77s9up3ZBJoMHIK2E7uPOeawm2mf1dlhBCCCFElxUUbuOi20dhCzLz6dMbKMySECu6Bwmwwq/WP7wR4/5CLErxn7hdPHD3ddgtJn+XJYQQQgjR5QVH2LjojtHYAk18+pSEWNE9SIAVfqG1ZtW9qwmpLAeleT1lH//vd9diMso/SSGEaAtKqTlKqR1Kqd1KqXubWd9bKfWNUmqTUmq5UiqpybrHlFJbfMtlHVu5EKItHRlii/ZJiBVdm6QF0eG0R/PtbSuJ0w04lYd3hxbx55t+jsGg/F2aEEJ0C0opI/AccDaQClyhlEo9YrPHgTe01iOAh4C/+p57LjAaSAMmAHcqpUI6qHQhRDsIjrBx4e2jsAZIiBVdnwRY0aE8Tg9f3bKcFJumBiefjqvi/66+FKUkvAohRBsaD+zWWu/VWjuA/wEXHrFNKrDUd3tZk/WpwHdaa5fWugbYBMzpgJqFEO0oJNLORXeMwmL3htji/VX+LkmIUyIBVnQYd52bL3/7DYODjZRRz8rTPdw97wJ/lyWEEN1RIpDd5H6O77GmNgIX+27PBYKVUpG+x+copQKUUlHA6UBycwdRSt2glEpXSqUXFxe36QsQQrS9kEg7F90+CovNxCf/XC8hVnRJEmBFh3BWOFl0+zcMC7VSoGrYel4gN82Z5e+yhBCiJ7sTmK6UWg9MB3IBt9Z6CbAQ+AF4B1gFuJvbgdb6Ra31WK312Ojo6A4qWwjRGiFR3p5Ys80oIVZ0SRJgRbtrKHKw5L6lpIXZ2WeoIP+SOK46bYq/yxJCiO4sl8N7TZN8jzXSWudprS/WWo8C7vc9Vu77+YjWOk1rPQtQwM4OqVoI0SFCouzMvWO0N8Q+tZ7s7aX+LkmIFpMAK9pVzb5alj60jJEhAWQYinFdPYALx4zyd1lCCNHdrQUGKKX6KKUswOXAp003UEpFKaUOfg64D3jF97jRN5QYpdQIYASwpMMqF0J0iJAoOxfdPhqr3cSn/9zAJ/9cT0Fmhb/LEuKEJMCKdlOWUckP/1jJ8KAAfjLlEXHDGE4fMtjfZQkhRLentXYBtwCLgQzgPa31VqXUQ0qpg5MPzAB2KKV2ArHAI77HzcAKpdQ24EXgKt/+hBDdTGi0nSsemMCUef05kFvNh4+t44t/baIkR4YVi85Laa39XcNJGzt2rE5PT/d3GeI4itPL2PLmOgbYrHxvySLtN2cxKC7W32UJIUSzlFLrtNZj/V1HVyZtsxBdm6PexaalOaz/aj+OOhf9x8Qw/vw+hMcF+rs00UMdq202+aMY0b3lflvM3o83McBm5SvbLmb97mKSwsP8XZYQQgghhDgGi83E2HNSGDY9kQ1f72fj0hz2/FTEoIlxjDu3DyFRdn+XKAQgAVa0scwv8ij8Zjt9rBY+DczgktvmEx0s39wJIYQQQnQFtkAzEy/sx4jTk/lp8T62fJvLzjWFpE5NYOzZKQSGWf1doujhJMCKNrP93Syq12SSZDHzfuhWfnX7tQTZLP4uSwghhBBCnKSAEAtTLxlA2pnJpC/MYtuKPDJ+yGf4jCRGz+6FPUg+4wn/kAAr2sSGl3dARgGxJiNvRW7lttt+hdVs9HdZQgghhBCiFYLCbcyYP5hRZ/Vm7ReZbPx6P1u/y2XkzGTSZvXCapc4ITqW/IsTrbbq6S0E7T9AqFHxZsIO7v7tjRgNyt9lCSGEEEKINhIabefMa1IZfVZv1ny+l/SFWWxensOos3ox4vRkzFbpuBAdQwKsOGVaa5b97SfiSmoIMMI7KXu596brUUrCqxBCCCFEdxSREMicG4ZTvL+K1Z/u5ceP97JxaQ5j5vRm2GmJGM1ylU7RviTAilOiPZovH1pNnxoHFqOHDwfncs811/i7LCGEEEII0QGiewVz3i0jyd9TwepP9rDyvV1s+Go/487tw6BJcRiNEmRF+5AAK06a2+3h8z/+QKrLA0YXi0aV8/vL5vu7LCGEEEII0cHi+4Vy4e2jyNlRxupP9rLsze38tHgf487rw4BxsRjktDLRxiTAipPidLj59P9WkobCYWzgx8lubj7/Yn+XJYQQQggh/EQpRfLgCJIGhZO1+QCrP9nL169u46fF+5hwfl/6pEXJKWaizUiAFS1WX+Pksz+uZKzZSLWhloyZdn555nR/lyVEp+R0OsnJyaG+vt7fpYgmbDYbSUlJmM1mf5cihBDdjlKKPiOiSBkWye6filjzWSaL/r2ZmN7BTLigL8mpERJkRatJgBUtUlPewMIHVzLOauaAsYrC86O5dNJ4f5clRKeVk5NDcHAwKSkp0lh3ElprDhw4QE5ODn369PF3OUII0W0pg2LA2Fj6jYpmx+oC1n6exWfPbCS+fygTL+xHwoAwf5coujAJsOKEygtr+eYvqxhvM5NvKqPhkn6ckzbM32UJ0anV19dLeO1klFJERkZSXFzs71KEEKJHMBgNDJmcwMDxcWxbmUf6oiwW/OMnklMjmHBBX2JTQvxdouiCJMCK4yrOrmLl39cwzm4m01xE4M/TmDiov7/LEqJLkPDa+cjvRAghOp7RZGD4jCQGT45ny/Jcflq8jw8eTafPyCgmXNCXyMQgf5couhAJsOKYDuRVs+rxtYy1m8mw5tH7+tMY1CvR32UJIYQQQoguyGwxMuqsXgw9LYGNS7PZ8NV+/vfwGgaMjWX8+X0Iiwnwd4miC5AAK5pVVljDisdWM8ZmZpM1h5E3n0VSbJS/yxJCCCGEEF2cxW5i3Ll9GD4jifVL9rNpWTa71xUxZFIcY8/tQ3CEzd8lik5MrjAsjlJZUsfyv6xijM3MFkseo353toRXIbogo9FIWlpa4/Loo4/6u6RT8tprr5GXl3dSz8nKymLYMDlXXwghOjNboJlJc/tx1f+bxPDpiWxfXcCbD6ziu3d34qh3+bs80UlJD6w4THV5PV89/D3jbBa2WwoYfussEiLD/V2WEOIU2O12NmzY4O8yWu21115j2LBhJCQk+LsUIYQQ7SAw1Mpplw0kbVYv0r/IZPPyHExmA5MvlnlXxNEkwIpGtVUNLPrTCibYrOw2FzHkljNIio70d1lCdHm7bttF9YbqNt1nUFoQA/45oM32l5KSwqWXXsqiRYuw2+28/fbb9O9/+AeHmpoafvvb37JlyxacTicPPvggF154Ib/73e+IjIzkgQceYPHixTzyyCMsX76ca6+9FpvNRnp6OpWVlTzxxBOcd955uN1u7r33XpYvX05DQwM333wzN954IwCPPfYYb775JgaDgbPPPpuxY8eSnp7O/PnzsdvtrFq1im3btnHHHXdQXV1NVFQUr732GvHx8axbt45rr70WgLPOOqvN3hshhBAdIzjCxuk/H0JDnYttK/MYd24fzFajv8sSnYwMIRYA1Nc4+PyP3zLBZmWvuYQBt0yTYcNCdHF1dXWHDSF+9913j7t9aGgomzdv5pZbbuG22247av0jjzzCGWecwZo1a1i2bBl33XUXNTU1/PWvf+Xdd99l2bJl3Hrrrbz66qsYDN7mJSsrizVr1vDFF19w0003UV9fz8svv0xoaChr165l7dq1vPTSS2RmZrJo0SI++eQTVq9ezcaNG7n77ruZN28eY8eO5a233mLDhg2YTCZ++9vf8sEHHzQG1vvvvx+AX/7ylzzzzDNs3Lixzd9LIYQQHWfkGck01LrYsbrA36WITkh6YAWOOief3L+cSVYb+0yl9LllKslxMf4uS4huoy17Sk/GyQ4hvuKKKxp/3n777UetX7JkCZ9++imPP/444L3W7f79+xkyZAgvvfQS06ZN48knn6Rfv36Nz7n00ksxGAwMGDCAvn37sn37dpYsWcKmTZv44IMPAKioqGDXrl18/fXX/PKXvyQgwDsLZURExFE17Nixgy1btjBr1iwA3G438fHxlJeXU15ezrRp0wD4+c9/zqJFi1r82oUQQnQecf1Cie4VzKal2QydmoAyyCXQxCESYHs4p8PFh/ctZbLVTo6pjOSbJ9FbwqsQPVLTa6Q2d71UrTUffvghgwYNOmrd5s2biYyMPGqypSP3o5RCa80zzzzD7NmzD1u3ePHiE9aotWbo0KGsWrXqsMfLy8tP+FwhhBBdg1KKkTOT+frVbWRnlNJrqJzSJg6RIcQ9mMvp5v17vmGy1U6BsZL4X08gJSHW32UJIfzk4BDjd999l0mTJh21fvbs2TzzzDNorQFYv349APv27eMf//gH69evZ9GiRaxevbrxOe+//z4ej4c9e/awd+9eBg0axOzZs3n++edxOp0A7Ny5k5qaGmbNmsWrr75KbW0tAKWlpQAEBwdTVVUFwKBBgyguLm4MsE6nk61btxIWFkZYWBgrV64E4K233mrz90cIIUTH6T8mhoAQCxuXZvu7FNHJSA9sD+V2uXn37q+YYgmgyFhF1E2j6ZMU5++yhBBt6OA5sAfNmTPnuJfSKSsrY8SIEVitVt55552j1v/xj3/ktttuY8SIEXg8Hvr06cNnn33Gddddx+OPP05CQgIvv/wy11xzDWvXrgWgV69ejB8/nsrKSl544QVsNhvXX389WVlZjB49Gq010dHRfPzxx8yZM4cNGzYwduxYLBYL55xzDn/5y1+45ppruOmmmxoncfrggw+49dZbqaiowOVycdtttzF06FBeffVVrr32WpRSMomTEEJ0cUaTgWHTE1nzWSZlBTWExwX6uyTRSaiD36R3JWPHjtXp6en+LqPL8rg9vH33EqaaAjhgqCH0phH0753o77KE6FYyMjIYMmSIv8tosZSUFNLT04mKarvJ26655hrOO+885s2b12b7bAvN/W6UUuu01mP9VFK3IG2zEKKt1VY6eOMPPzBkcjzTrzz69BXRvR2rbZYhxD2Mx+PhrXsWM8UUQJmhluBfDZPwKoQQQgghOp2AEAsDxsey/cd86muc/i5HdBIyhLgH8Xg8vHX3YqYaA6lS9QRel8rAvsn+LksI0YHmzp1LZmbmYY899thjZGVltfmxXnvttTbfpxBCiJ5l5BlJbP8hn23f5zH6rN7+Lkd0AhJge5A37/uSqYYgqlUDlusGMbB/L3+XJIToYAsWLPB3CUIIIUSLRSUFkzgwjM3LckibmYzBKANIezr5F9BD/PfehUzVQdQZHBiv6c/gAfINlhBCCCGE6PxGnJFMdVkDezeU+LsU0QlIgO0B3rh/EZM9QTQYnKir+5A6uI+/SxJCCCGEEKJFUkZEERJlY5NcUkcgAbbb++8fFzHZGYhTuXBdmUJqaj9/lySEEEIIIUSLGQyKEacnk7+ngqJ9lf4uR/iZBNhu7L8PLmJiQyAe5cZxWRLDR0h4FaInMRqNpKWlNS7HuwZsSkoKJSWdb2hWVlYWb7/99kk/75prruGDDz5oh4qEEEL4w5DJ8ZhtRjZKL2yPJ5M4dVNv/r9FTKgNBOWhZl4co0YP9HdJQogOZrfb2bBhg7/LaJWDAfbKK6/0dylCCCH8yGI3MWRSPFu+y2Xyxf0JDLX6uyThJ9ID2w29/ZfFjKsKwKA8VF4Uy6hxQ/xdkhCii6irq+Pss8/mpZdeOmrdkiVLmDRpEqNHj+aSSy6hurqaffv2MWDAAEpKSvB4PJx22mksWbKErKwsBg8ezPz58xkyZAjz5s2jtrYWgHXr1jF9+nTGjBnD7Nmzyc/PB2D37t2ceeaZjBw5ktGjR7Nnzx7uvfdeVqxYQVpaGk8++SRut5u77rqLcePGMWLECP79738DoLXmlltuYdCgQZx55pkUFRV13JsmhBCiQww/PQmPR7Pl21x/lyL8SHpgu5l3/v4Vo8ttmBSUnhfNuEkSXoXwt9t27WJDdXWb7jMtKIh/Dhhw3G3q6upIS0trvH/fffdx2WWXHXP76upqLr/8cq6++mquvvrqw9aVlJTw8MMP8/XXXxMYGMhjjz3GE088wQMPPMA999zDr3/9a8aPH09qaipnnXUWWVlZ7Nixg5dffpkpU6Zw7bXX8q9//Yvf/e53/Pa3v+WTTz4hOjqad999l/vvv59XXnmF+fPnc++99zJ37lzq6+vxeDw8+uijPP7443z++ecAvPjii4SGhrJ27VoaGhqYMmUKZ511FuvXr2fHjh1s27aNwsJCUlNTufbaa0/9DRZCCNHphMUEkDI8iq0rchlzdm9MZqO/SxJ+IAG2G3n3ia9JKzZjUVAyO4Lxpw31d0lCCD862SHEF154IXfffTfz588/at2PP/7Itm3bmDJlCgAOh4NJkyYBcP311/P+++/zwgsvHHa85OTkxu2vuuoqnn76aebMmcOWLVuYNWsWAG63m/j4eKqqqsjNzWXu3LkA2Gy2ZmtcsmQJmzZtajy/taKigl27dvHdd99xxRVXYDQaSUhI4Iwzzmjx6xZCCNF1jDwjiU/+WcKutYUMmZzg73KEH0iA7Sbee3YpwwtMWJWi8MwwJp0x3N8lCSF8TtRT2llMmTKFL7/8kiuvvBKl1GHrtNbMmjWLd95556jn1dbWkpOTA3h7cYODgwGO2odSCq01Q4cOZdWqVYetq6qqalGNWmueeeYZZs+efdjjCxcubNHzhRBCdG2Jg8KJTAxk4zc5DJ4Uf1RbI7o/OQe2G/jwhWWk7lfYlYGCaaFMmjXS3yUJIbqghx56iPDwcG6++eaj1k2cOJHvv/+e3bt3A1BTU8POnTsBuOeee5g/fz4PPfQQv/rVrxqfs3///sag+vbbbzN16lQGDRpEcXFx4+NOp5OtW7cSHBxMUlISH3/8MQANDQ3U1tYSHBx8WLidPXs2zz//PE6nE4CdO3dSU1PDtGnTePfdd3G73eTn57Ns2bK2f4OEEEL4nVKKEWckcyC3mryd5f4uR/iBBNgubsEr3zFwLwQpI7mTgph8bpq/SxJCdBIHz4E9uNx7770nfM5TTz1FXV0dd99992GPR0dH89prr3HFFVcwYsQIJk2axPbt2/n2229Zu3ZtY4i1WCy8+uqrAAwaNIjnnnuOIUOGUFZWxq9//WssFgsffPAB99xzDyNHjiQtLY0ffvgBgP/+9788/fTTjBgxgsmTJ1NQUMCIESMwGo2MHDmSJ598kuuvv57U1FRGjx7NsGHDuPHGG3G5XMydO5cBAwaQmprK1Vdf3Ti8WQghRPczcFwstiCzXFKnh1Jaa3/XcNLGjh2r09PT/V2G333yxgr6bHESokzsHxfAtHlj/V2SEMInIyODIUN67iRqWVlZnHfeeWzZssXfpRylud+NUmqd1lr+iLaCtM1CiI60+tO9pC/K4qqHJhIaHeDvckQ7OFbbLD2wXdQX73xP7y0OQpWJfSNtEl6FEEIIIUSPMWxaIgal2LxMLqnT00iA7YIWfbiKuPV1RCgzmUOtTL9yvL9LEkJ0EXPnzj1sWHFaWhqLFy9u8+OkpKR0yt5XIYQQ3UNgmJX+Y2PY9kMejjqXv8sRHUhmIe5ivvp8LVGrq4hWNnYPNHPG1RP8XZIQogtZsGCBv0sQQggh2sSIM5LZuaaQjFX5jDwj2d/liA4iPbBdyFdL0glZUUqssrGrj4kzrpNJSoQQQgghRM8UmxJCXN9QNi3LwePpevP6iFMjAbaLWLZsPUHfFJOAnV1JBmbeNNnfJQkhhBBCCOFXI2cmU1lcx77NJf4uRXQQCbBdwIqVGzEvziOJQLbHKmb+dqq/SxJCCCGEEMLv+qZFERRuZePSHH+XIjqIBNhObsWazXg+308KIWyPhFl3nObvkoQQQgghhOgUDEYDw2ckkbujjJKcan+XIzqABNhO7IeftuJcsId+hLEt2MOsu6f5uyQhRBdiNBoPm2340UcfbbN9v/baa9xyyy0n/bx9+/YxevRo0tLSGDp0KC+88ELjuvvvv5/k5GSCgoLarE4hhBDdX+rUBExmA5uWZfu7FNEBZBbiTmrNlu1Uv7+DVB1Nht3NrD9M93dJQoguxm63s2HDBn+XcZj4+HhWrVqF1WqlurqaYcOGccEFF5CQkMD555/PLbfcwoABA/xdphBCiC7EFmhm0KR4tv+Qz6SL+mEPtvi7JNGO2r0HVik1Rym1Qym1Wyl17zG2uVQptU0ptVUp9XZ719TZrduxiwPvbPKGV4ubMx+YjlLK32UJIbqxlJQU7r77boYPH8748ePZvXt3i5/7xRdfMGnSJEpKTjyBhsViwWq1AtDQ0IDH42lcN3HiROLj40++eCGEED3eiNOTcLs8bF2R6+9SRDtr1x5YpZQReA6YBeQAa5VSn2qttzXZZgBwHzBFa12mlIppz5o6u/W7d5P7Rjqj3UlkGF2c+eAMCa9CdHF//mwr2/Iq23SfqQkh/On8ocfdpq6ujrS0tMb79913H5dddtkxtw8NDWXz5s288cYb3HbbbXz++ecnrGPBggU88cQTLFy4kPDwcN566y3+/ve/H7Vd//79+eCDDwDIzs7m3HPPZffu3fz9738nISHhhMcRQgghjiciPpBeqRFs/jaXUWf1xmiSMyW7q/YeQjwe2K213guglPofcCGwrck2vwKe01qXAWiti9q5pk5r0769ZL72I+PdvclQLmY+NB1lkPAqhDg1JzuE+Iorrmj8efvtt59w+6VLl5Kens6SJUsICQkBYP78+cyfP/+4z0tOTmbTpk3k5eVx0UUXMW/ePGJjY1tcpxBCCNGcETOT+fyZjexeV8SgCXH+Lke0k/YOsIlA07Opc4AJR2wzEEAp9T1gBB7UWn955I6UUjcANwD06tWrXYr1p935eWS8/B1TXP3Y7nFyxl9mYDDKN0dCdAcn6intLJqO9mjJyI9+/fqxd+9edu7cydixYwFa1AN7UEJCAsOGDWPFihXMmzevldULIYTo6XoNiSAsNoBNS7MZOD5WRjF2U50hIZmAAcAM4ArgJaVU2JEbaa1f1FqP1VqPjY6O7tgK21luWQnfP7+QKY5+7HA7mfHIdBn2IITocO+++27jz0mTJgHeIcL33Xdfs9v37t2bDz/8kKuvvpqtW7cC3h7YDRs2HLUcDK85OTnU1dUBUFZWxsqVKxk0aFB7vzQhhBA9gDIoRp6RRNG+Kgr2tu2pO6LzaO+UlAskN7mf5HusqRzgU621U2udCezEG2h7hLKaKj576n1mOgax2+Vk6kOnYTIb/V2WEKIbOHgO7MHl3nubnUevUVlZGSNGjOCpp57iySefBGDPnj2Nw4ObM3jwYN566y0uueQS9uzZc8KaMjIymDBhAiNHjmT69OnceeedDB8+HIC7776bpKQkamtrSUpK4sEHH2z5ixVHOdEkikqp3kqpb5RSm5RSy5VSSU3W/c03sWKGUuppJd0YQoguYtDEeKwBJjZ+I5fU6a6U1rr9dq6UCW8gnYk3uK4FrtRab22yzRzgCq31L5RSUcB6IE1rfeBY+x07dqxOT09vt7o7SnVDHf959D/Mq0sj0+Vk3J+nYguUab+F6A4yMjIYMmSIv8tosZSUFNLT04mKijrs8auuuoonn3yS7jTypbnfjVJqndZ6rJ9KanO+SRR30mQSRbxtbdNJFN8HPtdav66UOgP4pdb650qpycDfgYMXH18J3Ke1Xn68Y3aXtlkI0fX98OFuNnyTzc8fnkRwhM3f5YhTdKy2uV17YLXWLuAWYDGQAbyntd6qlHpIKXWBb7PFwAGl1DZgGXDX8cJrd9HgcvKvx15kXl0a2S4no/9vsoRXIUSn8+abb3ar8NqDNE6iqLV2AAcnUWwqFVjqu72syXoN2AALYAXMQGG7VyyEEG1k+OneASWbl+f4uRLRHtp7Eie01guBhUc89kCT2xq4w7f0CG6Pm8cffY6ra0aT53Yx9N6JBIbJt0NCiPY3d+5cMjMzD3vsscceIysryz8FifbSkkkUNwIXA08Bc4FgpVSk1nqVUmoZkA8o4FmtdUYH1CyEEG0iOMJG37Qotq3MY9y5fTBb5fS87qTdA6w4nNaaRx59hmuqRlPsdjPw9nGERAX4uywhRA+xYMECf5cgOo87gWeVUtcA3+E91cetlOoPDME7bwXAV0qp07TWK47cQXe/QoAQousaeUYye34qZsfqAoZNS/R3OaINyVS3Hezhvz/HLypGU+bxkPTrNMISg/xdkhBCiO7nhJMoaq3ztNYXa61HAff7HivH2xv7o9a6WmtdDSwCJjV3kO58hQAhRNcW1y+UmN7BbFqajfa035w/ouNJgO1Ajzzxb646MJwqj4eYXwwjpl+4v0sSQgjRPa0FBiil+iilLMDlwKdNN1BKRSmlDn4OuA94xXd7PzBdKWVSSpmB6XjnsRBCiC5DKcWIM5IpK6glO6PU3+WINiQBtoP87ZlXuLxwMPUeCJw3iPhhUSd+khBCCHEKWjiJ4gxgh1JqJxALPOJ7/ANgD7AZ73myG7XWn3Vk/UII0Rb6j4khIMTCxqVySZ3uRM6B7QBPv/QWc3P64tJgOCeFPhPi/V2SEEKIbq4Fkyh+gDesHvk8N3BjuxcohBDtzGgyMGx6Ims+y6SsoIbwuEB/lyTagPTAtrOX3lzA7N3xKG2gfloCg07v7e+ShBA9hNFoJC0trXF59NFHj7ltSkoKJSUlLd73yW5/0B//+EdGjBhBWloaZ511Fnl5eQBs376dSZMmYbVaefzxx096v0IIIURzhp6WiNFkYNNSuaROdyE9sO3orY8WMXlzCGZt4sCYKMadN8DfJQkhehC73c6GDRv8XcZh7rrrLv7f//t/ADz99NM89NBDvPDCC0RERPD000/z8ccf+7dAIYQQ3UpAiIWB42PZ/mM+Ey7siy3Q7O+SRCtJD2w7+fjL5QxbYyIAM7mDgxl3Waq/SxJCiBOqq6vj7LPP5qWXXmqX7UNCQhpv19TUoJQCICYmhnHjxmE2ywcLIYQQbWvEGcm4HB62fZ/n71JEG5Ae2Hbw1YrVJC+vJ1QHsCfZxsxrR/m7JCGEPy26Fwo2t+0+44bD2cceEgzecJmWltZ4/7777uOyyy475vbV1dVcfvnlXH311Vx99dUnLKG57U877TSqqqqO2vbxxx/nzDPPBOD+++/njTfeIDQ0lGXLlp3wOEIIIURrRCUFkTgojM3LckibmYzBKH14XZkE2Da2av1mgr8oIVoHkxFtZPYt4/1dkhCihzrZIcQXXnghd999N/Pnzz/l7VesWHHC5z3yyCM88sgj/PWvf+XZZ5/lz3/+c4trFEIIIU7FiNOTWfTCZvZuKKH/mBh/lyNaQQJsG9q0Yzeu9zLprcPYHKw5984p/i5JCNEZnKCntLOYMmUKX375JVdeeWXj0N6T3b4lPbAHzZ8/n3POOUcCrBBCiHaXMiKKkCgbm5ZmS4Dt4qT/vI1k5uRR9Pom+uhwNlndnHP/NH+XJIQQJ+Whhx4iPDycm2++ufGxmTNnkpub2+LtV6xYwYYNG45aDobXXbt2NW77ySefMHjw4HZ6NUIIIcQhBoNixOnJ5O+poGhfpb/LEa0gAbYNFJQcYNvzKxnsiWa9wcG5D85oUe+FEEK0p4PnwB5c7r333hM+56mnnqKuro67774bj8fD7t27iYiIaNH2LXHvvfcybNgwRowYwZIlS3jqqacAKCgoICkpiSeeeIKHH36YpKQkKivlA4YQQoi2M2RyPGabkY1Ls/1dimgFGULcSqVVlfzw5GLGu5PZqOs59+EzUQYJr0II/3O73S3eNisrq/H2q6++CsCWLVv42c9+ht1ub9H2LfHhhx82+3hcXBw5OXKNPiGEEO3HYjcxZHI8W77NZfLF/QkMtfq7JHEKWtwDq5SyKKVGKKWGK6Us7VlUV1FdX8vixz5mvDuZLe565vxlJgYJr0KIbmLYsGE88cQT/i5D+Cil4pRSFyilzldKxfm7HiGE6IpGnJ6Ex6PZ8m3zp8eIzq9FAVYpdS6wB3gaeBbYrZQ6uz0L6+wcLgfvP/Iup7n6kOGqZ+Yjp2OUKbmFEJ3c3LlzDxtWnJaWxuLFi/1dljgBpdT1wBrgYmAe8KNS6lr/ViWEEF1PaHQAKcOj2PJdLi5ny0cqic6jpUOI/wGcrrXeDaCU6gd8ASxqr8I6M7fHzWsPv8E5zkHsdjUw7aHpmC0yGlsI0fktWLDA3yWIU3MXMEprfQBAKRUJ/AC84teqhBCiCxo5M5msTSXsXFNI6pQEf5cjTlJLuwyrDoZXn73A0ddJ6AG01vz74Vc5p34QWa4Gxj8wFWuAjKgWQgjRrg5weLtb5XtMCCHESUocGEZkYhCbluagtfZ3OeIktbTbMF0ptRB4D9DAJcBapdTFAFrrj9qpvk7nub+8woU1A8lxOxhx9yQCQmz+LkkIIUT3txtYrZT6BG87fCGwSSl1B4DWWk5WFkKIFlJKMeKMJJb9dzu5O8tJGhTu75LESWhpD6wNKASmAzOAYsAOnA+c1y6VdULP/e01LqgcQKHbxYBbxxESE+jvkoQQQvQMe4CP8YZXgE+ATCDYtwghhDgJA8fHYgsys0kuqdPltKgHVmv9y+OtV0rdp7X+a9uU1Dm98ORbnHegL6UeN/G/GkFkrxB/lySEEKKH0Fr/+XjrlVLPaK1/21H1CCFEV2cyGxk2LZH0RVlUFNcSGh3g75JEC7XVtLmXtNF+OqX/PP8ucwqSqfR4CL5sMImDovxdkhBCnJDRaDxstuFHH320zfb92muvccstt5zSc+fMmUNYWBjnnXf4AJ5rrrmGPn36NNa7YcOGNqi0x5ji7wKEEKKrGTYtEYNBsWmZXIe8K2mrqXO77cVP33ztE87IiqPW48F4bh/6jY33d0lCCNEidru9U4bAu+66i9raWv79738fte7vf/878+bN80NVQggheprAMCv9x8SQ8UM+E87vi8UuVxXpCtrqt9Qtp+/68L3FTMwIxamhZnoi42b09ndJQogu6LE1j7G9dHub7nNwxGDuGX9Pm+0vJSWFSy+9lEWLFmG323n77bfp379/i577xRdf8PDDD/PZZ58RFXXiESozZ85k+fLlraxYCCGEaL2RM5PZuaaQjB/yGTkz2d/liBZoqyHE3a4HdtHCbxm+zoLWBopHRTDuvAH+LkkIIU5KXV3dYUOI33333eNuHxoayubNm7nlllu47bbbWnSMBQsW8Oijj7Jw4UKioqJ46623DjvmwaWlvar3338/I0aM4Pbbb6ehoaFFzxFAN2yHhRCiI8T0DiGubyiblufg8XTLPrlup616YN9vo/10Ct99t4be37oxahN7BwYy64rh/i5JCNGFtWVP6ck42SHEV1xxRePP22+//YTbL126lPT0dJYsWUJIiHdiu/nz5zN//vxTqvevf/0rcXFxOBwObrjhBh577DEeeOCBU9pXT6CUMmmtXb67T/m1GCGE6MJGzkxm8Utb2Le5hD4jo/1djjiB4/bAKqXea3L7sSPWLTl4W2v9l7YvzT/Sf9pC+BeV2DGRkWRm1vVj/F2SEEJ0CKVUs7ePpV+/flRVVbFz587Gx1rTAxsfH49SCqvVyi9/+UvWrFlzai+kG1FKrWxy+79HrG58g7TWr3VUTUII0d30TYsiKNzKRrmkTpdwoiHETcfNzjpiXbf7eiJj5x6M7+YRjIX1EZrzbp3k75KEEKLDHBxi/O677zJpkvfv34IFC7jvvvua3b537958+OGHXH311WzduhXw9sBu2LDhqOWDDz444fHz8/MB0Frz8ccfM2zYsLZ4WV1d0wuODz1inQwbFkKINmAwGhg+I4ncHeWU5FT7uxxxAicaQny8geDdapD4vpxcql7ZRSwBrA50cuk9M/1dkhBCtMrBc2APmjNnznEvpVNWVsaIESOwWq288847AOzZs6dxeHBzBg8ezFtvvcUll1zCZ599Rr9+/U5Y12mnncb27duprq4mKSmJl19+mdmzZzN//nyKi4vRWpOWlsYLL7zQ8hfbffWYdlgIIfwpdWoCa7/IZNPSbM64eoi/yxHHcaIAG6CUGoW3p9buu618i729i+sohQdKyHl2A8k6mB/MdVz+wGx/lySEEK3mdrtPavu77rqLxx477GwRNmzYwJNPPnnUttdccw3XXHMNAKNGjWLbtm0tPs6KFSuafXzp0qUtL7bnCFNKzcXbDocppS72Pa6AUP+VJYQQ3Yst0MygifFs/yGfSXP7YQ+2+LskcQwnCrD5wBO+2wVNbh+83+WVV1eQ8fgP9NNhrFQ1XPHw2f4uSQghOo0333zT3yX0dN8CFzS5fX6Tdd91fDlCCNF9jTg9ia3f5bJ1RS5jz+nj73LEMRw3wGqtT++oQvyhtqGWNX9ZSqqO4ntPFZf/TcKrEKJ7mzt3LpmZmYc99thjj5GVleWfgsRxaa1/6e8ahBCip4iID6TX0Ag2L89l1Fm9MZra6oqjoi211WV0upwGZwPf/GkBo+jFj65KLnns7BbNuimEEF3ZggUL/F2CaAWl1Cyt9Vf+rkMIIbqrEWck8/kzG9m9rohBE+L8XY5oRo/9WuHte59gm3UfPzp2cNFf52Aw9ti3QgghRNfx2Ik3EUIIcap6DYkgPC6ATUuz0VrmyuuMemxqGz5pKC53A1sDMln09r/8XY4QQgghhBDCz5RBMeL0JIr2VVGwt9Lf5YhmnFKAVUrFK6WsbV1MRxo77wLOn5CK0pqfduTx1Ydv+LskIYQQ4ihKqVeVUq8opV4Fevluv6KUesXftQkhRHc0aGI81gATG7/J9ncpohmneg7sf4F+SqkPtdZ3tmVBHWnE+ZdRX1nBooz9rErfhi34Y0476yJ/lyWEEEI09VqT21OB1/1UhxBC9Ahmq5HUqQls+DqbqtJ6giNs/i5JNHFKPbBa6zOBvsCrbVtOxxs//wZmJIXhMZlZvvQHfvpxub9LEkKINmE0GklLS2tcHn300WNum5KSQklJSYv3fbLbH/T+++8zdOhQDAYD6enpjY9nZWVht9sba73ppptOet/dldb624MLUHXEfSGEEO1g+IwkADYvz/FzJeJILeqBVUpdp7V++YiH/6q1vrcdaupw02+6k4Z/PMgPFTYWfvQ59qAQhgwb7e+yhBCiVex2Oxs2bPB3GYcZNmwYH330ETfeeONR6/r169fp6u2EHP4uQAgheoLgCBt906LZtjKPcef2wWw1+rsk4dPSIcQ/U0rVa63fAlBKPQfY26+sjnfW7x+k4aG7WWcP5KPX/suVvwmiT9+B/i5LCNENFPzlLzRkbG/TfVqHDCbuD3/4/+3deXxU1f3/8deZyb6vJEACCUvYA0gAUREVEXEBwQURv6h1qVWsWhWxLlWqFavVonWptUq1LrihqChWcYFqIUHCbsIWIawhbEnInvP7g8AvYIABM7mT5P18POaROzNn7rznBj35zDn33AbdJ0BpaSljxoxhzJgxXH/99Q3evlu3bg0Rs8Wy1p7sdAYRkZai91lJrP1hOzkLttLz9LZOx5Fank4hvhi42hgzzhjzL6DKWvsrL+ZyxIUP/JmelTupDI3gzWefZevWTU5HEhE5YaWlpYdMIZ4xY8ZR2xcXF3PhhRcybtw4j4rR+toPHjz4kPc8cPviiy+Oub/169fTt29fhgwZwrx58zz7kC2EMebaeh478pxwERH5xRI7RtKqffj+S+rU6JI6vuKoI7DGmJg6d68DPgD+CzxkjImx1u70YjZHXPKnZ6i449fkhrdm+mOP8usHphAdHXPsF4qIHIE3Rko9cbxTiEeNGsWkSZMYP378Cbc/0cKzdevWbNiwgdjYWBYtWsRFF13EihUriIiIOKH9NUP1zYTSqiIiIl5kjCH9rGS+eGUlG1btpH2PWKcjCccegV0EZNX+/AqIAs6v83izNO6JF0jdlU9ZZBwvPnQfJcVFTkcSEfG6U089lc8++8zjC7fX1/5ER2ADAwOJjd3/h0G/fv3o2LEjubm5J/5hmp/6ZkL9bFRWREQaVqd+rQiJDGDpXF1Sx1cctYC11qZaazsc9vPArcOBdsaYYd6P2niMMUx46kWSCzdSGtWK5+67i/KyMqdjiYh41ZQpU4iOjubmm28++NjQoUPZtKn+0ynqaz9v3jyys7N/djv77LOP+t4FBQVUV1cDsG7dOlavXk2HDh2O+pqWwBgTUzsbKpj9M6EmAUXUzoRyNJyISAvg9nPRa0hbNqzYya6tJU7HEU7wMjr1eKyB9uMzjMvFNX95nsQd+ZREJfLs5Nuoqqx0OpaIiMcOPwd28uRjLxw/bdo0SktLmTRpEjU1NaxZs4aYmCPXSXXbe2LmzJkkJSXx/fffc/755zN8+HAAvv32W9LT0+nTpw+XXHIJL7zwwlHftwVpkTOhRER8SffT2mJchh+/3+p0FAGMp1PFjroTYxZba/s2QB6PZGRk2LrXD/Sm6n0lPH/37eyIbUPU3m389om/4XJpGW0RObpVq1Y1+RV3ly9fzssvv8yTTz7pdJQGVd/vxhizyFqb4VCkX8wYM8xa+x8nMzRm3ywi0tg+/tsSCjcXM+HhUzAu43ScFuFIfXNDjcA222W53CGh3PDHPxG1czu7IxJ4dvKtHp8fJiLSlPXs2bPZFa/NWLObCSUi4kvSBiRQvLOcLWt3Ox2lxWuoArZZC4iK4/p7JhO+p5DC4FheuO93KmJFpEkaPXr0zxZYmjNnjtOx5JfTcICIiBel9o7HL9BNzoJtTkdp8RqqgM1roP34rNDW7fjVLTcRUryHbX7h/POP9zgdSUTkuM2cOfNnCywdOA9VmjR9qyoi4kX+gW469oln7Q/bqa6scTpOi3bUAtYYM6nO9qWHPfenA9vW2jENH833RHfoxlUTxhK0r5j8qgBefXyK05FERERERKQRpA1IoHxfFT8tL3Q6Sot2rBHYy+tsHz7keG4DZ2kSEnoP4orRw/EvL2Xd3kpmPPcXpyOJiIjkOR1ARKS5S+oaTXBEADkLtRqxk45VwJojbNd3v8Vod8pwLj2rP35VFazavIsP//V3pyOJiEgzpJlQIiK+w+V2kZaRQN6yHZSV6PKaTjlWAWuPsF3f/RYlbfhljOzXEXdNNdm5PzHnvTecjiQiIs2PZkKJiPiQtIEJ1FRZ1i0ucDpKi3WsAra3MWavMaYISK/dPnC/VyPk82npl9zAuZ1iMMbwv0XL+HbOx05HEhE5yO12H7La8NSpUxts39OnT2fixInH/bqvvvrqkExBQUF88MEHDZarGdJMKBERHxLfLpyohBByFmgasVP8jvaktdbdWEGaqv6/uovyaffz5Q7D11/PIyQsgoxTT3c6logIwcHBZGdnOx3jEGeeeebBTDt37qRTp06cc845zobybZoJJSLiQ4wxdBmYwIJZ6ynaWUZ4TJDTkVqcoxaw4pnTbv0jFX+6nW/Lwvh01kcEh4XTo3dfp2OJiI+Y93YuOzYWN+g+45LDGHxZWoPtLyUlhcsuu4xPP/2U4OBg3njjDTp16uTRaz/55BMefvhhPvroI+Li4jx+z3fffZcRI0YQEhJyorFbgt7GmL3sH20Nrt2m9r7+ahIRcUDn/oksmLWe3IVb6XduitNxWpyGug5si3fW759iYM12qgODmfn6v1n3449ORxKRFq60tPSQ6bozZsw4avvIyEiWLVvGxIkTue222zx6j5kzZzJ16lRmz55NXFwcr7/++iHveeB2ySWX/Oy1b731FuPGjTuRj9ZiWGvd1toIa224tdavdvvAfX+n84mItESR8cEkdogkd+E2rNVkmMamEdgGNOLhv1N559X8ENqeN176O7+69XbaJLdzOpaIOKwhR0qPx/FOIT5QTI4bN47bb7/9mO3nzp1LVlYWn3/+OREREQCMHz+e8ePHH/O1W7ZsYdmyZQwfPtzjfCIiIr6iy8AEvnkzl8JNxcQlhTsdp0XRCGwDG/n4K/TatZaqsEim//Uv7NiuE7xFpGkwxtS7fSQdO3akqKiI3Nzcg495OgL79ttvM3r0aPz9NYgoIiJNT6d+CbhchpwF25yO0uKogG1oxjDmqel0LVhNRXg0/3j0EYp373I6lYjIMR2YYjxjxgwGDRoE7J8ifM89h1+9Zb/27dvz3nvvMWHCBFasWAHsH4HNzs7+2e3dd9895LVvvvmmpg97mTHmXGNMjjFmjTFmcj3PtzfGfGmMWWqM+doYk1T7+JnGmOw6tzJjzEWN/gFERHxYUJg/7XrGsjpzGzU1mkbcmFTAeoFx+zH2r/+k47Y1lEfG8reH7qe0uMjpWCLSwhx+DuzkyT+rYQ6xa9cu0tPTmTZtGk899RQAa9euPTg9uD5du3bl9ddf59JLL2Xt2rUe5crLy2Pjxo0MGTLE8w8jx8UY4waeBUYA3YFxxpjuhzV7AnjVWpsOTAEeBbDWfmWt7WOt7QOcBewDPm+s7CIiTUXagARKdpezOVeDVY3JNMUTjzMyMmxWVpbTMY6pumQ3/7rzt2xI6EDIngJu+9MTBAQHOx1LRBrBqlWr6Natm9MxPJaSkkJWVtbPVhG+8soreeqpp4iPj3coWcOr73djjFlkrc1wKFKDM8YMAh601g6vvX8PgLX20TptVgDnWms3mv1zxvdYayMO288NwBBr7TFPbG4qfbOISEOpqqjm5Unz6XhSK4ZOaDp9flNxpL5ZI7Be5A6N4qpHH6f19g3si4zn6Xvvoqqy0ulYIiIe+/e//92sitcWpC2wsc79/NrH6loCjKndHg2EG2NiD2tzOfDmkd7EGHODMSbLGJNVUFDwCyOLiDQtfgFuOp7UirU/bKeqotrpOC2GClgvc0clcM0D9xK/YzPFEXE8/fs7qKnWP3ARccbo0aN/tsDSnDlzyMvLO65ruEqzcCcwxBizGBgCbAIOdlDGmNZAL2DOkXZgrX3RWpthrc3QFx0i0hKlDUigsqyavGWFTkdpMXQZnUYQkNiRa+64mX889QK7olvxzH138dtHnsC49P2BiDSumTNnOh1BGscmILnO/aTaxw6y1m6mdgTWGBMGXGyt3V2nyWXATGutpg6JiBxB27RoQiMDyFmwlU79Wjkdp0VQBdVIQlJ7c80NVxC+dye7AsJ57qHf68LHIiLiLZlAZ2NMqjEmgP1TgWfVbWCMiTPGHPg74B7g5cP2MY6jTB8WERFwuQydBySyYXkhZcX6vq8xqIBtRBE9B3PV5cMJKd5LgQ3gxakPqYgVEZEGZ62tAiayf/rvKuBta+0KY8wUY8zI2mZnADnGmFwgAXjkwOuNMSnsH8H9pjFzi4g0RV0GJlBTY1nzw3ano7QIKmAbWdzAC/i/Ef0ILC1hS2k106c97nQkERFphqy1s621adbajtbaR2ofe8BaO6t2+11rbefaNtdZa8vrvDbPWtvWWlvjVH4RkaYitm0YMW1CyV2w1ekoLYIKWAe0PvtKrjglBf/ycn4q3MsbLz7rdCQRERERETkBxhjSBiSwZe0e9hSUOh2n2fN6AWuMOdcYk2OMWWOMmXyUdhcbY6wxptlch+9o2o++hcu6R+BXVcXqDZt57/V/OR1JRJoZt9t9yGrDU6dOPWLblJQUduzY4fG+j7f9AWPHjj2YJyUlhT59+hz3PkRERHxN2oBEAFZnahTW27y6CrExxg08Cwxj/zXoMo0xs6y1Kw9rFw7cCizwZh5f0/mq+xj97F28t9nF8pU5BH/wLudddInTsUSkmQgODiY7O9vpGIeYMWPGwe077riDyMhIB9OIiIg0jPCYINp0jiJ34Tb6jUjBGON0pGbL25fRGQCssdauAzDGvAWMAlYe1u6PwGPAXV7O43N63Pw4FVNvZFZxLFkLsggODefMYcOdjiUiDeir6S+y/ad1DbrPVu07cObVNzToPgFKS0sZM2YMY8aM4frrr2/w9gdYa3n77beZO3fuL4krIiLiM9IGJPD16zkUbCiiVfsIp+M0W96eQtwW2Fjnfn7tYwcZY04Ckq21n3g5i8/qe/fznOvaiPXzZ96XX/L9fC36KCK/XGlp6SFTiOuOftanuLiYCy+8kHHjxnlUjNbXfvDgwYe854HbF198cchr582bR0JCAp07dz7xDygiIuJDOp7UCpefIXfBNqejNGveHoE9qtrrzz0JXO1B2xuAGwDatWvn3WCNzRgGPjidyrvH8UVwF/7z0ccEBATSb8DJTicTkQbgjZFSTxzvFOJRo0YxadIkxo8ff8Lt582b59Fr33zzTcaNG+dxNhEREV8XFOpPSq84crO2ccrFHXG5tV6uN3j7qG5i/3XkDkiqfeyAcKAn8LUxJg84GZhV30JO1toXrbUZ1tqM+Ph4L0Z2iMvFaVP/zZCSH6kJDGb2e++yPPsHp1OJSAty6qmn8tlnn3l8fer62nsyAltVVcX777/P2LFjG/wziIiIOCltQAKleyvIz9nldJRmy9sFbCbQ2RiTaowJAC4HZh140lq7x1obZ61NsdamAP8DRlprs7ycyze5/Tnzz69zWvGPVAeFMPON18ldsczpVCLSQkyZMoXo6Ghuvvnmg48NHTqUTZs2edx+3rx5ZGdn/+x29tlnH2zzxRdf0LVrV5KSkrz3YURERBzQvmcsgSF+mkbsRV4tYK21VcBEYA6wCnjbWrvCGDPFGDPSm+/dZLn9Ofvx1zl5by7VwWG8Pf0Vflqd43QqEWmCDj8HdvLkI17J7KBp06ZRWlrKpEmTqKmpYc2aNcTExHjU3lNvvfWWpg+LiEiz5OfvpuNJrVibXUBlebXTcZol4+lUMV+SkZFhs7Ka+SBtdSUf3TmBRRFp+JXs5eqbJpLUoaPTqUTEQ6tWraJbt25Ox/hFli9fzssvv8yTTz7pdJQGVd/vxhizyFrbIq5D7i0tom8WEfHAptxdfPDkYoZd2520/olOx2myjtQ368xiX+X258InXqXP3tVUhUXyr2efYXv+xmO/TkSkgfTs2bPZFa8iIiLe1qZTFGHRgZpG7CUqYH2Z25+LnvgXPXavoTI8ipeefJzCLZudTiUiTdjo0aN/tsDSnDlznI4lIiLSbBiXIW1AIhtW7mTf3gqn4zQ7KmB9ndufS//yCl12r6UiIoYX//woe3cUOJ1KRJqomTNn/myBpeHDhzsdS0REpFlJG5iArbGsWaRR2IamArYpcPsz7i+v0Gn3OsojY3nu4Yco3rXT6VQiIiIiIlKP2DZhxCaFkbtQBWxDUwHbVLj9GP+Xf5KyO4+yqDiee/B+SvfudTqViIiIiIjUo8uARLat38vubfucjtKsqIBtQozbn6v+8g+Sd29gX3Q8f7v/bsqKi52OJSIiIiIih+ncPwEM5C7c6nSUZkUFbBNj3P5c88QLtN69kZLoBJ79/Z1UlJU5HUtEREREROoIiw4kqUs0uQu30RQvXeqrVMA2QS6/AK574nla7dlEUUwiz951K5Xl5U7HEhEf43a7D1lteOrUqQ227+nTpzNx4sTjft1PP/3ESSedRJ8+fejRowcvvPBCg2USERHxNWkDEthTUMq2PJ3611D8nA4gJ8btF8ANjz/LC3fdwo7Y1jx3x0Qm/vU53H7+TkcTER8RHBxMdna20zEO0bp1a77//nsCAwMpLi6mZ8+ejBw5kjZt2jgdTUREpMF16NuKb97MJXfBNhJTI52O0yyogG3C/PwCuOGxaTw/+TZ2xbXl+Vt/w03TXsDlp1+riC/Z/dFaKjaXNOg+A9qEEnVhxwbbX0pKCpdddhmffvopwcHBvPHGG3Tq1Mmj137yySc8/PDDfPTRR8TFxR21bUBAwMHt8vJyampqflFuERERXxYY7Edqehyrs7Zx6qWdcLs1AfaX0hFs4gICgrjh0aeI3LudHfFJvHDrr/UHoYgAUFpaesgU4hkzZhy1fWRkJMuWLWPixIncdtttHr3HzJkzmTp1KrNnzyYuLo7XX3/9kPc8cLvkkksOvmbjxo2kp6eTnJzM3XffrdFXERFp1tIGJFBWXMnGlboMZkMwTfGE4oyMDJuVleV0DJ9SUraPF+6dRFF4HK0LfuL6Z/6Jy6XvJ0ScsmrVKrp16+ZohrCwMIo9XKk8JSWFuXPn0qFDByorK0lMTKSwsPCI7adPn86f//xnIiIi+Pzzz4mIiDjufJs3b+aiiy7io48+IiEh4bhff6Lq+90YYxZZazMaLUQzpL5ZRKR+1VU1vHL3fNp1j+Wca3s4HafJOFLfrAqnmQgNCuH6P04lrKiQLfHteWXitVrtTESOizGm3u0j6dixI0VFReTm5h58zJMR2APatGlDz549mTdvXsN8ABERER/k9nPRuV8C67MLqCircjpOk6cCthmJCAnjuoceIaR4Jxvj2/Gvm69RESsiHjswxXjGjBkMGjQI2D9F+J577qm3ffv27XnvvfeYMGECK1asAGD8+PFkZ2f/7Pbuu+8CkJ+fT2lpKQC7du1i/vz5dOnSxdsfTURExFFpAxOpqqxhfXaB01GaPBWwzUxUWATXPvAQwfv2kBffnn/ffLWKWJEW6vBzYCdPnnzU9rt27SI9PZ1p06bx1FNPAbB27dqjTg/u2rUrr7/+Opdeeilr1649ZqZVq1YxcOBAevfuzZAhQ7jzzjvp1avX8X0wERGRJiaxQwQRcUHkLNzmdJQmT+fANlPb9+zinw9PoTwkgrSC9Yx79l8eTQkUkYbhC+fAHo+UlBSysrJ+torwlVdeyVNPPUV8fLxDyRqezoH1DvXNIiJHt2DWOhZ9msdVU08lNDLQ6Tg+T+fAtjCtIqO5+vf3ElBaRG58Cu9MnKCRWBE5bv/+97+bVfEqIiLilLQBCVgLqzM1CvtLqIBtxlpHx/F/d92Nf9k+Vsam8r6KWJEWb/To0T9bYGnOnDnk5eUd8xquIiIicuKiE0OJbxdOrqYR/yJ+TgcQ70qOT+CK23/H6399imWxqfhN/D9G/u01TScWaaFmzpzpdAQREZEWq8vAROa/s5qdW0qIaR3qdJwmSSOwLUBqYhvG3XwLfhVlLI5N5ZNb/k8jsSIiIiIijaxTRiuMgdyFW52O0mSpgG0hOia347Ibb8RdWUFWdCqf3Xql05FERERERFqU0MhAkrvFkLtwmwaUTpAK2BYkLaUDo6+9Fnd1JQsjU/nPreOdjiQiIiIi0qKkDUigqLCMrWv3OB2lSVIB28L07JTGqAkTMNVVfBeewlwVsSIiIiIijSa1Tzx+AS5dE/YEqYBtgdK7dueCceMwtoZ54Sl8c5uKWJHmyO12H7La8NSpU4/YNiUlhR07dni87+Ntf8D9999Peno6ffr04ZxzzmHz5s3HvQ8REZGmLCDIj9Te8axZtI3qqhqn4zQ5KmBbqJN69WbExReDtXwd2p75t+ucWJHmJjg4mOzs7IO3yZMnOx2Ju+66i6VLl5Kdnc0FF1zAlClTnI4kIiLS6NIGJFBeUsWGFYVOR2lydBmdFqz/SRlUVVby+UcfMzc4GffvxjPoydedjiXS7Hz66ads3dqwqw0mJiYyYsSIBt0nQGlpKWPGjGHMmDFcf/31Dd4+IiLi4HZJSYku6SUiIi1ScvcYgsP9yVmwjdTe8U7HaVJUwLZwgwYOorqqii8/ncN/gpJx3TGegX9RESvSHJSWltKnT5+D9++55x7Gjh17xPbFxcVcfvnlTJgwgQkTJhxz//W1Hzx4MEVFRT9r+8QTT3D22WcDcO+99/Lqq68SGRnJV199dZyfSkREpOlzu110ykhg5bzNlJdWERisssxTpiku35yRkWGzsrKcjtGsfPP1l3z95Ve4qioZUZVPxuMqYkV+iVWrVtGtWzdHM4SFhVFcXOxR25SUFCIjI5k0aRLjxx/7vPjjbV+fRx99lLKyMh566KETev2Jqu93Y4xZZK3NaNQgzYz6ZhGR47Nt/V7efSyLM/+vK91PbeN0HJ9zpL5Z58AKAEPOGMrppw+m2i+Az9xtWTRJ58SKtDSnnnoqn332mcfXpauv/eDBgw9ZOOrA7YsvvvjZ68ePH897773XYPlFRESaklYp4UTGB5Or1YiPiwpYOejMYcM59eQBVAUE8qlpzeK7VcSKtCRTpkwhOjqam2+++eBjQ4cOZdOmTR63nzdv3iELRx24HZg+vHr16oNtP/zwQ7p27eqlTyMiIuLbjDGkDUxkU+4uineVOR2nyVABK4cYdv6FDOzXl6rAYGbbRLIn6xI7Ik3VgXNgD9w8WYV42rRplJaWMmnSJGpqalizZg0xMTEetffE5MmT6dmzJ+np6Xz++edMmzbN488jIiLS3KQNSAALuZkahfWUzhaWnxkxagzVlZVkLV3B7H2JuO4ZT/qf/g1aLVSkSamurva4bV5e3sHtV155BYDly5dz8cUXExwc7FF7T2jKsIiIyP8X1SqEhNQIchdu46Rz2jsdp0nQCKzU64JLxnJStzQqQkP5pCKBpb+7BJrggl8icuJ69uzJk08+6XQMERGRZi1tQCKF+cUUbvJs4cWWTgWsHNHIcVfSu1MHykPD+Mi/A4tuvBB7HCM6IuJ7Ro8e/bMFlubMmeN0LBERkRarc0YrjMuQu7BhrxnfXGkKsRzV6P+7msD33mFh9lJmx/Sk6lfnM+ClDzH+gU5HE/F51lqMj029nzlzptMRHNUULx0nIiLNW3B4AO16xJC7cBsnj+qIcfnW3w6+RiOwckznXXwpZww+lRq3mzlJJzHvqgux+4qcjiXi04KCgigsLFTB5EOstRQWFhIUFOR0FBERkUOkDUigeFc5m9fsdjqKz9MIrHjkjHPOJTQigtkffcRXHQdQ9qtLOfvF13FFxDodTcQnJSUlkZ+fT0FBgdNRpI6goCCSkpKcjiEiInKI1N7x+Ae6yV2wlbZp0U7H8WkqYMVj/U8+hZDQUN574w2+SxtA+Q0TOO+ZF3HHt3U6mojP8ff3JzU11ekYIiIi0gT4B7jp0DeeNT8UMPjyNPz83U5H8lmaQizHpUev3lx5/fW4K0pZ1CWD9397E1UbVzsdS0RERESkSUsbkEBFaRU/LS90OopPUwErx61Dh05c+9vbcJcVs6JLX9649z4qc7OdjiUiIiIi0mQldYkmJCKA3AXbnI7i01TAyglp06YtN0++D7/Svazr0I3pU/9Cefa3TscSEREREWmSXG4XnfsnkLd8B2UllU7H8VkqYOWExURHc9sDf8SvbC+b2nXkH8+/SvG3HzsdS0RERESkSeoyMJGaKsvaH7Y7HcVnqYCVXyQsNJQ7H3oUv8pidrRO4h9vf8LuT193OpaIiIiISJMTlxxGdGIIuQs1jfhIVMDKLxYUGMg9Ux7Dn3L2xCXw4ucLKXjrWadjiYi0aMaYc40xOcaYNcaYyfU8394Y86UxZqkx5mtjTFKd59oZYz43xqwyxqw0xqQ0angRkRbKGEPagEQ2r97N3sJSp+P4JBWw0iDcbjf3PPAIAUGGfRGR/GPROja8+KjTsUREWiRjjBt4FhgBdAfGGWO6H9bsCeBVa206MAWo+z/tV4HHrbXdgAGA5rKJiDSStAEJAKzO1ChsfVTASoNxuVzcc/cDBMWGUxEcwqvrdpH7xD1OxxIRaYkGAGusteustRXAW8Cow9p0B+bWbn914PnaQtfPWvsfAGttsbV2X+PEFhGRiLhgWneMJGfBNqy1TsfxOSpgpUEZY5j827sIT2lDlX8Ab+2EJQ/e4nQsEZGWpi2wsc79/NrH6loCjKndHg2EG2NigTRgtzHmfWPMYmPM47UjuiIi0kjSBiaya0sJO/KLnY7ic1TAilfc8avfEJPeHWsMH1RF8N1d1+kbJBER33InMMQYsxgYAmwCqgE/YHDt8/2BDsDV9e3AGHODMSbLGJNVUFDQKKFFRFqCTie1wuU25C7Y6nQUn6MCVrzmt5deQevTT8VUV/N5UGvm3jIBW13tdCwRkZZgE5Bc535S7WMHWWs3W2vHWGv7AvfWPrab/aO12bXTj6uAD4CT6nsTa+2L1toMa21GfHx8w38KEZEWKijMn/Y9Y8nN3EZNjQaB6lIBK151w/Dz6Xjh+bgry5gXm8pHN03AVurCzCIiXpYJdDbGpBpjAoDLgVl1Gxhj4owxB/4OuAd4uc5ro4wxByrSs4CVjZBZRETqSBuQyL49FWzK3eV0FJ+iAla8bvwpg+l1xXj8Sov5IbETb990NTWlWhZcRMRbakdOJwJzgFXA29baFcaYKcaYkbXNzgByjDG5QALwSO1rq9k/ffhLY8wywAD/aOSPICLS4qX0iiUgyK1pxIdRASuN4qL0Pgz69U34l+xmVdvOvHrrjVTt2e10LBGRZstaO9tam2at7WitPVCcPmCtnVW7/a61tnNtm+usteV1Xvsfa226tbaXtfbq2pWMRUSkEfkFuOl4UivWLi6gskKn4R2gAlYazdCOnTj7jrsJKNpBXptUXpp8B5UF+kZJRERERKQ+aQMSqCyrJm/pDqej+AwVsNKoBrZuw6h7pxC4dztbE5J5/qEHKc1b43QsERERERGf0yYtmtCoQHIXbnM6is9QASuNrkdMDOOn/JnAom3sjEvkub9Oo2jFYqdjiYiIiIj4FJfLkNY/gQ3LCykt1tkcoAJWHNIuLIzrHnmKwH0FFEXG8Owrr1K44FunY4mIiIiI+JS0gYnU1FjWZG13OopPUAErjokPCuLmR/5KQPVuykLCeeG9j9j8n1nHfqGIiIiISAsRlxRGTJtQTSOupQJWHBXh788dU54iMLCcysAg/jn3O9a8+6rTsUREREREfEaXgYlsXbeHPQW6FKUKWHFcoMvFpN9PJSTWnxq3mzcW57D0n884HUtERERExCd07p8AQO5CXcFDBaz4BLcx3HXr/USlxmNtDTPztvPdU484HUtERERExHHhMUG06RxF7sJtWGudjuMoFbDiM4wx3HrtbbTpm4arspzPd5Xznz/e43QsERERERHHdRmYyO5t+yjYUOR0FEepgBWfc/2l15B29qn4lZXw36oAZt5ze4v/pklEREREWraOJ8Xj8jPkLGjZ04hVwIpPGnv2KDIuG0VA8W6WBEbyxl23UFNT43QsERERERFHBIb4k9orjtWZ26ipbrl/F6uAFZ91bsbpDL3+WoL2FLA6LI6X75hITWWl07FERERERByRNiCR0qJK8n/c5XQUx6iAFZ82sGs6o++6i9BdW8iPbMVzd91GVVmZ07FERERERBpd+56xBIb4kdOCVyNWASs+r0ubFMY/+DCRhRvYERXP07+fRNnu3U7HEhERERFpVG5/Fx37tWLd4gIqyqqcjuMIFbDSJLSJjue6x54mtnA9e8OjmfbwQ+xcu9bpWCIiIiIijarLgASqKmpYv2SH01EcoQJWmozwkDBufPIftN6zntKQcJ596R+smvOJ07FERERERBpN645RhMUEkrtwm9NRHKECVpoUf/8AbnhyOh1cBdS4XLw9/3988fQTTscSEREREWkUxmVIG5DIxlU7KdlT7nScRqcCVpoc43Ix4cHn6dUlBnd5KfMLi3ht8u+oqa52OpqIiIiIiNd1G9QaW2NZMW+z01EandcLWGPMucaYHGPMGmPM5Hqe/50xZqUxZqkx5ktjTHtvZ5LmYcyEOzl1zFmE7ClgbVAEz9x5G2W7Wu6S4iIiIiLSMkQlhNC+ZyzLv8mnurJlXRPWqwWsMcYNPAuMALoD44wx3Q9rthjIsNamA+8Cf/ZmJmlezjz5PEZMupOYHXnsiozlqT89zLalS52OJSIiIiLiVb2HJlNaVMnqrJZ1Lqy3R2AHAGusteustRXAW8Coug2stV9Za/fV3v0fkOTlTNLM9GrTgUv//DcS966lPDiEv7/1JkvfedPpWCIiIiIiXpPUNZqYNqFkf7kRa63TcRqNtwvYtsDGOvfzax87kmuBT72aSJql1iFhTHh8Oq2C9wDw/rJVzH70IYdTiYiIiIh4hzGG3mclU5hfzObc3U7HaTQ+s4iTMeZKIAN4/AjP32CMyTLGZBUUFDRuOGkSQtxufj15GrG9WhNQWsTCcss/7/wt1ZWVTkcTEREREWlwaQMSCArzZ8ncjcdu3Ex4u4DdBCTXuZ9U+9ghjDFnA/cCI6219a4Fba190VqbYa3NiI+P90pYafrcxnDzuN+SdOkFhO/awsawGP569x0UbdnidDQRERERkQblF+Cm5+ltWb90B7u37zv2C5oBbxewmUBnY0yqMSYAuByYVbeBMaYv8Hf2F6/bvZxHWogJA4aSPmkyrQrXUhQezdN/fZK8+d84HUtEREREpEH1HNIWl8uw7Kt8p6M0Cq8WsNbaKmAiMAdYBbxtrV1hjJlijBlZ2+xxIAx4xxiTbYyZdYTdiRyXYW1TOePR54gvX09lQCD/+nQO3//zeadjiYiIiIg0mNDIQDpnJLDquy2Ul1Y5HcfrvH4OrLV2trU2zVrb0Vr7SO1jD1hrZ9Vun22tTbDW9qm9jTz6HkU81z0snMumvERITDmummrm/LSFdx+4u0Wt1CYiIiIizVv6WUlUllez6r+bnY7idT6ziJOIt8QHBHDrrY/hPrkzwSV7WO4K5vnf3UJFcbHT0UREREREfrFW7SNo3SmSpXPzqamucTqOV6mAlRYh0OXinpHXEv5/lxGzcyPbI+N46g/3UrA61+loIiIiIiK/WJ+h7SjaWcb6pTucjuJVKmClxTDGcFOfU+l0z4Mk7lpNaVgkL/zzJVZ88qHT0UREREREfpGU3nGExwax5MvmfUkdFbDS4pzXOpnBj/ydGDZT4+fPu99n8p8npzodS0RERETkhLlchvQzk9iyZg/bf9rrdByvUQErLVKPsDCuvO95/JP98ass57979jH9rluprm7+K7eJiIiISPPU/dQ2+Ae5WTK3+Y7CqoCVFivG359J1z9A4Nn9CNu7k7zQaJ6+41aKC3Q5YhERERFpegKC/eh2SmvWZG6nZHe503G8QgWstGh+Lhd3DrucNjfdQKudeeyJiufpxx7lp8wFTkcTERERETlu6WcmUWMty77JdzqKV6iAFQGu6JxOxoOP07Z4DRUh4fzr/Zks+PcrTscSERERETkukfEhpKbHseLbzVRVVDsdp8GpgBWpNSAmngsffon4kEJwufg0Zy3vPfR7rLVORxMRERER8VjvocmUlVSSs2Cr01EanApYkToSg4K4ftIzxPWKJ7C8lGU1/jx/+82Ul5Q4HU1ERERExCNtOkcRlxzGkrn5zW4wxs/pACK+JsDl4qbLb+fdzl+y6bV32B6VyLR77+aa395GfIdOTscTEWkyKisryc/Pp6yszOko0siCgoJISkrC39/f6SgiLZIxht5Dk/ly+io2rtpJu+6xTkdqMCpgRY7gkn5DWdy2I4sevZ/86I78/YXnuWjoWfQcfr7T0UREmoT8/HzCw8NJSUnBGON0HGkk1loKCwvJz88nNTXV6TgiLVbnfgl89/5alnyZ36wKWE0hFjmKvokpjH7s73SsyqMqKIT3vpnPp9Meb3ZTMUREvKGsrIzY2FgVry2MMYbY2FiNvIs4zO3voteQtmxYUciurc3ndDgVsCLHEBsUwhV/fIXuidW4gQWFe3l50q1UVVY6HU1ExOepeG2Z9HsX8Q09BrfF7ediydzmc0kdFbAiHnAbw2U3/YnThvYkZF8RG0NjmPa7iezdvs3paCIiIiIi9QqJCCBtQAI532+hrKR5DL6ogBU5DmcMHc9lE39Fq92bKIptzd8efZg1mQucjiUiIkfgdrvp06fPwdvUqVMb/D3y8vIIDg4+5H1effXVI7YPCwtr8AwNITs7m9mzZx/368444wyysrK8kEhEGkLvoclUVdawcv5mp6M0CC3iJHKcUlLSufZPf+a9+28lNyKVN999lwErlzP8qmudjiYiIocJDg4mOzu7wfZ3xhlnMH36dFJSUg55vGPHjg36Pk7Izs4mKyuL8847z+koItKAYtuGkdQ1mqVf5dP77GTc7qY9hqkCVuQEBIZEc8Xjr/DZYxNZUBPL/3LXknfvnfzq/ofxDwpyOp6IiM956KMVrNy8t0H32b1NBH+4sEeD7S8lJYXLLruMTz/9lODgYN544w06dfLe5dN27NjBhRdeyH333cf55x+6wv2///1vnn76aSoqKhg4cCDPPfccP/zwA9deey0LFy6kurqaAQMGMGPGDHbs2MEDDzxAeHg4a9as4cwzz+S5557D5XLx+eef84c//IHy8nI6duzIK6+8QlhYGJmZmdx6662UlJQQGBjIf/7zHx544AFKS0uZP38+99xzDxdccAG33HILy5cvp7KykgcffJBRo0ZRWlrKNddcw5IlS+jatSulpaVeO0Yi0jB6n5XMJ88tZd0PBXTun+B0nF+kaZffIk5yuTn3nucZ3Ssa/+pqtviF8uSdvyV3wXdOJxMRkVqlpaWHTO2dMWPGUdtHRkaybNkyJk6cyG233ebx+6xdu/aQ95k3b95R22/bto3zzz+fKVOm/Kx4XbVqFTNmzOC///0v2dnZuN1uXn/9dfr378/IkSO57777mDRpEldeeSU9e/YEYOHChTzzzDOsXLmStWvX8v7777Njxw4efvhhvvjiC3744QcyMjJ48sknqaioYOzYsUybNo0lS5bwxRdfEBoaypQpUxg7dizZ2dmMHTuWRx55hLPOOouFCxfy1Vdfcdddd1FSUsLzzz9PSEgIq1at4qGHHmLRokUeHycRcUb7nrFEtgpmydyNTkf5xTQCK/ILpV92B+16fss7L/6LTXHJvDXzAzp+8gGX/v4hAoKCnY4nIuITGnKk9Hgc7xTicePGHfx5++23A/DKK68wbdo0ANasWcN5551HQEAAqampzJw5Ezi+KcSVlZUMHTqUZ599liFDhvzs+S+//JJFixbRv39/YH8R3qpVKwAeeOAB+vfvT1BQEE8//fTB1wwYMIAOHToczD5//nyCgoJYuXIlp556KgAVFRUMGjSInJwcWrdufXD/ERER9eb8/PPPmTVrFk888QSw/7JIGzZs4Ntvv+W3v/0tAOnp6aSnp3v0uUXEOcZl6H1WMt++lcvWdXtI7BDpdKQTpgJWpAFEdT+d6584mTnTJpFZEcxq489f7/gtl1x5FR0GneZ0PBER8VDdy78c2L7mmmu45pprgCOfA3s8/Pz86NevH3PmzKm3gLXWctVVV/Hoo4/+7LnCwkKKi4uprKykrKyM0NDQn+U+cN9ay7Bhw3jzzTcPeW7ZsmUe5bTW8t5779GlSxdPP5qI+LAuJyeyYNY6lny5sUkXsJpCLNJQ/AIYfsdfuWL8+SQUbWVffFv+/cGHvHP/XVSU6fwgEZGm4MAU4xkzZjBo0CCvvIcxhpdffpkff/yRxx577GfPDx06lHfffZft27cDsHPnTn766ScAfv3rX/PHP/6R8ePHc/fddx98zcKFC1m/fj01NTXMmDGD0047jZNPPpn//ve/rFmzBoCSkhJyc3Pp0qULW7ZsITMzE4CioiKqqqoIDw+nqKjo4D6HDx/OM888g7UWgMWLFwNw+umn88YbbwCwfPlyli5d2tCHSES8ICDIj+6ntmHt4gKKdpY5HeeEqYAVaWAdepzG9X9+lq7hRRg/f1aYYKb9biJrvzv6+VAiItLwDj8HdvLkyUdtv2vXLtLT05k2bRpPPfWUx+9z+Dmwdaf31sftdvPmm28yd+5cnnvuuUOe6969Ow8//DDnnHMO6enpDBs2jC1btvDqq6/i7+/PFVdcweTJk8nMzGTu3LkA9O/fn4kTJ9KtWzdSU1MZPXo08fHxTJ8+nXHjxpGens6gQYP48ccfCQgIYMaMGdxyyy307t2bYcOGUVZWxplnnsnKlSsPnit8//33U1lZSXp6Oj169OD+++8H4De/+Q3FxcV069aNBx54gH79+nl8nETEWb3OTAJg2Vf5Dic5cebAt2pNSUZGhtX1xqQpmL/0Oxa/+hqFYQm49hXTw7+GC+59mMCQEKejiUgdxphF1toMp3M0ZfX1zatWraJbt24OJTp+KSkpZGVlERcX53SU4/L111/zxBNP8PHHHzsd5RBN7fcv0lJ89uJy8n/cyYQ/nUJAkO+eUXqkvlkjsCJedFr6KVz5yF9JCC/FBASyzB3KM7+byJp5XzkdTURERERaoD5nJ1O+r4qc/211OsoJ8d2SW6SZiA4M5MbfTeWtxf9l25tvsTuxHW/O+pges2dy/v1TNRorItLIRo8ezfr16w957LHHHiMvL69B32fgwIGUl5cf8thrr71Gr169GvR9zjjjDM4444wG3aeINF8JqRG0SolgydyN9Dy9LcZljv0iH6ICVqQRGGMYd9JprO/Slxkv/ImK6mCWmhDW334To8aNp9MZw5yOKCLSYhy49I23LViwoFHeR0TkeBhj6D00if/8cyU/rSgkpVfTOm1CU4hFGlFqaCh3/e5hIkaeS3jZHopap/Dmx7N5f9JNlO8rcTqeiDQjxphzjTE5xpg1xpifrVxkjGlvjPnSGLPUGPO1MSapznPVxpjs2tusxk0uIiLe1vGkVoRGBbLky41ORzluKmBFGpnbGG7rfxpD73+EmgiLDQ5laWAMf7vtN+R+MdvpeCLSDBhj3MCzwAigOzDOGNP9sGZPAK9aa9OBKUDdi46WWmv71N5GNkpoERFpNG63i15ntCX/x10Ubip2Os5xUQEr4pA+4eHce9sf4PzhhFSWUNSmAzM+/Zz37riB0jrX4RMROQEDgDXW2nXW2grgLWDUYW26A3Nrt7+q53kREWnGegxui5+/iyVzm9YorApYEQcFulw8cPJgBk/+A/si3dSEhrMspBXP3X4TOXM+cDqeiDRdbYG6f5Hk1z5W1xJgTO32aCDcGBNbez/IGJNljPmfMeYiryb1sry8PHr27Hncrzv33HPp3bs3PXr04MYbb6S6uhqAd955hx49euByudAl/USkKQsK9afLoNbkLtjGvr0VTsfxmApYER8wKCqKh377e8rPP5egqlKKkjryzpyvePe2azQaKyLecicwxBizGBgCbAKqa59rX3vtvSuAvxpjOta3A2PMDbWFblZBQUGjhG4sb7/9NkuWLGH58uUUFBTwzjvvANCzZ0/ef/99Tj/9dIcTioj8culnJlFdVcOKeZucjuIxFbAiPiLY7eZPA0/l9En3sTcqgOqwSFaEteH5224k55N3nI4nIk3LJiC5zv2k2scOstZuttaOsdb2Be6tfWx37c9NtT/XAV8Dfet7E2vti9baDGttRnx8fEN/hga3bt06+vbtS2Zm5jHbRkREAFBVVUVFRQXG7L/MRLdu3ejSpYtXc4qINJaY1qG06xHD8m82UV1Z43Qcj+gyOiI+5pToaPrecjePLFpIyAfvsze5M+988S1dP5vFeQ8/Q0hklNMRRcT3ZQKdjTGp7C9cL2f/aOpBxpg4YKe1tga4B3i59vFoYJ+1try2zanAn39xok8nw9Zlv3g3h0jsBSOmetQ0JyeHyy+/nOnTpxMUFESfPn3qbff1118TFRUFwPDhw1m4cCEjRozgkksuaaDQIiK+pffQZD56egmrF22j68mtnY5zTCpgRXxQsNvNwwMGkZXWjTde+wcRNTWsqA7np9t+w/kXXUDXUeOdjigiPsxaW2WMmQjMAdzAy9baFcaYKUCWtXYWcAbwqDHGAt8CN9e+vBvwd2NMDftnak211q5s9A/RgAoKChg1ahTvv/8+3bvvX4w5Ozv7mK+bM2cOZWVljB8/nrlz5zJsmK7ZLSLNT3K3GKITQ1jy5Ua6DEw8OOPEV6mAFfFhGVFR9L75Dv68KAv7wXsUte/Cu199T9c5n3DeI88SEh3tdEQR8VHW2tnA7MMee6DO9rvAu/W87jugV4MH8nCk1BsiIyNp164d8+fPp3v37uTk5DB27Nh629YdgQUICgpi1KhRfPjhhypgRaRZMsbQe2gyX7+ew5Y1u2nT2bf/vlQBK+Lj/F0u7u0/gJyu3fjnqy8RYmtYURXBhtt/w4gLhtPtkmucjigi4tMCAgKYOXMmw4cPJywsjCuuuOKoI7DFxcUUFRXRunVrqqqq+OSTTxg8eHDjBRYRaWRdBibyvw/Wkf3FRp8vYLWIk0gT0SU8nMduuo02o8fgMpa9KV15f14WM359GSU7m9fqnyIiDS00NJSPP/6Yp556ilmzZh21bUlJCSNHjiQ9PZ0+ffrQqlUrbrzxRgBmzpxJUlIS33//Peeffz7Dhw9vjPgiIl7lF+Cmx+A2rF+6gz0FpU7HOSpjrXU6w3HLyMiwuvaatGTbSkt5/l//hC0FmMoKwjevY/jwIfQYd5PT0USaJGPMotrLxsgJqq9vXrVqFd26dXMokThNv3+RpqV4Vzmv3fsdvc5I4rTLOjsd54h9s0ZgRZqghOBgHrxxIgMuuwyX28XelG588P1y3rxuDCUFW5yOJyIiIiJNTFh0IJ0yWrHyu81UlFY5HeeIVMCKNGHn9ejBnfc9QHhSaypjWrE6Po2/3/lbsv/1JE1xdoWIiIiIOKf30GQqy6pZ9Z3vDoiogBVp4oIDA7njul9z4bhxuAL82JvSnU+ycnntVyPZu3m90/FEREREpIlo1T6C1p0iWfrVRmpqfHMwRAWsSDPRr0sX7vr9/SSntqcyNpG8xO78/feTmXnLWPZuXO10PBERERFpAnqflczeHWXkLdnhdJR6qYAVaUYCAwO59upfMX78ePyCgihJ6cby4CSe/8Mf+ODGi9m1ernTEUVERETEh6X2jiM8Joglczc6HaVeKmBFmqHOnTtz1+/v48xhwzChYZS2S2NpZAdenDqVmdddxI7lmU5HFBEREREf5HK7SD8ric2rd1OwocjpOD+jAlakmfL392fIqacy+d77GXTuuRAaSmlyJ5bFpfHStGd49+oL2Zb5tdMxRUS8Ki8vj549ex736+69916Sk5MJCws75PHp06cTHx9Pnz596NOnDy+99FJDRRUR8RndTm2Df6CbJV/63iisCliRZs7Pz4/hJ5/Mffc9QPqIEVSFhlLWtgMr2/Tg5Zem89aVF7Dp24+djiki4lMuvPBCFi5cWO9zY8eOJTs7m+zsbK677rpGTiYi4n2BwX50PaU1q7O2UbKn3Ok4h1ABK9JCuFwuxgwcyIP33k/qiBGUhoZS3jqFnPbpvPrG+7x+xfn8NPstp2OKiHjNunXr6Nu3L5mZxz6N4uSTT6Z169aNkEpExDeln5lETY1l+TebnI5yCD+nA4hI43K5XFw1cCCVGRm8sGgReXP/Q7h/O9bEteanj7+g7WuvcdqYMXS45FcYY5yOKyLNxGMLH+PHnT826D67xnTl7gF3e9Q2JyeHyy+/nOnTpxMUFESfPn3qbff1118TFRV11H299957fPvtt6SlpfHUU0+RnJx8nMlFRHxfVKsQUnrFsfzbTfQ7tz1+AW6nIwEqYEVaLH+3m1sGDKC0Xz+eWbyYjV9/SayfP3mxiWz6ZgGJ773PqecOI+2qW1XIikiTVlBQwKhRo3j//ffp3r07ANnZ2Se0rwsvvJBx48YRGBjI3//+d6666irmzp3bgGlFRHxH76HJ5C3dQW7mNrqf2sbpOIAKWJEWL9jtZlJGBkV9+vBUdjabvv2a1m4/NsQksGXRj8R/eiGnnD6I7jdOxuX2jW/eRKTp8XSk1BsiIyNp164d8+fPp3v37uTk5DB27Nh62x5rBDY2Nvbg9nXXXcekSZMaOq6IiM9omxZFbFIYS77cSLdTWvvEoIYKWBEBINzPjwcyMtjduzd/XbGCvG+/JsW42Bzdig9zNzH/iosY2K8X6bc/iNs/wOm40oKVlpayZMkSVqxYwYQJE/D393c6kvi4gIAAZs6cyfDhwwkLC+OKK6444RHYLVu2HDw3dtasWXTr1q0Bk4qI+BZjDL3PSmbuq6vI/3EXyd1inI6kAlZEDhXl78+Dffqwq0cPpq1aRe78b0kzsDUqnk82F/LdhEsZ0CWVk+5+FHdwsNNxpQXZsmULmZmZLF26lKqqKpKSkiguLiY6OtrpaNIEhIaG8vHHHzNs2DDCwsIYOXLkUdtPmjSJN954g3379pGUlMR1113Hgw8+yNNPP82sWbPw8/MjJiaG6dOnN84HEBFxSOf+rfh+5hqWzN3oEwWssdY6neG4ZWRk2KysLKdjiLQIe6uqeDY3l8Xz59F90ybA4Fe0i4itGxmQ3Ip+9z6Of0SE0zGlmaqsrGTlypVkZmaSn5+Pn58f6enpZGRk0KZNw52LY4xZZK3NaLAdtkD19c2rVq3SCGULpt+/SPOx8OP1ZH68niseHEh0YmijvOeR+maNwIrIUUX4+XFP9+7s69KFF9etY/78efTMq2FnRAz/KdrN/276FRmxYfS/7zEC4xOcjivNxK5du8jKymLx4sXs27ePmJgYhg8fTp8+fQiuHfm31vrEuTgiIiLNXc/T27LoszyWfpXPkHFdHM2iAlZEPBLidnNb587c3LEjb2zcyCfz59EtN4fd4T35qmQvC++4hb4hbk7+/VSC27V3Oq40QTU1Naxdu5bMzExyc3MxxtClSxf69+9PamoqLpcLay27shby/UvT2LlpK5e89i5BUZpCLCIi4k0hEQGk9U/gx++3MHBkB4JCnVt/QgWsiBwXf5eLq9q3Z0K7dny2bRvvzPuWpBXL2NuhO/NKi/nhgcmkmwoGTf4jYV26Ox1XmoB9+/axePFisrKy2LVrF6GhoZx++un069ePyMhIAErWrWPZ3//CmlU5FAQGUONyERLoR+6ir0kfOtrhTyAiItL89R6azI/fb2Xl/M2cNNy5wQoVsCJyQowxjEhMZMSll7Fk2Dm8PO9bIn7IoiilC9+X7SP7sUfoWVHEKbffT2S//k7HFR9jrWXTpk1kZmayfPlyqqurad++PUOHDqVr1674+flRtm07S/52D6sWLWKry49qt4vAAD8SQiqJP2coZ1w8Ef+gMKc/ioiISIsQlxRO2y5RLPs6n95nJ+N2uxzJoQJWRH6x3lFRTLtwJNuHncM/5s+n7Lt51LTrTGZ5KUuff4ZuRYWcetMdxA45y+mo4rCKigqWL19OZmYmW7ZsISAggJNOOomMjAwSEhKoKilh9QtPsvLbr8ivgSq3G3+Xm9iAcsoG9qHfuNs5qVWS0x9DRESkRep9VjKzn1/GusUFdM5wZu0TFbAi0mBaBQVx79lnU3HGGbyxcCHrv/oPpYEdWFzRlpWvv0rHpx+j3/kX0W7MOPyiopyOK42osLCQzMxMsrOzKSsrIz4+nvPOO4/09HQC3G7WzXiFBZ99zE+lFVT4+eFXA7GucrZ1S8F12c2c1zmdWF3vVURExFEpveKIiA9myZcbVcCKSPMR4OfH1aecgh00iHkrVjBv9oeUBaSwMr4NuYuXEDJ3Lsn79tKxW1c6XX4dYT17ajXZZqi6uprVq1eTmZnJ2rVrcblcdOvWjf79+5OcnMymzz5g7s2PsX53CWV+frhqaoinnG3JUfw4+hpGd+vPFdHRuPRvQ36BvLw8LrjgApYvX+7xa4qKihg8ePDB+/n5+Vx55ZX89a9/9UJCEZGmw7gMvc9KYt6M1Wxdt4fEDpGNnkEFrIh4jTGG03v2ZHCPHqxZt46PP53FHj9/9sQmsqe6mh9L9uL/9BPE7SygQ3QonYZdSJtRl+EOCnI6uvwCxcXF/PDDD2RlZbF3714iIiI488wzOemkkyhZvohlf/49n20rpMTPH1Njia8ph7hgvhhxCaekD+aqxERaBQQ4/TGkBQsPDyc7O/vg/X79+jFmzBjnAomI+JCug1qz4MN1LJ27UQWsiDRPxhg6d+zI7RNvp7y8nEW5uXyzOIvy9eupiohmY9tUNpXt4/t5/yXko49oV1FCh/SedP6/3xDaPtXp+OIBay0bNmwgMzOTlStXUlNTQ4cOHRgxYgRx1WUsn/433nrmT+x1+4O1xFVX4hftx8yzRpDSbxhXt27NTeHhGokXr1q3bh0XX3wxL774Iv37e7a4XG5uLtu3bz9kRFZEpCULCPKj+2ltWDI3n0E7ywiPadyBBxWwItKoAgMDOaVXL07p1QtrLfPz8vh06RIqcpYTFhhMRVxrdldXsXJnEf4PP0j87h10iI+k8/kX0/rci3C53U5/BKmjvLycpUuXkpmZyfbt2wkMDKR///50TWrDpnde4vuP3mCXa39XE11ZRXyw5ePBZ8ApIxmfmMj7MTEEupxZxVAa19Y//YnyVT826D4Du3Ul8fe/96htTk4Ol19+OdOnTycoKIg+ffrU2+7rr78mqs45+m+99RZjx47VlysiInX0OiOJJV9uZPk3+Qwa3alR31sFrIg4xhjD4NRUBqemUmNH8c327cxavpwduatI3WaoiohmQ9tU8sv28d2nnxPy1pukVJfR4aS+dJ4wkeBWziweILB9+3aysrLIzs6moqKCxMREhp91JjX/m8Pafz3NSrv/i4bIiipaB1fyTUYGW4ddzsUJrXkpLo4IP3U/0ngKCgoYNWoU77//Pt27778+dd0pwkfz1ltv8dprr3kxnYhI0xMRF0yHPvGsmLeZjPNS8Q9svAEG/QUhIj7BZQxnJiRwZkIC1Wedxbzdu/lg9WpyV+fSZcM6ImtHZ7Orq1i+eQ9+906i1d4ddGwdS5fRV5Bw+nCNkHhZdXU1P/74I5mZmeTl5eF2u+napQvRW9ewdd7HfDf3IzCGsLIqkvxKWZzeg+9HXsMFiW15LC6OKK0i3KJ5OlLqDZGRkbRr14758+fTvXt3cnJyGDt2bL1t647ALlmyhKqqKvr169eIaUVEmobeQ5NZu7iAnP9toeeQxrvEnQpYEfE5bmM4IzqaMwYMoKZ/f7KKivhoyxaycnII37CebgWGqoiYg6Oz/31nJiEv/ZNUU07HgQPpPP4mAqOinf4YzUJxcTHbtm3jp59+4ocffqC4uJjIyEh6xIWyb9H3bFz2PzYYQ0h5Jcm2jJ+6diD7khs4J6UT98fEEKop3+IDAgICmDlzJsOHDycsLIwrrrjCoxHYN998k3Hjxnk/oIhIE5TYMZJW7cNZMjefHoPbYlyNM5CgAlZEfJrLGAZERDAgIgK6dCGvtJTZhYV8k5dHwbp19N24nvDa0dnF1VUsW7sNv7tuI6G4kE7JCaRdOoFWGadrdPYYKioq2L59O9u3b2fbtm0Hf+7bt+9gm5jwYBIL1rFv5Q42GBdBFVUkV+6juGMSBeN/Q98u6VwcEYFbx1p8UGhoKB9//DHDhg0jLCyMkSNHHvM1b7/9NrNnz26EdCIiTY8xht5Dk/nPyyvZsHIn7XvGNs77Wmsb5Y0aUkZGhs3KynI6hog4rLymhv/u2cOX27axfPVqQvLW0mXHDjD7v5tzlZXgV7yXkL076eBXSafTTqPjZTcQGBbhcHLnVFdXs3PnzoNF6oFCddeuXQfb+LldhLkN7rIi2LsbW7SHqn2l2JoaAqqqSdhXgn/7Vvhd+RtOHjCY+GZwyRtjzCJrbYbTOZqy+vrmVatW0a1bN4cSidP0+xdp/qqranjt3u+IaRPKyFv7Nui+j9Q3awRWRJqsQJeLs6KjOSs6Grp2ZU9VFd/s2sV/8/LYuGYNSWtzCAkMOTg6u3T5Bvy+n0irkl106tCGbpddQ1yvgc1ydNZaS1FR0SGjqdu3b6egoIDq6uoDrQiursSvrISIfSVUlZViysswleVUA9XWElxRRWhFJaE1VcS0jqL9hBtJHXIeLq0cLCIi0uK5/Vz0PCOJBR+uo3BzMbFtwrz+nl4vYI0x5wLTADfwkrV26mHPBwKvAv2AQmCstTbP27lEpPmJ9PNjZHw8I+PjoX9/Sqqr+a6ggIU5OexesZSwrew/dxbILy1h/osvE7L3L4TVlBLiMoQGBxARHkZIVBSh8QmEtkkiNLkjocmdCI6K89lL+JSVlR0ymrpt61a2bdtKeUXlwTbuqgrcZftwl5fhX16Kq/bmrq4mpKKKkMpKAk01JsCFjQzHr01bYrqn06nvqbTp3A1XMxhlFRERkYbXc3BbsmbnsXRuPmde2dXr7+fVAtYY4waeBYYB+UCmMWaWtXZlnWbXArustZ2MMZcDjwH1Lw0oInIcQt1uhiUmMiwxEYYMoaamhqUbN7Jg+TJ2Zf9AWVAIFXFt2H3gBbYGU10N+6ox63Zh1uzA1CyC6mpMTTXuqkr8q6sIrKkikBqC3RAS4EdYaDDhUZFExicQmdye0PZphCR1IiAkpEE/T3V1NTt27GD79u1s3pDHprWr2bF7D/tq/v8IsqmuxpSX4i4vJbC2SA3YV0xYaSkhNVW43VAV7M/OyEg2pXagKK0XwV370jWxNb3Cw+kRGoq/RldFRETEQ0Fh/nQ5OZGc/23l5Is6EBzm3S+9vT0COwBYY61dB2CMeQsYBdQtYEcBD9Zuvwv8zRhjbFM8OVdEfJrL5aJP+/b0ad8ezr+A0tJSfvrpJ7bv2cNPu3ezvbCQfbt2UL13D7asFFPlwmX9wbiocbmpdPtRBhTVt/NSYEMR5C3FfPPD/kKyuhp3dRV+1VX42WoCbDVBLgjydxMSFEhYeDhhsbFEtk4iJrULEcmpBIeEYIxh9+7d/JSdyU8rlrBtx052V1pK/QKwpra4tBZXRRmuslICyksJ3FdMePEeQipLMf4u9oUFsyU2lpVpafzYoSfBbVPoHBZGj9BQeoSEcEpoKClBQbia4fRpERERaVy9z0xm5bzNrPh2MxnnpXj1vbxdwLYFNta5nw8MPFIba22VMWYPEAvs8HI2EWnhgoOD6dq1K0ea7FJWXU1eWRlry8pYW1rKhn372FxSwraSEgpLSthXUkLM3t2027ODVsV7iCwtJbiiEv8ai7FgjXt/4esfQpnbjxq3G1x1piHvA/btho27YeHy//94TQ3UGQU1lQZXWSnBpYUE7ysiuKIEl6uKPeFhrE9sw9rUk9jROZ340HDaBQXRPiiIlKAg0oOCuDk4mFhdf1VERES8KKZNKO26x7Dsm3z6ntMOt5/3ZnM1mUWcjDE3ADcAtGvXzuE0ItISBLnddA0NpWtoaL3PW2vZU1XF1ooKtldWsquqip2VlRRWVrK3upri6mqKan+W1dRQXlNDZXk5sdt+ovXmfCJ3FRBaVERAaSl+lVXYaqjBUI2LwJoKAt01uKLDqeyURmnvQQQmJBPl50ecvz/xAQH7f/r7E6ApvyIiIuKw9KHJZH68npI95UTEBnvtfbxdwG4CkuvcT6p9rL42+cYYPyCS/Ys5HcJa+yLwIuxfqt8raUVEjoMxhih/f6L8/Y84ilu//l5KJCKHy8vL44ILLmD58uXHblzHueeey5YtW6iqqmLw4ME8++yzuH10ITcREV/QrnsM7Xt4/1qw3v7aPhPobIxJNcYEAJcDsw5rMwu4qnb7EmCuzn8VERERJ7399tssWbKE5cuXU1BQwDvvvON0JBERn9ZYlyX0agFrra0CJgJzgFXA29baFcaYKcaYkbXN/gnEGmPWAL8DJnszk4iIiLRM69ato2/fvmRmZh6zbUREBABVVVVUVFQ0y+tFi4g0RV4/B9ZaOxuYfdhjD9TZLgMu9XYOERERcc68t3PZsbG4QfcZlxzG4MvSPGqbk5PD5ZdfzvTp0wkKCqJPnz71tvv666+JiooCYPjw4SxcuJARI0ZwySWXNFBqERH5JZrMIk4iIiIiJ6KgoIBRo0bx/vvv0717dwCys7OP+bo5c+ZQVlbG+PHjmTt3LsOGDfNyUhERORYVsCIiIuJ1no6UekNkZCTt2rVj/vz5dO/enZycHMaOHVtv27ojsABBQUGMGjWKDz/8UAWsiIgPUAErIiIizVpAQAAzZ85k+PDhhIWFccUVVxx1BLa4uJiioiJat25NVVUVn3zyCYMHD268wCIickQqYEVERKTZCw0N5eOPP2bYsGGEhYUxcuTII7YtKSlh5MiRlJeXU1NTw5lnnsmNN97YiGlFRORIVMCKiIhIs5WSknLwGrBRUVEerUCckJDgUTsREWl83r4OrIiIiIiIiEiDUAErIiIiIiIiTYIKWBEREREREWkSVMCKiIiI11hrnY4gDtDvXUS8RQWsiIiIeEVQUBCFhYUqZloYay2FhYUEBQU5HUVEmiGtQiwiItIMGWPOBaYBbuAla+3Uw55vD7wMxAM7gSuttfl1no8AVgIfWGsnnkiGpKQk8vPzKSgoOMFPIU1VUFAQSUlJTscQkWZIBayIiEgzY4xxA88Cw4B8INMYM8tau7JOsyeAV621/zLGnAU8Cvxfnef/CHz7S3L4+/uTmpr6S3YhIiJyCE0hFhERaX4GAGusteustRXAW8Cow9p0B+bWbn9V93ljTD8gAfi8EbKKiIh4TAWsiIhI89MW2Fjnfn7tY3UtAcbUbo8Gwo0xscYYF/AX4E6vpxQRETlOKmBFRERapjuBIcaYxcAQYBNQDdwEzK57PuyRGGNuMMZkGWOydJ6riIg0BtMUVwY0xhQAPzXAruKAHQ2wn+ZOx8kzOk6e0XHyjI7TsTXkMWpvrY1voH05zhgzCHjQWju89v49ANbaR4/QPgz40VqbZIx5HRgM1ABhQADwnLV28jHeU31z49Jx8oyOk2d0nDyj43RsXu+bm2QB21CMMVnW2gync/g6HSfP6Dh5RsfJMzpOx6ZjdGTGGD8gFxjK/pHVTOAKa+2KOm3igJ3W2hpjzCNAtbX2gcP2czWQcaKrEJ9gdv1ePaDj5BkdJ8/oOHlGx+nYGuMYaQqxiIhIM2OtrQImAnOAVcDb1toVxpgpxpiRtc3OAHKMMbnsX7DpEUfCioiIHAddRkdERKQZstbOBmYf9tgDdbbfBd49xj6mA9O9EE9EROSEtPQR2BedDtBE6Dh5RsfJMzpOntFxOjYdo+ZJv1fP6Dh5RsfJMzpOntFxOjavH6MWfQ6siIiIiIiINB0tfQRWREREREREmogWUcAaY841xuQYY9YYY352GQBjTKAxZkbt8wuMMSkOxHScB8fpd8aYlcaYpcaYL40x7Z3I6bRjHac67S42xlhjTItbrc6TY2SMuaz239MKY8wbjZ3RF3jw31w7Y8xXxpjFtf/dnedETqcZY142xmw3xiw/wvPGGPN07XFcaow5qbEzyvFT3+wZ9c2eUd98bOqbPaO+2TOO9s3W2mZ9A9zAWqAD+69ltwToflibm4AXarcvB2Y4ndtHj9OZQEjt9m90nOo/TrXtwoFvgf+x/xIUjmf3pWMEdAYWA9G191s5ndtHj9OLwG9qt7sDeU7nduhYnQ6cBCw/wvPnAZ8CBjgZWOB0Zt2O+TtV39xwx0l9s/rmhvq3pL5ZffPxHCvH+uaWMAI7AFhjrV1nra0A3gJGHdZmFPCv2u13gaHGGNOIGX3BMY+TtfYra+2+2rv/A5IaOaMv8OTfE8AfgceAssYM5yM8OUbXA89aa3cBWGu3N3JGX+DJcbJARO12JLC5EfP5DGvtt8DOozQZBbxq9/sfEGWMad046eQEqW/2jPpmz6hvPjb1zZ5R3+whJ/vmllDAtgU21rmfX/tYvW3s/mvn7QFiGyWd7/DkONV1Lfu/VWlpjnmcaqdIJFtrP2nMYD7Ek39LaUCaMea/xpj/GWPObbR0vsOT4/QgcKUxJp/9l0O5pXGiNTnH+/8vcZ76Zs+ob/aM+uZjU9/sGfXNDcdrfbOuAyvHzRhzJZABDHE6i68xxriAJ4GrHY7i6/zYP1XpDPaPFnxrjOllrd3tZCgfNA6Ybq39izFmEPCaMaantbbG6WAi4lvUNx+Z+maPqW/2jPpmh7WEEdhNQHKd+0m1j9Xbxhjjx/7pAIWNks53eHKcMMacDdwLjLTWljdSNl9yrOMUDvQEvjbG5LF/zv+sFrZYhCf/lvKBWdbaSmvteiCX/Z1mS+LJcboWeBvAWvs9EATENUq6psWj/3+JT1Hf7Bn1zZ5R33xs6ps9o7654Xitb24JBWwm0NkYk2qMCWD/QhCzDmszC7iqdvsSYK6tPfu4BTnmcTLG9AX+zv4OsiWeFwHHOE7W2j3W2jhrbYq1NoX95yONtNZmORPXEZ78N/cB+7/hxRgTx/5pS+saMaMv8OQ4bQCGAhhjurG/kyxo1JRNwyxgQu2KhycDe6y1W5wOJUelvtkz6ps9o7752NQ3e0Z9c8PxWt/c7KcQW2urjDETgTnsX1nsZWvtCmPMFCDLWjsL+Cf7h//XsP9k5MudS+wMD4/T40AY8E7tOhobrLUjHQvtAA+PU4vm4TGaA5xjjFkJVAN3WWtb1MiKh8fpDuAfxpjb2b9oxNUt8A94jDFvsv+Pqrjac47+APgDWGtfYP85SOcBa4B9wDXOJBVPqW/2jPpmz6hvPjb1zZ5R3+w5J/tm0wKPt4iIiIiIiDRBLWEKsYiIiIiIiDQDKmBFRERERESkSVABKyIiIiIiIk2CClgRERERERFpElTAioiIiIiISJOgAlakGTLGRBljbnI6h4iIiOynvlmkYaiAFWmeogB1kiIiIr4jCvXNIr+YCliR5mkq0NEYk22MedzpMCIiIqK+WaQhGGut0xlEpIEZY1KAj621PZ3OIiIiIuqbRRqKRmBFRERERESkSVABKyIiIiIiIk2CCliR5qkICHc6hIiIiBykvlmkAaiAFWmGrLWFwH+NMcu1UISIiIjz1DeLNAwt4iQiIiIiIiJNgkZgRUREREREpElQASsiIiIiIiJNggpYERERERERaRJUwIqIiIiIiEiToAJWREREREREmgQVsCIiIiIiItIkqIAVERERERGRJkEFrIiIiIiIiDQJ/w/Et7ANagl/rAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABSMAAAK/CAYAAACStdgKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXyU9bn//9c9+ySTfScJEPY9IAIuCKgoKrV131rr0t3aHo/9drGbXU6X055fT49drG3P0apVUdyq4AIq4IKooOw7AcKSfZ3MPnP//piQEAiYIMlkeT8fj3kkue977rnu3IFcuebz+VyGaZomIiIiIiIiIiIiIj3MkugAREREREREREREZHBQMVJERERERERERER6hYqRIiIiIiIiIiIi0itUjBQREREREREREZFeoWKkiIiIiIiIiIiI9AoVI0VERERERERERKRXqBgpIiIiIiIiIiIivULFSBEREREREREREekVKkaKiIiIiIiIiIhIr1AxUkRERERERERERHqFipEi0qN+8pOfYBhGosPoc95//33OOecckpOTMQyDjz76qNdj6OzePPTQQxiGwd69eztsP1G8feE6eorX68VisfDf//3fiQ5FREREpNv6Qp7W1XxzMOaaoHxTBi8VI0X6uFdeeQXDME74ePjhhxMd4mnT36/VNE1+9rOf8eabb570uHA4zLXXXktdXR3//d//zSOPPMKwYcN6KcruO1G8/ek63nnnHX7yk5/Q0NDQ5eds2rQJ0zSZNGlSzwUmIiIyQPSXPK6/xNmZruaa0L/yzYGQa4LyTZHusCU6ABE5ufXr1wNw3333kZGRcdz+BQsW9HZIPaa/X+uOHTu49957GTdu3EmP2717N/v27eNvf/sbX/ziF3spuq65+eabueGGG3A6nW3bThTvtm3b+ux1HOudd97hpz/9Kbfeeivp6eldes7GjRsBmDx5cg9GJiIiMjD0lzyuv8TZma7mmtC/8s2BkGuC8k2R7lAxUqSP27BhA2lpadx5550Dfrpzf7/WtWvXAnDGGWec9LiqqiqALicpXdHS0kJycvInPo/VasVqtXbYdqJ4+/J1nA4bN24kOzub/Pz8RIciIiLS5/VmHjdv3jyGDx/OQw891O3n9ud8s6u5JvTtPO3YfHOw5pqgfFMGL03TFunj1q9fz7Rp0057srRv3z7uuOMOxo4di9vtJisri2uvvfa4tQKPrPOya9eutnf50tLSuO222/D5fB2Ofeutt5gxYwYul4uRI0fywAMPdCumnrrWxYsXYxgGK1euPG7fAw88gGEYbNq0CYDm5mbuuusuhg8fjtPpJDc3l4suuoh169ad9DVmzpzJZz/7WQBGjx6NYRidJk633norc+fOBeDaa6/FMAzmzZvXtv/DDz/k0ksvJTU1FY/Hw4UXXsi7777b4RxH7smWLVu46aabyMjIYPbs2SeNr6v35tg1fE4U78mu4+DBg9x+++3k5eXhdDqZOHEi//d//3fca53sOrp7jpP9fP7kJz/h29/+NgAlJSVt07CO/Vk/1saNG5k4cWKHbX/7299wOBzcddddRKPRkz5fRERkMOmpPO5064k4+1KuCf0r3zyVXBO6lit+3DV05xwf97eQ8k2R7tHISJE+LBQKsX37dmbPnk1NTc1x+9PS0rDb7ad07vfff5933nmHG264gaKiIvbu3cv999/PvHnz2LJlC0lJSR2Ov+666ygpKeFXv/oV69at4+9//zu5ubn853/+JxD/RXrxxReTk5PDT37yEyKRCPfeey95eXkJv9aFCxfi8Xh48skn25KaIxYtWsTEiRPb1mn56le/yuLFi7nzzjuZMGECtbW1vPXWW2zduvWk70J/97vf5Sc/+QnBYJAf//jHQOfv4n7lK1+hsLCQX/7yl3zzm99kxowZbd+jzZs3c95555Gamsp3vvMd7HY7DzzwAPPmzWPlypXMmjWrw7muvfZaRo8ezS9/+UtM0zxhbJ/k3pwoXo/H0+n2yspKzjrrLAzD4M477yQnJ4eXXnqJL3zhCzQ1NXHXXXcd9xrHXsepnONkP59XXXUVO3bs4PHHH+e///u/yc7OBiAnJ+ek175x40ZuvPFGACKRCHfddRd//etf+dOf/sSXvvSlj/3eiYiIDBY9mcedTj0VZ1/KNaF/5ZvdzTWBbueKnV1Dd8/xcX8LKd8U6SZTRPqsDz/80ARO+Ni+ffspn9vn8x23bfXq1SZgPvzww23b7r33XhMwb7/99g7HXnnllWZWVlbb11dccYXpcrnMffv2tW3bsmWLabVaza78V9OT12qapnnjjTeaubm5ZiQSadt2+PBh02KxmD/72c/atqWlpZlf//rXT+k1hg4dat56660fe9wbb7xhAuZTTz3VYfsVV1xh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cERERES6xTRNmpubGTJkCBaL3mvuj5SPioiISH/X1ZxUxUjg0KFDFBcXJzoMERERkU+kvLycoqKiRIchp0D5qIiIiAwUH5eTqhgJpKSkAPFvVmpqaoKjEREREemepqYmiouL23Ia6X+Uj4qIiEh/19WcVMVIaJsKk5qaquRPRERE+i1N7+2/lI+KiIjIQPFxOakWFRIREREREREREZFeoWKkiIiIiIiIiIiI9AoVI0VERERERERERKRXqBgpIiIiIiIiIiIivULFSBEREREREREREekVKkaKiIiIiIiIiIhIr1AxUkRERERERERERHqFipEiIiIiIiIiIiLSK1SMFBERERERERERkV6hYqSIiIiIiIiIiIj0ChUjRUREREREREREpFeoGCkiIiIiIiIiIiK9QsVIERERERERERER6RUqRoqIiIiIiIiIiEivUDFSREREREREREREeoWKkSIiIiIiIiIiItIrVIwUERERERERERGRXqFipIiIiIiIiIiIiPQKFSNFRERERERERESkV6gYKSIiIiIiIiIiIr1CxUgRERERERERERHpFSpGioiIiIiIiIiISK9QMVJERERERERERER6RZ8qRq5atYrLL7+cIUOGYBgGzz333Mc+Z8WKFZxxxhk4nU5GjRrFQw891ONxioiI9BXhUJSGSh8HttVRvqWOplo/ZsxMdFgiIiIiMsjEfD58779PpL4+0aFIH2dLdABHa2lpobS0lNtvv52rrrrqY48vKytj4cKFfPWrX+Wf//wnr732Gl/84hcpKChgwYIFvRCxiIhIzwmHorTUB/HWB/DWB1sfAbwNQbx1QbwNAYItkeOeZ7NbSMtLIiMvifT81o+tD4erT/3qFxEREZF+LhYM0rDoSWr++leiNTVgseAuLcUzbx6eeXNxjhmDYRiJDlP6EMM0zT45fMIwDJ599lmuuOKKEx7z3e9+lyVLlrBp06a2bTfccAMNDQ28/PLLXX6tpqYm0tLSaGxsJDU19ZOELSIi0iWRULRDcbG5LoC3JtBaZAzS0hgk6D++0NgZix1sHhMMCDcamNETH5uc7iQjP16YbP+YjCfdiWFRkthfKZfp/3QPRUSkvzHDYRqeeZaa++8nUlEBgCUlhVhzc4fjbAUFeObNxTN3LslnnYXF5UpEuNILuprP9OvhEatXr2b+/Pkdti1YsIC77rrr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dILwh6JpFBxkdiwREamiEhMT6du3L506dSIuLo4XXniB8PDw4uOLFy9mypQpJiaU2qCsz5pPPfUUs2fP5tVXX2Xbtm2MHDmSAQMGsHHjxuJzXnzxRV5//XVmzpzJ9u3befHFF5kyZQqvvvrqhXpbIiJSixgWgx43RQCw/ddDHN6fZXIikbIxXFXsK9tu3brRpUuX4snonU4njRs35sEHH+TJJ5885fw33niDl156iR07duDmVr5VmzMzM/Hz8yMjIwNfX9/zyl9b/PTmOi7ak4fVMEguzCfovkhahmvuLBGR85WXl0dycjLNmjXD09PT7DgVqkePHsyfP5/GjRubHaVaOttnQ88ypVfWZ82wsDDGjRvH/fffX7zvH//4B15eXsydOxeAa6+9lpCQEN55550znvN3+fn5JRZLyszMpHHjxvodiohIqX3/zlZ2rU+lQQs/BozuWKbpbkQqQ2mfSatUz8iCggISEhK48sori/dZLBauvPJKfv3119Ne89VXXxEbG8v9999PSEgIbdu2JT4+HofDccZ28vPzyczMLLFJ6f3ywcbiQuS+wgJ872qmQqSIiJzTgQMHVIgUU5XnWTM/P/+U4q+XlxerVq0qfn3JJZewbNkydu7cCcB//vMfVq1aRZ8+fc6YZfLkyfj5+RVv+rshIiJlFTsgHJubhUO7M9idcPoe/iJVUZUqRh45cgSHw0FISEiJ/adblfMvSUlJLFiwAIfDwbfffsvTTz/NtGnTeP7558/Yjh7+ym/jF9tpsCUTq2HwR2Eh7oMbEt0m/NwXiohIrZeUpDmNxFzledbs3bs3L7/8Mrt27cLpdPLDDz+wcOFCDh06VHzOk08+yS233ELLli1xc3MjJiaGhx9+mCFDhpwxy5gxY8jIyCjefv/994p5kyIiUmvUDfAkpvdFAPyycDdFBWfulCVSlVSpYmR5OJ1OgoODefPNN+nUqRM333wz48aN44033jjjNXr4K5/flifj82sKboaF1KIiigYE0aVTS7NjiYiIiFSaGTNmEBERQcuWLXF3d+eBBx7gzjvvxGL572P0J598wrx585g/fz52u53333+fqVOn8v7775/xvh4eHvj6+pbYREREyirm6ib41PMg+1g+m5buNzuOSKlUqWJk/fr1sVqtpKamltifmppKaGjoaa9p0KABkZGRWK3W4n2tWrUiJSWF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fgcgxT+UOaPvx+VymZxKRERERERERKq6v4Zq71qfisupWkJ1p2KkXBCGxcI9U9+k/vGTBck//EJ471EVJEVERERERETk7C5qF4i7l43s4/kc3J1udhw5TypGygVjtVq5Z9psAv4sSO6rG8zcJ/5pcioRERERERERqcpsblbCY4IA2KmFbKo9FSPlgnKz2bhn6uv4H/sDgD3egcwf85DJqURERERERESkKvtrqPaejYdxFGodiupMxUi54Dzc3Ln7xX/h+2dBcqdHPT55epTJqURERERERESkqgqLrEcdfw/yc4vYt+Wo2XHkPKgYKabw8fLmzskvU/fYyVW2t1l9WfjM4yanEhEREREREZGqyGIxiOhysnekVtWu3lSMFNPUq+PLbc++iM+xgwAkurz4etJYk1OJiIiIiIiISFX011Dt5M1HyM8tNDmNlJeKkWKqYP8AbnnmeeocTwHDIKHAjcVTnjE7loiIiIiIiIhUMfUb+VCvQR2cRS72bDxsdhwpJxUjxXSNAoL5v3Hj8T6eCobB2hwXS1953uxYIiIiIiIiIlKFGIZBVDcN1a7uVIyUKqFZcBg3PP4EXulpYBisSi9gxawpZscSERERERERkSrkr3kjD+xMJ/t4nslppDxUjJQqI7JhU/r98yE804+AYWFFajar35phdiwREalC4uLiePjhh82OISIiIiIm8Q30okELP3DBzvWpZseRclAxUqqUts2juOreEXhkHAWLhR9+P8q69183O5aIiJRBr169MAzjlG3o0KFmRyvh9ddfp3379vj6+uLr60tsbCyLFy82O5aIiIiInENk11AAdq5TMbI6UjFSqpxOUe3pdedQ3DOPgcXC4j0Hsc9/x+xYIiJSCi6Xi40bNzJ16lQOHTpUYnvttdfMjldCo0aNeOGFF0hISGDDhg1cfvnlXH/99WzdutXsaCIiIiJyFi06BmOxGhz9I5ujB7PNjiNlpGKkVEmXtO/CJbfchFvWcVwWK19v30viZx+YHUtERM5h165dZGVl0bNnT0JDQ0tsPj4+Fd7eokWL8PPzY968eWW+tn///vTt25eIiAgiIyOZNGkSPj4+rFmzpsJzioiIiEjF8fRxo0mbQEC9I6sjFSOlyorreildbuyPLTsDl9XK55t+Y/vXn5odS0TkgnO5XDgLHKZsLperTFkTEhKw2Wy0b9++kn4a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MzPx8/MjIyNDk4dLpVr7++8smfUvnJ51wOHgkt3rufKNf2PxCzY7moiIVGN6lqn+9DsUERExz8eT1nHk92x6DYqkba9GZseptkr7PKOekSIXULfGjbn+4VEYeTlgtfJLRBeWjLgN55EDZkcTERERERERqZX+6h3521qtqn0hqBgpcoFFhzbglseexMjPAYuVtVFdWXTfMBwpSWZHExEREREREal1IjqHgAEpSRlkHjlhdpwaT8VIERNEBQZy++NjoSAXLFYSWnbl63/ej2P/VrOjiYiIiIiIiNQqPvU8aBRVD4Cd69Q7srKpGClikqb16jFyzNNQeAIsFja17MLnox+naHeC2dFEREREREREapXIrv9dVVvLq1QuFSNFTBRaty7/fGoCOPLBYmFL6058NmYChVt+NjuaiIiIiIiISK3RPCYYq83C8ZRcjvyebXacGk3FSBGTBXh5M3rcBHAWgmFhe+uOfPLsSxTYvzc7moiIiIiIiEit4OFlo2n7QAB+W5dicpqaTcVIkSqgrqcnTz79DBhOMCzsahXDR1NeJ2/152ZHExEREREREakV/lpVe9f6VJxODdWuLCpGilQRnm5ujBs3HsPNAoZBUlR7Ppz5ASeWzjU7moiIiIiIiEiNd1HbQDy8beRmFHBg53Gz49RYKkaKVCFuNhtPPTkOq6cbGAb7Itsxb86X5H79htnRRERERERERGo0q81CeKdgQKtqVyYVI0WqGKvVyrjHx+Dh4w2GwR8Rrfng4x/J/GSa2dFEREREREREarSoP1fV3mNPo6jAYXKamknFSJEqyGKx8OTox/Cu5weGwaEWrZn3zQaOv/uM2dFEREREREREaqwG4f741POgMM/B3s1HzY5TI6kYKVJFGYbBY/98GP+QIABSm0cxb+UuUmc9ZnIyERERERERkZrJsBjFC9n8tlaralcGFSNFqjDDMHho5H0ENwoD4EjTCD7ekMKBl+41OZmIiIiIiIhIzRTV7WQxct+Wo+Rk5JucpuZRMVKkijMMg3uHDadRs6YAHLsonE935LLvmdvA5TI3nIiIiIiIiEgNExBWh9DmfricLrb/csjsODWOipEi1YBhGAwbejvhUZEApDduxmcHrOx+cqAKkiIiIiIiIiIVrPWlJ0cobl99EJdT/+6uSCpGilQThmFw26DBtG7bBoDMhk358rgv2x7qD06t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LrnkkgZOJSIiIiJivhq3j7/d+qUp577u2eEEOG2nte/8+fO5/vrrmT9/Pueffz7z5s1j4sSJJ93n448/ZujQoT/ZXl5eziuvvELbtm21EKWIiEgT45fFSBERERERaT7mzJnD1KlTef/99xk+fDgAF154IZmZmSfdLzk5uc7Hzz//PHfeeSfl5eVkZGTw2Wef4XA4Giy3iIiInHkqRoqIiIiINCF2h5Xrnh1u2rnra8GCBRw4cIClS5fSr1+/2u2hoaGEhobW61jjxo3j17/+Nfn5+Tz11FOMHj2apUuX4nK56p1LREREzOF3C9iIiIiIiMiJWSwWApw2U16n87zIXr16ERsby9y5czEMo3b7vHnzCAkJOenr66+/rnOs8PBw0tPTGTZsGAsWLGDz5s288847v/jfVERERBqPZkaKiIiIiEiDSUtLY+bMmWRlZWGz2Zg9ezZwerdp/y/DMDAMg+rq6jOaV0RERBqWipEiIiIiItKgOnTowBdffEFWVhZ2u51Zs2bV6zbtnTt38uabb3LOOecQGxvLvn37mDFjBoGBgYwaNaqB04uIiMiZpGKkiIiIiIg0uIyMDD7//PPaGZIzZ8485X1dLhdff/01s2bN4siRI8THxzNs2DCWLVtGXFxcA6YWERGRM03FSBERERERaRCLFy+u83GnTp0oLCys93GSkpL46KOPzlAqERERMZMWsBEREREREREREZFGoWKkiIiIiIiIiIiINAoVI0VERERERERERKRRqBgpIiIiIiIiIiIijULFSBERERGRJsAwDLMjiJyQ3p8iInKqVIwUEREREfFjAQEBAFRUVJicROTEfnh//vB+FRERORG72QFEREREROTEbDYbERERHDhwAICgoCAsFovJqUSOMQyDiooKDhw4QEREBDabzexIIiLi51SMFBERERHxcwkJCQC1BUkRfxMREVH7PhURETkZFSNFRERERPycxWIhMTGRuLg4PB6P2XFE6ggICNCMSBEROWUqRoqIiIiINBE2m01FHxEREWnStICNiIiIiIiIiIiINAoVI0VERERERERERKRRqBgpIiIiIiIiIiIijULPjAQMwwCgpKTE5CQiIiIi9ffDGOaHMY00PRqPioiISFN3qmNSFSOB0tJSAFJSUkxOIiIiInL6SktLCQ8PNzuGnAaNR0VERKS5+LkxqcXQr9Dx+Xzk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jUf9k8ajzYvpY4BGWSanBXjjjTcMp9NpvPrqq8bGjRuN6667zoiIiDAKCgoMwzCMyy+/3Lj77rtr2y9dutSw2+3GU089ZWzatMl48MEHjYCAAGP9+vVmXUKzVd++mTFjhuFwOIwFCxYY+fn5ta/S0lKzLqFZqm+//JhWL2w49e2bPXv2GKGhocakSZOMLVu2GB988IERFxdnPProo2ZdQrNU33558MEHjdDQUONf//qXsXPnTuPTTz810tLSjNGjR5t1Cc1SaWmpsWbNGmPNmjUGYDz99NPGmjVrjN27dxuGYRh33323cfnll9e237lzpxEUFGTccccdxqZNm4w5c+YYNpvNWLhwoVmXIM2IxqP+S+NR/6TxqP/SeNQ/aTzqv5ramFTFyDPoueeeM1q3bm04HA6jf//+xooVK2o/N3z4cOOKK66o0/6tt94yOnToYDgcDqNLly7Ghx9+2MiJW4769E2bNm0M4CevBx98sPGDN3P1/Zr5Xxr8Naz69s2yZcuMzMxMw+l0Gu3atTMee+wxo6amppFTN3/16RePx2NMmzbNSEtLM1wul5GSkmLceOONxpEjRxo/eDP2xRdfHPd7xg99ccUVVxjDhw//yT49e/Y0HA6H0a5dO+OVV15p9NzSfGk86r80HvVPGo/6L41H/ZPGo/6pqY1JLYahubEiIiIiIiIiIiLS8PTMSBEREREREREREWkUKkaKiIiIiIiIiIhIo1AxUkRERERERERERBqFipEiIiIiIiIiIiLSKFSMFBERERERERERkUahYqSIiIiIiIiIiIg0ChUjRUREREREREREpFGoGCkiIiIiIiIiIiKNQsVIERERERERERERaRQqRoqINLDJkyfzu9/9zuwYIiIiItKCaUwqIv5CxUgRkQaWnZ1N3759zY4hIiIiIi2YxqQi4i8shmEYZocQEWmO3G43wcHB1NTU1G7LzMxkxYoVJqYSERERkZZEY1IR8Td2swOIiDRXdrudpUuXkpmZydq1a4mPj8flcpkdS0RERERaEI1JRcTfqBgpItJArFYreXl5REdH06NHD7PjiIiIiEgLpDGpiPgbPTNSRKQBrVmzRoM+ERERETGVxqQi4k9UjBQRaUBr167VwE9ERERETKUxqYj4ExUjRUQa0Pr16+nZs6fZMURERESkBdOYVET8iYqRIiINyOfzsWXLFvLy8iguLjY7joiIiIi0QBqTiog/UTFSRKQBPfroo7z66qskJyfz6KOPmh1HRERERFogjUlFxJ9YDMMwzA4hIiIiIiIiIiIizZ9mRoqIiIiIiIiIiEijUDFSREREREREREREGoWKkSIiIiIiIiIiItIoVIwUERERERERERGRRqFipIiIiIiIiIiIiDQKFSNFRERERERERESkUagYKSIiIiIiIiIiIo1CxUgRERERERERERFpFCpGioiIiIiIiIiISKNQMVJEREREREREREQahYqRIiIiIiIiIiIi0ij+Pw121P7X3J9dAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1213,21 +1321,22 @@ "x_t_exp = np.array(x_t_exp)\n", "dx_dt_exp = np.array(dx_dt_exp)\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8))\n", - "ax1.set_xlabel('t')\n", - "ax1.set_ylabel('E_k, E_p')\n", - "ax1.set_title(\"E_k and E_p vs t for different k\")\n", - "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=\"E_p expected\")\n", - "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=\"E_k expected\")\n", - "ax2.set_title(\"E_k+E_p vs t for different k\")\n", - "ax2.set_xlabel('t')\n", - "ax2.set_ylabel('E_k+E_p')\n", - "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=\"E_p+E_k expected\")\n", + "ax1.set_xlabel(r'$t$')\n", + "ax1.set_ylabel(r'$E_k$, $E_p$')\n", + "ax1.set_title(r'$E_k$ and $E_p$ vs $t$ for different $k$')\n", + "ax1.plot(t_cont, 0.5 * (x_t_pred)**2, 'm-', label=r'$E_p$ expected')\n", + "ax1.plot(t_cont, 0.5 * (dx_dt_pred)**2, 'c-', label=r'$E_k$ expected')\n", + "ax2.set_title(r'$E_k$ + $E_p$ vs $t$ for different $k$')\n", + "ax2.set_xlabel(r'$t$')\n", + "ax2.set_ylabel(r'$E_k$ + $E_p$')\n", + "ax2.plot(t_cont, 0.5 * (x_t_pred)**2 + 0.5 * (dx_dt_pred)**2, label=r'$E_p$ + $E_k$ expected')\n", "for i in range(4):\n", - " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=\"E_p, k={}\".format(k_vals[i]))\n", - " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=\"E_k, k={}\".format(k_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * x_t_exp[i]**2, label=r'$E_p$, k={}'.format(k_vals[i]))\n", + " ax1.plot(t_vals_2, 0.5 * dx_dt_exp[i]**2, label=r'$E_k$, k={}'.format(k_vals[i]))\n", " ax2.plot(t_vals_2, 0.5 * x_t_exp[i]**2+0.5 * dx_dt_exp[i]**2, label=\"k={}\".format(k_vals[i]))\n", "ax1.legend(loc='best')\n", "ax2.legend(loc='best')\n", + "plt.savefig('ek-ep-vs-t-k.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, @@ -1241,7 +1350,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 19, "id": "6b92e17d", "metadata": {}, "outputs": [ @@ -1275,20 +1384,18 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 20, "id": "3faa79df", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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7hgwYADi4+OlNg8ePMB//vMfvPXWW1qv59KlS1AoFM9cnpeXB2tra3z88cfw8PAotU39+vXh7+8vffUiEVFZMfARUbWWnp6ON998E1ZWVjAxMUHfvn1x7tw5tTbff/89HB0dYWJigsGDB2P+/PmwtLQsU/8LFy7EtGnT0LFjRzRv3hyff/45mjdvjl9//VVqs23bNqhUKrz00kvP7OfBgwfo27cvOnfurNVh3saNG2PRokV48803YWFh8cx2AwYMwNq1azXun4hqNwY+IqrWRowYgWPHjmHr1q2Ii4uDEAL9+vXDo0ePAAB//vknxo4di3fffRcJCQno1asXPvvsM63XV1BQgKysLNStW1eat3//frRv3/6Zj7l37x569eqFgoICREdHlzlsasPLywvXrl2TziUkIioLBj4iqrbOnTuHrVu34ocffkCXLl3g4eGB1atX4/r169iyZQsAYMmSJejbty+mTJkCFxcXjB8/Hn379tV6nfPmzUN2djaCg4OleZcvX4aDg0Op7dPS0uDr6wt7e3v8+uuvMDEx0XrdZVFUx+XLlyt1PUQkLwx8RFRtnTlzBgYGBvD29pbm1atXD66urjhz5gwAIDk5GV5eXmqPe3q6rNasWYOIiAisX78eNjY20vycnBwYGRmV+phevXqhWbNmWLduHZRKpdoyd3d3mJqawtTUFO7u7gAgTZuammoVTI2NjQEUHkImIiorA10XQERUHaxduxajR4/Ghg0b4Ofnp7asfv36SE9PL/VxAQEB2LRpE5KSktC6dWu1Zdu2bZMOPV+/fh3dunVDQkKCtLwovGni7t27AABra2uNH0tEtRcDHxFVWy1btsTjx49x+PBhdOrUCUDheHjJyclwc3MDALi6uuLo0aNqj3t6+kV+/vlnjBo1CmvXrkVAQECJ5Z6envjpp59KfewXX3wBU1NT9OzZE7GxsVJdAODk5CT9bGBQ+HbbrFkzjWp72unTp2FoaCjtMSQiKgse0iWiaqt58+YYOHAgxowZgwMHDuDkyZP497//jQYNGmDgwIEAgIkTJ2Lbtm2YP38+zp07h++++w7bt29/7hAoxa1ZswZvvvkmvvrqK3h7eyMtLQ1paWnIyMiQ2vj7++Ovv/565l6+efPmYdiwYejRowf+/vtvrbc3ISEBCQkJyM7Oxj///IOEhAQkJSWptdm/fz+6dOmi1d5BIqq9GPiIqFpbsWIF2rdvj/79+8PHxwdCCGzbtg2GhoYAgM6dO2PZsmWYP38+PDw8sGPHDkyePPmZ59w9bfny5Xj8+DFCQkJgb28v3d59912pTevWrdGuXTusX7/+mf0sWLAAwcHB6NGjB86ePavVtnp6esLT0xPHjx/HmjVr4OnpiX79+qm1Wbt2LcaMGaNV/0RUeymEEELXRRARVaQxY8bg77//xv79+yusz99//x1Tp07F6dOnoaenm/+Vt2/fjvfeew+nTp2SDhETEZUF3zGIqMabN28eevXqhTp16mD79u1YtWoVvv322wpdR0BAAM6dO4fr16/D0dGxQvsuq/v372PFihUMe0SkMe7hI6IaLzg4GLGxscjKykKTJk0wceJEjB07FkDh0CjPGrPuu+++w7Bhw6qyVCIinWDgIyJZu3z5sjQ0ytNsbW1hZmZWxRUREVU9Bj4iIiIimeNVukREREQyx8BHREREJHMMfEREREQyx8BHREREJHMMfEREREQyx8BHREREJHMMfEREREQyx8BHREREJHP/DxXr+eE+7+uGAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -1303,6 +1410,7 @@ "p1 = ax1.plot(np.log2(k_vals+1), circuit_widths, 'r.', markersize=8, label=\"Width\")\n", "plt.title(\"Circuit depths and widths vs k, unconstrained\")\n", "plt.legend(handles=p0+p1, loc=\"best\")\n", + "plt.savefig('dephts-widths-vs-k.png', dpi=300, bbox_inches='tight')\n", "plt.show()" ] }, @@ -1311,7 +1419,7 @@ "id": "0b05a02c", "metadata": {}, "source": [ - "We can see that while circuit width scales approximately linearly with $\\log_2(k+1)$ as expected, circuit depth increases dramatically with k while not providing a significant boost in accuracy. Therefore, a k value of ~15 might be a good choice for this problem that provides both good accuracy and efficient circuit. The analysis routine used in this document can also be adapted to other problems by modifying the $\\mathcal{M}$ matrix used in the ``operate()`` function." + "We can see that while circuit width scales approximately linearly with $\\log_2(k+1)$ (number of ancilla qubits) as expected, circuit depth increases dramatically with k while not providing a very significant boost in accuracy. Therefore, a k value of ~15 might be a good choice for this problem that provides both good accuracy and efficient circuit. The analysis routine used in this document can also be adapted to other problems by modifying the $\\mathcal{M}$ matrix used in the ``operate()`` function." ] }, { @@ -1319,7 +1427,7 @@ "id": "09aadab4", "metadata": {}, "source": [ - "## Summary" + "## **4. Summary**" ] }, { @@ -1327,7 +1435,7 @@ "id": "3726527f", "metadata": {}, "source": [ - "In this work we investigated a quantum algorithm[1] for solving linear differential equations. The algorithm is adapted to solve the second-order harmonic oscillator equation, and the routine can be conveniently implemented in Classiq with high-level state preparation and operation programs. By building a quantum circuit for each time point, one can obtain a solution vector $(x(t), dx/dt(t))$ from a set of initial conditions $(x(0), dx/dt(0))$. Results turn out to agree with theory within ~1%, and the optimal bound and k values found to give both good accuracy and efficient circuits (in terms of circuit depth and width) are bound=0.001 and $k=15$. Further work can be done on variants of the harmonic oscillator equations (e.g., with damping) or other more complex differential equations that are expected to cost more resources to test the applicability of this quantum algorithm." + "In this work, we investigated a quantum algorithm[1] for solving linear differential equations. The algorithm is adapted to solve the second-order harmonic oscillator equation, and the routine can be conveniently implemented in Classiq with high-level state preparation and operation programs. By building a quantum circuit for each time point, one can obtain a solution vector $\\displaystyle \\left(x(t), \\frac{dx}{dt}(0)\\right)$ from a set of initial conditions $\\displaystyle \\left(x(0), \\frac{dx}{dt}(0)\\right)$. Results turn out to agree with theory within ~1%, and the optimal bound and k values found to give both good accuracy and efficient circuits (in terms of circuit depth and width) are bound=0.001 and $k=15$. Further work can be done on variants of the harmonic oscillator equations (e.g., with damping) or other more complex differential equations that are expected to cost more resources to test the applicability of this quantum algorithm. One crucial drawback of this algorithm is an overall sign ambiguity due to the inability to detect any global phase, and this can be tackled by limiting discussion to a finite domain where the solution's overall sign is relatively well-known." ] }, { @@ -1335,7 +1443,7 @@ "id": "f1db3d7a", "metadata": {}, "source": [ - "## References" + "## **5. References**" ] }, { @@ -1343,7 +1451,7 @@ "id": "3d4b8332", "metadata": {}, "source": [ - "[1] Xin, Tao et al., Phys. Rev. A 101, 032307 (2020)." + "[1] Tao Xin, Shijie Wei, Jianlian Cui, Junxiang Xiao, IƱigo Arrazola, Lucas Lamata, Xiangyu Kong, Dawei Lu, Enrique Solano, and Guilu Long. (2020). Quantum algorithm for solving linear differential equations: Theory and experiment. *Phys. Rev. A*, 101(3), 032307. [https://doi.org/10.1103/PhysRevA.101.032307](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.101.032307)" ] } ], @@ -1363,7 +1471,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.5" + "version": "3.12.3" } }, "nbformat": 4, From 358ec85b217f60c98e94747420f2a17976bdb72f Mon Sep 17 00:00:00 2001 From: Tony Niu <1801938676@qq.com> Date: Fri, 27 Sep 2024 21:57:58 -0700 Subject: [PATCH 4/5] Updated format for equations --- Classiq_open-challenge_ODE.ipynb | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Classiq_open-challenge_ODE.ipynb b/Classiq_open-challenge_ODE.ipynb index 62718fa..1c49e6d 100644 --- a/Classiq_open-challenge_ODE.ipynb +++ b/Classiq_open-challenge_ODE.ipynb @@ -84,9 +84,9 @@ "While matrix inversions and matrix multiplications scale at least as $O(N^3)$ classically, a quantum algorithm is capable of achieving an $O(\\log N)$ speedup in time complexity for this problem. The solution $\\mathbf{x}(t)$ can first be approximated as a Taylor expansion:\n", "\n", "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " \\mathbf{x}(t) \\approx \\sum_{m=0}^k\\frac{(\\mathcal{M}t)^m}{m!}\\mathbf{x}(0) + \\sum_{n=1}^k \\frac{(\\mathcal{M}t)^{n-1}t}{n!}\\mathbf{b} \n", - "\\end{align} \\hspace{5.1cm} (5)\n", + "\\end{aligned} \\hspace{5.1cm} (5)\n", "$$\n", "\n", "where the integer $k$ gives the approximation order ($k\\rightarrow\\infty$ for perfect solution). We can encode the vectors $\\mathbf{x}(0)$ and $\\mathbf{b}$ as normarlized quantum states:\n", @@ -107,9 +107,9 @@ "The $k$-th order approximation thereby evaluates to\n", "\n", "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " \\mathbf{x}(t)\\approx \\sum_{m=0}^k\\frac{||x(0)||(||\\mathcal{M}||At)^m}{m!}|x(0)\\rangle + \\sum_{n=1}^k\\frac{||b||(||\\mathcal{M}||A)^{n-1}t^n}{n!}|b\\rangle \\hspace{1.2cm} (8)\n", - "\\end{align}\n", + "\\end{aligned}\n", "$$" ] }, @@ -127,10 +127,10 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " |x(t)\\rangle \\approx\\frac{1}{\\mathcal{N}^2}\\left(\\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{3.6cm} (9)\n", + "\\end{aligned} \\hspace{3.6cm} (9)\n", "$$" ] }, @@ -179,9 +179,9 @@ "source": [ "Starting off from the initial state $|\\psi_0\\rangle=|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes|\\phi\\rangle$, one first applies a gate\n", "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " V=\\frac{1}{\\mathcal{N}}\\begin{pmatrix}\\mathcal{C} & \\mathcal{D} \\\\ \\mathcal{D} & -\\mathcal{C}\\end{pmatrix} \\hspace{9.2cm} (10)\n", - "\\end{align}\n", + "\\end{aligned}\n", "$$" ] }, @@ -222,11 +222,11 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " |\\psi_1\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{1.8cm} (12)\n", + "\\end{aligned} \\hspace{1.8cm} (12)\n", "$$" ] }, @@ -252,11 +252,11 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " |\\psi_2\\rangle = \\frac{1}{\\mathcal{N}}\\left(\n", " |0\\rangle\\sum_{m=0}^k\\sqrt{C_m}|m\\rangle U_m|x(0)\\rangle + |1\\rangle\\sum_{n=1}^k\\sqrt{D_n}|n-1\\rangle U_{n-1}|b\\rangle\n", " \\right)\n", - "\\end{align} \\hspace{3.2cm} (13)\n", + "\\end{aligned} \\hspace{3.2cm} (13)\n", "$$" ] }, @@ -282,11 +282,11 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " |\\psi_3\\rangle = \\frac{1}{\\mathcal{N}^2}|0\\rangle\\otimes|0\\rangle^{\\otimes T}\\otimes\\left(\n", " \\sum_{m=0}^kC_mU_m|x(0)\\rangle + \\sum_{n=1}^kD_nU_{n-1}|b\\rangle\n", " \\right) + \\text{other subspaces}\n", - "\\end{align} \\hspace{10mm} (14)\n", + "\\end{aligned} \\hspace{10mm} (14)\n", "$$" ] }, @@ -328,11 +328,11 @@ "metadata": {}, "source": [ "$$\n", - "\\begin{align}\n", + "\\begin{aligned}\n", " \\frac{d}{dt} \\begin{pmatrix}x \\\\ \\frac{dx}{dt}\\end{pmatrix} = \n", " \\begin{pmatrix}\\frac{dx}{dt} \\\\ \\frac{d^2x}{dt^2}\\end{pmatrix}\n", " = \\begin{pmatrix}\\frac{dx}{dt} \\\\ -x\\end{pmatrix}, \\hspace{10.3cm} (15)\n", - "\\end{align}\n", + "\\end{aligned}\n", "$$" ] }, From 66a94712c3709505e8929d583750bfe6681a9bff Mon Sep 17 00:00:00 2001 From: Tony Niu <1801938676@qq.com> Date: Sat, 28 Sep 2024 06:43:35 -0700 Subject: [PATCH 5/5] Final revisions --- Classiq_open-challenge_ODE.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Classiq_open-challenge_ODE.ipynb b/Classiq_open-challenge_ODE.ipynb index 1c49e6d..e6cbf9d 100644 --- a/Classiq_open-challenge_ODE.ipynb +++ b/Classiq_open-challenge_ODE.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "837f9880-d63f-4ac8-b373-207b8e488e51", + "id": "314e9519-c28f-4812-840f-2b09fa3c024e", "metadata": {}, "source": [ "
\n", @@ -14,7 +14,7 @@ }, { "cell_type": "markdown", - "id": "5cd0a4d1", + "id": "a4addc6e-9f93-41ac-b9e3-25e078069702", "metadata": {}, "source": [ "## **1. Introduction**" @@ -41,7 +41,7 @@ "\n", "1. Compute the kinetic energy, $\\displaystyle E_k = \\frac{1}{2} \\left( \\frac{dx}{dt} \\right)^2$, and the potential energy, $\\displaystyle E_p = \\frac{1}{2} x^2$, as functions of time $t$, assuming unit mass and spring constant.\n", " \n", - "2. Investigate the behavior of $E_k$ and $E_p$ under varying boundary conditions within the algorithm.\n", + "2. Investigate the behavior of $E_k$ and $E_p$ under different circuit parameters.\n", "\n", "3. Assess the gate count while optimizing the circuit in terms of width and depth.\n", "\n", @@ -522,7 +522,7 @@ "id": "5da7c314", "metadata": {}, "source": [ - "However, there is still a problem with this algorithm; it cannot distinguish between positive and negative $\\displaystyle \\frac{dx}{dt}$ values. This is because the probabilities we measure are not sensitive to the sign of amplitudes. To solve this, an extra option is added to the above ``main()`` function to apply a Hadamard gate to the work qubit before measurement to measure in x-basis. In this way, the difference in the $|0 \\rangle$ and $|1\\rangle$ counts from a second round of measurement would give the relative signs between $x(0)$ and $\\displaystyle \\frac{dx(0)}{dt}$, although there is still an overall sign ambiguity due to the inability to detect global phase. This would be one drawback of this algorithm, and for now we have to rely on the knowledge that $x(t) > 0$ for $0 < t < 1$." + "However, there is still a problem with this algorithm; it cannot distinguish between positive and negative $\\displaystyle \\frac{dx}{dt}$ values. This is because the probabilities we measure are not sensitive to the sign of amplitudes. To solve this, an extra option is added to the above ``main()`` function to apply a Hadamard gate to the work qubit before measurement to measure in x-basis. In this way, the difference in the $|0 \\rangle$ and $|1\\rangle$ counts from a second round of measurement would give the relative signs between $x(t)$ and $\\displaystyle \\frac{dx(t)}{dt}$, although there is still an overall sign ambiguity due to the inability to detect global phase. This would be one drawback of this algorithm, and for now we have to rely on the knowledge that $x(t) > 0$ for $0 < t < 1$." ] }, {