diff --git a/samples/estimation/estimation-hubbard-2D.ipynb b/samples/estimation/estimation-hubbard-2D.ipynb
index 1aaca46a75..31972d7577 100644
--- a/samples/estimation/estimation-hubbard-2D.ipynb
+++ b/samples/estimation/estimation-hubbard-2D.ipynb
@@ -31,7 +31,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 37,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -164,7 +164,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 38,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -222,7 +222,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 39,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -310,7 +310,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 40,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -360,7 +360,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 41,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -417,7 +417,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 42,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -475,7 +475,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 43,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -532,7 +532,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 44,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -583,7 +583,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 45,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -645,7 +645,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 46,
"metadata": {
"jupyter": {
"outputs_hidden": false,
@@ -723,7 +723,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 47,
"metadata": {
"vscode": {
"languageId": "qsharp"
@@ -804,16 +804,16 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"# Set up problem parameters\n",
- "N1 = [20, 30, 40]\n",
- "N2 = [20, 30, 40]\n",
+ "N1 = [6]\n",
+ "N2 = [6]\n",
"t = 1.0\n",
"u = 1.0\n",
- "totTime = 1000.0\n",
+ "totTime = 10.0\n",
"dt = 0.1"
]
},
@@ -828,167 +828,526 @@
"cell_type": "code",
"execution_count": null,
"metadata": {},
- "outputs": [],
- "source": [
- "# Submit jobs\n",
- "results = []\n",
- "\n",
- "for i in range(3):\n",
- " qsharp_string = f\"EstimateHubModel2DSim({N1[i]}, {N2[i]}, {t}, {u}, {totTime}, {dt})\"\n",
- "\n",
- " result = qsharp.estimate(qsharp_string, params={\"errorBudget\": 0.01, \"qubitParams\": {\"name\": \"qubit_maj_ns_e6\"}, \"qecScheme\": {\"name\": \"floquet_code\"}, \"constraints\": {\"logicalDepthFactor\": 4}})\n",
- " results.append(result)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "MyPlatform()"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "To see the complete information provided when invoking the resource estimator, we output the result for the $20 \\times 20$ lattice by displaying `results[0]`"
+ "from dataclasses import KW_ONLY, dataclass, field\n",
+ "\n",
+ "from qsharp.qre import Architecture, Encoding, ISA, ISAContext\n",
+ "from qsharp.qre.instruction_ids import (\n",
+ " CNOT,\n",
+ " CZ,\n",
+ " MEAS_X,\n",
+ " MEAS_Y,\n",
+ " MEAS_Z,\n",
+ " PAULI_I,\n",
+ " PAULI_X,\n",
+ " PAULI_Y,\n",
+ " PAULI_Z,\n",
+ " RX,\n",
+ " RY,\n",
+ " RZ,\n",
+ " S_DAG,\n",
+ " SQRT_X,\n",
+ " SQRT_X_DAG,\n",
+ " SQRT_Y,\n",
+ " SQRT_Y_DAG,\n",
+ " SQRT_SQRT_X,\n",
+ " SQRT_SQRT_X_DAG,\n",
+ " SQRT_SQRT_Y,\n",
+ " SQRT_SQRT_Y_DAG,\n",
+ " T_DAG,\n",
+ " H,\n",
+ " S,\n",
+ " T,\n",
+ ")\n",
+ "\n",
+ "@dataclass\n",
+ "class MyPlatform(Architecture):\n",
+ " _: KW_ONLY\n",
+ " #error_rate: float = field(default=1e-5, metadata={\"domain\": [1e-4, 1e-5, 1e-6]})\n",
+ "\n",
+ " def provided_isa(self, ctx: ISAContext) -> ISA:\n",
+ " instructions = []\n",
+ "\n",
+ " # Single-qubit gates\n",
+ " single = [\n",
+ " PAULI_I,\n",
+ " PAULI_X,\n",
+ " PAULI_Y,\n",
+ " PAULI_Z,\n",
+ " H,\n",
+ " SQRT_X,\n",
+ " SQRT_X_DAG,\n",
+ " SQRT_Y,\n",
+ " SQRT_Y_DAG,\n",
+ " S,\n",
+ " S_DAG,\n",
+ " SQRT_SQRT_X,\n",
+ " SQRT_SQRT_X_DAG,\n",
+ " SQRT_SQRT_Y,\n",
+ " SQRT_SQRT_Y_DAG,\n",
+ " T,\n",
+ " T_DAG,\n",
+ " RX,\n",
+ " RY,\n",
+ " RZ,\n",
+ " ]\n",
+ "\n",
+ " for instr in single:\n",
+ " instructions.append(\n",
+ " ctx.add_instruction(\n",
+ " instr,\n",
+ " encoding=Encoding.PHYSICAL,\n",
+ " arity=1,\n",
+ " time=10000,\n",
+ " error_rate=0.0001,\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " for instr in [MEAS_X, MEAS_Y, MEAS_Z]:\n",
+ " instructions.append(\n",
+ " ctx.add_instruction(\n",
+ " instr,\n",
+ " encoding=Encoding.PHYSICAL,\n",
+ " arity=1,\n",
+ " time=10000,\n",
+ " error_rate=0.00001,\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " # Two-qubit gates\n",
+ " for instr in [CNOT, CZ]:\n",
+ " instructions.append(\n",
+ " ctx.add_instruction(\n",
+ " instr,\n",
+ " encoding=Encoding.PHYSICAL,\n",
+ " arity=2,\n",
+ " time=50000,\n",
+ " error_rate=0.001,\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " return ctx.make_isa(*instructions)\n",
+ "\n",
+ "arch = MyPlatform()\n",
+ "arch"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 62,
"metadata": {},
- "outputs": [],
- "source": [
- "# Displaying estimates for 20x20 lattice size.\n",
- "results[0]\n",
- "# Change index to 1 (resp. 2) for 30x30 (resp. 40x40) lattice size."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "nteract": {
- "transient": {
- "deleting": false
- }
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "QSharpApplication(entry_expr='EstimateHubModel2DSim(6, 6, 1.000000, 1.000000, 10.000000, 0.100000)', args=())"
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
}
- },
+ ],
"source": [
- "## Visualizing and understanding the results\n",
+ "from qsharp.qre.application import QSharpApplication\n",
"\n",
- "### Result summary table"
+ "app = QSharpApplication(entry_expr=\"EstimateHubModel2DSim(%d, %d, %f, %f, %f, %f)\" % (N1[0], N2[0], t, u, totTime, dt))\n",
+ "app_query = app.q()\n",
+ "\n",
+ "app"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "jupyter": {
- "outputs_hidden": false,
- "source_hidden": false
- },
- "nteract": {
- "transient": {
- "deleting": false
- }
- }
- },
+ "execution_count": 68,
+ "metadata": {},
"outputs": [],
"source": [
- "# Define function to display information in summary format\n",
- "def get_summary_table(results, labels):\n",
- " logical_qubits = []\n",
- " logical_depth = []\n",
- " t_states = []\n",
- " code_distance = []\n",
- " t_factories = []\n",
- " t_factory_fraction = []\n",
- " physical_qubits = []\n",
- " rqops = []\n",
- " runtime = []\n",
- " logical_error = []\n",
- "\n",
- " for i in range(3):\n",
- " logical_qubits.append(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'])\n",
- " logical_depth.append(results[i]['physicalCountsFormatted']['logicalDepth'])\n",
- " t_states.append(results[i]['physicalCountsFormatted']['numTstates'])\n",
- " t_factories.append(results[i]['physicalCounts']['breakdown']['numTfactories'])\n",
- " logical_error.append(results[i]['physicalCountsFormatted']['requiredLogicalQubitErrorRate'])\n",
- " physical_qubits.append(results[i]['physicalCountsFormatted']['physicalQubits'])\n",
- " rqops.append(results[i]['physicalCountsFormatted']['rqops'])\n",
- " runtime.append(results[i]['physicalCountsFormatted']['runtime'])\n",
- " code_distance.append(results[i]['logicalQubit']['codeDistance'])\n",
- " t_factory_fraction.append(results[i]['physicalCountsFormatted']['physicalQubitsForTfactoriesPercentage'])\n",
- "\n",
- " data = pd.DataFrame()\n",
- " pd.options.display.float_format = '{:.2E}'.format\n",
- " data['Logical qubits'] = logical_qubits\n",
- " data['Logical depth'] = logical_depth\n",
- " data['Logical error'] = logical_error\n",
- " data['T states'] = t_states\n",
- " # data['T states'] = data['T states'].astype('float64')\n",
- " data['Code Distance'] = code_distance\n",
- " data['T factories'] = t_factories\n",
- " data['T factory fraction'] = t_factory_fraction\n",
- " data['Physical qubits'] = physical_qubits\n",
- " data['rQOPS'] = rqops\n",
- " data['Physical runtime'] = runtime\n",
- " data.index = labels\n",
- "\n",
- " return data\n",
- "\n",
- "# Display summarized information for all problem instances\n",
- "labels = [\"Hub20\", \"Hub30\", \"Hub40\"]\n",
- "table = get_summary_table(results, labels)\n",
- "table"
+ "from qsharp.qre import estimate, PSSPC, LatticeSurgery\n",
+ "from qsharp.qre.models import SurfaceCode, RoundBasedFactory\n",
+ "\n",
+ "trace_query = (\n",
+ " app_query\n",
+ " * PSSPC.q(num_ts_per_rotation=[16,17,18,19])\n",
+ " * LatticeSurgery.q(slow_down_factor = [1.0*j for j in range(1,121,2)])\n",
+ ")\n",
+ "\n",
+ "isa_query = (\n",
+ " SurfaceCode.q()\n",
+ " * RoundBasedFactory.q(code_query=SurfaceCode.q())\n",
+ ")\n",
+ "\n",
+ "results = estimate(app, arch, isa_query, trace_query, max_error=0.01, name=\"MyPlatform\")\n",
+ "\n"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 69,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " qubits | \n",
+ " runtime | \n",
+ " error | \n",
+ " compute_distance | \n",
+ " compute qubits | \n",
+ " num_ts_per_rotation | \n",
+ " factories | \n",
+ " cycle_time | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " MyPlatform | \n",
+ " 302450 | \n",
+ " 0 days 00:31:36.345423 | \n",
+ " 0.007002 | \n",
+ " 21 | \n",
+ " 284563 | \n",
+ " 19 | \n",
+ " 1×T | \n",
+ " 48300 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " MyPlatform | \n",
+ " 307643 | \n",
+ " 0 days 00:18:30.472545 | \n",
+ " 0.005426 | \n",
+ " 21 | \n",
+ " 284563 | \n",
+ " 19 | \n",
+ " 2×T | \n",
+ " 48300 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " MyPlatform | \n",
+ " 319183 | \n",
+ " 0 days 00:12:14.620299 | \n",
+ " 0.004672 | \n",
+ " 21 | \n",
+ " 284563 | \n",
+ " 19 | \n",
+ " 3×T | \n",
+ " 48300 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " MyPlatform | \n",
+ " 325203 | \n",
+ " 0 days 00:04:53.685413 | \n",
+ " 0.009710 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 8×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " MyPlatform | \n",
+ " 336743 | \n",
+ " 0 days 00:04:22.771159 | \n",
+ " 0.009024 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 9×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " MyPlatform | \n",
+ " 348283 | \n",
+ " 0 days 00:03:51.856905 | \n",
+ " 0.008339 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 10×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " MyPlatform | \n",
+ " 359823 | \n",
+ " 0 days 00:03:20.942651 | \n",
+ " 0.007653 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 11×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " MyPlatform | \n",
+ " 382903 | \n",
+ " 0 days 00:02:50.028397 | \n",
+ " 0.006968 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 13×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " MyPlatform | \n",
+ " 417523 | \n",
+ " 0 days 00:02:19.114143 | \n",
+ " 0.006282 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 16×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " MyPlatform | \n",
+ " 475223 | \n",
+ " 0 days 00:01:48.199889 | \n",
+ " 0.005597 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 21×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " MyPlatform | \n",
+ " 567543 | \n",
+ " 0 days 00:01:17.285635 | \n",
+ " 0.004911 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 19 | \n",
+ " 29×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " MyPlatform | \n",
+ " 679903 | \n",
+ " 0 days 00:01:15.841350 | \n",
+ " 0.009763 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 18 | \n",
+ " 31×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " MyPlatform | \n",
+ " 763723 | \n",
+ " 0 days 00:00:45.504810 | \n",
+ " 0.009878 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 18 | \n",
+ " 46×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " MyPlatform | \n",
+ " 1615127 | \n",
+ " 0 days 00:00:19.958250 | \n",
+ " 0.008869 | \n",
+ " 25 | \n",
+ " 403427 | \n",
+ " 18 | \n",
+ " 105×T | \n",
+ " 57500 | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " MyPlatform | \n",
+ " 1656971 | \n",
+ " 0 days 00:00:18.361590 | \n",
+ " 0.008872 | \n",
+ " 23 | \n",
+ " 341411 | \n",
+ " 18 | \n",
+ " 114×T | \n",
+ " 52900 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " MyPlatform | \n",
+ " 1727063 | \n",
+ " 0 days 00:00:16.764930 | \n",
+ " 0.008902 | \n",
+ " 21 | \n",
+ " 284563 | \n",
+ " 18 | \n",
+ " 125×T | \n",
+ " 48300 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " MyPlatform | \n",
+ " 1825403 | \n",
+ " 0 days 00:00:15.168270 | \n",
+ " 0.009205 | \n",
+ " 19 | \n",
+ " 232883 | \n",
+ " 18 | \n",
+ " 138×T | \n",
+ " 43700 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " MyPlatform | \n",
+ " 2032771 | \n",
+ " 0 days 00:00:13.830061 | \n",
+ " 0.006625 | \n",
+ " 17 | \n",
+ " 186371 | \n",
+ " 19 | \n",
+ " 160×T | \n",
+ " 39100 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name qubits runtime error compute_distance \\\n",
+ "0 MyPlatform 302450 0 days 00:31:36.345423 0.007002 21 \n",
+ "1 MyPlatform 307643 0 days 00:18:30.472545 0.005426 21 \n",
+ "2 MyPlatform 319183 0 days 00:12:14.620299 0.004672 21 \n",
+ "3 MyPlatform 325203 0 days 00:04:53.685413 0.009710 19 \n",
+ "4 MyPlatform 336743 0 days 00:04:22.771159 0.009024 19 \n",
+ "5 MyPlatform 348283 0 days 00:03:51.856905 0.008339 19 \n",
+ "6 MyPlatform 359823 0 days 00:03:20.942651 0.007653 19 \n",
+ "7 MyPlatform 382903 0 days 00:02:50.028397 0.006968 19 \n",
+ "8 MyPlatform 417523 0 days 00:02:19.114143 0.006282 19 \n",
+ "9 MyPlatform 475223 0 days 00:01:48.199889 0.005597 19 \n",
+ "10 MyPlatform 567543 0 days 00:01:17.285635 0.004911 19 \n",
+ "11 MyPlatform 679903 0 days 00:01:15.841350 0.009763 19 \n",
+ "12 MyPlatform 763723 0 days 00:00:45.504810 0.009878 19 \n",
+ "13 MyPlatform 1615127 0 days 00:00:19.958250 0.008869 25 \n",
+ "14 MyPlatform 1656971 0 days 00:00:18.361590 0.008872 23 \n",
+ "15 MyPlatform 1727063 0 days 00:00:16.764930 0.008902 21 \n",
+ "16 MyPlatform 1825403 0 days 00:00:15.168270 0.009205 19 \n",
+ "17 MyPlatform 2032771 0 days 00:00:13.830061 0.006625 17 \n",
+ "\n",
+ " compute qubits num_ts_per_rotation factories cycle_time \n",
+ "0 284563 19 1×T 48300 \n",
+ "1 284563 19 2×T 48300 \n",
+ "2 284563 19 3×T 48300 \n",
+ "3 232883 19 8×T 43700 \n",
+ "4 232883 19 9×T 43700 \n",
+ "5 232883 19 10×T 43700 \n",
+ "6 232883 19 11×T 43700 \n",
+ "7 232883 19 13×T 43700 \n",
+ "8 232883 19 16×T 43700 \n",
+ "9 232883 19 21×T 43700 \n",
+ "10 232883 19 29×T 43700 \n",
+ "11 232883 18 31×T 43700 \n",
+ "12 232883 18 46×T 43700 \n",
+ "13 403427 18 105×T 57500 \n",
+ "14 341411 18 114×T 52900 \n",
+ "15 284563 18 125×T 48300 \n",
+ "16 232883 18 138×T 43700 \n",
+ "17 186371 19 160×T 39100 "
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "> Note that in general, there is a trade-off between the logical depth and number of T factories used. \n",
+ "from qsharp.qre.instruction_ids import LATTICE_SURGERY\n",
+ "from qsharp.qre.property_keys import NUM_TS_PER_ROTATION, DISTANCE, PHYSICAL_COMPUTE_QUBITS\n",
+ "\n",
+ "results.add_column(\"compute_distance\", lambda entry: entry.source[LATTICE_SURGERY].instruction[DISTANCE])\n",
+ "results.add_column(\"compute qubits\", lambda entry: entry.properties[PHYSICAL_COMPUTE_QUBITS])\n",
+ "results.add_column(\"num_ts_per_rotation\", lambda entry: entry.properties[NUM_TS_PER_ROTATION])\n",
+ "results.add_factory_summary_column()\n",
+ "results.add_column(\"cycle_time\", lambda entry: entry.source[LATTICE_SURGERY].instruction.expect_time(1))\n",
"\n",
- "> To ensure that T factories do not dominate the resource requirements, we set the `logical_depth_factor`${}=4$ adding some number of `noops` to increase the logical depth."
+ "results.as_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Getting the target rQOPS\n",
- "\n",
- "While the resource estimator generates a runtime for the given hardware profile, we want to set a target runtime of 1 week i.e., 604800 seconds to obtain a practical quantum advantage. We collect the previous results to compute the corresponding target rQOPS as \n",
- "$$ \\text{Target rQOPS} = \\frac{\\text{Logical qubits}\\cdot\\text{Logical Depth}}{\\text{Target runtime}}$$"
+ "To see the complete information provided when invoking the resource estimator, we output the result for the $20 \\times 20$ lattice by displaying `results[0]`"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 53,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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YCuEIAAAAAC2QggCAAAAYCuEIAAAAAC2QggKgMcee0yioqLcHmeffbbzeG5urowaNUqSk5OlevXqcu2118rBgwfdniM9PV0GDhwoVatWlbp168oDDzwgJ0+edDtn2bJlcu6555pqLa1atZLZs2cXa8vUqVOlWbNmEhcXJ+eff76sXbtWwtmXX34pV155pVkZWK/rggUL3I5r3Y9x48ZJgwYNJD4+Xvr16yc7d+50OycjI0OGDh1qFnurWbOm3HLLLZKdne12ztdffy29evUy161x48byzDPPFGvLvHnzzL+rntOxY0f55JNPfG5LOF/rYcOGFXufX3755W7ncK1LZ8KECXLeeedJjRo1zH/vV199tezYscPtnFD63ChNW8L9evfp06fY+/v22293O4frfWbTpk2TTp06ORfX7NmzpyxcuNB5nPd14K4172n/mThxovmMGD16tHMf7+0QpNXh4F/jx4+32rdvb+3fv9/5OHz4sPP47bffbjVu3NhasmSJtX79eqtHjx7WBRdc4Dx+8uRJq0OHDla/fv2sTZs2WZ988olVu3Zta+zYsc5zfvrpJ6tq1arWvffea23fvt168cUXrcqVK1uffvqp85w5c+ZYMTEx1syZM61vvvnG+stf/mLVrFnTOnjwYNi+BfRaPPLII9Z7772nVQ6t999/3+34xIkTrcTERGvBggXWli1brEGDBlnNmze3Tpw44Tzn8ssvt1JSUqzVq1db//vf/6xWrVpZN954o/N4ZmamVa9ePWvo0KHWtm3brHfeeceKj4+3pk+f7jxnxYoV5no/88wz5vo/+uijVpUqVaytW7f61JZwvtZpaWnmWrq+zzMyMtzO4VqXTv/+/a1Zs2aZ99vmzZutK664wmrSpImVnZ0dkp8bZ2pLJFzv3r17m9fu+v7WzwYHrnfpfPDBB9bHH39sff/999aOHTusv/3tb+azUq+94n0duGvNe9o/1q5dazVr1szq1KmTdc899zj3894OPYSgAIUgvcn25ujRo+ZDad68ec593377rbnJXLVqldnWm5dKlSpZBw4ccJ4zbdo0KyEhwcrLyzPbDz74oAlarlJTU83/uTt0797dGjVqlHO7sLDQatiwoTVhwgQrEnjemBcVFVn169e3/vGPf7hd79jYWBNklN746c+tW7fOec7ChQutqKgo65dffjHbL7/8slWr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vLnEc5YtW2bOOXr0aEDaBADwD0IQAOCM9Mb/dI/HHnusXOGiPPbu3SsjRoyQhg0bSkxMjDRt2lTuueceOXLkSIX/rgsuuED2798viYmJZnv27NlSs2bNCv89AAD/ivbz8wMAIoDe+DvMnTtXxo0bJzt27HDuq169elDa9dNPP0nPnj2lTZs28s4770jz5s3lm2++kQceeEAWLlwoq1evlqSkpAr7fRqy6tevX2HPBwAIDnqCAABnpDf+jof2gmjPjmO7bt26MnnyZGnUqJHExsZK586d5dNPP3X+rAYT1aVLF/Nzffr0Mdvr1q2Tyy67TGrXrm2es3fv3rJx40af/jVGjRplgsnnn39ufr5JkyYyYMAAWbx4sfzyyy/yyCOPnHZonfbiaG+Oq++++870+MTFxUmHDh1k+fLlXofD6ffDhw+XzMzMYj1iL7/8srRu3do8R7169eS6667jXQYAIYQQBAAol+eff17++c9/yrPPPitff/219O/fXwYNGiQ7d+40x9euXWu+ajDRHqX33nvPbB87dkzS0tLkq6++Mj02GhquuOIKs780MjIy5LPPPpM77rhD4uPj3Y5pOBs6dKjptbIsy6fXo71I9913n2zatMn0Ml155ZVeh9ZpUHruueckISHBvC593H///bJ+/Xq5++675YknnjC9ZRoIL774Yp/aAADwL4bDAQDKRcPPQw89JIMHDzbbkyZNkqVLl5qAMHXqVKlTp47Zn5yc7DaU7NJLL3V7nhkzZpieGe15+eMf/3jG36shSwPOOeec4/W47v/tt9/k8OHDpreqtO6880659tprzffTpk0zIea1116TBx980O087YFy7RVzSE9Pl2rVqpnXUKNGDTNHSXvBAAChg54gAECZZWVlyb59++TCCy9026/b33777Wl/9uDBg/KXv/zF9ABpmNAelezsbBMifHGmnh4NK77Q3h+H6Oho6dat2xlfiysd4qfBp0WLFvLnP/9Z3nrrLcnJyfGpDQAA/yIEAQCCQofCacU4HU63cuVK8732FuXn55fq51u1amV6YUoKKLpfe6Ec1dv0XM/AVFBQIBVNe390bpMWamjQoIEpIpGSkkJZbQAIIYQgAECZae+NlqZesWKF237dbteunVtPTGFhYbFzdO6MzgNq3769Karw66+/lvp3a2DSXhctQnDixAm3YwcOHDA9MMOGDXPu00DkWuVOh9N566HR+UkOJ0+elA0bNpQ45E5fm+frcvQg9evXT5555hkzT0rLhH/xxRelfm0AAP9iThAAoFy0kMD48eOlZcuWpjLcrFmzTK+OhhCl83G0cIHOrdEKcloxTYe/6TC4N954www302F1+jyeBQ7O5KWXXjIFCrQYw1NPPeVWIlvLZmsvjOscJD1fh7tpcNF5TFWqVCn2nDqPSdumwWfKlClmXpGuQ+RNs2bNzBC+JUuWmN6eqlWrmrCjpbu1GEKtWrXkk08+kaKiImnbtq3P1xYA4B/0BAEAykV7c+69915TUa1jx44m7HzwwQcmSDh6RV544QWZPn266TW66qqrzH4tNqAB49xzzzVzZ/R5fClgoPR3aKltnX9zww03mLk4WiJbA5D2NLmuX6QV7Bo3biy9evWSIUOGmEpuGlo8TZw40Tw01GjlOn0tWsbbGw1gt99+u6SmppqeJu350eF3WgFPQ5cGqVdeecUMjdPeLgBAaIiyfK0dCgBACNNeKV23aNGiRdKjR49gNwcAEIIIQQCAiKND8nQRU+1dqlSJQQ8AAHeEIAAAAAC2wp/HAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAAIid/D9xnNOw5HXBQQAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "def get_target_rqops(results, labels):\n",
- "\n",
- " target_runtime = 604800\n",
- " logical_qubits = []\n",
- " logical_depth = []\n",
- " target_rqops = []\n",
- " logical_error = []\n",
- "\n",
- " for i in range(3):\n",
- " logical_qubits.append(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'])\n",
- " logical_depth.append(results[i]['physicalCountsFormatted']['logicalDepth'])\n",
- " logical_error.append(results[i]['physicalCountsFormatted']['requiredLogicalQubitErrorRate'])\n",
- " target_rqops.append(round(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'] * results[i]['physicalCounts']['breakdown']['logicalDepth'] / target_runtime))\n",
- "\n",
- " data = pd.DataFrame()\n",
- " pd.options.display.float_format = '{:.2e}'.format\n",
- " data['Logical qubits'] = logical_qubits\n",
- " data['Logical depth'] = logical_depth\n",
- " data['Logical error'] = logical_error\n",
- " data['Target rQOPS'] = target_rqops\n",
- " data['Target rQOPS'] = data['Target rQOPS'].astype('float64')\n",
- " data.index = labels\n",
- "\n",
- " return data\n",
- "\n",
- "rQOPS_table = get_target_rqops(results, labels)\n",
- "rQOPS_table\n"
+ "# Displaying estimates for 20x20 lattice size.\n",
+ "\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "combined = pd.concat([results.as_frame()])\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "for name, group in combined.groupby(\"name\"):\n",
+ " plt.scatter(group[\"qubits\"], group[\"runtime\"], marker='x', label=name)\n",
+ "plt.xlabel(\"Total Qubits\")\n",
+ "plt.ylabel(\"Runtime (seconds)\")\n",
+ "plt.legend()\n",
+ "plt.show()"
]
},
{
@@ -1013,7 +1372,7 @@
"name": "python3"
},
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "qre3",
"language": "python",
"name": "python3"
},
@@ -1027,7 +1386,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.7"
+ "version": "3.13.3"
},
"nteract": {
"version": "nteract-front-end@1.0.0"
diff --git a/samples/estimation/estimation-ising-2D.ipynb b/samples/estimation/estimation-ising-2D.ipynb
index 3019041d5f..a43f5b2614 100644
--- a/samples/estimation/estimation-ising-2D.ipynb
+++ b/samples/estimation/estimation-ising-2D.ipynb
@@ -6,21 +6,29 @@
"source": [
"# Resource estimation for simulating a 2D Ising Model Hamiltonian\n",
"\n",
- "In this Python+Q# notebook we demonstrate how to estimate the resources for quantum dynamics,\n",
- "specifically the simulation of an Ising model Hamiltonian on an $N \\times N$ 2D\n",
+ "In this Python notebook we demonstrate how to estimate the resources for quantum dynamics, specifically the simulation of an Ising model Hamiltonian on an $N \\times N$ 2D\n",
"lattice using a *fourth-order Trotter Suzuki product formula* assuming a 2D\n",
"qubit architecture with nearest-neighbor connectivity.\n",
"\n",
- "First, we load the necessary Python packages."
+ "First, we load the qsharp package."
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/javascript": "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// This file provides CodeMirror syntax highlighting for Q# magic cells\n// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n// VS Code, Azure Notebooks, etc.) environments.\n\n// Detect the prerequisites and do nothing if they don't exist.\nif (window.require && window.CodeMirror && window.Jupyter) {\n // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n let rules = [\n {\n token: \"comment\",\n regex: /(\\/\\/).*/,\n beginWord: false,\n },\n {\n token: \"string\",\n regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n beginWord: false,\n },\n {\n token: \"keyword\",\n regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n beginWord: true,\n },\n {\n token: \"keyword\",\n regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(not|and|or)\\b|(w/)`,\n beginWord: true,\n },\n {\n token: \"operatorKeyword\",\n regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n beginWord: false,\n },\n {\n token: \"meta\",\n regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n beginWord: true,\n },\n {\n token: \"atom\",\n regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n beginWord: true,\n },\n ];\n let simpleRules = [];\n for (let rule of rules) {\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(rule.regex, \"g\"),\n sol: rule.beginWord,\n });\n if (rule.beginWord) {\n // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n simpleRules.push({\n token: rule.token,\n regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n sol: false,\n });\n }\n }\n\n // Register the mode defined above with CodeMirror\n window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n\n // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n reg: [/^%%qsharp/],\n };\n\n // Force re-highlighting of all cells the first time this code runs\n for (const cell of window.Jupyter.notebook.get_cells()) {\n cell.auto_highlight();\n }\n });\n}\n",
+ "text/plain": []
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "from qdk import qsharp\n",
+ "import qsharp\n",
"import pandas as pd"
]
},
@@ -34,390 +42,3787 @@
"Formally, the Ising model Hamiltonian on an $N \\times N$ lattice we consider is formulated as:\n",
"\n",
"$$\n",
- "H = \\underbrace{-J \\sum_{i, j} Z_i Z_j}_{B} + \\underbrace{g \\sum_j X_j}_{A}\n",
- "$$\n",
- "where $J$ is the interaction strength, $g$ is external field strength.\n",
- "\n",
- "The time evolution $e^{-iHt}$ for the Hamiltonian is simulated with the fourth-order product formula so that any errors in simulation are sufficiently small. Essentially, this is done by simulating the evolution for small slices of time $\\Delta$ and repeating this for `nSteps` $= t/\\Delta$ to obtain the full time evolution. The Trotter-Suzuki formula for higher orders can be recursively defined using a *fractal decomposition* as discussed in Section 3 of [Hatanao and Suziki's survey](https://link.springer.com/chapter/10.1007/11526216_2). Then the fourth order formula $U_4(\\Delta)$ can be constructed using the second-order one $U_2(\\Delta)$ as follows.\n",
- "$$\n",
- "\\begin{aligned}\n",
- "U_2(\\Delta) & = e^{-iA\\Delta/2} e^{-iB\\Delta} e^{-iA\\Delta/2}; \\\\\n",
- "U_4(\\Delta) & = U_2(p\\Delta)U_2(p\\Delta)U_2((1 - 4p)\\Delta)U_2(p\\Delta)U_2(p\\Delta); \\\\\n",
- "p & = (4 - 4^{1/3})^{-1}.\n",
- "\\end{aligned}\n",
- "$$\n",
- "\n",
- "For the rest of the notebook, we will present the code that computes the time evolution in a step by step fashion.\n",
- "\n",
- "## Implementation\n",
- "\n",
- "### Helper functions"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note that expanding $U_4(\\Delta)$ to express it in terms of $A, B$ gives:\n",
- "$$\n",
- "U_4(\\Delta) = e^{-iAp\\Delta/2} e^{-iBp\\Delta} e^{-iAp\\Delta} e^{-iBp\\Delta} e^{-iA(1 - 3p)\\Delta/2} e^{-iB(1-4p)\\Delta} e^{-iA(1 - 3p)\\Delta/2} e^{-iBp\\Delta} e^{-iAp\\Delta} e^{-iBp\\Delta} e^{-iAp\\Delta/2}\n",
+ "H = \\underbrace{-J \\sum_{i, j} Z_i Z_j}_{B} - \\underbrace{h \\sum_j X_j}_{A}\n",
"$$\n",
- "\n",
- "The above equation with $11$ exponential terms works for one time step. For `nSteps` $> 1$ time steps, some adjacent terms can be merged to give $10t+1$ exponential terms for $e^{-iHt}$.\n",
- "\n",
- "The function below creates a sequence containing the constant factors that will be applied with $A$ and $B$, respectively, in the exponential sequence of the above formula."
+ "where $J$ is the interaction strength, $h$ is external field strength."
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "jupyter": {
- "outputs_hidden": false,
- "source_hidden": false
- },
- "microsoft": {
- "language": "qsharp"
- },
- "nteract": {
- "transient": {
- "deleting": false
- }
- },
- "vscode": {
- "languageId": "qsharp"
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Ising model with 2 terms on 100 qubits (h=0.5, J=1.0).\n"
+ ]
}
- },
- "outputs": [],
+ ],
"source": [
- "%%qsharp\n",
- "function SetAngleSequence(p : Double, dt : Double, J : Double, g : Double) : Double[] {\n",
+ "from qsharp.qre.application.magnets.geometry import Patch2D\n",
+ "from qsharp.qre.application.magnets.models import IsingModel, HeisenbergModel\n",
"\n",
- " let len1 = 3;\n",
- " let len2 = 3;\n",
- " let valLength = 2*len1+len2+1;\n",
- " mutable values = [0.0, size=valLength];\n",
- "\n",
- " let val1 = J*p*dt;\n",
- " let val2 = -g*p*dt;\n",
- " let val3 = J*(1.0 - 3.0*p)*dt/2.0;\n",
- " let val4 = g*(1.0 - 4.0*p)*dt/2.0;\n",
- "\n",
- " for i in 0..len1 {\n",
- "\n",
- " if (i % 2 == 0) {\n",
- " set values w/= i <- val1;\n",
- " }\n",
- " else {\n",
- " set values w/= i <- val2;\n",
- " }\n",
- "\n",
- " }\n",
- "\n",
- " for i in len1+1..len1+len2 {\n",
- " if (i % 2 == 0) {\n",
- " set values w/= i <- val3;\n",
- " }\n",
- " else {\n",
- " set values w/= i <- val4;\n",
- " }\n",
- " }\n",
- "\n",
- " for i in len1+len2+1..valLength-1 {\n",
- " if (i % 2 == 0) {\n",
- " set values w/= i <- val1;\n",
- " }\n",
- " else {\n",
- " set values w/= i <- val2;\n",
- " }\n",
- " }\n",
- " return values;\n",
- "}"
+ "# Because we want a transverse field Ising model, we need to include self-loops in the lattice\n",
+ "model = IsingModel(Patch2D(10, 10, self_loops=True), h = 0.5, J=1.0)\n",
+ "print (model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Quantum operations\n",
- "\n",
- "There are two kinds of Pauli exponentials needed for simulating the time evolution of an Ising Model:\n",
- "- The transverse field $e^{-iX\\theta}$ applied to each qubit for an angle $\\theta$;\n",
- "- $e^{-i (Z \\otimes Z)\\theta}$ applied to neighboring pairs of qubits in the lattice.\n",
+ "## Trotter expansion\n",
"\n",
- "The operation below applies $e^{-iX\\theta}$ on all qubits in the 2D lattice."
+ "The time evolution $e^{-iHt}$ for the Hamiltonian is simulated with the fourth-order product formula so that any errors in simulation are sufficiently small. Essentially, this is done by simulating the evolution for small slices of time $\\Delta$ and repeating this for `nSteps` $= t/\\Delta$ to obtain the full time evolution. The Trotter-Suzuki formula for higher orders can be recursively defined using a *fractal decomposition*. In particular, the fourth order formula $U_4(\\Delta)$ can be constructed using the second-order one $U_2(\\Delta)$ as follows.\n",
+ "$$\n",
+ "\\begin{aligned}\n",
+ "U_2(\\Delta) & = e^{-iA\\Delta/2} e^{-iB\\Delta} e^{-iA\\Delta/2}; \\\\\n",
+ "U_4(\\Delta) & = U_2(p\\Delta)U_2(p\\Delta)U_2((1 - 4p)\\Delta)U_2(p\\Delta)U_2(p\\Delta); \\\\\n",
+ "p & = (4 - 4^{1/3})^{-1}.\n",
+ "\\end{aligned}\n",
+ "$$"
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "microsoft": {
- "language": "qsharp"
- },
- "vscode": {
- "languageId": "qsharp"
- }
- },
- "outputs": [],
- "source": [
- "%%qsharp\n",
- "operation ApplyAllX(n : Int, qArr : Qubit[][], theta : Double) : Unit {\n",
- " // This applies `Rx` with an angle of `2.0 * theta` to all qubits in `qs`\n",
- " // using partial application\n",
- " for row in 0..n-1 {\n",
- " ApplyToEach(Rx(2.0 * theta, _), qArr[row]);\n",
- " }\n",
- "}"
- ]
- },
- {
- "cell_type": "markdown",
+ "execution_count": 3,
"metadata": {},
- "source": [
- "The next operation below applies $e^{-i(Z \\otimes Z)\\theta}$ on overlapping pairs of neighboring qubits. Observe that unlike the previous case, it is not possible to simultaneously apply all the rotations in one go. For example, while applying the rotation on qubits at $(0, 0)$ and $(0, 1)$, it is not possible to also apply the rotation on qubits $(0, 1)$ and $(0, 2)$. Instead, we try to apply as many rotations as possible. This is broken up as follows:\n",
- "- in the vertical (resp. horizontal) direction of the 2D lattice as chosen by `dir`,\n",
- "- consider pairs starting with an even (resp. odd) index as given by `grp`;\n",
- "- apply the exponential to all such pairs in the lattice."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "microsoft": {
- "language": "qsharp"
- },
- "vscode": {
- "languageId": "qsharp"
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "cirq.CircuitOperation(\n",
+ " circuit=cirq.FrozenCircuit([\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " ]),\n",
+ " repetitions=2,\n",
+ ")"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
}
- },
- "outputs": [],
+ ],
"source": [
- "%%qsharp\n",
- "operation ApplyDoubleZ(n : Int, m : Int, qArr : Qubit[][], theta : Double, dir : Bool, grp : Bool) : Unit {\n",
- " let start = grp ? 1 | 0; // Choose either odd or even indices based on group number\n",
- " let P_op = [PauliZ, PauliZ];\n",
- " let c_end = dir ? m-1 | m-2;\n",
- " let r_end = dir ? m-2 | m-1;\n",
+ "import math\n",
"\n",
- " for row in 0..r_end {\n",
- " for col in start..2..c_end { // Iterate through even or odd columns based on `grp`\n",
+ "from qsharp.qre.application.magnets.trotter import TrotterExpansion, fourth_order_trotter_suzuki, strang_splitting\n",
"\n",
- " let row2 = dir ? row+1 | row;\n",
- " let col2 = dir ? col | col+1;\n",
+ "t = 1\n",
+ "dt = 0.5\n",
"\n",
- " Exp(P_op, theta, [qArr[row][col], qArr[row2][col2]]);\n",
- " }\n",
- " }\n",
- "}\n"
+ "trotter = TrotterExpansion(fourth_order_trotter_suzuki, model, time=dt, num_steps=math.ceil(t/dt))\n",
+ "circuit = trotter.cirq()\n",
+ "\n",
+ "circuit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "The next operation puts everything together and calls the operations needed to\n",
- "simulate the Ising model Hamiltonian using a fourth order product formula.\n",
- "Observe that the `ApplyDoubleZ` operation is called four times for different\n",
- "choices of direction and starting index to ensure all possible pairs of qubits\n",
- "are appropriately considered.\n",
- "\n",
- "The various parameters taken in by the operation correspond to:\n",
+ "## Application wrapper\n",
"\n",
- "- `N1`, `N2`: row and column size for the lattice.\n",
- "- `J`, `g`: parameters by which the Hamiltonian terms are scaled.\n",
- "- `totTime`: the number of Trotter steps.\n",
- "- `dt` : the step size for the simulation, sometimes denoted as $\\Delta$."
+ "Presently the circuit is Cirq code and can be used for any purpose (e.g. simulation). To obtain resource estimates we wrap this in a QRE Application instance. The `CirqApplication` subclass does this automatically from any `Cirq.Circuit` instance."
]
},
{
"cell_type": "code",
- "execution_count": null,
- "metadata": {
- "microsoft": {
- "language": "qsharp"
- },
- "vscode": {
- "languageId": "qsharp"
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "CirqApplication(circuit_or_qasm=cirq.CircuitOperation(\n",
+ " circuit=cirq.FrozenCircuit([\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=-0.03917306961889211, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=-0.004742717163841004, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(98))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(98), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(1))), qubits=(cirq.LineQubit(0), cirq.LineQubit(1)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(3))), qubits=(cirq.LineQubit(2), cirq.LineQubit(3)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(5))), qubits=(cirq.LineQubit(4), cirq.LineQubit(5)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(7))), qubits=(cirq.LineQubit(6), cirq.LineQubit(7)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(9))), qubits=(cirq.LineQubit(8), cirq.LineQubit(9)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(90))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(90), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(92))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(92), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(94))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(94), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(96))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(96), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(10), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(12), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(14), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(16), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(18), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(20), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(22), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(24), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(26), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(28), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(30), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(32), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(34), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(36), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(38), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(40), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(42), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(44), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(46), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(48), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(50), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(52), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(54), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(56), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(58), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(60), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(62), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(64), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(66), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(68), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(70), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(72), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(74), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(76), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(78), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(80), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(82), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(84), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(86), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(88), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(0))*cirq.Z(cirq.LineQubit(10))), qubits=(cirq.LineQubit(0), cirq.LineQubit(10)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(11))), qubits=(cirq.LineQubit(1), cirq.LineQubit(11)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(2))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(2), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(13))), qubits=(cirq.LineQubit(3), cirq.LineQubit(13)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(4))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(4), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(15))), qubits=(cirq.LineQubit(5), cirq.LineQubit(15)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(6))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(6), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(17))), qubits=(cirq.LineQubit(7), cirq.LineQubit(17)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(8))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(8), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(9))*cirq.Z(cirq.LineQubit(19))), qubits=(cirq.LineQubit(9), cirq.LineQubit(19)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(20))*cirq.Z(cirq.LineQubit(30))), qubits=(cirq.LineQubit(20), cirq.LineQubit(30)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(31))), qubits=(cirq.LineQubit(21), cirq.LineQubit(31)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(22))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(22), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(33))), qubits=(cirq.LineQubit(23), cirq.LineQubit(33)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(24))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(24), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(35))), qubits=(cirq.LineQubit(25), cirq.LineQubit(35)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(26))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(26), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(37))), qubits=(cirq.LineQubit(27), cirq.LineQubit(37)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(28))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(28), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(29))*cirq.Z(cirq.LineQubit(39))), qubits=(cirq.LineQubit(29), cirq.LineQubit(39)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(40))*cirq.Z(cirq.LineQubit(50))), qubits=(cirq.LineQubit(40), cirq.LineQubit(50)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(51))), qubits=(cirq.LineQubit(41), cirq.LineQubit(51)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(42))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(42), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(53))), qubits=(cirq.LineQubit(43), cirq.LineQubit(53)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(44))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(44), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(55))), qubits=(cirq.LineQubit(45), cirq.LineQubit(55)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(46))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(46), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(57))), qubits=(cirq.LineQubit(47), cirq.LineQubit(57)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(48))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(48), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(49))*cirq.Z(cirq.LineQubit(59))), qubits=(cirq.LineQubit(49), cirq.LineQubit(59)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(60))*cirq.Z(cirq.LineQubit(70))), qubits=(cirq.LineQubit(60), cirq.LineQubit(70)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(71))), qubits=(cirq.LineQubit(61), cirq.LineQubit(71)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(62))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(62), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(73))), qubits=(cirq.LineQubit(63), cirq.LineQubit(73)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(64))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(64), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(75))), qubits=(cirq.LineQubit(65), cirq.LineQubit(75)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(66))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(66), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(77))), qubits=(cirq.LineQubit(67), cirq.LineQubit(77)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(68))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(68), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(69))*cirq.Z(cirq.LineQubit(79))), qubits=(cirq.LineQubit(69), cirq.LineQubit(79)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(80))*cirq.Z(cirq.LineQubit(90))), qubits=(cirq.LineQubit(80), cirq.LineQubit(90)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(91))), qubits=(cirq.LineQubit(81), cirq.LineQubit(91)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(82))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(82), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(93))), qubits=(cirq.LineQubit(83), cirq.LineQubit(93)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(84))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(84), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(95))), qubits=(cirq.LineQubit(85), cirq.LineQubit(95)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(86))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(86), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(97))), qubits=(cirq.LineQubit(87), cirq.LineQubit(97)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(88))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(88), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(89))*cirq.Z(cirq.LineQubit(99))), qubits=(cirq.LineQubit(89), cirq.LineQubit(99)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(10))*cirq.Z(cirq.LineQubit(20))), qubits=(cirq.LineQubit(10), cirq.LineQubit(20)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(21))), qubits=(cirq.LineQubit(11), cirq.LineQubit(21)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(12))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(12), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(23))), qubits=(cirq.LineQubit(13), cirq.LineQubit(23)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(14))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(14), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(25))), qubits=(cirq.LineQubit(15), cirq.LineQubit(25)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(16))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(16), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(27))), qubits=(cirq.LineQubit(17), cirq.LineQubit(27)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(18))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(18), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(19))*cirq.Z(cirq.LineQubit(29))), qubits=(cirq.LineQubit(19), cirq.LineQubit(29)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(30))*cirq.Z(cirq.LineQubit(40))), qubits=(cirq.LineQubit(30), cirq.LineQubit(40)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(41))), qubits=(cirq.LineQubit(31), cirq.LineQubit(41)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(32))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(32), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(43))), qubits=(cirq.LineQubit(33), cirq.LineQubit(43)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(34))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(34), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(45))), qubits=(cirq.LineQubit(35), cirq.LineQubit(45)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(36))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(36), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(47))), qubits=(cirq.LineQubit(37), cirq.LineQubit(47)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(38))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(38), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(39))*cirq.Z(cirq.LineQubit(49))), qubits=(cirq.LineQubit(39), cirq.LineQubit(49)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(50))*cirq.Z(cirq.LineQubit(60))), qubits=(cirq.LineQubit(50), cirq.LineQubit(60)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(61))), qubits=(cirq.LineQubit(51), cirq.LineQubit(61)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(52))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(52), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(63))), qubits=(cirq.LineQubit(53), cirq.LineQubit(63)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(54))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(54), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(65))), qubits=(cirq.LineQubit(55), cirq.LineQubit(65)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(56))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(56), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(67))), qubits=(cirq.LineQubit(57), cirq.LineQubit(67)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(58))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(58), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(59))*cirq.Z(cirq.LineQubit(69))), qubits=(cirq.LineQubit(59), cirq.LineQubit(69)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(70))*cirq.Z(cirq.LineQubit(80))), qubits=(cirq.LineQubit(70), cirq.LineQubit(80)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(81))), qubits=(cirq.LineQubit(71), cirq.LineQubit(81)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(72))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(72), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(83))), qubits=(cirq.LineQubit(73), cirq.LineQubit(83)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(74))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(74), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(85))), qubits=(cirq.LineQubit(75), cirq.LineQubit(85)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(76))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(76), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(87))), qubits=(cirq.LineQubit(77), cirq.LineQubit(87)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(78))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(78), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(79))*cirq.Z(cirq.LineQubit(89))), qubits=(cirq.LineQubit(79), cirq.LineQubit(89)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(1))*cirq.Z(cirq.LineQubit(2))), qubits=(cirq.LineQubit(1), cirq.LineQubit(2)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(3))*cirq.Z(cirq.LineQubit(4))), qubits=(cirq.LineQubit(3), cirq.LineQubit(4)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(5))*cirq.Z(cirq.LineQubit(6))), qubits=(cirq.LineQubit(5), cirq.LineQubit(6)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(7))*cirq.Z(cirq.LineQubit(8))), qubits=(cirq.LineQubit(7), cirq.LineQubit(8)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(91))*cirq.Z(cirq.LineQubit(92))), qubits=(cirq.LineQubit(91), cirq.LineQubit(92)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(93))*cirq.Z(cirq.LineQubit(94))), qubits=(cirq.LineQubit(93), cirq.LineQubit(94)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(95))*cirq.Z(cirq.LineQubit(96))), qubits=(cirq.LineQubit(95), cirq.LineQubit(96)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(97))*cirq.Z(cirq.LineQubit(98))), qubits=(cirq.LineQubit(97), cirq.LineQubit(98)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(90))), qubits=(cirq.LineQubit(90),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(99))), qubits=(cirq.LineQubit(99),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(0))), qubits=(cirq.LineQubit(0),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(9))), qubits=(cirq.LineQubit(9),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(11))*cirq.Z(cirq.LineQubit(12))), qubits=(cirq.LineQubit(11), cirq.LineQubit(12)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(13))*cirq.Z(cirq.LineQubit(14))), qubits=(cirq.LineQubit(13), cirq.LineQubit(14)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(15))*cirq.Z(cirq.LineQubit(16))), qubits=(cirq.LineQubit(15), cirq.LineQubit(16)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(17))*cirq.Z(cirq.LineQubit(18))), qubits=(cirq.LineQubit(17), cirq.LineQubit(18)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(21))*cirq.Z(cirq.LineQubit(22))), qubits=(cirq.LineQubit(21), cirq.LineQubit(22)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(23))*cirq.Z(cirq.LineQubit(24))), qubits=(cirq.LineQubit(23), cirq.LineQubit(24)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(25))*cirq.Z(cirq.LineQubit(26))), qubits=(cirq.LineQubit(25), cirq.LineQubit(26)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(27))*cirq.Z(cirq.LineQubit(28))), qubits=(cirq.LineQubit(27), cirq.LineQubit(28)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(31))*cirq.Z(cirq.LineQubit(32))), qubits=(cirq.LineQubit(31), cirq.LineQubit(32)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(33))*cirq.Z(cirq.LineQubit(34))), qubits=(cirq.LineQubit(33), cirq.LineQubit(34)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(35))*cirq.Z(cirq.LineQubit(36))), qubits=(cirq.LineQubit(35), cirq.LineQubit(36)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(37))*cirq.Z(cirq.LineQubit(38))), qubits=(cirq.LineQubit(37), cirq.LineQubit(38)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(41))*cirq.Z(cirq.LineQubit(42))), qubits=(cirq.LineQubit(41), cirq.LineQubit(42)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(43))*cirq.Z(cirq.LineQubit(44))), qubits=(cirq.LineQubit(43), cirq.LineQubit(44)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(45))*cirq.Z(cirq.LineQubit(46))), qubits=(cirq.LineQubit(45), cirq.LineQubit(46)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(47))*cirq.Z(cirq.LineQubit(48))), qubits=(cirq.LineQubit(47), cirq.LineQubit(48)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(51))*cirq.Z(cirq.LineQubit(52))), qubits=(cirq.LineQubit(51), cirq.LineQubit(52)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(53))*cirq.Z(cirq.LineQubit(54))), qubits=(cirq.LineQubit(53), cirq.LineQubit(54)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(55))*cirq.Z(cirq.LineQubit(56))), qubits=(cirq.LineQubit(55), cirq.LineQubit(56)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(57))*cirq.Z(cirq.LineQubit(58))), qubits=(cirq.LineQubit(57), cirq.LineQubit(58)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(61))*cirq.Z(cirq.LineQubit(62))), qubits=(cirq.LineQubit(61), cirq.LineQubit(62)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(63))*cirq.Z(cirq.LineQubit(64))), qubits=(cirq.LineQubit(63), cirq.LineQubit(64)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(65))*cirq.Z(cirq.LineQubit(66))), qubits=(cirq.LineQubit(65), cirq.LineQubit(66)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(67))*cirq.Z(cirq.LineQubit(68))), qubits=(cirq.LineQubit(67), cirq.LineQubit(68)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(71))*cirq.Z(cirq.LineQubit(72))), qubits=(cirq.LineQubit(71), cirq.LineQubit(72)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(73))*cirq.Z(cirq.LineQubit(74))), qubits=(cirq.LineQubit(73), cirq.LineQubit(74)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(75))*cirq.Z(cirq.LineQubit(76))), qubits=(cirq.LineQubit(75), cirq.LineQubit(76)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(77))*cirq.Z(cirq.LineQubit(78))), qubits=(cirq.LineQubit(77), cirq.LineQubit(78)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(81))*cirq.Z(cirq.LineQubit(82))), qubits=(cirq.LineQubit(81), cirq.LineQubit(82)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(83))*cirq.Z(cirq.LineQubit(84))), qubits=(cirq.LineQubit(83), cirq.LineQubit(84)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(85))*cirq.Z(cirq.LineQubit(86))), qubits=(cirq.LineQubit(85), cirq.LineQubit(86)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.Z(cirq.LineQubit(87))*cirq.Z(cirq.LineQubit(88))), qubits=(cirq.LineQubit(87), cirq.LineQubit(88)), exponent_neg=0.02968763529120993, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(1))), qubits=(cirq.LineQubit(1),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(89))), qubits=(cirq.LineQubit(89),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(19))), qubits=(cirq.LineQubit(19),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(91))), qubits=(cirq.LineQubit(91),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(92))), qubits=(cirq.LineQubit(92),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(93))), qubits=(cirq.LineQubit(93),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(94))), qubits=(cirq.LineQubit(94),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(2))), qubits=(cirq.LineQubit(2),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(95))), qubits=(cirq.LineQubit(95),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(96))), qubits=(cirq.LineQubit(96),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(97))), qubits=(cirq.LineQubit(97),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(98))), qubits=(cirq.LineQubit(98),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(20))), qubits=(cirq.LineQubit(20),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(5))), qubits=(cirq.LineQubit(5),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(10))), qubits=(cirq.LineQubit(10),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(39))), qubits=(cirq.LineQubit(39),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(40))), qubits=(cirq.LineQubit(40),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(3))), qubits=(cirq.LineQubit(3),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(4))), qubits=(cirq.LineQubit(4),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(49))), qubits=(cirq.LineQubit(49),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(8))), qubits=(cirq.LineQubit(8),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(6))), qubits=(cirq.LineQubit(6),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(50))), qubits=(cirq.LineQubit(50),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(59))), qubits=(cirq.LineQubit(59),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(60))), qubits=(cirq.LineQubit(60),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(69))), qubits=(cirq.LineQubit(69),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(70))), qubits=(cirq.LineQubit(70),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(29))), qubits=(cirq.LineQubit(29),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(79))), qubits=(cirq.LineQubit(79),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(30))), qubits=(cirq.LineQubit(30),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(80))), qubits=(cirq.LineQubit(80),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(7))), qubits=(cirq.LineQubit(7),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " cirq.Moment(\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(26))), qubits=(cirq.LineQubit(26),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(87))), qubits=(cirq.LineQubit(87),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(88))), qubits=(cirq.LineQubit(88),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(31))), qubits=(cirq.LineQubit(31),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(34))), qubits=(cirq.LineQubit(34),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(17))), qubits=(cirq.LineQubit(17),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(18))), qubits=(cirq.LineQubit(18),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(27))), qubits=(cirq.LineQubit(27),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(16))), qubits=(cirq.LineQubit(16),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(11))), qubits=(cirq.LineQubit(11),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(21))), qubits=(cirq.LineQubit(21),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(15))), qubits=(cirq.LineQubit(15),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(23))), qubits=(cirq.LineQubit(23),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(14))), qubits=(cirq.LineQubit(14),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(33))), qubits=(cirq.LineQubit(33),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(35))), qubits=(cirq.LineQubit(35),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(36))), qubits=(cirq.LineQubit(36),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(37))), qubits=(cirq.LineQubit(37),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(38))), qubits=(cirq.LineQubit(38),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(41))), qubits=(cirq.LineQubit(41),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(42))), qubits=(cirq.LineQubit(42),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(43))), qubits=(cirq.LineQubit(43),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(44))), qubits=(cirq.LineQubit(44),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(45))), qubits=(cirq.LineQubit(45),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(46))), qubits=(cirq.LineQubit(46),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(47))), qubits=(cirq.LineQubit(47),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(22))), qubits=(cirq.LineQubit(22),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(48))), qubits=(cirq.LineQubit(48),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(51))), qubits=(cirq.LineQubit(51),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(52))), qubits=(cirq.LineQubit(52),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(53))), qubits=(cirq.LineQubit(53),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(54))), qubits=(cirq.LineQubit(54),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(55))), qubits=(cirq.LineQubit(55),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(32))), qubits=(cirq.LineQubit(32),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(56))), qubits=(cirq.LineQubit(56),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(57))), qubits=(cirq.LineQubit(57),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(58))), qubits=(cirq.LineQubit(58),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(13))), qubits=(cirq.LineQubit(13),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(61))), qubits=(cirq.LineQubit(61),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(62))), qubits=(cirq.LineQubit(62),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(63))), qubits=(cirq.LineQubit(63),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(64))), qubits=(cirq.LineQubit(64),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(12))), qubits=(cirq.LineQubit(12),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(65))), qubits=(cirq.LineQubit(65),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(66))), qubits=(cirq.LineQubit(66),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(67))), qubits=(cirq.LineQubit(67),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(68))), qubits=(cirq.LineQubit(68),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(24))), qubits=(cirq.LineQubit(24),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(71))), qubits=(cirq.LineQubit(71),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(28))), qubits=(cirq.LineQubit(28),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(25))), qubits=(cirq.LineQubit(25),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(72))), qubits=(cirq.LineQubit(72),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(73))), qubits=(cirq.LineQubit(73),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(74))), qubits=(cirq.LineQubit(74),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(75))), qubits=(cirq.LineQubit(75),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(76))), qubits=(cirq.LineQubit(76),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(77))), qubits=(cirq.LineQubit(77),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(78))), qubits=(cirq.LineQubit(78),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(81))), qubits=(cirq.LineQubit(81),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(82))), qubits=(cirq.LineQubit(82),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(83))), qubits=(cirq.LineQubit(83),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(84))), qubits=(cirq.LineQubit(84),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(85))), qubits=(cirq.LineQubit(85),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " cirq.PauliStringPhasor(((1+0j)*cirq.X(cirq.LineQubit(86))), qubits=(cirq.LineQubit(86),), exponent_neg=0.014843817645604966, exponent_pos=0),\n",
+ " ),\n",
+ " ]),\n",
+ " repetitions=2,\n",
+ "), classical_control_probability=0.5)"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
}
- },
- "outputs": [],
+ ],
"source": [
- "%%qsharp\n",
- "import Std.Math.*;\n",
- "import Std.Arrays.*;\n",
- "\n",
- "operation IsingModel2DSim(N1 : Int, N2 : Int, J : Double, g : Double, totTime : Double, dt : Double) : Unit {\n",
- "\n",
- " use qs = Qubit[N1*N2];\n",
- " let qubitArray = Chunks(N2, qs); // qubits are re-arranged to be in an N1 x N2 array\n",
- "\n",
- " let p = 1.0 / (4.0 - 4.0^(1.0 / 3.0));\n",
- " let t = Ceiling(totTime / dt);\n",
+ "from qsharp.qre.application import CirqApplication\n",
"\n",
- " let seqLen = 10 * t + 1;\n",
+ "app = CirqApplication(circuit)\n",
+ "app_query = app.q()\n",
"\n",
- " let angSeq = SetAngleSequence(p, dt, J, g);\n",
- "\n",
- " for i in 0..seqLen - 1 {\n",
- " let theta = (i==0 or i==seqLen-1) ? J*p*dt/2.0 | angSeq[i%10];\n",
- "\n",
- " // for even indexes\n",
- " if i % 2 == 0 {\n",
- " ApplyAllX(N1, qubitArray, theta);\n",
- " } else {\n",
- " // iterate through all possible combinations for `dir` and `grp`.\n",
- " for (dir, grp) in [(true, true), (true, false), (false, true), (false, false)] {\n",
- " ApplyDoubleZ(N1, N2, qubitArray, theta, dir, grp);\n",
- " }\n",
- " }\n",
- " }\n",
- "}\n"
+ "app"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Getting logical resource counts\n",
+ "## Majorana architectures\n",
"\n",
- "For the purpose of generating the rQOPS for some target runtime, it suffices to obtain the logical resource estimates to simulate the Heisenberg model Hamiltonian. We consider three problem instances with lattice sizes $\\{10 \\times 10, 20 \\times 20, 30 \\times 30\\}$ with $J = g = 1.0$. These instances are simulated for a total time of $L$ seconds for lattice size $L$, with step size `dt`$ = 0.9$, and overall probability of failure $\\varepsilon = 0.01$. Any one of the six pre-defined qubit parameters will do to obtain the logical coounts and in this notebook we choose a Majorana based qubit with the `floquet code`."
+ "A QRE `Architecture` is a container for an Instruction Set Architecture (ISA): a list of instructions the hardware supports. The Majorana architecture supports single-qubit and two-qubit measurements in the X- and Z-bases, as well as a timing-based T-gate. The `Majorana` subclass provides the ISA for a user specified measurement error rate. Note the asymetry in the assumed error rates for measurement/state preparation versus the unitary T-gate."
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Majorana(error_rate=1e-05)"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "N1 = [10, 20, 30]\n",
- "N2 = [10, 20, 30]\n",
- "totTime = [10.0, 20.0, 30.0]\n",
- "J = 1.0\n",
- "g = 1.0\n",
- "dt = 0.9"
+ "from qsharp.qre.models import Majorana\n",
+ "\n",
+ "arch = Majorana(error_rate=1e-5)\n",
+ "arch"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "We submit a resource estimation job with all the problem instances sequentially and collect the estimates in `results`."
+ "## Creating Application and ISA Queries\n",
+ "\n",
+ "The core of the sytem is modeled through trace queries (from the top) and isa_queries (from the bottom).\n",
+ "\n",
+ "The trace query applies layouts (`ISATransform` instances) to convert the operations from the application into logical operations supported by error correction codes and magic state factories. Here we expand fine rotation gates into T-gates using circuit synthesis. The `PSSPC` layout takes as an argument the options for the number of T-gates used per rotation. QRE will enumerate over this list and compute the error rate associated to each approximation, and the contribution to the overall error rate. The `LatticeSurgery` layout links the cat-state layout (which requires instruction MULTI_PAULI_MEAS) to the logical operation provided by the code (LATTICE_SURGERY).\n",
+ "\n",
+ "The ISA query provides the specific options for the code, in this case `ThreeAux` (an instance of the surface code). It provides the LATTICE_SURGERY instruction required by the trace. Magic states are not provided by the code, and so the `RoundBasedFactory` is a generic model that provides magic state distillation."
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
- "results = []\n",
- "for i in range(3):\n",
- " qsharp_string = f\"IsingModel2DSim({N1[i]}, {N2[i]}, {J}, {g}, {totTime[i]}, {dt})\"\n",
+ "from qsharp.qre import estimate, PSSPC, LatticeSurgery\n",
+ "from qsharp.qre.models import ThreeAux, RoundBasedFactory\n",
"\n",
- " result = qsharp.estimate(qsharp_string, params={\"errorBudget\": 0.01, \"qubitParams\": {\"name\": \"qubit_maj_ns_e6\"}, \"qecScheme\": {\"name\": \"floquet_code\"}, \"constraints\": {\"logicalDepthFactor\": 4}})\n",
- " results.append(result)"
+ "trace_query = (\n",
+ " app_query\n",
+ " * PSSPC.q(num_ts_per_rotation=[16,17,18,19])\n",
+ " * LatticeSurgery.q()\n",
+ ")\n",
+ "\n",
+ "isa_query = (\n",
+ " ThreeAux.q(distance=[11, 13, 15, 17, 19])\n",
+ " * RoundBasedFactory.q(code_query=ThreeAux.q(distance=[5,7,11,13,15,17,19]))\n",
+ ")\n",
+ "\n",
+ "results = estimate(app, arch, isa_query, trace_query, max_error=0.01, name=\"Majorana e-5, 3-aux\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "To see the complete information provided when invoking the resource estimator, we output the result for the $10 \\times 10$ lattice by displaying `results[0]`"
+ "## Visualizing and understanding the results\n",
+ "\n",
+ "### Result summary table\n",
+ "\n",
+ "Canonically the number of physical qubits, runtime for a shot, and the shot error rate are presented. QRE reports only on configuration of the parameters that are Pareto optimal in time and space (and satsify the specified error rate in the `estimate` command). We add additional columns for information about these configurations.\n",
+ "\n",
+ "Notice the tradeoff between space (number of qubits) and time (runtime) is governed entirely by the selection of code distance. The higher code distance means the algorithm runs more slowly and the compute register is larger. But as a side effect we need far fewer magic state factories, and hence the total qubit count goes down!"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " qubits | \n",
+ " runtime | \n",
+ " error | \n",
+ " compute_distance | \n",
+ " compute qubits | \n",
+ " num_ts_per_rotation | \n",
+ " factories | \n",
+ " cycle_time | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Majorana e-5, 3-aux | \n",
+ " 282694 | \n",
+ " 0 days 00:00:00.226088 | \n",
+ " 0.001483 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 16 | \n",
+ " 76×T | \n",
+ " 59000 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Majorana e-5, 3-aux | \n",
+ " 323446 | \n",
+ " 0 days 00:00:00.183936 | \n",
+ " 0.001483 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 16 | \n",
+ " 94×T | \n",
+ " 48000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name qubits runtime error \\\n",
+ "0 Majorana e-5, 3-aux 282694 0 days 00:00:00.226088 0.001483 \n",
+ "1 Majorana e-5, 3-aux 323446 0 days 00:00:00.183936 0.001483 \n",
+ "\n",
+ " compute_distance compute qubits num_ts_per_rotation factories cycle_time \n",
+ "0 11 110630 16 76×T 59000 \n",
+ "1 11 110630 16 94×T 48000 "
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Displaying estimates for 10x10 lattice size.\n",
- "results[0]\n",
- "# Change index to 1 (resp. 2) for 20x20 (resp. 30x30) lattice size."
+ "from qsharp.qre.instruction_ids import LATTICE_SURGERY\n",
+ "from qsharp.qre.property_keys import NUM_TS_PER_ROTATION, DISTANCE, PHYSICAL_COMPUTE_QUBITS\n",
+ "\n",
+ "results.add_column(\"compute_distance\", lambda entry: entry.source[LATTICE_SURGERY].instruction[DISTANCE])\n",
+ "results.add_column(\"compute qubits\", lambda entry: entry.properties[PHYSICAL_COMPUTE_QUBITS])\n",
+ "results.add_column(\"num_ts_per_rotation\", lambda entry: entry.properties[NUM_TS_PER_ROTATION])\n",
+ "results.add_factory_summary_column()\n",
+ "results.add_column(\"cycle_time\", lambda entry: entry.source[LATTICE_SURGERY].instruction.expect_time(1))\n",
+ "\n",
+ "results.as_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Visualizing and understanding the results\n",
+ "### Throttling the algorithm\n",
"\n",
- "### Result summary table"
+ "Seeing that we want the algorithm to run more slowly to conserve on qubit count, we can simply increase the runtime of each lattice surgery step. This can be done directly as an argument to the `LatticeSurgery` layout. Again we provide a list of options; QRE will examine each of these and report Pareto-optimal configurations."
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 8,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " qubits | \n",
+ " runtime | \n",
+ " error | \n",
+ " compute_distance | \n",
+ " compute qubits | \n",
+ " num_ts_per_rotation | \n",
+ " factories | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 117422 | \n",
+ " 0 days 00:00:05.443200 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 3×T | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 118961 | \n",
+ " 0 days 00:00:05.080320 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 3×T | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 119686 | \n",
+ " 0 days 00:00:04.173120 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 4×T | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 121738 | \n",
+ " 0 days 00:00:03.791340 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 4×T | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 121950 | \n",
+ " 0 days 00:00:03.265920 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 5×T | \n",
+ "
\n",
+ " \n",
+ " | 5 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 124214 | \n",
+ " 0 days 00:00:02.721600 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 6×T | \n",
+ "
\n",
+ " \n",
+ " | 6 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 126478 | \n",
+ " 0 days 00:00:02.358720 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 7×T | \n",
+ "
\n",
+ " \n",
+ " | 7 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 128742 | \n",
+ " 0 days 00:00:02.177280 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 8×T | \n",
+ "
\n",
+ " \n",
+ " | 8 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 131006 | \n",
+ " 0 days 00:00:01.814400 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 9×T | \n",
+ "
\n",
+ " \n",
+ " | 9 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 133270 | \n",
+ " 0 days 00:00:01.632960 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 10×T | \n",
+ "
\n",
+ " \n",
+ " | 10 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 135534 | \n",
+ " 0 days 00:00:01.561140 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 11×T | \n",
+ "
\n",
+ " \n",
+ " | 11 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 137798 | \n",
+ " 0 days 00:00:01.451520 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 12×T | \n",
+ "
\n",
+ " \n",
+ " | 12 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 140062 | \n",
+ " 0 days 00:00:01.270080 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 13×T | \n",
+ "
\n",
+ " \n",
+ " | 13 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 144590 | \n",
+ " 0 days 00:00:01.088640 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 15×T | \n",
+ "
\n",
+ " \n",
+ " | 14 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 151382 | \n",
+ " 0 days 00:00:00.907200 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 18×T | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 153646 | \n",
+ " 0 days 00:00:00.892080 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 19×T | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 162702 | \n",
+ " 0 days 00:00:00.725760 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 23×T | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 167230 | \n",
+ " 0 days 00:00:00.669060 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 25×T | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 178550 | \n",
+ " 0 days 00:00:00.544320 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 30×T | \n",
+ "
\n",
+ " \n",
+ " | 19 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 194398 | \n",
+ " 0 days 00:00:00.446040 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 37×T | \n",
+ "
\n",
+ " \n",
+ " | 20 | \n",
+ " new Majorana e-5, 3-aux | \n",
+ " 212510 | \n",
+ " 0 days 00:00:00.362880 | \n",
+ " 0.005288 | \n",
+ " 11 | \n",
+ " 110630 | \n",
+ " 15 | \n",
+ " 45×T | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " name qubits runtime error \\\n",
+ "0 new Majorana e-5, 3-aux 117422 0 days 00:00:05.443200 0.005288 \n",
+ "1 new Majorana e-5, 3-aux 118961 0 days 00:00:05.080320 0.005288 \n",
+ "2 new Majorana e-5, 3-aux 119686 0 days 00:00:04.173120 0.005288 \n",
+ "3 new Majorana e-5, 3-aux 121738 0 days 00:00:03.791340 0.005288 \n",
+ "4 new Majorana e-5, 3-aux 121950 0 days 00:00:03.265920 0.005288 \n",
+ "5 new Majorana e-5, 3-aux 124214 0 days 00:00:02.721600 0.005288 \n",
+ "6 new Majorana e-5, 3-aux 126478 0 days 00:00:02.358720 0.005288 \n",
+ "7 new Majorana e-5, 3-aux 128742 0 days 00:00:02.177280 0.005288 \n",
+ "8 new Majorana e-5, 3-aux 131006 0 days 00:00:01.814400 0.005288 \n",
+ "9 new Majorana e-5, 3-aux 133270 0 days 00:00:01.632960 0.005288 \n",
+ "10 new Majorana e-5, 3-aux 135534 0 days 00:00:01.561140 0.005288 \n",
+ "11 new Majorana e-5, 3-aux 137798 0 days 00:00:01.451520 0.005288 \n",
+ "12 new Majorana e-5, 3-aux 140062 0 days 00:00:01.270080 0.005288 \n",
+ "13 new Majorana e-5, 3-aux 144590 0 days 00:00:01.088640 0.005288 \n",
+ "14 new Majorana e-5, 3-aux 151382 0 days 00:00:00.907200 0.005288 \n",
+ "15 new Majorana e-5, 3-aux 153646 0 days 00:00:00.892080 0.005288 \n",
+ "16 new Majorana e-5, 3-aux 162702 0 days 00:00:00.725760 0.005288 \n",
+ "17 new Majorana e-5, 3-aux 167230 0 days 00:00:00.669060 0.005288 \n",
+ "18 new Majorana e-5, 3-aux 178550 0 days 00:00:00.544320 0.005288 \n",
+ "19 new Majorana e-5, 3-aux 194398 0 days 00:00:00.446040 0.005288 \n",
+ "20 new Majorana e-5, 3-aux 212510 0 days 00:00:00.362880 0.005288 \n",
+ "\n",
+ " compute_distance compute qubits num_ts_per_rotation factories \n",
+ "0 11 110630 15 3×T \n",
+ "1 11 110630 15 3×T \n",
+ "2 11 110630 15 4×T \n",
+ "3 11 110630 15 4×T \n",
+ "4 11 110630 15 5×T \n",
+ "5 11 110630 15 6×T \n",
+ "6 11 110630 15 7×T \n",
+ "7 11 110630 15 8×T \n",
+ "8 11 110630 15 9×T \n",
+ "9 11 110630 15 10×T \n",
+ "10 11 110630 15 11×T \n",
+ "11 11 110630 15 12×T \n",
+ "12 11 110630 15 13×T \n",
+ "13 11 110630 15 15×T \n",
+ "14 11 110630 15 18×T \n",
+ "15 11 110630 15 19×T \n",
+ "16 11 110630 15 23×T \n",
+ "17 11 110630 15 25×T \n",
+ "18 11 110630 15 30×T \n",
+ "19 11 110630 15 37×T \n",
+ "20 11 110630 15 45×T "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Define function to display information in summary format\n",
- "def get_summary_table(results, labels):\n",
- " logical_qubits = []\n",
- " logical_depth = []\n",
- " t_states = []\n",
- " code_distance = []\n",
- " t_factories = []\n",
- " t_factory_fraction = []\n",
- " physical_qubits = []\n",
- " rqops = []\n",
- " runtime = []\n",
- " logical_error = []\n",
- "\n",
- " for i in range(3):\n",
- " logical_qubits.append(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'])\n",
- " logical_depth.append(results[i]['physicalCountsFormatted']['logicalDepth'])\n",
- " t_states.append(results[i]['physicalCountsFormatted']['numTstates'])\n",
- " t_factories.append(results[i]['physicalCounts']['breakdown']['numTfactories'])\n",
- " logical_error.append(results[i]['physicalCountsFormatted']['requiredLogicalQubitErrorRate'])\n",
- " physical_qubits.append(results[i]['physicalCountsFormatted']['physicalQubits'])\n",
- " rqops.append(results[i]['physicalCountsFormatted']['rqops'])\n",
- " runtime.append(results[i]['physicalCountsFormatted']['runtime'])\n",
- " code_distance.append(results[i]['logicalQubit']['codeDistance'])\n",
- " t_factory_fraction.append(results[i]['physicalCountsFormatted']['physicalQubitsForTfactoriesPercentage'])\n",
+ "new_trace_query = (\n",
+ " app_query\n",
+ " * PSSPC.q(num_ts_per_rotation=[15,16,17,18])\n",
+ " * LatticeSurgery.q(slow_down_factor = [1.0*j for j in range(2,31)])\n",
+ ")\n",
"\n",
- " data = pd.DataFrame()\n",
- " pd.options.display.float_format = '{:.2E}'.format\n",
- " data['Logical qubits'] = logical_qubits\n",
- " data['Logical depth'] = logical_depth\n",
- " data['Logical error'] = logical_error\n",
- " data['T states'] = t_states\n",
- " # data['T states'] = data['T states'].astype('float64')\n",
- " data['Code Distance'] = code_distance\n",
- " data['T factories'] = t_factories\n",
- " data['T factory fraction'] = t_factory_fraction\n",
- " data['Physical qubits'] = physical_qubits\n",
- " data['rQOPS'] = rqops\n",
- " data['Physical runtime'] = runtime\n",
- " data.index = labels\n",
+ "new_results = estimate(app, arch, isa_query, new_trace_query, max_error=0.01, name=\"new Majorana e-5, 3-aux\")\n",
+ "new_results.add_column(\"compute_distance\", lambda entry: entry.source[LATTICE_SURGERY].instruction[DISTANCE])\n",
+ "new_results.add_column(\"compute qubits\", lambda entry: entry.properties[PHYSICAL_COMPUTE_QUBITS])\n",
+ "new_results.add_column(\"num_ts_per_rotation\", lambda entry: entry.properties[NUM_TS_PER_ROTATION])\n",
+ "new_results.add_factory_summary_column()\n",
"\n",
- " return data\n",
- "\n",
- "# Display summarized information for all problem instances\n",
- "labels = [\"Isi10\", \"Isi20\", \"Isi30\"]\n",
- "table = get_summary_table(results, labels)\n",
- "table"
+ "new_results.as_frame()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "> Note that in general, there is a trade-off between the logical depth and number of T factories used. \n",
+ "# Create plots\n",
"\n",
- "> To ensure that T factories do not dominate the resource requirements, we set the `logical_depth_factor`${}=4$ adding some number of `noops` to increase the logical depth."
+ "We can use matplotlib to create nice plots of our tradeoff curve."
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 9,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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vx7X8wLg3XffNR9cV69eLePGjTM9CV999ZXz+K233mo++C9YsEDWr19vPph37NhRDh8+LAkJCeaDrYYBR9jQULBhwwbnB+Dly5dL+/bt82zHwIEDZfr06c5t/eCrPRCe0tPTZeTIkSZ4afgoVqyY+dCuASwner72YJQvX17Wrl0rs2bNMiFk+PDhbufptTS86HPX3g91+vRpee6550zo01C1c+fOHIfmac/JK6+8YtoUHR1tnouDvg7dunUz19fX5brrrpMbbrhBdu/e7fW1+Pbbb+Wuu+4yAWTr1q0yefJkSUxMNCEtLzr8TYOehseXXnopX8HJG8uynK/L1VdfLbnRn8Prr78uP/30k3lPff311yZc55eGvQ8++MDcVwNgZmam9O3bV6699lq31zMgrDCWkpJi6VPQrwAAAEXpxIkT1tatW83XAjm6x7JebWFZY+Kzvu763n1bjwdA+/btrauuuspt36WXXmo99thj5vtvv/3Wio+Pt06ePOl2ToMGDazJkyeb70eOHGl1797dfP/qq69avXr1slq2bGktWLDA7GvYsKE1ZcoUr23o16+fddNNN1lJSUlWTEyMtXPnTnOLjY21kpOTzTE9xxs9Rz8Dbt682blPt+fMmWO+18cuX768lZaW5jw+b948q1ixYtaBAwecbahataqVkZGR6+u1du1ac+1jx46Z7aVLl5rtxYsXu11b9+X2XmjatKn1xhtveD3esWNH6/nnn3fb9/7771vVq1fPtX2vvPKKadOmTZusSZMmWeXKlbNGjBhh+ero0aNWXFycFR0dbX4mU6dO9fkas2bNsipWrOjcHjNmjHlfuJowYYJVp04dt33jxo2zKlWqZA0fPtw834MHDxbo350v2YA5QQAAAMGQUFOk/7xzPT/TOmftL183a78eDxAd6uSqevXqziFf2gOiPRnas+DqxIkTziFo2sszdepU85d77fXp3LmzGYalvUN67d9//90MscqLDrfr3r276fHQHKPfV6pUKdt527Ztk9GjR5ueq4MHDzp7gLRnpVmzZtnO//nnn6Vly5Zuw8KuvPJKcz/t4dBhakqHcnnOA9KeLx3Gpa/DkSNH3B6rSZMmOb6G+vopfQ11OJ++fnqNefPmmYIN2jOjr19uPUH6eCtXrnTr+dHXV4eMHT9+3PSE6TBDB0evm+53bZM+n3/84x8yduxYiYmJkfwqW7asbNy40VxXe4L0ujokT3+Ozz//vLk5aE+VPk/tXdPH+eWXXyQ1NdU8T0d7dZhgfj300EOm1+3NN980vY+e771AIAQBAAAEiwadHlPOBSCl2wEMQKpEiRJu2zqczfFhXz8E64d6x3A3VzonR+kwqWPHjskPP/wg33zzjfmArCFIh2Vp+NA5No0aNcpXW3TYk2OY2sSJE3M8R4eS1alTR9555x1zbW2rhh8tZlAYnnNnHMPo9KbDtDSkaXDRbc/Hcn0N9fVTjtfw4YcfNkPsXn75ZWnYsKGZl/T3v/891/bq665zgG655ZYch43pkEW9bl7atGljwogO43PMc8qPYsWKmbYqHe6oQVIDjoYgreJ32223Oc/Vn4FeX+dmDR061AQ3nRemc4gGDRpknqeGIL1mVifdOTrc0JOGx99++83MNdPAq8MHA40QBAAAECw6B2jOuUnhhm4HuCcoNzr/58CBA2aei2MCe05hSHsd9C/3Gga0qphWEuvVq5eZW5Of+UAO+oFXPzRrkMipEtmhQ4dM740GoHbt2pl9eU3Y1wn+2rukocYRdLSXRT+U5xYMtEdDH0/DnKOwg6MAhC/0sXQekc5bcgQcDQ15ve76PB1BxJO+vnrLi/bm6PPMz7m50UCXkZFhvteAozfPHjM9R+dF6eOpjz/+2O0cDZH6XtIg5AiK2r6cgrD2ymmA0ip3nTp1Mj/DQKIwAgAAQDC4FkHQIXADF2V99SyWUMT0A2jbtm1N5bRFixaZD+/fffedKQTgGgi0h0B7SxyBRz8k6wfXjz76yKcQpH/9114HHWKl33vS4gY6PGrKlClmmJ1OvncdApaTPn36mN6Tfv36yZYtW2Tp0qVy3333yZ133ukcCpcTHeKlw8neeOMN2b59u3z22WemSIKvtBdMK93pB34d5qYV5rwVcXDQ4X7vvfee6Q3SQgP6mmgJ8SeffNLrfVatWmWqreljaHv15zFixAhTXEBft/waO3as6bnSa+jjarDRKnl6HW80rGmvjuO10vPffvttt3P0PZKcnGyKb+hQSu3p0+FurnSfPg8tjqA/N33f6dfC9vLlhRAEAABQ1HQdINcApD0/tdtkfXULQvuKvGn6F/v58+ebIW9aqa1x48Zy++23y65du9wChAYdnbPiOvdHv/fclx9ahltvOdFeBg0D2vOgQ+D0Q75WQMuNDsX68ssvTTU7LU+tQ9G0up32XOVGey60B0mryen8H+0R0iFtvtLS0RpCtHS2DuXTHi7t6cmNnqO9aBo8tc1aclzXUNJhgN7onB99bfRnoaWmdViavj4aGD1/pvq8vElPTzflrfUaOndq9uzZZv6Rlkn3Roc96vN88cUXzc9FA5iGKVcait966y0TdPT8NWvWuA3p0563Rx55xJzj6HnT73Xe11NPPSWBFKXVESRM6QQsLdOo9eq9/cMJCpsvfgYAgB3oBPAdO3ZIvXr1TK9DgdYJ0jLYnkPfHD1EcZVF+s7mM0M+6LAt/Rlob4b2ZOEcfY9qkNWetvzO0wrXf3e+ZAPmBPn9J8MvNQAAkAf9Y6gGnJz+aGqqxs3nj6b5pB98deiZ9hjp3CS40149XYw0EgKQPxGCAr34meOvO67jfh3n0RsEAIB96ecAb58FchpNghyNGTNGPvzwQzMsq2bN4BSTCGXDhg0LdhNCEnOC/E1/aXmO5929Ovu4X365AQAAFJrOm/nrr7/yVT4acCAEBXLxM0cQ0tr/bgGIv1IAAAAAwUIICvTiZ66KYPEzAABQtMK4xhRg239vhKCiXvwsSDX/AQCAf+kioer48eO8tEARcfx7c/z7C8vCCE8//bRZEMqVruKrNcMjavEz7QHSAORZLAEAAIQtXdizXLlykpSU5FybRtdjARCYHiANQPrvTf/d5bSwblhVh9NFmRYvXuzcjo4OepP8v/iZY46QY78JQvMpjgAAQJirVq2a+eoIQgACSwOQ499dYQQ9cWjo8ccTCRm6EKoubqZce3xcg5Ae1/MAAEBY056f6tWrS5UqVeT06dPBbg4Q0UqUKFHoHqCQCUHbtm2TGjVqmBVf27ZtK2PHjpXatWt7XQ1Yb66LY4UcFj8DAMB29IOZvz6cAQi8oBZGaNOmjSQmJsrChQtl0qRJsmPHDmnXrp0cO3Ysx/M1ICUkJDhvtWrVkpCkQcjbOkC6n0VSAQAAgKCJskKoruPRo0elTp06Mn78eBk0aFC+eoI0CKWkpEh8fHwRtxYAAABAqNBsoB0l+ckGQR8O5znRqXHjxvL777/neDwmJsbcAAAAACAi1glKS0uTP/74w0wwBAAAAICIC0EPP/ywLF++XHbu3Cnfffed9OjRw0wqvOOOO4LZLAAAAAARLKjD4fbu3WsCz6FDh6Ry5cpy1VVXyffff2++BwAAAICIC0EzZ84M5sMDAAAAsKGQmhMEAAAAAIFGCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4QgAAAAALZCCAIAAABgK4SgQDqZIpKyL+djul+PAwAAAChShKBA0YAzo6dIYjeRlL3ux3Rb9+txghAAAABQpAhBgZKRJpKeLHJkp0hi93NByASg7ln79bieBwAAAKDIEIICJeE8kf7zRMrXPReEdq8+F4B0vx7X8wAAAAAUGUJQICXUdA9C0zp7BKCaAX14AAAAANkRggJNg06PKe77dJsABAAAAAQFISjQdA7QnMHu+3Tbs1gCAAAAgCJBCAok1yIIOgRu4CL3OUIEIQAAAKDIEYICRdcB8iyCULtN9mIJ3tYRAgAAABAQhKBAiSkjElc5exEE12IJelzPAwAAAFBkoovuoWwmNkGk7+ysdYA8y2CbIDQ/KwDpeQAAAACKDCEokDTgeAs5rA8EAAAABAXD4QAAAADYCiEIAAAAgK0QggAAAADYSsiEoBdeeEGioqLkwQcfDHZTAAAAAESwkAhBa9eulcmTJ0uLFi2C3RQAAAAAES7oISgtLU369Okj77zzjpQvXz7YzQEAAAAQ4YIegoYNGybdu3eXTp065XluRkaGpKamut0AAAAAIGzWCZo5c6b88MMPZjhcfowdO1aeeeaZgLcLAAAAQOQKWk/Qnj175IEHHpAPPvhAYmNj83WfUaNGSUpKivOm1wAAAAAAX0RZlmVJEMydO1d69OghxYsXd+7LzMw0FeKKFStmhr65HsuJDodLSEgwgSg+Pr4IWg0AAAAgFPmSDYI2HK5jx46yefNmt30DBgyQCy64QB577LE8AxAAAAAAFETQQlDZsmWlWbNmbvvi4uKkYsWK2fYDAAAAQMRUhwMAAAAA21SH87Rs2bJgNwEAAABAhKMnCAAAAICtEIIAAAAA2AohCAAAAICtEIIAAAAA2AohCAAAAICtEIKC5WSKSMq+nI/pfj0OAAAAwO8IQcGgAWdGT5HEbiIpe92P6bbu1+MEIQAAAMDvCEHBkJEmkp4scmSnSGL3c0HIBKDuWfv1uJ4HAAAAwK8IQcGQcJ5I/3ki5eueC0K7V58LQLpfj+t5AAAAAPyKEBQsCTXdg9C0zh4BqGbQmgYAAABEMkJQMGnQ6THFfZ9uE4AAAACAgCEEBZPOAZoz2H2fbnsWSwAAAADgN4SgYHEtgqBD4AYucp8jRBACAAAAAoIQFAy6DpBnEYTabbIXS/C2jhAAAACAAiMEBUNMGZG4ytmLILgWS9Djeh4AAAAAv4r27+WQL7EJIn1nZ60D5FkG2wSh+VkBSM8DAAAA4FeEoGDRgOMt5LA+EAAAABAwDIcDAAAAYCuEIAAAAAC2QggCAAAAYCuEIAAAAAC2QggCAAAAYCuEIAAAAAC2QggCAAAAYCuEIAAAAAC24vNiqRkZGbJ69WrZtWuXHD9+XCpXriytWrWSevXqBaaFAAAAABCMELRy5Up57bXX5PPPP5fTp09LQkKClCpVSg4fPmyCUf369WXw4MEyZMgQKVu2rD/bCAAAAABFOxzuxhtvlF69ekndunVl0aJFcuzYMTl06JDs3bvX9AZt27ZNnnzySVmyZIk0btxYvvrqK/+1EAAAAACKuieoe/fuMnv2bClRokSOx7UXSG/9+vWTrVu3yv79+/3ZRgAAAADwmyjLsiwJU6mpqWZYXkpKisTHxwe7OQAAAADCIBv4XB1uz549Zhicw5o1a+TBBx+UKVOmFKy1AAAAAFCEfA5BvXv3lqVLl5rvDxw4INdee60JQk888YQ8++yzgWgjAAAAAAQvBG3ZskUuu+wy8/3HH38szZo1k++++04++OADSUxM9F/LAAAAACAUQpCWx46JiTHfL1682FSOUxdccAEFEQAAAABEXghq2rSpvP322/Ltt9+aUtjXXXed2f/nn39KxYoVA9FGAAAAAAheCHrxxRdl8uTJ0qFDB7njjjukZcuWZv9nn33mHCYHAAAAABFVIjszM9OUoCtfvrxz386dO6V06dJSpUoVKSqUyAYAAADgazbI12KpnooXL+4WgFTdunULcikAAAAAKFL5CkGtWrWSqKiofF3whx9+KGybAAAAACC4Iejmm292fn/y5El56623pEmTJtK2bVuz7/vvv5effvpJ7r333sC1FAAAAACKKgSNGTPG+f3dd98t999/vzz33HPZztmzZ48/2gQAAAAAoVMYQScbrVu3Tho1auS2f9u2bdK6dWszEamoUBgBAAAAgK/ZwOcS2aVKlZKVK1dm26/7YmNjfb0cAAAAABQpn6vDPfjggzJ06FBTAMGxLtDq1atl2rRp8tRTTwWijQAAAAAQvBD0+OOPS/369eW1116TGTNmmH0XXnihTJ8+XW677Tb/tQwAAAAAQmWx1FDBnCAAAAAARbJYqjp16pQkJSXJ2bNn3fbXrl27oJcEAAAAgIDzOQRpFbiBAwfKd99957ZfO5R0QdXMzEx/ti+ynUwRyUgTSTgv+7GUfSIxZURiE4LRMgAAACBi+RyC+vfvL9HR0fLFF19I9erVTfBBAQPQjJ4i6cki/eeJJNQ8dyxlr0hid5G4yiJ9ZxOEAAAAgGCGoI0bN8r69evlggsu8Gc77Ed7gDQAHdmZFXgcQcgRgHS/4zx6gwAAAAC/8XmdoCZNmsjBgwf91wK70iFwGnzK1z0XhHavPheAdL8JRjkMlQMAAABQdCHoxRdflEcffVSWLVsmhw4dMlUYXG/wgfb8uAahaZ09ApDLEDkAAAAAwSmRXaxYVm7ynAsUjMIIEVMiW3uANAA5DFwkUrtNMFsEAAAAhJWAlsheunRpYdoGTzoHaM5g9326TU8QAAAAEBA+h6D27dsHpiV25FoEQYfA9ZiSFYA8iyUAAAAA8JsCLZZ69OhRmTp1qvz8889mu2nTpmbtIO1+Qj7pOkDZiiD8b46QY78JQvMpjgAAAAAEszDCunXrpEGDBjJhwgQ5fPiwuY0fP97s++GHH/zZtsimC6HqOkCeRRBciyXocT0PAAAAQPAKI7Rr104aNmwo77zzjlk0VZ05c0buvvtu2b59u3zzzTdSVMK+MIIumKrrAOVUBlt7ijQAsUYQAAAA4Nds4HMIKlWqlGzYsCHbYqlbt26V1q1by/Hjx6WohH0IAgAAAFDk2cDn4XB6wd27d2fbv2fPHilbtqyvlwMAAACAIuVzCOrVq5cMGjRIPvroIxN89DZz5kwzHO6OO+4ITCsBAAAAIFjV4V5++WWzKOpdd91l5gKpEiVKyNChQ+WFF17wV7sAAAAAICB8nhPkoHN//vjjD/O9VoYrXbq0FDXmBAEAAADwNRv43BOkF83MzJQKFSpI8+bNnfu1VLZWi6NAAQAAAICImhN0++23mzlAnj7++GNzDAAAAAAiKgStXr1a/va3v2Xb36FDB3MMAAAAACIqBGVkZDgLIrg6ffq0nDhxwl/tAgAAAIDQCEGXXXaZTJkyJdv+t99+Wy655BJ/tQsAAAAAAsLnwgj//Oc/pVOnTrJp0ybp2LGj2bdkyRJZu3atLFq0KBBtBAAAAIDg9QRdeeWVsmrVKqlZs6YphvD5559Lw4YN5ccff5R27dr5dK1JkyZJixYtTEU5vbVt21YWLFjga5MAAAAAIPDrBPmDBqjixYtLo0aNRJvx7rvvyksvvSQbNmyQpk2b5nl/1gkCAAAA4Gs2KFAI0kVSp0+fLtu3b5dXX31VqlSpYnpwateuna/wkhtdf0iD0KBBg/I8lxAEAAAAwNds4PNwuOXLl5tFUrUc9uzZsyUtLc3s1zlCY8aMkYLSBVh1/aH09HQzLM5bZTp9cq43AAAAAPCFzyHo8ccfN8URvvrqKylZsqRz/zXXXCPff/+9r5eTzZs3S5kyZSQmJkaGDBkic+bMkSZNmuR47tixY026c9xq1arl8+MBAAAAsLdiBQktPXr0yLZfh8QdPHjQ5wacf/75snHjRtOzNHToUOnXr59s3bo1x3NHjRplurcctz179vj8eAAAAADszecS2eXKlZP9+/dLvXr13PZrMYPzzjvP5wZob5JWl1O6zpCW2n7ttddk8uTJ2c7V3iK9AQAAAECR9QTdfvvt8thjj8mBAwckKipKzp49KytXrpSHH35Y7rrrLiksvZ7O/QEAAACAkOgJev7552XYsGFmPo4WM9D5O/q1d+/e8uSTT/p0LR3e1rVrV1NV7tixY/Lhhx/KsmXL5Msvv/S1WQAAAAAQmBCkw9feeecdGT16tJkfpNXhWrVqZdb68VVSUpLpPdLhdVroQBdO1QB07bXX+nwtAAAAACiSxVK1F0jDUJ06daR8+fJSlFgnCAAAAEDA1wl68MEHZerUqc4A1L59e7n44ovN8DgdygYAAAAAocznEPTf//5XWrZsab7//PPPZfv27fLLL7/IiBEj5IknnghEGwEAAAAgeCFI1wKqVq2a+X7+/Ply2223SePGjWXgwIFmWBwAAAAARFQIqlq1qlnMVIfCLVy40FnE4Pjx41K8ePFAtBEAAAAAglcdbsCAAab3p3r16madoE6dOpn9q1evlgsuuMB/LQMAAACAUAhBTz/9tDRr1kz27Nkjt956q8TExJj92gv0+OOPB6KNAAAAABA6JbKDiRLZAAAAAAJSInvmzJmSX9pDtHLlynyfDwAAAABFKV8haNKkSXLhhRfKuHHj5Oeff852XNOWVorr3bu3WTPo0KFDgWgrAAAAABTNnKDly5fLZ599Jm+88YaMGjVK4uLiTJW42NhYOXLkiBw4cEAqVaok/fv3ly1btphjAAAAABARc4J0naAVK1bIrl275MSJEyb8tGrVytyKFfO54nahRPycoJMpIhlpIgnnZT+Wsk8kpoxIbEIwWgYAAACEFF+ygc/V4TT03HzzzYVpH/IbgGb0FElPFuk/TySh5rljKXtFEruLxFUW6TubIAQAAAD4oGi7bpB/2gOkAejIzqzAo8HHNQDpfj2u5wEAAADIN0JQqNIhcNoDVL7uuSC0e/W5AKT7TQ9RDkPlAAAAAHhFCAplOgTONQhN6+wRgFyGyAEAAADIF0JQqNOg02OK+z7dJgABAAAARRuCTp06Jb/++qucOXOmoJdAfugcoDmD3ffptmOOEAAAAIDAhqDjx4/LoEGDpHTp0tK0aVPZvXu32X/ffffJCy+84OvlkBvXIgg6BG7gIvc5QgQhAAAAIPAhSBdL3bRpkyxbtswslurQqVMn+eijj3xvAXKm6wB5FkGo3SZ7sQQ9DwAAAEC++bxO0Ny5c03YufzyyyUqKsq5X3uF/vjjD18vB290IVRdB0i5FkFwFEtwrBOk5wEAAAAIXAhKTk6WKlWqZNufnp7uFopQSLEJWQuh6jpAnmWwTRCanxWA9DwAAAAAgRsO17p1a5k3b55z2xF8/v3vf0vbtm19vRxyowHH2zpAup8ABAAAAAS+J+j555+Xrl27ytatW01luNdee818/91338ny5ct9bwEAAAAAhHJP0FVXXSUbN240Aah58+ayaNEiMzxu1apVcskllwSmlQAAAADgJ1GWZVkSplJTUyUhIUFSUlIkPj4+2M0BAAAAEAbZwOfhcA5JSUnmdvbsWbf9LVq0KOglAQAAACDgfA5B69evl379+snPP/8snp1IWiQhMzPTn+0DAAAAgOCGoIEDB0rjxo1l6tSpUrVqVcpiAwAAAIjsELR9+3aZPXu2NGzYMDAtAgAAAIBQqg7XsWNH2bRpU2BaAwAAAACh1hOki6LqnKAtW7ZIs2bNpESJEm7Hb7zxRn+2DwAAAACCG4J0PaCVK1fKggULsh2jMAIAAACAiBsOd99990nfvn1l//79pjy2643KcAAAAAAiLgQdOnRIRowYYSrDAQAAAEDEh6BbbrlFli5dGpjWAAAAAECozQnSNYJGjRolK1askObNm2crjHD//ff7s30AAAAA4FdRlmVZvtyhXr163i8WFWXWESoqqampkpCQICkpKRIfH19kjwsAAAAgtPiSDXzuCdqxY0dh2gYAAAAA4TUnCAAAAADCWb56gkaOHCnPPfecxMXFme9zM378eH+1Dbk5mSKSkSaScF72Yyn7RGLKiMQm8BoCAAAABQlBGzZskNOnTzu/RwgEoBk9RdKTRfrPE0moee5Yyl6RxO4icZVF+s4mCAEAAAAFCUGuJbEpjx0CtAdIA9CRnVmBxxGEHAFI9zvOozcIAAAAKNycoIEDB8qxY8ey7U9PTzfHUAR0CJwGn/J1zwWh3avPBSDdb4JRDkPlAAAAAJvzuUR28eLFZf/+/VKlShW3/QcPHpRq1arJmTNnpKjYvkS2Z8+PcgYglyFyAAAAQIRLDUSJbL2o5iW9aU9QbGys81hmZqbMnz8/WzBCgGnQ6TFFZFrnc/t0mwAEAAAAFD4ElStXziyGqrfGjRtnO677n3nmmfxeDv7qCZoz2H2fbtMTBAAAABQ+BGlBBO0Fuuaaa2T27NlSoUIF57GSJUtKnTp1pEaNGvm9HPw5FE6HwGkPkAYgz2IJAAAAAAo3J2jXrl1Sq1YtKVYs+Ous2nZOkK4DlNjNowiCR3U4s38+xREAAABgC6mBmBPkoD0+R48elTVr1khSUpKcPXvW7fhdd93le4vhG10IVdcBUq49PvpVtx3rBOl5AAAAAArXE/T5559Lnz59JC0tzSQsnQvkvFhUlBw+fFiKim17ghwLpuo6QDmVwdaeIg1ArBEEAAAAm0j1IRv4PKbtoYceMusBaQjSHqEjR444b0UZgGxPA463dYB0PwEIAAAA8E8I2rdvn9x///1SunRpX+8KAAAAAOEXgrp06SLr1q0LTGsAAAAAIMB8LozQvXt3eeSRR2Tr1q3SvHlzKVGihNvxG2+80Z/tAwAAAIDgFkbIrTS2FkbIzMyUomLrwgh5oXACAAAAbCQ1kIURtCS2t1tRBiDkEYBm9MxaS0jXDnJl1hLqlnVczwMAAABsJvgrnsL/tHR2enLWoqm6ZpAjCLkupqrH9TwAAADAZnyeE/Tss8/menz06NGFaQ/8QUtkOxZNdQShHlNE5gzO2i5f93+LrHopsQ0AAABEMJ/nBLVq1cpt+/Tp07Jjxw6Jjo6WBg0ayA8//CBFhTlBeXDt+XFwBqCaAf7pAAAAABKS2cDnnqANGzbk+ID9+/eXHj16+Ho5BJIGHe0Bmtb53D7dJgABAADAxvwyJ0iT1jPPPCNPPfWUPy4Hf/YE6RA4V7rtWSwBAAAAsBG/FUbQbie9IQSHwukQuIGLsr56FksAAAAAbMbn4XCvv/6627ZOKdq/f7+8//770rVrV3+2DQWVss89ADnmAHkWS+g/n+IIAAAAsB2fQ9CECROyLZ5auXJl6devn4waNcqfbUNBxZQRiauc9b1rEQTXIKTH9TwAAADAZnyuDpebEydOSKlSpaSoUB0uF7oQqq4DlFMZbO0p0gAUmxDAnw4AAAAgIZkN/DInKCMjQ8aPHy/16tXzx+XgDxpwvK0DpPsJQAAAALCpYr4EHR3u1rp1a7niiitk7ty5Zv+0adNM+NFhciNGjAhkWwEAAACg6OYEjR49WiZPniydOnWS7777Tm699VYZMGCAfP/996YXSLeLFy9e+BYBAAAAQCiEoFmzZsl7770nN954o2zZskVatGghZ86ckU2bNklUVFQg2wgAAAAART8cbu/evXLJJZeY75s1ayYxMTFm+FthAtDYsWPl0ksvlbJly0qVKlXk5ptvll9//bXA1wMAAAAAv4WgzMxMKVmypHM7OjpaypQpXInl5cuXy7Bhw8yQuq+++kpOnz4tnTt3lvT09EJdFwAAAAAKXSJb1wPSxVC1B0h9/vnncs0110hcXJzbeZ988okUVHJysukR0nB09dVX53k+JbIBAAAA+JoN8j0nSBdDddW3b1/xN22wqlChgtcKdXpzfaIAAAAAELTFUgvj7NmzpujC0aNHZcWKFTme8/TTT8szzzyTbX9+0h4AAACAyOVLT1DIhKChQ4fKggULTACqWbNmvnuCatWqRQgCAAAAbC41EMPhAmn48OHyxRdfyDfffOM1ACmdj+SYkwQAAAAABRHUEKSdUPfdd5/MmTNHli1bJvXq1QtmcwAAAADYQFBDkJbH/vDDD+XTTz81awUdOHDA7NdurFKlSgWzaQAAAAAiVFDnBHlbaHX69OnSv3//PO9PiWwAAAAAYTUnKERqMgAAAACwkWLBbgAAAAAAFCVCEAAAAABbIQQBAAAAsBVCkF2dTBFJ2ZfzMd2vxwEAAIAIRAiyIw04M3qKJHYTSdnrfky3db8eJwgBAAAgAhGC7CgjTSQ9WeTITpHE7ueCkAlA3bP263E9DwAAAIgwhCA7SjhPpP88kfJ1zwWh3avPBSDdr8f1PAAAACDCEILsKqGmexCa1tkjANUMdgsBAACAgCAE2ZkGnR5T3PfpNgEIAAAAEYwQZGc6B2jOYPd9uu1ZLAEAAACIIIQgu3ItgqBD4AYucp8jRBACAABAhCIE2ZGuA+RZBKF2m+zFErytIwQAAACEMUKQHcWUEYmrnL0IgmuxBD2u5wEAAAARJjrYDUAQxCaI9J2dtQ6QZxlsE4TmZwUgPQ8AAACIMIQgu9KA4y3ksD4QAAAAIhjD4QAAAADYCiEIAAAAgK0QgpCzkyneq8Ppfj0OAAAAhCFCELLTgDOjp0hit+zrBZn1hbplHScIAQAAIAwRgpCdVo1LT86+cKrrAqt6XM8DAAAAwgwhCDlXh/NcOHX36uwLrFJFDgAAAGGIEIScuS6cqsFnWmePAPS/BVYBAACAMEMIgncadHpMcd+n2wQgAAAAhDFCELzTOUBzBrvv0+2kn6kcBwAAgLBFCELOXIsg6BC4gYvODY2b3F5kWhcqxwEAACAsEYKQ8zpAnkUQarc5NxcoM0MkZY/ItOuoHAcAAICwQwhCdjFlROIqZy+CoF8Hfpn1tXhMVhCichwAAADCTJRlWZaEqdTUVElISJCUlBSJj48PdnMiiy6EqusA5VQGW3uKMlJF/nN7Vm+RA5XjAAAAEAbZgJ4g5Cw2wfs6QLq/yoVUjgMAAEBYIgTBv5XjdD8AAAAQwghB8G/lON1PEAIAAEAIIwTBf5XjHEFoeleRveu931/nGwEAAABBQgiC/yrH6Xa52iLHD4n8tz/rCAEAACAkEYLge8GEvrNF+s8/F4AcdPvviSKlK4oc3e0+NM51CF16clblOQAAACAICEHwb+W4mpeIDFjgPkdo9+rsQ+i83R8AAAAIMEIQ/M8xNM4RhKZ19ghAHj1IAAAAQBEiBCEwNOj0mOK+T7cJQAAAAAgyQhACg3WEAAAAEKIIQfA/1hECAABACCMEoejXETJV4/bxygMAACAoCEEo2nWEdL8e1/MAAACAIIgOxoPCBusI6TpAnmWwTRCanxWA9DwAAAAgCAhB8D8NON5CDusDAQAAIMgYDgcAAADAVghBAAAAAGyFEAQAAADAVghBKHonU7yXyNb9ehwAAAAIEEIQipYGnBk9RRK7ZS2qmm2R1W5ZxwlCAAAACBBCEIqWls5OT3ZZNHWvSwD63yKrelzPAwAAAAKAEISipSWyHYumOoLQ7tXnApBzkVWPNYYAAAAAPyEEoeiZRVNdgtC0zh4BqCY/FQAAAAQMIQjBoUGnxxT3fbpNAAIAAECAEYIQHDoHaM5g93267VksAQAAAPAzQhCKnmsRBB0CN3CR+xwhghAAAAACiBCEoqXrAHkWQajdJnuxBG/rCAEAAACFRAhC0YopIxJXOXsRBNdiCXpczwMAAAACIDoQFwW8ik0Q6Ts7ax0gzzLYJgjNzwpAeh4AAAAQAIQgFD0NON5CDusDAQAAIMAYDgcAAADAVghBAAAAAGyFEITwcjLFe+U43a/HAQAAgFwQghA+NODM6CmS2C37WkJm7aFuWccJQgAAAMgFIQjhQyvKpSdnX1TVdfFVPa7nAQAAAF4QghA+tHKc56Kqu1dnX3yVCnMAAADIBSEI4cV1UVUNPtM6ewSg/y2+CgAAAHhBCEL40aDTY4r7Pt0mAAEAACAfCEEIPzoHaM5g93267VksAQAAAMgBIQjhxbUIgg6BG7jIfY4QQQgAAAChHIK++eYbueGGG6RGjRoSFRUlc+fODWZzEOp0HSDPIgi122QvluBtHSEAAAAg2CEoPT1dWrZsKRMnTuSHgbzFlBGJq5y9CIJrsQQ9rucBAAAAXkRLEHXt2tXcgHyJTRDpOztrHSDPMtgmCM3PCkB6HgAAABCKIQjwmQYcbyGH9YEAAAAQaSEoIyPD3BxSU1OD2h4AAAAA4SesqsONHTtWEhISnLdatWoFu0kAAAAAwkxYhaBRo0ZJSkqK87Znz55gNwkAAABAmAmr4XAxMTHmBgTMyZScCy8oLb1N4QUAAICwF9QQlJaWJr///rtze8eOHbJx40apUKGC1K5dO5hNg10D0IyeIunJ7iW4lS7COr2rSGx5kf6fZy/OQEACAAAIG0EdDrdu3Tpp1aqVuamRI0ea70ePHh3MZsGutAdIA5Bz0dW97gHo6G6RpJ9EDm5zv58eT+yWFaA0SAEAACCkBTUEdejQQSzLynZLTEwMZrNgVzoEzrHoqiMI7V6d9VUDULFokbNnRGYPcg9IelzP1wClQQoAAAAhLawKIwABZxZddQlC0zpnfdXtgQtzDkiO42YIXQ5ziQAAABBSCEFATkGoxxT3fbpd81LvAclzDhEAAABCFiEI8KRD3OYMdt+n27rfW0AiAAEAAIQNQhDgynWOjxkCt8h9CNzetd4DEgAAAMICIQhwLXPtOcendhuPIXDXeQ9IBCEAAICwQAgCHHQh1LjK2ef46NeeU89VhytXO+eAZILQPl5PAACAEBfUxVKBkKILoPadnVXm2rPKW6VGIlWbipw4IjJggXtA0iCkAUgDlAYpAAAAhLQoSxfmCVOpqamSkJAgKSkpEh8fH+zmINLpQqg5BSSlPUAagDRIAQAAIKSzAT1BQH5pwPEWclgfCAAAIGwwJwgAAACArRCCgHAZiuet6ILu1+MAAADIF0IQEOo04MzoKZLYLXsZbrOuUbes4wQhAACAfCEEAaFOizGkJ2dfj8h1YVc9rucBAAAgT4QgINRp0QXP9Yh2r86+sCvFGQAAAPKFEASEA8d6RI4gNK2zRwD637pFAAAAyBMhCAgXGnR6THHfp9v5CUAUVgAAAHAiBAHhQucAzRnsvk+3PYsleKKwAgAAgBtCEBAOXIsg6BC4gYvc5wjlFoQorAAAAOCGEASEOl0HyLMIQu022YsleFtHiMIKAAAAbghBQKiLKSMSVzl7EQTXYgl6XM/zhsIKAAAATlGWZVkSplJTUyUhIUFSUlIkPj4+2M0BAkfn9eiwtpzKYGsPkAag2IS8r6OltbWynIMOq9NeJQAAgDDnSzagJwgIBxpwvK0DpPvzE4AKWlgBAAAgwhCCADsoTGEFAACACEMIAiJdYQsrAAAARBhCEBDp/FFYAQAAIIJEB7sBAAJM5wv1nZ1zYQUThObnv7BCqBZ8AAAA8AE9QYAd+KOwQiAC0IyeIondss9JMnOYumUd1/MAAAD8iBAEIDi0Byg9OXtxBtciDnpczwMAAPAjQhCA4NAeKM/iDLqOkWcRB289WAAAAAVECAIQPK7FGTT46EKubgHof0UcAAAA/IgQBCC4NOj0mOK+T7cJQAAAIEAIQQCCS+cAzRnsvk+3WcAVAAAECCEIQPC4FkHQIXADF3ks4OpRNQ4AAMAPCEEAgkPXAfIsglC7TfZiCXpeONLS3t7arvsp/Q0AQNAQggAEhy6EGlc5exEE12IJelzPCzesgQQAQEiLDnYDANiULtDad3bWOkCeZbBNEJqfFYCCsZCrv9dAcoQ81+F/jvPC8fkBABDm6AkCEDwaALytA6T7wzUgsAYSAAAhjRAEAIHAGkgAAIQsQhAABAprIAEAEJIIQQAQKHZcA4mqeACAMEAIAoBAsOMaSFTFAwCECUIQAPhbpK+BlN+qeI6g5xoI9bieBwBAEBGCAMDfInkNpNxQFQ8AECaiLMuyJEylpqZKQkKCpKSkSHx8fLCbAwDuQ8NyWgNJaQ9QuK6BlB+e6yEpz0AIAEAQswE9QQAQCJG6BlJ+UBUPABDiCEEAAP+yY1U8AEBYIQQBAPzHjlXxAABhhxAEAPAPu1bFAwCEHUIQAMA/7FoVDwAQdqKD3QAAQITQYg99Z+dcFc8EofmRXRUPABA26AkCAPiPnaviAWEu9eRp2Z9yIsdjul+PA5GCEAQAAGBzGnD6TVsjvSZ/L38edQ9Cuq379ThBCJGCEAQAAGBz6Rln5FDaKdl9+LjcPuVcENKvuq379bieB0QCQhAAAIDNVU8oJTMHXy61K5R2BqH1uw47A5Du1+N6HhAJCEEAAACQGuXcg1DPSavcApAeByJl/hghCAAAAIYGnQm9Wrq9GrpNAEKkzR8jBAEAAMD5IXbER5vcXg3d9vywC/tKj5D5Y4QgAAAAuH2I1SFws4e2dZsjRBBCJM0fi7Isy5IwlZqaKgkJCZKSkiLx8fHBbg4AAEBY0nkcOozJcw6QZzD66B+h/+EWReNPl/eGQ7Dnj/mSDegJAgAAsLm4mGipWKZktg+xrsUS9LieB0TC/DF6ggAAAGAmsus8jpx6erSnSANQfGwJXikY9AQBAAAg7GnA8TbUTfcTgBBJ88cYDgcAAAAgX7RX0LMIwiV1KmQrluBtHaFQQQgCAAAAYKv5Y8wJAgAAABD288d8qQ4X2hENAAAAQEiJjy3hNeSESwl1hsMBAAAAsBVCEAAAAABbIQQBAAAAsJWQCEETJ06UunXrSmxsrLRp00bWrFkT7CYBAAAAiFBBD0EfffSRjBw5UsaMGSM//PCDtGzZUrp06SJJSUnBbhoAAACACBT0EDR+/Hi55557ZMCAAdKkSRN5++23pXTp0jJt2rRgNw0AAABABApqCDp16pSsX79eOnXqdK5BxYqZ7VWrVmU7PyMjw9T/dr0BAAAAQNiEoIMHD0pmZqZUrVrVbb9uHzhwINv5Y8eONQsgOW61atUqwtYCAAAAiARBHw7ni1GjRpkVYB23PXv2BLtJAAAAAMJMdDAfvFKlSlK8eHH566+/3PbrdrVq1bKdHxMTY24AAAAAEJY9QSVLlpRLLrlElixZ4tx39uxZs922bdtgNg0AAABAhApqT5DS8tj9+vWT1q1by2WXXSavvvqqpKenm2pxAAAAABBxIahXr16SnJwso0ePNsUQLrroIlm4cGG2YgkAAAAA4A9RlmVZEqa0OEK5cuVMgYT4+PhgNwcAAABAkOjyOVo9+ujRo6aSdEj3BBXGsWPHzFdKZQMAAABwZIS8QlBY9wRpEYU///xTypYtK1FRUcFuDiLgLwf0KiLU8V5FuOC9inDBezVyaKzRAFSjRg0pVqxY5PYE6ZOrWbNmsJuBCKLDKhlaiXDAexXhgvcqwgXv1ciQVw9QWC6WCgAAAACFRQgCAAAAYCuEIEBEYmJiZMyYMeYrEMp4ryJc8F5FuOC9ak9hXRgBAAAAAHxFTxAAAAAAWyEEAQAAALAVQhAAAAAAWyEEAQAAALAVQhDCwjfffCM33HCDWQE4KipK5s6d63a8f//+Zr/r7brrrnM75/Dhw9KnTx+zGFq5cuVk0KBBkpaW5nbOjz/+KO3atZPY2FipVauWjBs3LltbZs2aJRdccIE5p3nz5jJ//ny341prZPTo0VK9enUpVaqUdOrUSbZt2+bX1wOha+zYsXLppZdK2bJlpUqVKnLzzTfLr7/+6nbOyZMnZdiwYVKxYkUpU6aM9OzZU/766y+3c3bv3i3du3eX0qVLm+s88sgjcubMGbdzli1bJhdffLGpbNSwYUNJTEzM1p6JEydK3bp1zfu1TZs2smbNGp/bAvu+Vzt06JDtd+uQIUPczuG9ikCbNGmStGjRwrmYadu2bWXBggXO4/xORYFodTgg1M2fP9964oknrE8++USrGVpz5sxxO96vXz/ruuuus/bv3++8HT582O0cPd6yZUvr+++/t7799lurYcOG1h133OE8npKSYlWtWtXq06ePtWXLFus///mPVapUKWvy5MnOc1auXGkVL17cGjdunLV161brySeftEqUKGFt3rzZec4LL7xgJSQkWHPnzrU2bdpk3XjjjVa9evWsEydOBPQ1Qmjo0qWLNX36dPMe2rhxo9WtWzerdu3aVlpamvOcIUOGWLVq1bKWLFlirVu3zrr88sutK664wnn8zJkzVrNmzaxOnTpZGzZsMO//SpUqWaNGjXKes337dqt06dLWyJEjzXvxjTfeMO/NhQsXOs+ZOXOmVbJkSWvatGnWTz/9ZN1zzz1WuXLlrL/++ivfbYG936vt27c37xvX3636u9KB9yqKwmeffWbNmzfP+u2336xff/3V+r//+z/z/1597yp+p6IgCEEIO95C0E033eT1PvohUe+3du1a574FCxZYUVFR1r59+8z2W2+9ZZUvX97KyMhwnvPYY49Z559/vnP7tttus7p37+527TZt2lj/+Mc/zPdnz561qlWrZr300kvO40ePHrViYmJMqIL9JCUlmffe8uXLne8H/Z/3rFmznOf8/PPP5pxVq1aZbQ09xYoVsw4cOOA8Z9KkSVZ8fLzz/fnoo49aTZs2dXusXr16mQ+2Dpdddpk1bNgw53ZmZqZVo0YNa+zYsfluC+z7XnWEoAceeMDrfXivIlj0/9f//ve/+Z2KAmM4HCKGDg3SIR3nn3++DB06VA4dOuQ8tmrVKjMErnXr1s59OkytWLFisnr1auc5V199tZQsWdJ5TpcuXczwkCNHjjjP0fu50nN0v9qxY4ccOHDA7ZyEhAQzDMlxDuwlJSXFfK1QoYL5un79ejl9+rTbe0SHV9auXdv5HtGvOtSyatWqbu+z1NRU+emnn/L1Xjx16pR5LNdz9P2u245z8tMW2Pe96vDBBx9IpUqVpFmzZjJq1Cg5fvy48xjvVRS1zMxMmTlzpqSnp5thcfxORUFFF/ieQAjR+T+33HKL1KtXT/744w/5v//7P+natav5H3Tx4sVNMNGA5Co6Otr8z16PKf2q93fl+BCqx8qXL2++un4wdZzjeg3X++V0Duzj7Nmz8uCDD8qVV15pPkAqfR9o0NZQntv7KKf3kONYbudoUDpx4oQJ7vphIadzfvnll3y3BfZ9r6revXtLnTp1zHxMnTP52GOPmT8MffLJJ+Y471UUlc2bN5vQo/N/dP7inDlzpEmTJrJx40Z+p6JACEGICLfffrvze/0Luk6gbNCggekd6tixY1DbBvvSggNbtmyRFStWBLspQIHeq4MHD3b73aoFX/R3qv6xSX/HAkVFR3lo4NEey//+97/Sr18/Wb58OT8AFBjD4RCR6tevb4Zv/P7772a7WrVqkpSU5HaOVtrSinF6zHGOZ1Usx3Ze57ged71fTufAHoYPHy5ffPGFLF26VGrWrOncr+8DHap29OjRXN9HBX0vauUkrUqo73/tBc3r/ZpXW2Df92pOdGivcv3dynsVRUF7rbUK5iWXXGIqG7Zs2VJee+01fqeiwAhBiEh79+41c4L0r5ZKu9D1g56OHXb4+uuvzRAQx//U9Rwtxa1zJBy++uor89cnHQrnOGfJkiVuj6Xn6H6lw+n0Q4HrOTo8SecdOc5BZNPaHfqhUodq6HvMc4il/g+8RIkSbu8RHV6kZYYd7xH9qkM/XIO7vs804Ojwj/y8F/UDgz6W6zn6ftdtxzn5aQvs+17Nif4lXrn+buW9imDQ32cZGRn8TkXBFbymAlB0jh07ZkoF603ftuPHjzff79q1yxx7+OGHTTWrHTt2WIsXL7Yuvvhiq1GjRtbJkyfdSmS3atXKWr16tbVixQpz3LVEtlbK0hLZd955pym7qeWFtQSxZ4ns6Oho6+WXXzZVtMaMGZNjiWwtQ/zpp59aP/74o6laR4ls+xg6dKgpkb5s2TK3ssLHjx93nqPlXLUU8ddff23KUrdt29bcPMsOd+7c2ZQu1rLXlStXzrFE9iOPPGLeixMnTsyxRLZWJkxMTDQVEgcPHmzem65V5/JqC+z7Xv3999+tZ5991rwv9Her/k6rX7++dfXVVzuvwXsVReHxxx83VQv1faj/X9Vtre66aNEic5zfqSgIQhDCwtKlS0348bxpaWz9H7Z+WNQPiRpI6tSpY9a1cP2gpw4dOmRCT5kyZUyp4QEDBpgA5UrX9bnqqqvMB8fzzjvPBBpPH3/8sdW4cWOz/oqWKNa1C1xpmeynnnrKBCq9TseOHc26BrCHnN6netP1WBx0zah7773XlHjVINOjRw/z4dPVzp07ra5du5q1qnSNoIceesg6ffp0tn8XF110kXkv6odT18dw0PWDNOToOVoyW9fJcpWftsCe79Xdu3ebwFOhQgXzu0zXVtPQ7bpOkOK9ikAbOHCg+X+7/h7T/9fr/1cdAUjxOxUFEaX/KURHEgAAAACEFeYEAQAAALAVQhAAAAAAWyEEAQAAALAVQhAAAAAAWyEEAQAAALAVQhAAAAAAWyEEAQAAALAVQhAAAAAAWyEEAQBCVlRUlMydO7dIHmvnzp3m8TZu3Oj1nGXLlplzjh49WiRtAgAEBiEIAJAn/eCf2+3pp58uVLgojD179sjAgQOlRo0aUrJkSalTp4488MADcujQIb8/1hVXXCH79++XhIQEs52YmCjlypXz++MAAAIrOsDXBwBEAP3g7/DRRx/J6NGj5ddff3XuK1OmTFDatX37dmnbtq00btxY/vOf/0i9evXkp59+kkceeUQWLFgg33//vVSoUMFvj6chq1q1an67HgAgOOgJAgDkST/4O27aC6I9O47tKlWqyPjx46VmzZoSExMjF110kSxcuNB5Xw0mqlWrVuZ+HTp0MNtr166Va6+9VipVqmSu2b59e/nhhx98+mkMGzbMBJNFixaZ+9euXVu6du0qixcvln379skTTzyR69A67cXR3hxXv/zyi+nxiY2NlWbNmsny5ctzHA6n3w8YMEBSUlKy9Yi99dZb0qhRI3ONqlWryt///nfeZQAQQghBAIBCee211+SVV16Rl19+WX788Ufp0qWL3HjjjbJt2zZzfM2aNearBhPtUfrkk0/M9rFjx6Rfv36yYsUK02OjoaFbt25mf34cPnxYvvzyS7n33nulVKlSbsc0nPXp08f0WlmW5dPz0V6khx56SDZs2GB6mW644YYch9ZpUHr11VclPj7ePC+9Pfzww7Ju3Tq5//775dlnnzW9ZRoIr776ap/aAAAILIbDAQAKRcPPY489JrfffrvZfvHFF2Xp0qUmIEycOFEqV65s9lesWNFtKNk111zjdp0pU6aYnhntebn++uvzfFwNWRpwLrzwwhyP6/4jR45IcnKy6a3Kr+HDh0vPnj3N95MmTTIhZurUqfLoo4+6nac9UK69Yg67d++WuLg48xzKli1r5ihpLxgAIHTQEwQAKLDU1FT5888/5corr3Tbr9s///xzrvf966+/5J577jE9QBomtEclLS3NhAhf5NXTo2HFF9r74xAdHS2tW7fO87m40iF+Gnzq168vd955p3zwwQdy/Phxn9oAAAgsQhAAICh0KJxWjNPhdN999535XnuLTp06la/7N2zY0PTCeAsoul97oRzV2/Rcz8B0+vRp8Tft/dG5TVqooXr16qaIRMuWLSmrDQAhhBAEACgw7b3R0tQrV65026/bTZo0ceuJyczMzHaOzp3ReUBNmzY1RRUOHjyY78fWwKS9LlqE4MSJE27HDhw4YHpg+vfv79yngci1yp0Op8uph0bnJzmcOXNG1q9f73XInT43z+fl6EHq1KmTjBs3zsyT0jLhX3/9db6fGwAgsJgTBAAoFC0kMGbMGGnQoIGpDDd9+nTTq6MhROl8HC1coHNrtIKcVkzT4W86DO799983w810WJ1ex7PAQV7efPNNU6BAizH885//dCuRrWWztRfGdQ6Snq/D3TS46DymEiVKZLumzmPStmnwmTBhgplXpOsQ5aRu3bpmCN+SJUtMb0/p0qVN2NHS3VoMoXz58jJ//nw5e/asnH/++T6/tgCAwKAnCABQKNqbM3LkSFNRrXnz5ibsfPbZZyZIOHpFXn/9dZk8ebLpNbrpppvMfi02oAHj4osvNnNn9Dq+FDBQ+hhaalvn39x2221mLo6WyNYApD1NrusXaQW7WrVqSbt27aR3796mkpuGFk8vvPCCuWmo0cp1+ly0jHdONIANGTJEevXqZXqatOdHh99pBTwNXRqk3n77bTM0Tnu7AAChIcrytXYoAAAhTHuldN2ir776Si6//PJgNwcAEIIIQQCAiKND8nQRU+1dKlaMQQ8AAHeEIAAAAAC2wp/HAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAANgKIQgAAACArRCCAAAAAIid/D9s9HHp4jGiIgAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "### Getting the target rQOPS\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
"\n",
- "While the resource estimator generates a runtime for the given hardware profile, we want to set a target runtime of 2 days i.e., 172800 seconds to obtain a practical quantum advantage. We collect the previous results to compute the corresponding target rQOPS as \n",
- "$$ \\text{Target rQOPS} = \\frac{\\text{Logical qubits}\\cdot\\text{Logical Depth}}{\\text{Target runtime}}$$"
+ "combined = pd.concat([results.as_frame(), new_results.as_frame()])\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "for name, group in combined.groupby(\"name\"):\n",
+ " plt.scatter(group[\"qubits\"], group[\"runtime\"], marker='x', label=name)\n",
+ "plt.xlabel(\"Total Qubits\")\n",
+ "plt.ylabel(\"Runtime (seconds)\")\n",
+ "plt.legend()\n",
+ "plt.show()"
]
},
{
@@ -425,50 +3830,7 @@
"execution_count": null,
"metadata": {},
"outputs": [],
- "source": [
- "def get_target_rqops(results, labels):\n",
- "\n",
- " target_runtime = 172800\n",
- " logical_qubits = []\n",
- " logical_depth = []\n",
- " target_rqops = []\n",
- " logical_error = []\n",
- "\n",
- " for i in range(3):\n",
- " logical_qubits.append(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'])\n",
- " logical_depth.append(results[i]['physicalCountsFormatted']['logicalDepth'])\n",
- " logical_error.append(results[i]['physicalCountsFormatted']['requiredLogicalQubitErrorRate'])\n",
- " target_rqops.append(round(results[i]['physicalCounts']['breakdown']['algorithmicLogicalQubits'] * results[i]['physicalCounts']['breakdown']['logicalDepth'] / target_runtime))\n",
- "\n",
- " data = pd.DataFrame()\n",
- " pd.options.display.float_format = '{:.2E}'.format\n",
- " data['Logical qubits'] = logical_qubits\n",
- " data['Logical depth'] = logical_depth\n",
- " data['Logical error'] = logical_error\n",
- " data['Target rQOPS'] = target_rqops\n",
- " data.index = labels\n",
- "\n",
- " return data\n",
- "\n",
- "rQOPS_table = get_target_rqops(results, labels)\n",
- "rQOPS_table\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Next steps\n",
- "\n",
- "Feel free to use this notebook as a starting point for your own experiments. For\n",
- "example, you can\n",
- "\n",
- "* explore how the results change considering other problem instances of the Heisenberg model\n",
- "* explore space- and time-trade-offs by changing the value for\n",
- " `logical_depth_factor` or `max_t_factories`\n",
- "* visualize these trade-offs with the space and time diagrams\n",
- "* use other or customized qubit parameters"
- ]
+ "source": []
}
],
"metadata": {
@@ -476,7 +3838,7 @@
"name": "python3"
},
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "qre3",
"language": "python",
"name": "python3"
},
@@ -490,7 +3852,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.7"
+ "version": "3.13.3"
},
"nteract": {
"version": "nteract-front-end@1.0.0"
diff --git a/source/pip/qsharp/qre/application/magnets/__init__.py b/source/pip/qsharp/qre/application/magnets/__init__.py
new file mode 100644
index 0000000000..56c536659e
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/__init__.py
@@ -0,0 +1,14 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""Magnets application module.
+
+Re-exports from the submodules."""
+
+from .geometry import *
+from .models import *
+from .trotter import *
+from .utilities import *
diff --git a/source/pip/qsharp/qre/application/magnets/geometry/__init__.py b/source/pip/qsharp/qre/application/magnets/geometry/__init__.py
new file mode 100644
index 0000000000..4a7a380f86
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/geometry/__init__.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Geometry module for representing quantum system topologies.
+
+This module provides hypergraph data structures for representing the
+geometric structure of quantum systems, including lattice topologies
+and interaction graphs.
+"""
+
+from .complete import CompleteBipartiteGraph, CompleteGraph
+from .lattice1d import Chain1D, Ring1D
+from .lattice2d import Patch2D, Torus2D
+
+__all__ = [
+ "CompleteBipartiteGraph",
+ "CompleteGraph",
+ "Chain1D",
+ "Ring1D",
+ "Patch2D",
+ "Torus2D",
+]
diff --git a/source/pip/qsharp/qre/application/magnets/geometry/complete.py b/source/pip/qsharp/qre/application/magnets/geometry/complete.py
new file mode 100644
index 0000000000..6c1ce66176
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/geometry/complete.py
@@ -0,0 +1,150 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Complete graph geometries for quantum simulations.
+
+This module provides classes for representing complete graphs and complete
+bipartite graphs as hypergraphs. These structures are useful for quantum
+systems with all-to-all or bipartite all-to-all interactions.
+"""
+
+from ..utilities import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+
+
+class CompleteGraph(Hypergraph):
+ """A complete graph where every vertex is connected to every other vertex.
+
+ In a complete graph K_n, there are n vertices and n(n-1)/2 edges,
+ with each pair of distinct vertices connected by exactly one edge.
+
+ Attributes:
+ n: Number of vertices in the graph.
+
+ Example:
+
+ .. code-block:: python
+ >>> graph = CompleteGraph(4)
+ >>> graph.nvertices
+ 4
+ >>> graph.nedges
+ 6
+ """
+
+ def __init__(self, n: int, self_loops: bool = False) -> None:
+ """Initialize a complete graph.
+
+ Args:
+ n: Number of vertices in the graph.
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(n)]
+ else:
+ _edges = []
+
+ # Add all pairs of vertices
+ for i in range(n):
+ for j in range(i + 1, n):
+ _edges.append(Hyperedge([i, j]))
+ super().__init__(_edges)
+
+ self.n = n
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute edge coloring for this complete graph."""
+ coloring = HypergraphEdgeColoring(self)
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ else:
+ if self.n % 2 == 0:
+ i, j = edge.vertices
+ m = self.n - 1
+ if j == m:
+ coloring.add_edge(edge, i)
+ elif (j - i) % 2 == 0:
+ coloring.add_edge(edge, (j - i) // 2)
+ else:
+ coloring.add_edge(edge, (j - i + m) // 2)
+ else:
+ m = self.n
+ i, j = edge.vertices
+ if (j - i) % 2 == 0:
+ coloring.add_edge(edge, (j - i) // 2)
+ else:
+ coloring.add_edge(edge, (j - i + m) // 2)
+ return coloring
+
+
+class CompleteBipartiteGraph(Hypergraph):
+ """A complete bipartite graph with two vertex sets.
+
+ In a complete bipartite graph K_{m,n} (m <= n), there are m + n
+ vertices partitioned into two sets of sizes m and n. Every vertex
+ in the first set is connected to every vertex in the second set,
+ giving m * n edges total.
+
+ Vertices 0 to m-1 form the first set, and vertices m to m+n-1
+ form the second set.
+
+ Attributes:
+ m: Number of vertices in the first set.
+ n: Number of vertices in the second set.
+
+ Requires:
+ m <= n
+
+ Example:
+
+ .. code-block:: python
+ >>> graph = CompleteBipartiteGraph(2, 3)
+ >>> graph.nvertices
+ 5
+ >>> graph.nedges
+ 6
+ """
+
+ def __init__(self, m: int, n: int, self_loops: bool = False) -> None:
+ """Initialize a complete bipartite graph.
+
+ Args:
+ m: Number of vertices in the first set (vertices 0 to m-1).
+ n: Number of vertices in the second set (vertices m to m+n-1).
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ assert m <= n, "Require m <= n for CompleteBipartiteGraph."
+ total_vertices = m + n
+
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(total_vertices)]
+
+ else:
+ _edges = []
+
+ # Connect every vertex in first set to every vertex in second set
+ for i in range(m):
+ for j in range(m, m + n):
+ _edges.append(Hyperedge([i, j]))
+ super().__init__(_edges)
+
+ self.m = m
+ self.n = n
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute edge coloring for this complete bipartite graph."""
+ coloring = HypergraphEdgeColoring(self)
+ m = self.m
+ n = self.n
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ else:
+ i, j = edge.vertices
+ coloring.add_edge(edge, (i + j - m) % n)
+ return coloring
diff --git a/source/pip/qsharp/qre/application/magnets/geometry/lattice1d.py b/source/pip/qsharp/qre/application/magnets/geometry/lattice1d.py
new file mode 100644
index 0000000000..c7ea60fb60
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/geometry/lattice1d.py
@@ -0,0 +1,123 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""One-dimensional lattice geometries for quantum simulations.
+
+This module provides classes for representing 1D lattice structures as
+hypergraphs. These lattices are commonly used in quantum spin chain
+simulations and other one-dimensional quantum systems.
+"""
+
+from ..utilities import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+
+
+class Chain1D(Hypergraph):
+ """A one-dimensional open chain lattice.
+
+ Represents a linear chain of vertices with nearest-neighbor edges.
+ The chain has open boundary conditions, meaning the first and last
+ vertices are not connected.
+
+ Attributes:
+ length: Number of vertices in the chain.
+
+ Example:
+
+ .. code-block:: python
+ >>> chain = Chain1D(4)
+ >>> chain.nvertices
+ 4
+ >>> chain.nedges
+ 3
+ """
+
+ def __init__(self, length: int, self_loops: bool = False) -> None:
+ """Initialize a 1D chain lattice.
+
+ Args:
+ length: Number of vertices in the chain.
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(length)]
+
+ else:
+ _edges = []
+
+ for i in range(length - 1):
+ _edges.append(Hyperedge([i, i + 1]))
+
+ super().__init__(_edges)
+ self.length = length
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute a valid edge coloring for this chain."""
+ coloring = HypergraphEdgeColoring(self)
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ else:
+ i, j = edge.vertices
+ color = min(i, j) % 2
+ coloring.add_edge(edge, color)
+ return coloring
+
+
+class Ring1D(Hypergraph):
+ """A one-dimensional ring (periodic chain) lattice.
+
+ Represents a circular chain of vertices with nearest-neighbor edges.
+ The ring has periodic boundary conditions, meaning the first and last
+ vertices are connected.
+
+ Attributes:
+ length: Number of vertices in the ring.
+
+ Example:
+
+ .. code-block:: python
+ >>> ring = Ring1D(4)
+ >>> ring.nvertices
+ 4
+ >>> ring.nedges
+ 4
+ """
+
+ def __init__(self, length: int, self_loops: bool = False) -> None:
+ """Initialize a 1D ring lattice.
+
+ Args:
+ length: Number of vertices in the ring.
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(length)]
+ else:
+ _edges = []
+
+ for i in range(length):
+ _edges.append(Hyperedge([i, (i + 1) % length]))
+ super().__init__(_edges)
+
+ self.length = length
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute a valid edge coloring for this ring."""
+ coloring = HypergraphEdgeColoring(self)
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ else:
+ i, j = edge.vertices
+ if {i, j} == {0, self.length - 1}:
+ color = (self.length % 2) + 1
+ else:
+ color = min(i, j) % 2
+ coloring.add_edge(edge, color)
+ return coloring
diff --git a/source/pip/qsharp/qre/application/magnets/geometry/lattice2d.py b/source/pip/qsharp/qre/application/magnets/geometry/lattice2d.py
new file mode 100644
index 0000000000..6c75d12c66
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/geometry/lattice2d.py
@@ -0,0 +1,187 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Two-dimensional lattice geometries for quantum simulations.
+
+This module provides classes for representing 2D lattice structures as
+hypergraphs. These lattices are commonly used in quantum spin system
+simulations and other two-dimensional quantum systems.
+"""
+
+from ..utilities import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+
+
+class Patch2D(Hypergraph):
+ """A two-dimensional open rectangular lattice.
+
+ Represents a rectangular grid of vertices with nearest-neighbor edges.
+ The patch has open boundary conditions, meaning edges do not wrap around.
+
+ Vertices are indexed in row-major order: vertex (x, y) has index y * width + x.
+
+ Attributes:
+ width: Number of vertices in the horizontal direction.
+ height: Number of vertices in the vertical direction.
+
+ Example:
+
+ .. code-block:: python
+ >>> patch = Patch2D(3, 2)
+ >>> str(patch)
+ '3x2 lattice patch with 6 vertices and 7 edges'
+ """
+
+ def __init__(self, width: int, height: int, self_loops: bool = False) -> None:
+ """Initialize a 2D patch lattice.
+
+ Args:
+ width: Number of vertices in the horizontal direction.
+ height: Number of vertices in the vertical direction.
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ self.width = width
+ self.height = height
+
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(width * height)]
+ else:
+ _edges = []
+
+ # Horizontal edges (connecting (x, y) to (x+1, y))
+ for y in range(height):
+ for x in range(width - 1):
+ _edges.append(Hyperedge([self._index(x, y), self._index(x + 1, y)]))
+
+ # Vertical edges (connecting (x, y) to (x, y+1))
+ for y in range(height - 1):
+ for x in range(width):
+ _edges.append(Hyperedge([self._index(x, y), self._index(x, y + 1)]))
+ super().__init__(_edges)
+
+ def _index(self, x: int, y: int) -> int:
+ """Convert (x, y) coordinates to vertex index."""
+ return y * self.width + x
+
+ def __str__(self) -> str:
+ """Return the summary string ``"{width}x{height} lattice patch with {nvertices} vertices and {nedges} edges"``."""
+ return f"{self.width}x{self.height} lattice patch with {self.nvertices} vertices and {self.nedges} edges"
+
+ def __repr__(self) -> str:
+ """Return a string representation of the Patch2D geometry."""
+ return f"Patch2D(width={self.width}, height={self.height})"
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute edge coloring for this 2D patch."""
+ coloring = HypergraphEdgeColoring(self)
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ continue
+
+ u, v = edge.vertices
+ x_u, y_u = u % self.width, u // self.width
+ x_v, y_v = v % self.width, v // self.width
+
+ if y_u == y_v:
+ color = 0 if min(x_u, x_v) % 2 == 0 else 1
+ else:
+ color = 2 if min(y_u, y_v) % 2 == 0 else 3
+ coloring.add_edge(edge, color)
+ return coloring
+
+
+class Torus2D(Hypergraph):
+ """A two-dimensional toroidal (periodic) lattice.
+
+ Represents a rectangular grid of vertices with nearest-neighbor edges
+ and periodic boundary conditions in both directions. The topology is
+ that of a torus.
+
+ Vertices are indexed in row-major order: vertex (x, y) has index y * width + x.
+
+ Attributes:
+ width: Number of vertices in the horizontal direction.
+ height: Number of vertices in the vertical direction.
+
+ Example:
+
+ .. code-block:: python
+ >>> torus = Torus2D(3, 2)
+ >>> str(torus)
+ '3x2 lattice torus with 6 vertices and 12 edges'
+ """
+
+ def __init__(self, width: int, height: int, self_loops: bool = False) -> None:
+ """Initialize a 2D torus lattice.
+
+ Args:
+ width: Number of vertices in the horizontal direction.
+ height: Number of vertices in the vertical direction.
+ self_loops: If True, include self-loop edges on each vertex
+ for single-site terms.
+ """
+ self.width = width
+ self.height = height
+
+ if self_loops:
+ _edges = [Hyperedge([i]) for i in range(width * height)]
+ else:
+ _edges = []
+
+ # Horizontal edges (connecting (x, y) to ((x+1) % width, y))
+ for y in range(height):
+ for x in range(width):
+ _edges.append(
+ Hyperedge([self._index(x, y), self._index((x + 1) % width, y)])
+ )
+
+ # Vertical edges (connecting (x, y) to (x, (y+1) % height))
+ for y in range(height):
+ for x in range(width):
+ _edges.append(
+ Hyperedge([self._index(x, y), self._index(x, (y + 1) % height)])
+ )
+
+ super().__init__(_edges)
+
+ def _index(self, x: int, y: int) -> int:
+ """Convert (x, y) coordinates to vertex index."""
+ return y * self.width + x
+
+ def __str__(self) -> str:
+ """Return the summary string ``"{width}x{height} lattice torus with {nvertices} vertices and {nedges} edges"``."""
+ return f"{self.width}x{self.height} lattice torus with {self.nvertices} vertices and {self.nedges} edges"
+
+ def __repr__(self) -> str:
+ """Return a string representation of the Torus2D geometry."""
+ return f"Torus2D(width={self.width}, height={self.height})"
+
+ def edge_coloring(self) -> HypergraphEdgeColoring:
+ """Compute edge coloring for this 2D torus."""
+ coloring = HypergraphEdgeColoring(self)
+ for edge in self.edges():
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ continue
+
+ u, v = edge.vertices
+ x_u, y_u = u % self.width, u // self.width
+ x_v, y_v = v % self.width, v // self.width
+
+ if y_u == y_v:
+ if {x_u, x_v} == {0, self.width - 1}:
+ color = 1 if self.width % 2 == 0 else 4
+ else:
+ color = 0 if min(x_u, x_v) % 2 == 0 else 1
+ else:
+ if {y_u, y_v} == {0, self.height - 1}:
+ color = 3 if self.height % 2 == 0 else 5
+ else:
+ color = 2 if min(y_u, y_v) % 2 == 0 else 3
+ coloring.add_edge(edge, color)
+ return coloring
diff --git a/source/pip/qsharp/qre/application/magnets/models/__init__.py b/source/pip/qsharp/qre/application/magnets/models/__init__.py
new file mode 100644
index 0000000000..67c7f569ef
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/models/__init__.py
@@ -0,0 +1,12 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Models module for quantum spin models.
+
+This module provides classes for representing quantum spin models
+as Hamiltonians built from Pauli operators.
+"""
+
+from .model import IsingModel, Model, HeisenbergModel
+
+__all__ = ["Model", "IsingModel", "HeisenbergModel"]
diff --git a/source/pip/qsharp/qre/application/magnets/models/model.py b/source/pip/qsharp/qre/application/magnets/models/model.py
new file mode 100755
index 0000000000..d8c20a5d47
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/models/model.py
@@ -0,0 +1,229 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# pyright: reportPrivateImportUsage=false
+
+from collections.abc import Sequence
+from typing import Optional
+
+from ..utilities import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+ PauliString,
+)
+
+"""Base Model class for quantum spin models.
+
+This module provides the base class for representing quantum spin models
+as Hamiltonians. The Model class integrates with hypergraph geometries
+to define interaction topologies and stores coefficients for each edge.
+"""
+
+
+class Model:
+ """Base class for quantum spin models.
+
+ This class represents a quantum spin Hamiltonian defined on a hypergraph
+ geometry. The Hamiltonian is characterized by:
+
+ - Ops: A list of PauliStrings (one entry per interaction term)
+ - Terms: Groupings of operator indices for Trotterization or parallel execution
+
+ The model is built on a hypergraph geometry that defines which qubits
+ interact with each other.
+
+ Attributes:
+ geometry: The Hypergraph defining the interaction topology.
+
+ Example:
+
+ .. code-block:: python
+ >>> from qsharp.magnets.geometry import Chain1D
+ >>> geometry = Chain1D(4)
+ >>> model = Model(geometry)
+ >>> model.set_coefficient((0, 1), 1.5)
+ >>> model.set_pauli_string((0, 1), PauliString.from_qubits((0, 1), "ZZ"))
+ >>> model.get_coefficient((0, 1))
+ 1.5
+ """
+
+ def __init__(self, geometry: Hypergraph):
+ """Initialize the Model.
+
+ Creates a quantum spin model on the given geometry.
+
+ The model stores operators lazily in ``_ops`` as interaction operators
+ are defined. Noncommuting collections of operators are collected in
+ ``_terms`` that stores the indices of its interaction operators. This
+ list of arrays seperate terms into parallizable groups by color. It is
+ initialized as one empty term group.
+
+ Args:
+ geometry: Hypergraph defining the interaction topology. The number
+ of vertices determines the number of qubits in the model.
+ """
+ self.geometry: Hypergraph = geometry
+ self._qubits: set[int] = set()
+ self._ops: list[PauliString] = []
+ for edge in geometry.edges():
+ self._qubits.update(edge.vertices)
+ self._terms: dict[int, dict[int, list[int]]] = {}
+
+ def add_interaction(
+ self,
+ edge: Hyperedge,
+ pauli_string: Sequence[int | str] | str,
+ coefficient: complex = 1.0,
+ term: Optional[int] = None,
+ color: int = 0,
+ ) -> None:
+ """Add an interaction term to the model.
+
+ Args:
+ edge: The Hyperedge representing the qubits involved in the interaction.
+ pauli_string: The PauliString operator for this interaction.
+ coefficient: The complex coefficient multiplying this term (default 1.0).
+ """
+ if edge not in self.geometry.edges():
+ raise ValueError("Edge is not part of the model geometry.")
+ s = PauliString.from_qubits(edge.vertices, pauli_string, coefficient)
+ self._ops.append(s)
+ if term is not None:
+ if term not in self._terms:
+ self._terms[term] = {}
+ if color not in self._terms[term]:
+ self._terms[term][color] = []
+ self._terms[term][color].append(len(self._ops) - 1)
+
+ @property
+ def nqubits(self) -> int:
+ """Return the number of qubits in the model."""
+ return len(self._qubits)
+
+ @property
+ def nterms(self) -> int:
+ """Return the number of term groups in the model."""
+ return len(self._terms)
+
+ @property
+ def terms(self) -> list[int]:
+ """Get the list of term indices in the model."""
+ return list(self._terms.keys())
+
+ def ncolors(self, term: int) -> int:
+ """Return the number of colors in a given term."""
+ if term not in self._terms:
+ raise ValueError(f"Term {term} does not exist in the model.")
+ return len(self._terms[term])
+
+ def colors(self, term: int) -> list[int]:
+ """Return the list of colors in a given term."""
+ if term not in self._terms:
+ raise ValueError(f"Term {term} does not exist in the model.")
+ return list(self._terms[term].keys())
+
+ def nops(self, term: int, color: int) -> int:
+ """Return the number of operators in a given term and color."""
+ if term not in self._terms:
+ raise ValueError(f"Term {term} does not exist in the model.")
+ if color not in self._terms[term]:
+ raise ValueError(f"Color {color} does not exist in term {term}.")
+ return len(self._terms[term][color])
+
+ def ops(self, term: int, color: int) -> list[PauliString]:
+ """Return the list of operators in a given term and color."""
+ if term not in self._terms:
+ raise ValueError(f"Term {term} does not exist in the model.")
+ if color not in self._terms[term]:
+ raise ValueError(f"Color {color} does not exist in term {term}.")
+ return [self._ops[i] for i in self._terms[term][color]]
+
+ def __str__(self) -> str:
+ """String representation of the model."""
+ return "Generic model with {} terms on {} qubits.".format(
+ len(self._terms), len(self._qubits)
+ )
+
+ def __repr__(self) -> str:
+ """String representation of the model."""
+ return self.__str__()
+
+
+class IsingModel(Model):
+ """Translation-invariant Ising model on a hypergraph geometry.
+
+ The Hamiltonian is:
+ H = -J * Σ_{} Z_i Z_j - h * Σ_i X_i
+
+ - Single-vertex edges define X-field terms with coefficient ``-h``.
+ - Two-vertex edges define ZZ-coupling terms with coefficient ``-J``.
+ - Terms are grouped into two groups: ``0`` for field terms and ``1`` for coupling terms.
+ """
+
+ def __init__(self, geometry: Hypergraph, h: float, J: float):
+ super().__init__(geometry)
+ self.h = h
+ self.J = J
+ self._terms = {0: {}, 1: {}}
+
+ coloring: HypergraphEdgeColoring = geometry.edge_coloring()
+ for edge in geometry.edges():
+ vertices = edge.vertices
+ if len(vertices) == 1:
+ self.add_interaction(edge, "X", -h, term=0, color=0)
+ elif len(vertices) == 2:
+ color = coloring.color(edge.vertices)
+ if color is None:
+ raise ValueError("Geometry edge coloring failed to assign a color.")
+ self.add_interaction(edge, "ZZ", -J, term=1, color=color)
+
+ def __str__(self) -> str:
+ return (
+ f"Ising model with {self.nterms} terms on {self.nqubits} qubits "
+ f"(h={self.h}, J={self.J})."
+ )
+
+ def __repr__(self) -> str:
+ return (
+ f"IsingModel(nqubits={self.nqubits}, nterms={self.nterms}, "
+ f"h={self.h}, J={self.J})"
+ )
+
+
+class HeisenbergModel(Model):
+ """Translation-invariant Heisenberg model on a hypergraph geometry.
+
+ The Hamiltonian is:
+ H = -J * Σ_{} (X_i X_j + Y_i Y_j + Z_i Z_j)
+
+ - Two-vertex edges define XX, YY, and ZZ coupling terms with coefficient ``-J``.
+ - Terms are grouped into three parts: ``0`` for XX, ``1`` for YY, and ``2`` for ZZ.
+ """
+
+ def __init__(self, geometry: Hypergraph, J: float):
+ super().__init__(geometry)
+ self.J = J
+ self.coloring: HypergraphEdgeColoring = geometry.edge_coloring()
+ self._terms = {0: {}, 1: {}, 2: {}}
+ for edge in geometry.edges():
+ vertices = edge.vertices
+ if len(vertices) == 2:
+ color = self.coloring.color(edge.vertices)
+ if color is None:
+ raise ValueError("Geometry edge coloring failed to assign a color.")
+ self.add_interaction(edge, "XX", -J, term=0, color=color)
+ self.add_interaction(edge, "YY", -J, term=1, color=color)
+ self.add_interaction(edge, "ZZ", -J, term=2, color=color)
+
+ def __str__(self) -> str:
+ return (
+ f"Heisenberg model with {self.nterms} terms on {self.nqubits} qubits "
+ f"(J={self.J})."
+ )
+
+ def __repr__(self) -> str:
+ return (
+ f"HeisenbergModel(nqubits={self.nqubits}, nterms={self.nterms}, "
+ f"J={self.J})"
+ )
diff --git a/source/pip/qsharp/qre/application/magnets/trotter/__init__.py b/source/pip/qsharp/qre/application/magnets/trotter/__init__.py
new file mode 100644
index 0000000000..d4beaa68c5
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/trotter/__init__.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Trotter-Suzuki methods for time evolution."""
+
+from .trotter import (
+ TrotterStep,
+ TrotterExpansion,
+ strang_splitting,
+ suzuki_recursion,
+ yoshida_recursion,
+ fourth_order_trotter_suzuki,
+)
+
+__all__ = [
+ "TrotterStep",
+ "TrotterExpansion",
+ "strang_splitting",
+ "suzuki_recursion",
+ "yoshida_recursion",
+ "fourth_order_trotter_suzuki",
+]
diff --git a/source/pip/qsharp/qre/application/magnets/trotter/trotter.py b/source/pip/qsharp/qre/application/magnets/trotter/trotter.py
new file mode 100644
index 0000000000..d61b415c22
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/trotter/trotter.py
@@ -0,0 +1,373 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Trotter schedule utilities for magnet models.
+
+This module provides:
+
+- ``TrotterStep``: a schedule of ``(time, term_index)`` entries,
+- recursion helpers (Suzuki and Yoshida) that raise the order by 2,
+- factory helpers such as Strang splitting, and
+- ``TrotterExpansion`` to apply a step repeatedly to a concrete model.
+"""
+
+from collections.abc import Callable
+from typing import Iterator, Optional
+from ..models import Model
+from ..utilities import PauliString
+
+import math
+
+try:
+ import cirq
+except Exception as ex:
+ raise ImportError(
+ "qsharp.magnets.models requires the cirq extras. Install with 'pip install \"qsharp[cirq]\"'."
+ ) from ex
+
+
+class TrotterStep:
+ """Schedule of Hamiltonian-term applications for one Trotter step.
+
+ A ``TrotterStep`` stores an ordered list of ``(time, term_index)`` tuples.
+ Each tuple indicates that term group ``term_index`` should be applied for
+ evolution time ``time``.
+
+ The constructor builds a first-order step over the provided term indices:
+
+ .. math::
+
+ e^{-i H t} \\approx \\prod_k e^{-i H_k t}, \\quad H = \\sum_k H_k.
+
+ where each supplied term index appears once with duration ``time_step``.
+ """
+
+ def __init__(self, terms: list[int] = [], time_step: float = 0.0):
+ """Initialize a Trotter step from explicit term indices.
+
+ Args:
+ terms: Ordered term indices to include in this step.
+ time_step: Duration associated with each listed term.
+
+ Notes:
+ If ``terms`` is empty, the step is initialized as order 0.
+ Otherwise, it is initialized as order 1.
+ """
+ self._nterms = len(terms)
+ self._time_step = time_step
+ self._order = 1 if self._nterms > 0 else 0
+ self._repr_string: Optional[str] = None
+ self.terms: list[tuple[float, int]] = [(time_step, j) for j in terms]
+
+ @property
+ def order(self) -> int:
+ """Get the order of the Trotter decomposition."""
+ return self._order
+
+ @property
+ def nterms(self) -> int:
+ """Get the number of term entries used to build this schedule."""
+ return self._nterms
+
+ @property
+ def time_step(self) -> float:
+ """Get the base time step metadata stored on this step."""
+ return self._time_step
+
+ def reduce(self) -> None:
+ """
+ Reduce the Trotter step in place by combining consecutive terms that are the same.
+
+ This can be useful for optimizing the Trotter sequence by merging adjacent
+ applications of the same term into a single application with a longer time step.
+
+ Example:
+ >>> trotter = TrotterStep()
+ >>> trotter.terms = [(0.5, 0), (0.5, 0), (0.5, 1)]
+ >>> trotter.reduce()
+ >>> list(trotter.step())
+ [(1.0, 0), (0.5, 1)]
+ """
+ if len(self.terms) > 1:
+ reduced_terms: list[tuple[float, int]] = []
+ current_time, current_term = self.terms[0]
+
+ for time, term in self.terms[1:]:
+ if term == current_term:
+ current_time += time
+ else:
+ reduced_terms.append((current_time, current_term))
+ current_time, current_term = time, term
+
+ reduced_terms.append((current_time, current_term))
+ self.terms = reduced_terms
+
+ def step(self) -> Iterator[tuple[float, int]]:
+ """Iterate over ``(time, term_index)`` entries for this step."""
+ return iter(self.terms)
+
+ def cirq(self, model: Model) -> cirq.Circuit:
+ """Build a Cirq circuit for one application of this Trotter step.
+
+ Args:
+ model: Model that maps each term index to grouped Pauli operators.
+
+ Returns:
+ A ``cirq.Circuit`` containing ``cirq.PauliStringPhasor`` operations
+ in the same order as ``self.step()``.
+ """
+ _INT_TO_CIRQ = (cirq.I, cirq.X, cirq.Z, cirq.Y)
+ circuit = cirq.Circuit()
+ for time, term_index in self.step():
+ for color in model.colors(term_index):
+ for op in model.ops(term_index, color):
+ pauli = cirq.PauliString(
+ {
+ cirq.LineQubit(p.qubit): _INT_TO_CIRQ[p.op]
+ for p in op._paulis
+ },
+ )
+ oper = cirq.PauliStringPhasor(pauli, exponent_neg=time / math.pi)
+ circuit.append(oper)
+ return circuit
+
+ def __str__(self) -> str:
+ """String representation of the Trotter decomposition."""
+ return f"Trotter expansion of order {self._order}: time_step={self._time_step}, num_terms={self._nterms}"
+
+ def __repr__(self) -> str:
+ """String representation of the Trotter decomposition."""
+ if self._repr_string is not None:
+ return self._repr_string
+ else:
+ return f"TrotterStep(num_terms={self._nterms}, time_step={self._time_step})"
+
+
+def suzuki_recursion(trotter: TrotterStep) -> TrotterStep:
+ """
+ Apply one level of Suzuki recursion to double the order of a Trotter step.
+
+ Given a k-th order Trotter step S_k(t), this function constructs a (k+2)-nd order
+ step using the Suzuki fractal decomposition:
+
+ S_{k+2}(t) = S_{k}(p t) S_{k}(p t) S_{k}((1 - 4p) t) S_{k}(p t) S_{k}(p t)
+
+ where p = 1 / (4 - 4^{1/(2k+1)}).
+
+ The resulting step has improved accuracy: the error scales as O(t^{k+3}) instead
+ of O(t^{k+1}), at the cost of 5x more exponential applications per step.
+
+ Args:
+ trotter: A TrotterStep of order k to be promoted to order k+2.
+
+ Returns:
+ A new TrotterStep of order k+2 constructed via Suzuki recursion.
+
+ References:
+ M. Suzuki, Phys. Lett. A 146, 319 (1990).
+ """
+
+ suzuki = TrotterStep()
+ suzuki._nterms = trotter._nterms
+ suzuki._time_step = trotter._time_step
+ suzuki._order = trotter._order + 2
+ suzuki._repr_string = f"SuzukiRecursion(order={suzuki._order}, time_step={suzuki._time_step}, num_terms={suzuki._nterms})"
+
+ p = 1 / (4 - 4 ** (1 / (2 * trotter.order + 1)))
+
+ suzuki.terms = [(p * time, term_index) for time, term_index in trotter.step()]
+ suzuki.terms += [(p * time, term_index) for time, term_index in trotter.step()]
+ suzuki.terms += [
+ ((1 - 4 * p) * time, term_index) for time, term_index in trotter.step()
+ ]
+ suzuki.terms += [(p * time, term_index) for time, term_index in trotter.step()]
+ suzuki.terms += [(p * time, term_index) for time, term_index in trotter.step()]
+ suzuki.reduce() # Combine consecutive terms that are the same
+
+ return suzuki
+
+
+def yoshida_recursion(trotter: TrotterStep) -> TrotterStep:
+ """
+ Apply one level of Yoshida recursion to increase the order of a Trotter step by 2.
+
+ Given a k-th order Trotter step S_k(t), this function constructs a (k+2)-nd order
+ step using Yoshida's symmetric triple-jump composition:
+
+ S_{k+2}(t) = S_{k}(w_1 t) S_{k}(w_0 t) S_{k}(w_1 t)
+
+ where:
+ w_1 = 1 / (2 - 2^{1/(2k+1)})
+ w_0 = -2^{1/(2k+1)} / (2 - 2^{1/(2k+1)}) = 1 - 2 w_1
+
+ The resulting step has improved accuracy: the error scales as O(t^{k+3}) instead
+ of O(t^{k+1}), at the cost of 3x more exponential applications per step.
+
+ Args:
+ trotter: A TrotterStep of order k to be promoted to order k+2.
+
+ Returns:
+ A new TrotterStep of order k+2 constructed via Yoshida recursion.
+
+ References:
+ H. Yoshida, Phys. Lett. A 150, 262 (1990).
+ """
+
+ yoshida = TrotterStep()
+ yoshida._nterms = trotter._nterms
+ yoshida._time_step = trotter._time_step
+ yoshida._order = trotter._order + 2
+ yoshida._repr_string = f"YoshidaRecursion(order={yoshida._order}, time_step={yoshida._time_step}, num_terms={yoshida._nterms})"
+
+ cube_root_2 = 2 ** (1 / (2 * trotter.order + 1))
+ w1 = 1 / (2 - cube_root_2)
+ w0 = 1 - 2 * w1 # equivalent to -cube_root_2 / (2 - cube_root_2)
+
+ yoshida.terms = [(w1 * time, term_index) for time, term_index in trotter.step()]
+ yoshida.terms += [(w0 * time, term_index) for time, term_index in trotter.step()]
+ yoshida.terms += [(w1 * time, term_index) for time, term_index in trotter.step()]
+ yoshida.reduce() # Combine consecutive terms that are the same
+
+ return yoshida
+
+
+def strang_splitting(terms: list[int], time: float) -> TrotterStep:
+ """
+ Create a second-order Strang splitting schedule for explicit term indices.
+
+ The second-order Trotter formula uses symmetric splitting:
+
+ e^{-i H t} \\approx \\prod_{k=1}^{n-1} e^{-i H_k t/2} \\, e^{-i H_n t} \\, \\prod_{k=n-1}^{1} e^{-i H_k t/2}
+
+ This provides second-order accuracy in the time step, compared to
+ first-order for the basic Trotter decomposition.
+
+ Example:
+
+ .. code-block:: python
+ >>> strang = strang_splitting(terms=[0, 1, 2], time=0.5)
+ >>> list(strang.step())
+ [(0.25, 0), (0.25, 1), (0.5, 2), (0.25, 1), (0.25, 0)]
+
+ Args:
+ terms: Ordered term indices for a single symmetric step. Must be non-empty.
+ time: Total evolution time assigned to this second-order step.
+
+ Returns:
+ A second-order ``TrotterStep``.
+
+ References:
+ G. Strang, SIAM J. Numer. Anal. 5, 506 (1968).
+ """
+ strang = TrotterStep()
+ strang._nterms = len(terms)
+ strang._time_step = time
+ strang._order = 2
+ strang._repr_string = f"StrangSplitting(time_step={time}, num_terms={len(terms)})"
+ strang.terms = []
+ for i in range(len(terms) - 1):
+ strang.terms.append((time / 2, terms[i]))
+ strang.terms.append((time, terms[-1]))
+ for i in reversed(range(len(terms) - 1)):
+ strang.terms.append((time / 2, terms[i]))
+ return strang
+
+
+def fourth_order_trotter_suzuki(terms: list[int], time: float) -> TrotterStep:
+ """
+ Factory function for creating a fourth-order Trotter-Suzuki decomposition
+ using Suzuki recursion.
+
+ This is obtained by applying one level of Suzuki recursion to the second-order
+ Strang splitting. The resulting fourth-order decomposition has improved accuracy
+ compared to the second-order Strang splitting, at the cost of more exponential
+ applications per step.
+
+ Example:
+
+ .. code-block:: python
+ >>> fourth_order = fourth_order_trotter_suzuki(terms=[0, 1, 2], time=0.5)
+ >>> list(fourth_order.step())
+ [(0.1767766952966369, 0), (0.1767766952966369, 1), (0.1767766952966369, 2), (0.3535533905932738, 1), (0.3535533905932738, 0), (0.1767766952966369, 1), (0.1767766952966369, 2), (0.1767766952966369, 1), (0.1767766952966369, 0)]
+ """
+ return suzuki_recursion(strang_splitting(terms, time))
+
+
+class TrotterExpansion:
+ """Repeated application of a Trotter method on a concrete model.
+
+ ``TrotterExpansion`` builds one step with ``trotter_method(model.terms, dt)``
+ where ``dt = time / num_steps`` and then repeats it ``num_steps`` times.
+
+ Iteration via :meth:`step` yields ``PauliString`` operators already scaled by
+ the per-entry schedule time.
+ """
+
+ def __init__(
+ self,
+ trotter_method: Callable[[list[int], float], TrotterStep],
+ model: Model,
+ time: float,
+ num_steps: int,
+ ):
+ """Initialize a repeated-step Trotter expansion.
+
+ Args:
+ trotter_method: Callable mapping ``(terms, dt)`` to a ``TrotterStep``.
+ model: Model that defines term groups and per-term operators.
+ time: Total evolution time.
+ num_steps: Number of repeated Trotter steps.
+ """
+ self._model = model
+ self._num_steps = num_steps
+ self._trotter_step = trotter_method(model.terms, time / num_steps)
+
+ @property
+ def order(self) -> int:
+ """Get the order of the underlying Trotter step."""
+ return self._trotter_step.order
+
+ @property
+ def nterms(self) -> int:
+ """Get the number of Hamiltonian terms."""
+ return self._model.nterms
+
+ @property
+ def nsteps(self) -> int:
+ """Get the number of Trotter steps."""
+ return self._num_steps
+
+ @property
+ def total_time(self) -> float:
+ """Get the total evolution time (time_step * num_steps)."""
+ return self._trotter_step.time_step * self._num_steps
+
+ def step(self) -> Iterator[PauliString]:
+ """Iterate over scaled operators for the full expansion.
+
+ Yields:
+ ``PauliString`` operators with coefficients scaled by schedule time,
+ in execution order across all repeated steps.
+ """
+ for _ in range(self._num_steps):
+ for s, i in self._trotter_step.step():
+ for c in self._model.colors(i):
+ for op in self._model.ops(i, c):
+ yield (op * s)
+
+ def cirq(self) -> cirq.CircuitOperation:
+ """Get a repeated Cirq circuit operation for this expansion."""
+ circuit = self._trotter_step.cirq(self._model).freeze()
+ return cirq.CircuitOperation(circuit, repetitions=self._num_steps)
+
+ def __str__(self) -> str:
+ """String representation of the Trotter expansion."""
+ return (
+ f"TrotterExpansion(order={self.order}, num_steps={self._num_steps}, "
+ f"total_time={self.total_time}, num_terms={self.nterms})"
+ )
+
+ def __repr__(self) -> str:
+ """Repr representation of the Trotter expansion."""
+ return f"TrotterExpansion({self._trotter_step!r}, num_steps={self._num_steps})"
+
diff --git a/source/pip/qsharp/qre/application/magnets/utilities/__init__.py b/source/pip/qsharp/qre/application/magnets/utilities/__init__.py
new file mode 100644
index 0000000000..b350f7da40
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/utilities/__init__.py
@@ -0,0 +1,26 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Utilities module for magnets package.
+
+This module provides utility data structures and algorithms used across
+the magnets package, including hypergraph representations.
+"""
+
+from .hypergraph import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+from .pauli import Pauli, PauliString, PauliX, PauliY, PauliZ
+
+__all__ = [
+ "Hyperedge",
+ "Hypergraph",
+ "HypergraphEdgeColoring",
+ "Pauli",
+ "PauliString",
+ "PauliX",
+ "PauliY",
+ "PauliZ",
+]
diff --git a/source/pip/qsharp/qre/application/magnets/utilities/hypergraph.py b/source/pip/qsharp/qre/application/magnets/utilities/hypergraph.py
new file mode 100644
index 0000000000..b7caffbd99
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/utilities/hypergraph.py
@@ -0,0 +1,317 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Hypergraph data structures for representing quantum system geometries.
+
+This module provides classes for representing hypergraphs, which generalize
+graphs by allowing edges (hyperedges) to connect any number of vertices.
+Hypergraphs are useful for representing interaction terms in quantum
+Hamiltonians, where multi-body interactions can involve more than two sites.
+"""
+
+import random
+from typing import Iterator, Optional
+
+
+class Hyperedge:
+ """A hyperedge connecting one or more vertices in a hypergraph.
+
+ A hyperedge generalizes the concept of an edge in a graph. While a
+ traditional edge connects exactly two vertices, a hyperedge can connect
+ any number of vertices. This is useful for representing:
+ - Single-site terms (self-loops): 1 vertex
+ - Two-body interactions: 2 vertices
+ - Multi-body interactions: 3+ vertices
+ Each hyperedge is defined by a set of unique vertex indices, which are
+ stored as a sorted tuple for consistency and hashability.
+
+ Attributes:
+ vertices: Sorted tuple of vertex indices connected by this hyperedge.
+
+ Example:
+
+ .. code-block:: python
+ >>> edge = Hyperedge([2, 0, 1])
+ >>> edge.vertices
+ (0, 1, 2)
+ """
+
+ def __init__(self, vertices: list[int]) -> None:
+ """Initialize a hyperedge with the given vertices.
+
+ Args:
+ vertices: List of vertex indices. Will be sorted internally.
+ """
+ self.vertices: tuple[int, ...] = tuple(sorted(set(vertices)))
+
+ def __str__(self) -> str:
+ return str(self.vertices)
+
+ def __repr__(self) -> str:
+ return f"Hyperedge({list(self.vertices)})"
+
+
+class Hypergraph:
+ """A hypergraph consisting of vertices connected by hyperedges.
+
+ A hypergraph is a generalization of a graph where edges (hyperedges) can
+ connect any number of vertices. This class serves as the base class for
+ various lattice geometries used in quantum simulations.
+
+ Attributes:
+ _edge_set: Set of hyperedges in the hypergraph.
+ _vertex_set: Set of all unique vertex indices in the hypergraph.
+
+ Note:
+ Edge colors are managed separately by :class:`HypergraphEdgeColoring`.
+ Use :meth:`edge_coloring` to generate a coloring for this hypergraph.
+
+ Example:
+
+ .. code-block:: python
+ >>> edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([0, 2])]
+ >>> graph = Hypergraph(edges)
+ >>> graph.nvertices
+ 3
+ >>> graph.nedges
+ 3
+ """
+
+ def __init__(self, edges: list[Hyperedge]) -> None:
+ """Initialize a hypergraph with the given edges.
+
+ Args:
+ edges: List of hyperedges defining the hypergraph structure.
+ """
+ self._vertex_set = set()
+ self._edge_set = set(edges)
+ for edge in edges:
+ self._vertex_set.update(edge.vertices)
+
+ @property
+ def nvertices(self) -> int:
+ """Return the number of vertices in the hypergraph."""
+ return len(self._vertex_set)
+
+ def vertices(self) -> Iterator[int]:
+ """Iterate over all vertex indices in the hypergraph.
+
+ Returns:
+ Iterator of vertex indices in ascending order.
+ """
+ return iter(sorted(self._vertex_set))
+
+ @property
+ def nedges(self) -> int:
+ """Return the number of hyperedges in the hypergraph."""
+ return len(self._edge_set)
+
+ def edges(self) -> Iterator[Hyperedge]:
+ """Iterate over all hyperedges in the hypergraph.
+
+ Returns:
+ Iterator of all hyperedges in the hypergraph.
+ """
+ return iter(self._edge_set)
+
+ def add_edge(self, edge: Hyperedge) -> None:
+ """Add a hyperedge to the hypergraph.
+
+ Args:
+ edge: The Hyperedge instance to add.
+ """
+ self._edge_set.add(edge)
+ self._vertex_set.update(edge.vertices)
+
+ def edge_coloring(
+ self, seed: Optional[int] = 0, trials: int = 1
+ ) -> "HypergraphEdgeColoring":
+ """Compute a (nondeterministic) greedy edge coloring of this hypergraph.
+
+ Args:
+ seed: Optional random seed for reproducibility.
+ trials: Number of randomized trials to attempt. The best coloring
+ (fewest colors) is returned.
+
+ Returns:
+ A :class:`HypergraphEdgeColoring` for this hypergraph.
+ """
+ all_edges = sorted(self.edges(), key=lambda edge: edge.vertices)
+
+ if not all_edges:
+ return HypergraphEdgeColoring(self)
+
+ num_trials = max(trials, 1)
+ best_coloring: Optional[HypergraphEdgeColoring] = None
+ least_colors: Optional[int] = None
+
+ for trial in range(num_trials):
+ trial_seed = None if seed is None else seed + trial
+ rng = random.Random(trial_seed)
+
+ edge_order = list(all_edges)
+ rng.shuffle(edge_order)
+
+ coloring = HypergraphEdgeColoring(self)
+ num_colors = 0
+
+ for edge in edge_order:
+ if len(edge.vertices) == 1:
+ coloring.add_edge(edge, -1)
+ continue
+
+ assigned = False
+ for color in range(num_colors):
+ used_vertices = set().union(
+ *(
+ candidate.vertices
+ for candidate in coloring.edges_of_color(color)
+ )
+ )
+ if not any(vertex in used_vertices for vertex in edge.vertices):
+ coloring.add_edge(edge, color)
+ assigned = True
+ break
+
+ if not assigned:
+ coloring.add_edge(edge, num_colors)
+ num_colors += 1
+
+ if least_colors is None or coloring.ncolors < least_colors:
+ least_colors = coloring.ncolors
+ best_coloring = coloring
+
+ assert best_coloring is not None
+ return best_coloring
+
+ def __str__(self) -> str:
+ return f"Hypergraph with {self.nvertices} vertices and {self.nedges} edges."
+
+ def __repr__(self) -> str:
+ return f"Hypergraph({list(self._edge_set)})"
+
+
+class HypergraphEdgeColoring:
+ """Edge-color assignment for a :class:`Hypergraph`.
+
+ This class stores colors separately from :class:`Hypergraph` and enforces
+ the rule that multi-vertex edges sharing a color do not share any vertices.
+
+ Conventions:
+
+ - Colors for nontrivial edges must be nonnegative integers.
+ - Single-vertex edges may use a special color (for example ``-1``).
+ - Only nonnegative colors contribute to :attr:`ncolors`.
+
+ Note:
+ Colors are keyed by edge vertex tuples (``edge.vertices``), not by
+ ``Hyperedge`` object identity. As a result, :meth:`color` accepts edge
+ vertex tuples directly, while :meth:`add_edge` still requires an edge
+ instance that belongs to :attr:`hypergraph`.
+
+ Attributes:
+ hypergraph: The supporting :class:`Hypergraph` whose edges can be
+ colored by this instance.
+ """
+
+ def __init__(self, hypergraph: Hypergraph) -> None:
+ self.hypergraph = hypergraph
+ self._colors: dict[tuple[int, ...], int] = {} # Vertices-to-color mapping
+ self._used_vertices: dict[int, set[int]] = (
+ {}
+ ) # Set of vertices used by each color
+
+ @property
+ def ncolors(self) -> int:
+ """Return the number of distinct nonnegative colors in the coloring."""
+ return len(self._used_vertices)
+
+ def color(self, vertices: tuple[int, ...]) -> Optional[int]:
+ """Return the color assigned to edge vertices.
+
+ Args:
+ vertices: Canonical vertex tuple for the edge to query (typically
+ ``edge.vertices``).
+
+ Returns:
+ The color assigned to ``vertices``, or ``None`` if the edge has
+ not been added to this coloring.
+ """
+ if not isinstance(vertices, tuple) or not all(
+ isinstance(vertex, int) for vertex in vertices
+ ):
+ raise TypeError("vertices must be tuple[int, ...]")
+ return self._colors.get(vertices)
+
+ def colors(self) -> Iterator[int]:
+ """Iterate over distinct nonnegative colors present in the coloring.
+
+ Returns:
+ Iterator of distinct nonnegative color indices.
+ """
+ return iter(self._used_vertices.keys())
+
+ def add_edge(self, edge: Hyperedge, color: int) -> None:
+ """Add ``edge`` to this coloring with the specified ``color``.
+
+ For multi-vertex edges, this enforces that no previously added edge
+ with the same color shares a vertex with ``edge``.
+
+ Args:
+ edge: The Hyperedge instance to add. This must be an edge present
+ in :attr:`hypergraph` (typically one returned by
+ ``hypergraph.edges()``).
+ color: Color index for the edge.
+
+ Raises:
+ TypeError: If ``edge`` is not a :class:`Hyperedge`.
+ ValueError: If ``edge`` is not part of :attr:`hypergraph`.
+ ValueError: If ``color`` is negative for a nontrivial edge.
+ RuntimeError: If adding ``edge`` would create a same-color vertex
+ conflict.
+ """
+ if not isinstance(edge, Hyperedge):
+ raise TypeError(f"edge must be Hyperedge, got {type(edge).__name__}")
+
+ if edge not in self.hypergraph.edges():
+ raise ValueError("edge must belong to the supporting Hypergraph")
+
+ vertices = edge.vertices
+
+ if len(vertices) == 1:
+ # Single-vertex edges can be colored with a special color (e.g., -1)
+ self._colors[vertices] = color
+ else:
+ if color < 0:
+ raise ValueError(
+ "Color index must be nonnegative for multi-vertex edges."
+ )
+ if color not in self._used_vertices:
+ self._colors[vertices] = color
+ self._used_vertices[color] = set(vertices)
+ else:
+ if any(v in self._used_vertices[color] for v in vertices):
+ raise RuntimeError(
+ "Edge conflicts with existing edge of same color."
+ )
+ self._colors[vertices] = color
+ self._used_vertices[color].update(vertices)
+
+ self._colors[vertices] = color
+
+ def edges_of_color(self, color: int) -> Iterator[Hyperedge]:
+ """Iterate over hyperedges with a specific color.
+
+ Args:
+ color: Color index for filtering edges.
+
+ Returns:
+ Iterator of edges currently assigned to ``color``.
+ """
+ return iter(
+ [
+ edge
+ for edge in self.hypergraph.edges()
+ if self._colors.get(edge.vertices) == color
+ ]
+ )
diff --git a/source/pip/qsharp/qre/application/magnets/utilities/pauli.py b/source/pip/qsharp/qre/application/magnets/utilities/pauli.py
new file mode 100644
index 0000000000..4eb7b92e5b
--- /dev/null
+++ b/source/pip/qsharp/qre/application/magnets/utilities/pauli.py
@@ -0,0 +1,270 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Pauli operator representation for quantum spin systems."""
+
+from collections.abc import Sequence
+
+try:
+ import cirq
+except Exception as ex:
+ raise ImportError(
+ "qsharp.magnets.models requires the cirq extras. Install with 'pip install \"qsharp[cirq]\"'."
+ ) from ex
+
+
+class Pauli:
+ """Single-qubit Pauli term tied to an explicit qubit index.
+
+ ``Pauli`` stores a Pauli identifier and the qubit it acts on. The Pauli
+ identifier can be provided either as an integer code or a label:
+
+ - ``0`` / ``"I"``
+ - ``1`` / ``"X"``
+ - ``2`` / ``"Z"``
+ - ``3`` / ``"Y"``
+
+ Note:
+ The integer mapping follows the internal QDK convention where ``2`` is
+ ``Z`` and ``3`` is ``Y``.
+
+ Example:
+
+ .. code-block:: python
+ >>> p = Pauli("Y", qubit=2)
+ >>> p.op
+ 3
+ >>> p.qubit
+ 2
+ """
+
+ _VALID_INTS = {0, 1, 2, 3}
+ _STR_TO_INT = {"I": 0, "X": 1, "Z": 2, "Y": 3}
+
+ def __init__(self, value: int | str, qubit: int = 0) -> None:
+ """Initialize a Pauli operator.
+
+ Args:
+ value: An integer 0-3 or one of 'I', 'X', 'Y', 'Z' (case-insensitive).
+ qubit: The index of the qubit this operator acts on. Defaults to 0.
+
+ Raises:
+ ValueError: If ``value`` is not a valid integer/string Pauli identifier.
+ """
+ if isinstance(value, int):
+ if value not in self._VALID_INTS:
+ raise ValueError(f"Integer value must be 0-3, got {value}.")
+ self._op = value
+ elif isinstance(value, str):
+ key = value.upper()
+ if key not in self._STR_TO_INT:
+ raise ValueError(
+ f"String value must be one of 'I', 'X', 'Y', 'Z', got '{value}'."
+ )
+ self._op = self._STR_TO_INT[key]
+ else:
+ raise ValueError(f"Expected int or str, got {type(value).__name__}.")
+ self.qubit: int = qubit
+
+ @property
+ def op(self) -> int:
+ """Integer encoding of this Pauli term.
+
+ Returns:
+ ``0`` for ``I``, ``1`` for ``X``, ``2`` for ``Z``, ``3`` for ``Y``.
+ """
+ return self._op
+
+ def __str__(self) -> str:
+ labels = {0: "I", 1: "X", 2: "Z", 3: "Y"}
+ return f"{labels[self._op]}({self.qubit})"
+
+ def __repr__(self) -> str:
+ labels = {0: "I", 1: "X", 2: "Z", 3: "Y"}
+ return f"Pauli('{labels[self._op]}', qubit={self.qubit})"
+
+ def __eq__(self, other: object) -> bool:
+ if not isinstance(other, Pauli):
+ return NotImplemented
+ return self._op == other._op and self.qubit == other.qubit
+
+ def __hash__(self) -> int:
+ return hash((self._op, self.qubit))
+
+ @property
+ def cirq(self):
+ """Return this Pauli term as a Cirq gate operation on ``LineQubit``.
+
+ Returns:
+ A Cirq operation equivalent to
+ ``cirq.{I|X|Z|Y}.on(cirq.LineQubit(self.qubit))``.
+ """
+ _INT_TO_CIRQ = (cirq.I, cirq.X, cirq.Z, cirq.Y)
+ return _INT_TO_CIRQ[self._op].on(cirq.LineQubit(self.qubit))
+
+
+def PauliX(qubit: int) -> Pauli:
+ """Create a Pauli-X operator on the given qubit."""
+ return Pauli("X", qubit)
+
+
+def PauliY(qubit: int) -> Pauli:
+ """Create a Pauli-Y operator on the given qubit."""
+ return Pauli("Y", qubit)
+
+
+def PauliZ(qubit: int) -> Pauli:
+ """Create a Pauli-Z operator on the given qubit."""
+ return Pauli("Z", qubit)
+
+
+class PauliString:
+ """Ordered tensor product of single-qubit ``Pauli`` terms with a coefficient.
+
+ ``PauliString`` stores:
+
+ - an ordered tuple of :class:`Pauli` objects (including each term's qubit), and
+ - a complex scalar coefficient.
+
+ Construction options:
+
+ - pass a sequence of :class:`Pauli` objects to ``PauliString(...)``
+ - use :meth:`from_qubits` to pair qubit indices with Pauli labels/codes
+
+ Example:
+
+ .. code-block:: python
+ >>> ps = PauliString([PauliX(0), PauliZ(1)], coefficient=-1j)
+ >>> ps.qubits
+ (0, 1)
+ >>> ps2 = PauliString.from_qubits((0, 1), "XZ", coefficient=-1j)
+ >>> ps == ps2
+ True
+ """
+
+ def __init__(self, paulis: Sequence[Pauli], coefficient: complex = 1.0) -> None:
+ """Initialize a PauliString from a sequence of Pauli operators.
+
+ Args:
+ paulis: A sequence of :class:`Pauli` instances, each with its
+ own qubit index.
+ coefficient: Complex coefficient multiplying the Pauli string (default 1.0).
+
+ Raises:
+ TypeError: If any element is not a Pauli instance.
+ """
+ for p in paulis:
+ if not isinstance(p, Pauli):
+ raise TypeError(
+ f"Expected Pauli instance, got {type(p).__name__}. "
+ "Use PauliString.from_qubits() for int/str values."
+ )
+ self._paulis: tuple[Pauli, ...] = tuple(paulis)
+ self._coefficient: complex = coefficient
+
+ @classmethod
+ def from_qubits(
+ cls,
+ qubits: tuple[int, ...],
+ values: Sequence[int | str] | str,
+ coefficient: complex = 1.0,
+ ) -> "PauliString":
+ """Create a PauliString from qubit indices and Pauli labels.
+
+ Args:
+ qubits: Tuple of qubit indices.
+ values: Sequence of Pauli identifiers (integers 0-3 or strings
+ 'I', 'X', 'Y', 'Z'). A plain string like ``"XZI"`` is also
+ accepted and treated as individual characters.
+ coefficient: Complex coefficient multiplying the Pauli string.
+
+ Returns:
+ A new PauliString instance.
+
+ Raises:
+ ValueError: If qubits and values have different lengths, or if
+ any value is not a valid Pauli identifier.
+ """
+ if len(qubits) != len(values):
+ raise ValueError(
+ f"Length mismatch: {len(qubits)} qubits vs {len(values)} values."
+ )
+ paulis = [Pauli(v, q) for q, v in zip(qubits, values)]
+ return cls(paulis, coefficient=coefficient)
+
+ @property
+ def qubits(self) -> tuple[int, ...]:
+ """Tuple of qubit indices in the same order as the stored Pauli terms.
+
+ Returns:
+ Tuple of qubit indices, one per Pauli operator.
+ """
+ return tuple(p.qubit for p in self._paulis)
+
+ @property
+ def coefficient(self) -> complex:
+ """Complex coefficient multiplying this Pauli string."""
+ return self._coefficient
+
+ @property
+ def paulis(self) -> str:
+ """String of Pauli labels in the same order as the stored Pauli terms.
+
+ Returns:
+ String of Pauli labels ('I', 'X', 'Z', 'Y'), one per Pauli operator.
+ """
+ labels = {0: "I", 1: "X", 2: "Z", 3: "Y"}
+ return "".join(labels[p.op] for p in self._paulis)
+
+ def __iter__(self):
+ """Iterate over Pauli terms in stored order.
+
+ Yields:
+ :class:`Pauli` instances in order.
+ """
+ return iter(self._paulis)
+
+ def __len__(self) -> int:
+ return len(self._paulis)
+
+ def __getitem__(self, index: int) -> Pauli:
+ return self._paulis[index]
+
+ def __mul__(self, scalar: complex) -> "PauliString":
+ """Scale the coefficient of this PauliString by a complex scalar."""
+ return PauliString(self._paulis, coefficient=self._coefficient * scalar)
+
+ def __str__(self) -> str:
+ labels = {0: "I", 1: "X", 2: "Z", 3: "Y"}
+ s = "".join(map(str, self._paulis))
+ return f"{self._coefficient} * {s}"
+
+ def __repr__(self) -> str:
+ labels = {0: "I", 1: "X", 2: "Z", 3: "Y"}
+ s = "".join(labels[p.op] for p in self._paulis)
+ return f"PauliString(qubits={self.qubits}, ops='{s}', coefficient={self._coefficient})"
+
+ def __eq__(self, other: object) -> bool:
+ if not isinstance(other, PauliString):
+ return NotImplemented
+ return self._paulis == other._paulis and self._coefficient == other._coefficient
+
+ def __hash__(self) -> int:
+ return hash((self._paulis, self._coefficient))
+
+ @property
+ def cirq(self):
+ """Return the corresponding Cirq ``PauliString``.
+
+ Constructs a ``cirq.PauliString`` by applying each single-qubit
+ Pauli to its corresponding ``cirq.LineQubit``.
+
+ Returns:
+ A ``cirq.PauliString`` on ``cirq.LineQubit`` instances with
+ ``self._coefficient`` as its coefficient.
+ """
+ _INT_TO_CIRQ = (cirq.I, cirq.X, cirq.Z, cirq.Y)
+ return cirq.PauliString(
+ {cirq.LineQubit(p.qubit): _INT_TO_CIRQ[p.op] for p in self._paulis},
+ coefficient=self._coefficient,
+ )
diff --git a/source/pip/qsharp/qre/models/__init__.py b/source/pip/qsharp/qre/models/__init__.py
index 3da76797ac..6efb79c239 100644
--- a/source/pip/qsharp/qre/models/__init__.py
+++ b/source/pip/qsharp/qre/models/__init__.py
@@ -4,19 +4,22 @@
from .factories import Litinski19Factory, MagicUpToClifford, RoundBasedFactory
from .qec import (
SurfaceCode,
+ SurfaceCodeLowMove,
ThreeAux,
OneDimensionalYokedSurfaceCode,
TwoDimensionalYokedSurfaceCode,
)
-from .qubits import GateBased, Majorana
+from .qubits import GateBased, Majorana, NeutralAtom
__all__ = [
"GateBased",
"Litinski19Factory",
"Majorana",
"MagicUpToClifford",
+ "NeutralAtom",
"RoundBasedFactory",
"SurfaceCode",
+ "SurfaceCodeLowMove",
"ThreeAux",
"OneDimensionalYokedSurfaceCode",
"TwoDimensionalYokedSurfaceCode",
diff --git a/source/pip/qsharp/qre/models/qec/__init__.py b/source/pip/qsharp/qre/models/qec/__init__.py
index 4e4cf816f7..2cf54a05c6 100644
--- a/source/pip/qsharp/qre/models/qec/__init__.py
+++ b/source/pip/qsharp/qre/models/qec/__init__.py
@@ -2,11 +2,13 @@
# Licensed under the MIT License.
from ._surface_code import SurfaceCode
+from ._surface_code_low_move import SurfaceCodeLowMove
from ._three_aux import ThreeAux
from ._yoked import OneDimensionalYokedSurfaceCode, TwoDimensionalYokedSurfaceCode
__all__ = [
"SurfaceCode",
+ "SurfaceCodeLowMove",
"ThreeAux",
"OneDimensionalYokedSurfaceCode",
"TwoDimensionalYokedSurfaceCode",
diff --git a/source/pip/qsharp/qre/models/qec/_surface_code_low_move.py b/source/pip/qsharp/qre/models/qec/_surface_code_low_move.py
new file mode 100644
index 0000000000..43272e5181
--- /dev/null
+++ b/source/pip/qsharp/qre/models/qec/_surface_code_low_move.py
@@ -0,0 +1,198 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+from __future__ import annotations
+from dataclasses import KW_ONLY, dataclass, field
+import math
+from typing import Generator, Optional
+from ..._instruction import (
+ ISA,
+ ISARequirements,
+ ISATransform,
+ constraint,
+ ConstraintBound,
+ LOGICAL,
+)
+from ..._isa_enumeration import ISAContext
+from ..._qre import linear_function
+from ...instruction_ids import (
+ CZ,
+ LATTICE_SURGERY,
+ MEAS_RESET_Z,
+ MEAS_Z,
+ PHYSICAL_MOVE,
+ RZ,
+ SQRT_X,
+)
+from ...property_keys import (
+ SURFACE_CODE_ONE_QUBIT_TIME_FACTOR,
+ SURFACE_CODE_TWO_QUBIT_TIME_FACTOR,
+ VELOCITY,
+ ACCELERATION,
+ ATOM_SPACING,
+)
+
+
+@dataclass
+class SurfaceCodeLowMove(ISATransform):
+ """
+ This class models the gate-based rotated surface code.
+
+ Attributes:
+ crossing_prefactor: float
+ The prefactor for logical error rate due to error correction
+ crossings. (Default is 0.03, see Eq. (11) in
+ [arXiv:1208.0928](https://arxiv.org/abs/1208.0928))
+ error_correction_threshold: float
+ The error correction threshold for the surface code. (Default is
+ 0.01 (1%), see [arXiv:1009.3686](https://arxiv.org/abs/1009.3686))
+ one_qubit_gate_depth: int
+ The depth of one-qubit gates in each syndrome extraction cycle.
+ (Default is 1, see Fig. 2 in [arXiv:1009.3686](https://arxiv.org/abs/1009.3686))
+ two_qubit_gate_depth: int
+ The depth of two-qubit gates in each syndrome extraction cycle.
+ (Default is 4, see Fig. 2 in [arXiv:1009.3686](https://arxiv.org/abs/1009.3686))
+ code_cycle_override: Optional[int]
+ If provided, this value will be used as the time for each syndrome
+ extraction cycle instead of the default calculation based on gate
+ times and depths. (Default is None)
+ code_cycle_offset: int
+ An additional time offset to add to the syndrome extraction cycle
+ time. (Default is 0)
+
+ Hyper parameters:
+ distance: int
+ The code distance of the surface code.
+
+ References:
+
+ - Dominic Horsman, Austin G. Fowler, Simon Devitt, Rodney Van Meter: Surface
+ code quantum computing by lattice surgery,
+ [arXiv:1111.4022](https://arxiv.org/abs/1111.4022)
+ - Austin G. Fowler, Matteo Mariantoni, John M. Martinis, Andrew N. Cleland:
+ Surface codes: Towards practical large-scale quantum computation,
+ [arXiv:1208.0928](https://arxiv.org/abs/1208.0928)
+ - David S. Wang, Austin G. Fowler, Lloyd C. L. Hollenberg: Quantum computing
+ with nearest neighbor interactions and error rates over 1%,
+ [arXiv:1009.3686](https://arxiv.org/abs/1009.3686)
+ """
+
+ crossing_prefactor: float = 0.03
+ error_correction_threshold: float = 0.01
+ one_qubit_gate_depth: int = 1
+ two_qubit_gate_depth: int = 4
+ code_cycle_override: Optional[int] = None
+ code_cycle_offset: int = 0
+ _: KW_ONLY
+ distance: int = field(default=3, metadata={"domain": range(3, 26, 2)})
+
+ @staticmethod
+ def required_isa() -> ISARequirements:
+ return ISARequirements(
+ constraint(RZ, error_rate=ConstraintBound.lt(0.01)),
+ constraint(SQRT_X, error_rate=ConstraintBound.lt(0.01)),
+ constraint(CZ, arity=2, error_rate=ConstraintBound.lt(0.01)),
+ constraint(MEAS_Z, error_rate=ConstraintBound.lt(0.01)),
+ constraint(MEAS_RESET_Z, error_rate=ConstraintBound.lt(0.01)),
+ constraint(PHYSICAL_MOVE, error_rate=ConstraintBound.lt(0.01)),
+ )
+
+ def provided_isa(
+ self, impl_isa: ISA, ctx: ISAContext
+ ) -> Generator[ISA, None, None]:
+ cz = impl_isa[CZ]
+ rz = impl_isa[RZ]
+ sqrt_x = impl_isa[SQRT_X]
+ reset = impl_isa[MEAS_RESET_Z]
+ meas_z = impl_isa[MEAS_Z]
+
+ move = impl_isa[PHYSICAL_MOVE]
+ if (
+ move.has_property(VELOCITY)
+ and move.has_property(ACCELERATION)
+ and move.has_property(ATOM_SPACING)
+ ):
+ max_vel = move.get_property_or(VELOCITY, 0)
+ max_accel = move.get_property_or(ACCELERATION, 0)
+ atom_spacing = move.get_property_or(ATOM_SPACING, 0)
+ if atom_spacing < max_vel**2 / max_accel:
+ hor_seg_time = math.sqrt(atom_spacing / max_accel)
+ else:
+ extra_distance = atom_spacing - max_vel**2 / max_accel
+ hor_seg_time = max_vel / max_accel + extra_distance / max_vel
+ if math.sqrt(2) * atom_spacing < max_vel**2 / max_accel:
+ diag_seg_time = math.sqrt(math.sqrt(2) * atom_spacing / max_accel)
+ else:
+ extra_distance = math.sqrt(2) * atom_spacing - max_vel**2 / max_accel
+ diag_seg_time = max_vel / max_accel + extra_distance / max_vel
+ move_time = 3 * move.expect_time() + 2 * hor_seg_time + diag_seg_time
+ else:
+ move_time = move.expect_time()
+
+ four_cz_time = math.ceil(4 * cz.expect_time() + move_time)
+ h_time = sqrt_x.expect_time() + 2 * rz.expect_time()
+ meas_time = meas_z.expect_time()
+ reset_time = reset.expect_time()
+
+ physical_error_rate = max(
+ rz.expect_error_rate(),
+ cz.expect_error_rate(),
+ sqrt_x.expect_error_rate(),
+ reset.expect_error_rate(),
+ meas_z.expect_error_rate(),
+ )
+
+ # There are d^2 data qubits and (d^2 - 1) ancilla qubits in the rotated
+ # surface code. (See Section 7.1 in arXiv:1111.4022)
+ # Unchanged from the original SurfaceCode.
+ space_formula = linear_function(2 * self.distance**2 - 1)
+
+ # Each standard syndrome extraction cycle consists of ancilla preparation, 4
+ # rounds of CNOTs, and measurement. (See Fig. 2 in arXiv:1009.3686).
+ # But this must be modified to acount for the fact that the CNOTs are
+ # implemented as CZ+sqrt(X). The syndrome extraction cycle
+ # is repeated d times for a distance-d code.
+ if self.code_cycle_override is not None:
+ code_cycle_time = self.code_cycle_override + self.code_cycle_offset
+ else:
+ if reset_time > four_cz_time:
+ code_cycle_time = (
+ max(reset_time, h_time)
+ + (self.distance + 1)
+ * (reset_time + h_time + self.code_cycle_offset)
+ + meas_time
+ )
+ else:
+ code_cycle_time = (
+ max(reset_time, h_time)
+ + (self.distance + 1)
+ * (four_cz_time + h_time + self.code_cycle_offset)
+ + meas_time
+ )
+ time_value = code_cycle_time * self.distance
+
+ # See Eqs. (10) and (11) in arXiv:1208.0928
+ error_formula = linear_function(
+ self.crossing_prefactor
+ * (
+ (physical_error_rate / self.error_correction_threshold)
+ ** ((self.distance + 1) // 2)
+ )
+ )
+
+ # We provide a generic lattice surgery instruction (See Section 3 in
+ # arXiv:1111.4022)
+ yield ctx.make_isa(
+ ctx.add_instruction(
+ LATTICE_SURGERY,
+ encoding=LOGICAL,
+ arity=None,
+ space=space_formula,
+ time=time_value,
+ error_rate=error_formula,
+ transform=self,
+ source=[cz, rz, sqrt_x, reset, meas_z, move],
+ distance=self.distance,
+ code_cycle_time=code_cycle_time,
+ ),
+ )
diff --git a/source/pip/qsharp/qre/models/qubits/__init__.py b/source/pip/qsharp/qre/models/qubits/__init__.py
index ab7887faf3..b030a673c9 100644
--- a/source/pip/qsharp/qre/models/qubits/__init__.py
+++ b/source/pip/qsharp/qre/models/qubits/__init__.py
@@ -3,5 +3,6 @@
from ._gate_based import GateBased
from ._msft import Majorana
+from ._neutral_atoms import NeutralAtom
-__all__ = ["GateBased", "Majorana"]
+__all__ = ["GateBased", "Majorana", "NeutralAtom"]
diff --git a/source/pip/qsharp/qre/models/qubits/_neutral_atoms.py b/source/pip/qsharp/qre/models/qubits/_neutral_atoms.py
new file mode 100644
index 0000000000..e4cbb4154d
--- /dev/null
+++ b/source/pip/qsharp/qre/models/qubits/_neutral_atoms.py
@@ -0,0 +1,109 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+from dataclasses import KW_ONLY, dataclass, field
+
+from ..._architecture import Architecture, ISAContext
+from ..._instruction import ISA, Encoding
+from ...instruction_ids import (
+ CZ,
+ MEAS_RESET_Z,
+ MEAS_Z,
+ PHYSICAL_MOVE,
+ RZ,
+ SQRT_X,
+ H,
+ CNOT,
+ T,
+)
+from ...property_keys import ACCELERATION, ATOM_SPACING, VELOCITY
+
+
+@dataclass
+class NeutralAtom(Architecture):
+ """A movement-aware neutral-atom architecture."""
+
+ _: KW_ONLY
+ rydberg_time: int = field(default=500) # In units of ns.
+ rydberg_error: float = field(default=1e-3)
+ one_qubit_time: int = field(default=1000) # In units of ns.
+ one_qubit_error: float = field(default=1e-4)
+ measurement_time: int = field(default=10000) # In units of ns.
+ measurement_error: float = field(default=1e-4)
+ handoff_time: int = field(default=0) # In units of ns.
+ atom_spacing: int = field(default=3) # In units of microns.
+ max_velocity: int = field(default=1) # In units m/s.
+ max_acceleration: int = field(default=5000) # In units m/s^2.
+
+ def provided_isa(self, ctx: ISAContext) -> ISA:
+ return ctx.make_isa(
+ ctx.add_instruction(
+ RZ,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=0,
+ error_rate=0.0,
+ ),
+ ctx.add_instruction(
+ T,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=0,
+ error_rate=0.00001,
+ ),
+ ctx.add_instruction(
+ SQRT_X,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=self.one_qubit_time,
+ error_rate=self.one_qubit_error,
+ ),
+ ctx.add_instruction(
+ H,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=self.one_qubit_time,
+ error_rate=self.one_qubit_error,
+ ),
+ ctx.add_instruction(
+ CZ,
+ encoding=Encoding.PHYSICAL,
+ arity=2,
+ time=self.rydberg_time,
+ error_rate=self.rydberg_error,
+ ),
+ ctx.add_instruction(
+ CNOT,
+ encoding=Encoding.PHYSICAL,
+ arity=2,
+ time=self.rydberg_time + 2 * self.one_qubit_time,
+ error_rate=self.rydberg_error,
+ ),
+ ctx.add_instruction(
+ MEAS_Z,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=self.measurement_time,
+ error_rate=self.measurement_error,
+ ),
+ ctx.add_instruction(
+ MEAS_RESET_Z,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=self.measurement_time,
+ error_rate=self.measurement_error,
+ ),
+ ctx.add_instruction(
+ PHYSICAL_MOVE,
+ encoding=Encoding.PHYSICAL,
+ arity=1,
+ time=2 * self.handoff_time,
+ error_rate=1e-4,
+ acceleration=self.max_acceleration,
+ atom_spacing=self.atom_spacing,
+ velocity=self.max_velocity,
+ ),
+ )
+
+
+__all__ = ["NeutralAtom"]
diff --git a/source/pip/qsharp/qre/property_keys.pyi b/source/pip/qsharp/qre/property_keys.pyi
index f4a097f3f7..04ed5b9e18 100644
--- a/source/pip/qsharp/qre/property_keys.pyi
+++ b/source/pip/qsharp/qre/property_keys.pyi
@@ -5,6 +5,8 @@ DISTANCE: int
SURFACE_CODE_ONE_QUBIT_TIME_FACTOR: int
SURFACE_CODE_TWO_QUBIT_TIME_FACTOR: int
ACCELERATION: int
+ATOM_SPACING: int
+VELOCITY: int
NUM_TS_PER_ROTATION: int
EXPECTED_SHOTS: int
RUNTIME_SINGLE_SHOT: int
diff --git a/source/pip/src/qre.rs b/source/pip/src/qre.rs
index 0b7b1ef60f..00dd35fb2b 100644
--- a/source/pip/src/qre.rs
+++ b/source/pip/src/qre.rs
@@ -1618,6 +1618,8 @@ fn add_property_keys(m: &Bound<'_, PyModule>) -> PyResult<()> {
SURFACE_CODE_ONE_QUBIT_TIME_FACTOR,
SURFACE_CODE_TWO_QUBIT_TIME_FACTOR,
ACCELERATION,
+ ATOM_SPACING,
+ VELOCITY,
NUM_TS_PER_ROTATION,
EXPECTED_SHOTS,
RUNTIME_SINGLE_SHOT,
diff --git a/source/pip/tests/qre/magnets/__init__.py b/source/pip/tests/qre/magnets/__init__.py
new file mode 100644
index 0000000000..4540e70bc2
--- /dev/null
+++ b/source/pip/tests/qre/magnets/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for the magnets library."""
+
+try:
+ # pylint: disable=unused-import
+ # flake8: noqa E401
+ import cirq
+
+ CIRQ_AVAILABLE = True
+except ImportError:
+ CIRQ_AVAILABLE = False
+
+SKIP_REASON = "cirq is not available"
diff --git a/source/pip/tests/qre/magnets/test_complete.py b/source/pip/tests/qre/magnets/test_complete.py
new file mode 100644
index 0000000000..aec34ef500
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_complete.py
@@ -0,0 +1,251 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for complete graph data structures."""
+
+from qsharp.qre.application.magnets import (
+ CompleteBipartiteGraph,
+ CompleteGraph,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+
+# CompleteGraph tests
+
+
+def test_complete_graph_init_basic():
+ """Test basic CompleteGraph initialization."""
+ graph = CompleteGraph(4)
+ assert graph.nvertices == 4
+ assert graph.nedges == 6 # 4 * 3 / 2 = 6
+ assert graph.n == 4
+
+
+def test_complete_graph_single_vertex():
+ """Test CompleteGraph with a single vertex (no edges)."""
+ graph = CompleteGraph(1)
+ assert graph.nvertices == 0
+ assert graph.nedges == 0
+ assert graph.n == 1
+
+
+def test_complete_graph_two_vertices():
+ """Test CompleteGraph with two vertices (one edge)."""
+ graph = CompleteGraph(2)
+ assert graph.nvertices == 2
+ assert graph.nedges == 1
+
+
+def test_complete_graph_three_vertices():
+ """Test CompleteGraph with three vertices (triangle)."""
+ graph = CompleteGraph(3)
+ assert graph.nvertices == 3
+ assert graph.nedges == 3
+
+
+def test_complete_graph_five_vertices():
+ """Test CompleteGraph with five vertices."""
+ graph = CompleteGraph(5)
+ assert graph.nvertices == 5
+ assert graph.nedges == 10 # 5 * 4 / 2 = 10
+
+
+def test_complete_graph_edges():
+ """Test that CompleteGraph creates correct edges."""
+ graph = CompleteGraph(4)
+ edges = list(graph.edges())
+ assert len(edges) == 6
+ # All pairs should be present
+ edge_sets = [set(e.vertices) for e in edges]
+ assert {0, 1} in edge_sets
+ assert {0, 2} in edge_sets
+ assert {0, 3} in edge_sets
+ assert {1, 2} in edge_sets
+ assert {1, 3} in edge_sets
+ assert {2, 3} in edge_sets
+
+
+def test_complete_graph_vertices():
+ """Test that CompleteGraph vertices are correct."""
+ graph = CompleteGraph(5)
+ vertices = list(graph.vertices())
+ assert vertices == [0, 1, 2, 3, 4]
+
+
+def test_complete_graph_with_self_loops():
+ """Test CompleteGraph with self-loops enabled."""
+ graph = CompleteGraph(4, self_loops=True)
+ assert graph.nvertices == 4
+ # 4 self-loops + 6 edges = 10
+ assert graph.nedges == 10
+
+
+def test_complete_graph_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ graph = CompleteGraph(3, self_loops=True)
+ edge_vertices = {edge.vertices for edge in graph.edges()}
+ assert {(0,), (1,), (2,)}.issubset(edge_vertices)
+
+
+def test_complete_graph_edge_count_formula():
+ """Test that edge count follows n(n-1)/2 formula."""
+ for n in range(1, 10):
+ graph = CompleteGraph(n)
+ expected_edges = n * (n - 1) // 2
+ assert graph.nedges == expected_edges
+
+
+def test_complete_graph_str():
+ """Test string representation."""
+ graph = CompleteGraph(4)
+ assert "4 vertices" in str(graph)
+ assert "6 edges" in str(graph)
+
+
+def test_complete_graph_inherits_hypergraph():
+ """Test that CompleteGraph is a Hypergraph subclass with all methods."""
+ graph = CompleteGraph(4)
+ assert isinstance(graph, Hypergraph)
+ assert hasattr(graph, "edges")
+ assert hasattr(graph, "vertices")
+
+
+# CompleteBipartiteGraph tests
+
+
+def test_complete_bipartite_graph_init_basic():
+ """Test basic CompleteBipartiteGraph initialization."""
+ graph = CompleteBipartiteGraph(2, 3)
+ assert graph.nvertices == 5
+ assert graph.nedges == 6 # 2 * 3 = 6
+ assert graph.m == 2
+ assert graph.n == 3
+
+
+def test_complete_bipartite_graph_single_each():
+ """Test CompleteBipartiteGraph with one vertex in each set."""
+ graph = CompleteBipartiteGraph(1, 1)
+ assert graph.nvertices == 2
+ assert graph.nedges == 1
+
+
+def test_complete_bipartite_graph_one_and_many():
+ """Test CompleteBipartiteGraph with one vertex in first set."""
+ graph = CompleteBipartiteGraph(1, 5)
+ assert graph.nvertices == 6
+ assert graph.nedges == 5 # 1 * 5 = 5
+
+
+def test_complete_bipartite_graph_square():
+ """Test CompleteBipartiteGraph with equal set sizes."""
+ graph = CompleteBipartiteGraph(3, 3)
+ assert graph.nvertices == 6
+ assert graph.nedges == 9 # 3 * 3 = 9
+
+
+def test_complete_bipartite_graph_edges():
+ """Test that CompleteBipartiteGraph creates correct edges."""
+ graph = CompleteBipartiteGraph(2, 3)
+ edges = list(graph.edges())
+ assert len(edges) == 6
+ # Vertices 0, 1 in first set; 2, 3, 4 in second set
+ edge_sets = [set(e.vertices) for e in edges]
+ # All pairs between sets should be present
+ assert {0, 2} in edge_sets
+ assert {0, 3} in edge_sets
+ assert {0, 4} in edge_sets
+ assert {1, 2} in edge_sets
+ assert {1, 3} in edge_sets
+ assert {1, 4} in edge_sets
+ # No edges within sets
+ assert {0, 1} not in edge_sets
+ assert {2, 3} not in edge_sets
+ assert {2, 4} not in edge_sets
+ assert {3, 4} not in edge_sets
+
+
+def test_complete_bipartite_graph_vertices():
+ """Test that CompleteBipartiteGraph vertices are correct."""
+ graph = CompleteBipartiteGraph(2, 3)
+ vertices = list(graph.vertices())
+ assert vertices == [0, 1, 2, 3, 4]
+
+
+def test_complete_bipartite_graph_with_self_loops():
+ """Test CompleteBipartiteGraph with self-loops enabled."""
+ graph = CompleteBipartiteGraph(2, 3, self_loops=True)
+ assert graph.nvertices == 5
+ # 5 self-loops + 6 edges = 11
+ assert graph.nedges == 11
+
+
+def test_complete_bipartite_graph_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ graph = CompleteBipartiteGraph(2, 2, self_loops=True)
+ edge_vertices = {edge.vertices for edge in graph.edges()}
+ assert {(0,), (1,), (2,), (3,)}.issubset(edge_vertices)
+
+
+def test_complete_bipartite_graph_edge_count_formula():
+ """Test that edge count follows m * n formula."""
+ for m in range(1, 6):
+ for n in range(m, 6):
+ graph = CompleteBipartiteGraph(m, n)
+ expected_edges = m * n
+ assert graph.nedges == expected_edges
+
+
+def test_complete_bipartite_graph_coloring_without_self_loops():
+ """Test edge coloring without self-loops."""
+ graph = CompleteBipartiteGraph(3, 4)
+ coloring = graph.edge_coloring()
+ # Should have n colors for bipartite coloring
+ assert coloring.ncolors == 4
+
+
+def test_complete_bipartite_graph_coloring_with_self_loops():
+ """Test edge coloring with self-loops."""
+ graph = CompleteBipartiteGraph(3, 4, self_loops=True)
+ coloring = graph.edge_coloring()
+ # Self-loops get color -1, bipartite edges get n colors (0 to n-1)
+ # ncolors counts nonnegative colors only.
+ assert coloring.ncolors == 4
+
+
+def test_complete_bipartite_graph_coloring_non_overlapping():
+ """Test that edges with the same color don't share vertices."""
+ graph = CompleteBipartiteGraph(3, 4)
+ coloring = graph.edge_coloring()
+ # Group edges by color
+ colors = {}
+ for edge in graph.edges():
+ color = coloring.color(edge.vertices)
+ assert color is not None
+ edge_vertices = edge.vertices
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge_vertices)
+ # Check each color group
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_complete_bipartite_graph_str():
+ """Test string representation."""
+ graph = CompleteBipartiteGraph(2, 3)
+ assert "5 vertices" in str(graph)
+ assert "6 edges" in str(graph)
+
+
+def test_complete_bipartite_graph_inherits_hypergraph():
+ """Test that CompleteBipartiteGraph is a Hypergraph subclass with all methods."""
+ graph = CompleteBipartiteGraph(2, 3)
+ assert isinstance(graph, Hypergraph)
+ assert hasattr(graph, "edges")
+ assert hasattr(graph, "vertices")
+ coloring = graph.edge_coloring()
+ assert isinstance(coloring, HypergraphEdgeColoring)
+ assert hasattr(coloring, "edges_of_color")
diff --git a/source/pip/tests/qre/magnets/test_hypergraph.py b/source/pip/tests/qre/magnets/test_hypergraph.py
new file mode 100755
index 0000000000..f5c5491284
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_hypergraph.py
@@ -0,0 +1,434 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for hypergraph data structures."""
+
+import pytest
+
+from qsharp.qre.application.magnets import (
+ Hyperedge,
+ Hypergraph,
+ HypergraphEdgeColoring,
+)
+
+
+# Hyperedge tests
+
+
+def test_hyperedge_init_basic():
+ """Test basic Hyperedge initialization."""
+ edge = Hyperedge([0, 1])
+ assert edge.vertices == (0, 1)
+
+
+def test_hyperedge_vertices_sorted():
+ """Test that vertices are automatically sorted."""
+ edge = Hyperedge([3, 1, 2])
+ assert edge.vertices == (1, 2, 3)
+
+
+def test_hyperedge_single_vertex():
+ """Test hyperedge with single vertex (self-loop)."""
+ edge = Hyperedge([5])
+ assert edge.vertices == (5,)
+ assert len(edge.vertices) == 1
+
+
+def test_hyperedge_multiple_vertices():
+ """Test hyperedge with multiple vertices (multi-body interaction)."""
+ edge = Hyperedge([0, 1, 2, 3])
+ assert edge.vertices == (0, 1, 2, 3)
+ assert len(edge.vertices) == 4
+
+
+def test_hyperedge_repr():
+ """Test string representation."""
+ edge = Hyperedge([1, 0])
+ assert repr(edge) == "Hyperedge([0, 1])"
+
+
+def test_hyperedge_empty_vertices():
+ """Test hyperedge with empty vertex list."""
+ edge = Hyperedge([])
+ assert edge.vertices == ()
+ assert len(edge.vertices) == 0
+
+
+def test_hyperedge_duplicate_vertices():
+ """Test that duplicate vertices are removed."""
+ edge = Hyperedge([1, 2, 2, 1, 3])
+ assert edge.vertices == (1, 2, 3)
+
+
+# Hypergraph tests
+
+
+def test_hypergraph_init_basic():
+ """Test basic Hypergraph initialization."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2])]
+ graph = Hypergraph(edges)
+ assert graph.nedges == 2
+ assert graph.nvertices == 3
+
+
+def test_hypergraph_empty_graph():
+ """Test hypergraph with no edges."""
+ graph = Hypergraph([])
+ assert graph.nedges == 0
+ assert graph.nvertices == 0
+
+
+def test_hypergraph_nedges():
+ """Test edge count."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ assert graph.nedges == 3
+
+
+def test_hypergraph_nvertices():
+ """Test vertex count with unique vertices."""
+ edges = [Hyperedge([0, 1]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ assert graph.nvertices == 4
+
+
+def test_hypergraph_nvertices_with_shared_vertices():
+ """Test vertex count when edges share vertices."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([0, 2])]
+ graph = Hypergraph(edges)
+ assert graph.nvertices == 3
+
+
+def test_hypergraph_vertices_iterator():
+ """Test vertices iterator returns sorted vertices."""
+ edges = [Hyperedge([3, 1]), Hyperedge([0, 2])]
+ graph = Hypergraph(edges)
+ vertices = list(graph.vertices())
+ assert vertices == [0, 1, 2, 3]
+
+
+def test_hypergraph_edges_iterator():
+ """Test edges iterator returns all edges."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2])]
+ graph = Hypergraph(edges)
+ edge_list = list(graph.edges())
+ assert len(edge_list) == 2
+
+
+def test_hypergraph_edges_of_color():
+ """Test HypergraphEdgeColoring returns edges with a specific color."""
+ edges = [Hyperedge([0, 1]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ coloring = HypergraphEdgeColoring(graph)
+ coloring.add_edge(edges[0], 0)
+ coloring.add_edge(edges[1], 0)
+ edge_list = list(coloring.edges_of_color(0))
+ assert len(edge_list) == 2
+
+
+def test_hypergraph_edge_coloring_method_returns_coloring():
+ """Test Hypergraph.edge_coloring returns a HypergraphEdgeColoring."""
+ graph = Hypergraph([Hyperedge([0, 1]), Hyperedge([2, 3])])
+ coloring = graph.edge_coloring(seed=42)
+ assert isinstance(coloring, HypergraphEdgeColoring)
+
+
+def test_hypergraph_edge_coloring_stores_supporting_hypergraph():
+ """Test HypergraphEdgeColoring keeps a reference to its Hypergraph."""
+ graph = Hypergraph([Hyperedge([0, 1])])
+ coloring = HypergraphEdgeColoring(graph)
+ assert coloring.hypergraph is graph
+
+
+def test_hypergraph_edge_coloring_rejects_non_hyperedge():
+ """Test add_edge rejects non-Hyperedge values."""
+ graph = Hypergraph([Hyperedge([0, 1])])
+ coloring = HypergraphEdgeColoring(graph)
+
+ with pytest.raises(TypeError, match="edge must be Hyperedge"):
+ coloring.add_edge((0, 1), 0) # type: ignore
+
+
+def test_hypergraph_edge_coloring_rejects_edge_not_in_hypergraph():
+ """Test add_edge rejects Hyperedge values not in the supporting Hypergraph."""
+ graph = Hypergraph([Hyperedge([0, 1])])
+ coloring = HypergraphEdgeColoring(graph)
+
+ with pytest.raises(
+ ValueError, match="edge must belong to the supporting Hypergraph"
+ ):
+ coloring.add_edge(Hyperedge([1, 2]), 0)
+
+
+def test_hypergraph_edge_coloring_rejects_equivalent_edge_not_in_hypergraph():
+ """Test add_edge requires an edge instance from the supporting Hypergraph."""
+ edge = Hyperedge([0, 1])
+ graph = Hypergraph([edge])
+ coloring = HypergraphEdgeColoring(graph)
+
+ with pytest.raises(
+ ValueError, match="edge must belong to the supporting Hypergraph"
+ ):
+ coloring.add_edge(Hyperedge([0, 1]), 0)
+
+
+def test_hypergraph_edge_coloring_color_matches_equivalent_vertices():
+ """Test color lookup uses edge vertex tuples as keys."""
+ edge = Hyperedge([0, 1])
+ graph = Hypergraph([edge])
+ coloring = HypergraphEdgeColoring(graph)
+
+ coloring.add_edge(edge, 3)
+ assert coloring.color((0, 1)) == 3
+
+
+def test_hypergraph_edge_coloring_rejects_negative_color_for_nontrivial_edge():
+ """Test add_edge raises ValueError for negative color on nontrivial edges."""
+ edge = Hyperedge([0, 1])
+ graph = Hypergraph([edge])
+ coloring = HypergraphEdgeColoring(graph)
+
+ with pytest.raises(
+ ValueError, match="Color index must be nonnegative for multi-vertex edges"
+ ):
+ coloring.add_edge(edge, -1)
+
+
+def test_hypergraph_edge_coloring_rejects_conflicting_edge():
+ """Test add_edge raises RuntimeError when same-color edges share a vertex."""
+ edge1 = Hyperedge([0, 1])
+ edge2 = Hyperedge([1, 2])
+ graph = Hypergraph([edge1, edge2])
+ coloring = HypergraphEdgeColoring(graph)
+
+ coloring.add_edge(edge1, 0)
+
+ with pytest.raises(
+ RuntimeError, match="Edge conflicts with existing edge of same color"
+ ):
+ coloring.add_edge(edge2, 0)
+
+
+def test_hypergraph_add_edge():
+ """Test adding an edge to the hypergraph."""
+ graph = Hypergraph([])
+ graph.add_edge(Hyperedge([0, 1]))
+ assert graph.nedges == 1
+ assert graph.nvertices == 2
+
+
+def test_hypergraph_add_edge_with_color():
+ """Test assigning colors via HypergraphEdgeColoring."""
+ graph = Hypergraph([Hyperedge([0, 1])])
+ edge = Hyperedge([2, 3])
+ graph.add_edge(edge)
+ coloring = HypergraphEdgeColoring(graph)
+ coloring.add_edge(edge, color=1)
+ assert graph.nedges == 2
+ assert coloring.color(edge.vertices) == 1
+
+
+def test_hypergraph_color_default():
+ """Test that Hypergraph has no built-in color mapping."""
+ graph = Hypergraph([Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([2, 3])])
+ assert not hasattr(graph, "color")
+
+
+def test_hypergraph_str():
+ """Test string representation."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ expected = "Hypergraph with 4 vertices and 3 edges."
+ assert str(graph) == expected
+
+
+def test_hypergraph_repr():
+ """Test repr representation."""
+ edges = [Hyperedge([0, 1])]
+ graph = Hypergraph(edges)
+ result = repr(graph)
+ assert "Hypergraph" in result
+ assert "Hyperedge" in result
+
+
+def test_hypergraph_single_vertex_edges():
+ """Test hypergraph with self-loop edges."""
+ edges = [Hyperedge([0]), Hyperedge([1]), Hyperedge([2])]
+ graph = Hypergraph(edges)
+ assert graph.nedges == 3
+ assert graph.nvertices == 3
+
+
+def test_hypergraph_mixed_edge_sizes():
+ """Test hypergraph with edges of different sizes."""
+ edges = [
+ Hyperedge([0]), # 1 vertex (self-loop)
+ Hyperedge([1, 2]), # 2 vertices (pair)
+ Hyperedge([3, 4, 5]), # 3 vertices (triple)
+ ]
+ graph = Hypergraph(edges)
+ assert graph.nedges == 3
+ assert graph.nvertices == 6
+
+
+def test_hypergraph_non_contiguous_vertices():
+ """Test hypergraph with non-contiguous vertex indices."""
+ edges = [Hyperedge([0, 10]), Hyperedge([5, 20])]
+ graph = Hypergraph(edges)
+ assert graph.nvertices == 4
+ vertices = list(graph.vertices())
+ assert vertices == [0, 5, 10, 20]
+
+
+# greedyEdgeColoring tests
+
+
+def test_greedy_edge_coloring_empty():
+ """Test greedy edge coloring on empty hypergraph."""
+ graph = Hypergraph([])
+ colored = graph.edge_coloring()
+ assert isinstance(colored, HypergraphEdgeColoring)
+ assert len(list(colored.colors())) == 0
+ assert colored.ncolors == 0
+
+
+def test_greedy_edge_coloring_single_edge():
+ """Test greedy edge coloring with a single edge."""
+ edge = Hyperedge([0, 1])
+ graph = Hypergraph([edge])
+ colored = graph.edge_coloring(seed=42)
+ assert colored.color(edge.vertices) == 0
+ assert colored.ncolors == 1
+
+
+def test_greedy_edge_coloring_non_overlapping():
+ """Test coloring of non-overlapping edges (can share color)."""
+ edges = [Hyperedge([0, 1]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+ # Non-overlapping edges can be in the same color
+ assert colored.color(edges[0].vertices) is not None
+ assert colored.color(edges[1].vertices) is not None
+ assert colored.ncolors == 1
+
+
+def test_greedy_edge_coloring_overlapping():
+ """Test coloring of overlapping edges (need different colors)."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2])]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+ # Overlapping edges need different colors
+ assert colored.color(edges[0].vertices) is not None
+ assert colored.color(edges[1].vertices) is not None
+ assert colored.ncolors == 2
+
+
+def test_greedy_edge_coloring_triangle():
+ """Test coloring of a triangle (3 edges, all pairwise overlapping)."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([0, 2])]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+ # All edges share vertices pairwise, so need 3 colors
+ assert colored.color(edges[0].vertices) is not None
+ assert colored.color(edges[1].vertices) is not None
+ assert colored.color(edges[2].vertices) is not None
+ assert colored.ncolors == 3
+
+
+def test_greedy_edge_coloring_validity():
+ """Test that coloring is valid (no two edges with same color share a vertex)."""
+ edges = [
+ Hyperedge([0, 1]),
+ Hyperedge([1, 2]),
+ Hyperedge([2, 3]),
+ Hyperedge([3, 4]),
+ Hyperedge([0, 4]),
+ ]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+
+ # Group edges by color
+ colors = {}
+ for edge in edges:
+ color = colored.color(edge.vertices)
+ assert color is not None
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge.vertices)
+
+ # Verify each color group has no overlapping edges
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ # No vertex should already be used in this color
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_greedy_edge_coloring_all_edges_colored():
+ """Test that all edges are assigned a color."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([2, 3])]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+
+ # All edges should have a color assigned
+ assert colored.color(edges[0].vertices) is not None
+ assert colored.color(edges[1].vertices) is not None
+ assert colored.color(edges[2].vertices) is not None
+
+
+def test_greedy_edge_coloring_reproducible_with_seed():
+ """Test that coloring is reproducible with the same seed."""
+ edges = [Hyperedge([0, 1]), Hyperedge([1, 2]), Hyperedge([2, 3]), Hyperedge([0, 3])]
+ graph = Hypergraph(edges)
+
+ colored1 = graph.edge_coloring(seed=123)
+ colored2 = graph.edge_coloring(seed=123)
+
+ color_map_1 = {edge.vertices: colored1.color(edge.vertices) for edge in edges}
+ color_map_2 = {edge.vertices: colored2.color(edge.vertices) for edge in edges}
+ assert color_map_1 == color_map_2
+
+
+def test_greedy_edge_coloring_multiple_trials():
+ """Test that multiple trials can find better colorings."""
+ edges = [
+ Hyperedge([0, 1]),
+ Hyperedge([1, 2]),
+ Hyperedge([2, 3]),
+ Hyperedge([3, 0]),
+ ]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42, trials=10)
+ # A cycle of 4 edges can be 2-colored
+ assert colored.ncolors <= 3 # Greedy may not always find optimal
+
+
+def test_greedy_edge_coloring_hyperedges():
+ """Test coloring with multi-vertex hyperedges."""
+ edges = [
+ Hyperedge([0, 1, 2]),
+ Hyperedge([2, 3, 4]),
+ Hyperedge([5, 6, 7]),
+ ]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+
+ # First two share vertex 2, third is independent
+ assert colored.color(edges[0].vertices) is not None
+ assert colored.color(edges[1].vertices) is not None
+ assert colored.color(edges[2].vertices) is not None
+ assert colored.ncolors >= 2
+
+
+def test_greedy_edge_coloring_self_loops():
+ """Test coloring with self-loop edges."""
+ edges = [Hyperedge([0]), Hyperedge([1]), Hyperedge([2])]
+ graph = Hypergraph(edges)
+ colored = graph.edge_coloring(seed=42)
+
+ # Self-loops use the special -1 color and do not contribute to ncolors.
+ assert colored.color(edges[0].vertices) == -1
+ assert colored.color(edges[1].vertices) == -1
+ assert colored.color(edges[2].vertices) == -1
+ assert colored.ncolors == 0
diff --git a/source/pip/tests/qre/magnets/test_lattice1d.py b/source/pip/tests/qre/magnets/test_lattice1d.py
new file mode 100644
index 0000000000..5767b567d7
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_lattice1d.py
@@ -0,0 +1,268 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for 1D lattice data structures."""
+
+from qsharp.qre.application.magnets import (
+ Chain1D,
+ Hypergraph,
+ HypergraphEdgeColoring,
+ Ring1D,
+)
+
+
+def _vertex_color_map(graph) -> dict[tuple[int, ...], int | None]:
+ coloring = graph.edge_coloring()
+ return {edge.vertices: coloring.color(edge.vertices) for edge in graph.edges()}
+
+
+# Chain1D tests
+
+
+def test_chain1d_init_basic():
+ """Test basic Chain1D initialization."""
+ chain = Chain1D(4)
+ assert chain.nvertices == 4
+ assert chain.nedges == 3
+ assert chain.length == 4
+
+
+def test_chain1d_single_vertex():
+ """Test Chain1D with a single vertex (no edges)."""
+ chain = Chain1D(1)
+ assert chain.nvertices == 0
+ assert chain.nedges == 0
+ assert chain.length == 1
+
+
+def test_chain1d_two_vertices():
+ """Test Chain1D with two vertices (one edge)."""
+ chain = Chain1D(2)
+ assert chain.nvertices == 2
+ assert chain.nedges == 1
+
+
+def test_chain1d_edges():
+ """Test that Chain1D creates correct nearest-neighbor edges."""
+ chain = Chain1D(4)
+ edge_vertices = {edge.vertices for edge in chain.edges()}
+ assert edge_vertices == {(0, 1), (1, 2), (2, 3)}
+
+
+def test_chain1d_vertices():
+ """Test that Chain1D vertices are correct."""
+ chain = Chain1D(5)
+ vertices = list(chain.vertices())
+ assert vertices == [0, 1, 2, 3, 4]
+
+
+def test_chain1d_with_self_loops():
+ """Test Chain1D with self-loops enabled."""
+ chain = Chain1D(4, self_loops=True)
+ assert chain.nvertices == 4
+ # 4 self-loops + 3 nearest-neighbor edges = 7
+ assert chain.nedges == 7
+
+
+def test_chain1d_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ chain = Chain1D(3, self_loops=True)
+ edge_vertices = {edge.vertices for edge in chain.edges()}
+ assert edge_vertices == {(0,), (1,), (2,), (0, 1), (1, 2)}
+
+
+def test_chain1d_coloring_without_self_loops():
+ """Test edge coloring without self-loops."""
+ chain = Chain1D(5)
+ color = _vertex_color_map(chain)
+ # Even edges (0-1, 2-3) should have color 0
+ assert color[(0, 1)] == 0
+ assert color[(2, 3)] == 0
+ # Odd edges (1-2, 3-4) should have color 1
+ assert color[(1, 2)] == 1
+ assert color[(3, 4)] == 1
+
+
+def test_chain1d_coloring_with_self_loops():
+ """Test edge coloring with self-loops."""
+ chain = Chain1D(4, self_loops=True)
+ color = _vertex_color_map(chain)
+ # Self-loops should have color -1
+ assert color[(0,)] == -1
+ assert color[(1,)] == -1
+ assert color[(2,)] == -1
+ assert color[(3,)] == -1
+ # Even edges should have color 0, odd edges color 1
+ assert color[(0, 1)] == 0
+ assert color[(1, 2)] == 1
+ assert color[(2, 3)] == 0
+
+
+def test_chain1d_coloring_non_overlapping():
+ """Test that edges with the same color don't share vertices."""
+ chain = Chain1D(6)
+ coloring = chain.edge_coloring()
+ # Group edges by color
+ colors = {}
+ for edge in chain.edges():
+ color = coloring.color(edge.vertices)
+ assert color is not None
+ edge_vertices = edge.vertices
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge_vertices)
+ # Check each color group
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_chain1d_str():
+ """Test string representation."""
+ chain = Chain1D(4)
+ assert "4 vertices" in str(chain)
+ assert "3 edges" in str(chain)
+
+
+# Ring1D tests
+
+
+def test_ring1d_init_basic():
+ """Test basic Ring1D initialization."""
+ ring = Ring1D(4)
+ assert ring.nvertices == 4
+ assert ring.nedges == 4
+ assert ring.length == 4
+
+
+def test_ring1d_two_vertices():
+ """Test Ring1D with two vertices (two edges, same pair)."""
+ ring = Ring1D(2)
+ assert ring.nvertices == 2
+ # Edge 0-1 and edge 1-0 (wrapping), but both are [0,1] after sorting
+ assert ring.nedges == 2
+
+
+def test_ring1d_three_vertices():
+ """Test Ring1D with three vertices (triangle)."""
+ ring = Ring1D(3)
+ assert ring.nvertices == 3
+ assert ring.nedges == 3
+
+
+def test_ring1d_edges():
+ """Test that Ring1D creates correct edges including wrap-around."""
+ ring = Ring1D(4)
+ edge_vertices = {edge.vertices for edge in ring.edges()}
+ assert edge_vertices == {(0, 1), (1, 2), (2, 3), (0, 3)}
+
+
+def test_ring1d_vertices():
+ """Test that Ring1D vertices are correct."""
+ ring = Ring1D(5)
+ vertices = list(ring.vertices())
+ assert vertices == [0, 1, 2, 3, 4]
+
+
+def test_ring1d_with_self_loops():
+ """Test Ring1D with self-loops enabled."""
+ ring = Ring1D(4, self_loops=True)
+ assert ring.nvertices == 4
+ # 4 self-loops + 4 nearest-neighbor edges = 8
+ assert ring.nedges == 8
+
+
+def test_ring1d_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ ring = Ring1D(3, self_loops=True)
+ edge_vertices = {edge.vertices for edge in ring.edges()}
+ assert edge_vertices == {(0,), (1,), (2,), (0, 1), (1, 2), (0, 2)}
+
+
+def test_ring1d_coloring_without_self_loops():
+ """Test edge coloring without self-loops."""
+ ring = Ring1D(4)
+ color = _vertex_color_map(ring)
+ # Even edges should have color 0, odd edges color 1
+ assert color[(0, 1)] == 0
+ assert color[(1, 2)] == 1
+ assert color[(2, 3)] == 0
+ assert color[(0, 3)] == 1 # Wrap-around edge
+
+
+def test_ring1d_coloring_with_self_loops():
+ """Test edge coloring with self-loops."""
+ ring = Ring1D(4, self_loops=True)
+ color = _vertex_color_map(ring)
+ # Self-loops should have color -1
+ assert color[(0,)] == -1
+ assert color[(1,)] == -1
+ assert color[(2,)] == -1
+ assert color[(3,)] == -1
+ # Even edges should have color 0, odd edges color 1
+ assert color[(0, 1)] == 0
+ assert color[(1, 2)] == 1
+ assert color[(2, 3)] == 0
+ assert color[(0, 3)] == 1
+
+
+def test_ring1d_coloring_non_overlapping():
+ """Test that edges with the same color don't share vertices."""
+ ring = Ring1D(6)
+ coloring = ring.edge_coloring()
+ # Group edges by color
+ colors = {}
+ for edge in ring.edges():
+ color = coloring.color(edge.vertices)
+ assert color is not None
+ edge_vertices = edge.vertices
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge_vertices)
+ # Check each color group
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_ring1d_str():
+ """Test string representation."""
+ ring = Ring1D(4)
+ assert "4 vertices" in str(ring)
+ assert "4 edges" in str(ring)
+
+
+def test_ring1d_vs_chain1d_edge_count():
+ """Test that ring has one more edge than chain of same length."""
+ for length in range(2, 10):
+ chain = Chain1D(length)
+ ring = Ring1D(length)
+ assert ring.nedges == chain.nedges + 1
+
+
+def test_chain1d_inherits_hypergraph():
+ """Test that Chain1D is a Hypergraph subclass with all methods."""
+ chain = Chain1D(4)
+ assert isinstance(chain, Hypergraph)
+ # Test inherited methods work
+ assert hasattr(chain, "edges")
+ assert hasattr(chain, "vertices")
+ coloring = chain.edge_coloring()
+ assert isinstance(coloring, HypergraphEdgeColoring)
+ assert hasattr(coloring, "edges_of_color")
+
+
+def test_ring1d_inherits_hypergraph():
+ """Test that Ring1D is a Hypergraph subclass with all methods."""
+ ring = Ring1D(4)
+ assert isinstance(ring, Hypergraph)
+ # Test inherited methods work
+ assert hasattr(ring, "edges")
+ assert hasattr(ring, "vertices")
+ coloring = ring.edge_coloring()
+ assert isinstance(coloring, HypergraphEdgeColoring)
+ assert hasattr(coloring, "edges_of_color")
diff --git a/source/pip/tests/qre/magnets/test_lattice2d.py b/source/pip/tests/qre/magnets/test_lattice2d.py
new file mode 100644
index 0000000000..e4e34574f3
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_lattice2d.py
@@ -0,0 +1,301 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for 2D lattice data structures."""
+
+from qsharp.qre.application.magnets import (
+ Hypergraph,
+ HypergraphEdgeColoring,
+ Patch2D,
+ Torus2D,
+)
+
+
+def _vertex_color_map(graph) -> dict[tuple[int, ...], int | None]:
+ coloring = graph.edge_coloring()
+ return {edge.vertices: coloring.color(edge.vertices) for edge in graph.edges()}
+
+
+# Patch2D tests
+
+
+def test_patch2d_init_basic():
+ """Test basic Patch2D initialization."""
+ patch = Patch2D(3, 2)
+ assert patch.nvertices == 6
+ # 2 horizontal edges per row * 2 rows + 3 vertical edges per column * 1 = 7
+ assert patch.nedges == 7
+ assert patch.width == 3
+ assert patch.height == 2
+
+
+def test_patch2d_single_vertex():
+ """Test Patch2D with a single vertex (no edges)."""
+ patch = Patch2D(1, 1)
+ assert patch.nvertices == 0
+ assert patch.nedges == 0
+ assert patch.width == 1
+ assert patch.height == 1
+
+
+def test_patch2d_single_row():
+ """Test Patch2D with a single row (like Chain1D)."""
+ patch = Patch2D(4, 1)
+ assert patch.nvertices == 4
+ assert patch.nedges == 3 # Only horizontal edges
+
+
+def test_patch2d_single_column():
+ """Test Patch2D with a single column."""
+ patch = Patch2D(1, 4)
+ assert patch.nvertices == 4
+ assert patch.nedges == 3 # Only vertical edges
+
+
+def test_patch2d_square():
+ """Test Patch2D with a square lattice."""
+ patch = Patch2D(3, 3)
+ assert patch.nvertices == 9
+ # 2 horizontal * 3 rows + 3 vertical * 2 = 12
+ assert patch.nedges == 12
+
+
+def test_patch2d_edges():
+ """Test that Patch2D creates correct nearest-neighbor edges."""
+ patch = Patch2D(2, 2)
+ edges = list(patch.edges())
+ # Should have 4 edges: 2 horizontal + 2 vertical
+ assert len(edges) == 4
+ # Vertices: 0=(0,0), 1=(1,0), 2=(0,1), 3=(1,1)
+ # Horizontal: [0,1], [2,3]
+ # Vertical: [0,2], [1,3]
+ edge_sets = [set(e.vertices) for e in edges]
+ assert {0, 1} in edge_sets
+ assert {2, 3} in edge_sets
+ assert {0, 2} in edge_sets
+ assert {1, 3} in edge_sets
+
+
+def test_patch2d_vertices():
+ """Test that Patch2D vertices are correct."""
+ patch = Patch2D(3, 2)
+ vertices = list(patch.vertices())
+ assert vertices == [0, 1, 2, 3, 4, 5]
+
+
+def test_patch2d_with_self_loops():
+ """Test Patch2D with self-loops enabled."""
+ patch = Patch2D(3, 2, self_loops=True)
+ assert patch.nvertices == 6
+ # 6 self-loops + 7 nearest-neighbor edges = 13
+ assert patch.nedges == 13
+
+
+def test_patch2d_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ patch = Patch2D(2, 2, self_loops=True)
+ edge_vertices = {edge.vertices for edge in patch.edges()}
+ assert {(0,), (1,), (2,), (3,)}.issubset(edge_vertices)
+
+
+def test_patch2d_coloring_without_self_loops():
+ """Test edge coloring without self-loops."""
+ patch = Patch2D(4, 4)
+ coloring = patch.edge_coloring()
+ # Should have 4 colors: horizontal even/odd (0,1), vertical even/odd (2,3)
+ assert coloring.ncolors == 4
+
+
+def test_patch2d_coloring_with_self_loops():
+ """Test edge coloring with self-loops."""
+ patch = Patch2D(3, 3, self_loops=True)
+ coloring = patch.edge_coloring()
+ # Self-loops are -1 and do not contribute to ncolors.
+ assert coloring.ncolors == 4
+
+
+def test_patch2d_coloring_non_overlapping():
+ """Test that edges with the same color don't share vertices."""
+ patch = Patch2D(4, 4)
+ coloring = patch.edge_coloring()
+ # Group edges by color
+ colors = {}
+ for edge in patch.edges():
+ color = coloring.color(edge.vertices)
+ assert color is not None
+ edge_vertices = edge.vertices
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge_vertices)
+ # Check each color group
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_patch2d_str():
+ """Test string representation."""
+ patch = Patch2D(3, 2)
+ assert str(patch) == "3x2 lattice patch with 6 vertices and 7 edges"
+
+
+# Torus2D tests
+
+
+def test_torus2d_init_basic():
+ """Test basic Torus2D initialization."""
+ torus = Torus2D(3, 2)
+ assert torus.nvertices == 6
+ # 3 horizontal edges per row * 2 rows + 3 vertical edges per column * 2 = 12
+ assert torus.nedges == 12
+ assert torus.width == 3
+ assert torus.height == 2
+
+
+def test_torus2d_single_vertex():
+ """Test Torus2D with a single vertex (self-edge in both directions)."""
+ torus = Torus2D(1, 1)
+ assert torus.nvertices == 1
+ # One horizontal wrap + one vertical wrap, both connect vertex 0 to itself
+ assert torus.nedges == 2
+
+
+def test_torus2d_single_row():
+ """Test Torus2D with a single row (like Ring1D + vertical wraps)."""
+ torus = Torus2D(4, 1)
+ assert torus.nvertices == 4
+ # 4 horizontal + 4 vertical wraps
+ assert torus.nedges == 8
+
+
+def test_torus2d_single_column():
+ """Test Torus2D with a single column."""
+ torus = Torus2D(1, 4)
+ assert torus.nvertices == 4
+ # 4 horizontal wraps + 4 vertical
+ assert torus.nedges == 8
+
+
+def test_torus2d_square():
+ """Test Torus2D with a square lattice."""
+ torus = Torus2D(3, 3)
+ assert torus.nvertices == 9
+ # 3 horizontal * 3 rows + 3 vertical * 3 columns = 18
+ assert torus.nedges == 18
+
+
+def test_torus2d_edges():
+ """Test that Torus2D creates correct edges including wrap-around."""
+ torus = Torus2D(2, 2)
+ edges = list(torus.edges())
+ # Should have 8 edges: 4 horizontal + 4 vertical
+ assert len(edges) == 8
+ # Vertices: 0=(0,0), 1=(1,0), 2=(0,1), 3=(1,1)
+ edge_sets = [set(e.vertices) for e in edges]
+ # Horizontal edges (including wraps)
+ assert {0, 1} in edge_sets # (0,0)-(1,0)
+ assert {2, 3} in edge_sets # (0,1)-(1,1)
+ # Vertical edges (including wraps)
+ assert {0, 2} in edge_sets # (0,0)-(0,1)
+ assert {1, 3} in edge_sets # (1,0)-(1,1)
+
+
+def test_torus2d_vertices():
+ """Test that Torus2D vertices are correct."""
+ torus = Torus2D(3, 2)
+ vertices = list(torus.vertices())
+ assert vertices == [0, 1, 2, 3, 4, 5]
+
+
+def test_torus2d_with_self_loops():
+ """Test Torus2D with self-loops enabled."""
+ torus = Torus2D(3, 2, self_loops=True)
+ assert torus.nvertices == 6
+ # 6 self-loops + 12 nearest-neighbor edges = 18
+ assert torus.nedges == 18
+
+
+def test_torus2d_self_loops_edges():
+ """Test that self-loop edges are created correctly."""
+ torus = Torus2D(2, 2, self_loops=True)
+ edge_vertices = {edge.vertices for edge in torus.edges()}
+ assert {(0,), (1,), (2,), (3,)}.issubset(edge_vertices)
+
+
+def test_torus2d_coloring_without_self_loops():
+ """Test edge coloring without self-loops."""
+ torus = Torus2D(4, 4)
+ coloring = torus.edge_coloring()
+ # Should have 4 colors: horizontal even/odd (0,1), vertical even/odd (2,3)
+ assert coloring.ncolors == 4
+
+
+def test_torus2d_coloring_with_self_loops():
+ """Test edge coloring with self-loops."""
+ torus = Torus2D(3, 3, self_loops=True)
+ coloring = torus.edge_coloring()
+ # Odd periodic dimensions require dedicated wrap colors.
+ assert coloring.ncolors == 6
+
+
+def test_torus2d_coloring_non_overlapping():
+ """Test that edges with the same color don't share vertices."""
+ torus = Torus2D(4, 4)
+ coloring = torus.edge_coloring()
+ # Group edges by color
+ colors = {}
+ for edge in torus.edges():
+ color = coloring.color(edge.vertices)
+ assert color is not None
+ edge_vertices = edge.vertices
+ if color not in colors:
+ colors[color] = []
+ colors[color].append(edge_vertices)
+ # Check each color group
+ for color, edge_list in colors.items():
+ used_vertices = set()
+ for vertices in edge_list:
+ assert not any(v in used_vertices for v in vertices)
+ used_vertices.update(vertices)
+
+
+def test_torus2d_str():
+ """Test string representation."""
+ torus = Torus2D(3, 2)
+ assert str(torus) == "3x2 lattice torus with 6 vertices and 12 edges"
+
+
+def test_torus2d_vs_patch2d_edge_count():
+ """Test that torus has more edges than patch of same dimensions."""
+ for width in range(2, 5):
+ for height in range(2, 5):
+ patch = Patch2D(width, height)
+ torus = Torus2D(width, height)
+ # Torus has width + height extra edges (wrapping)
+ assert torus.nedges == patch.nedges + width + height
+
+
+def test_patch2d_inherits_hypergraph():
+ """Test that Patch2D is a Hypergraph subclass with all methods."""
+ patch = Patch2D(3, 3)
+ assert isinstance(patch, Hypergraph)
+ # Test inherited methods work
+ assert hasattr(patch, "edges")
+ assert hasattr(patch, "vertices")
+ coloring = patch.edge_coloring()
+ assert isinstance(coloring, HypergraphEdgeColoring)
+ assert hasattr(coloring, "edges_of_color")
+
+
+def test_torus2d_inherits_hypergraph():
+ """Test that Torus2D is a Hypergraph subclass with all methods."""
+ torus = Torus2D(3, 3)
+ assert isinstance(torus, Hypergraph)
+ # Test inherited methods work
+ assert hasattr(torus, "edges")
+ assert hasattr(torus, "vertices")
+ coloring = torus.edge_coloring()
+ assert isinstance(coloring, HypergraphEdgeColoring)
+ assert hasattr(coloring, "edges_of_color")
diff --git a/source/pip/tests/qre/magnets/test_model.py b/source/pip/tests/qre/magnets/test_model.py
new file mode 100755
index 0000000000..74735f2ffc
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_model.py
@@ -0,0 +1,254 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# pyright: reportPrivateImportUsage=false
+
+"""Unit tests for the Model classes."""
+
+from __future__ import annotations
+
+import pytest
+from qsharp.qre.application.magnets import (
+ HeisenbergModel,
+ Hyperedge,
+ Hypergraph,
+ IsingModel,
+ Model,
+ PauliString,
+)
+
+
+def make_chain(length: int) -> Hypergraph:
+ edges = [Hyperedge([i, i + 1]) for i in range(length - 1)]
+ return Hypergraph(edges)
+
+
+def make_chain_with_vertices(length: int) -> Hypergraph:
+ edges = [Hyperedge([i, i + 1]) for i in range(length - 1)]
+ edges.extend([Hyperedge([i]) for i in range(length)])
+ return Hypergraph(edges)
+
+
+class CountingColoringHypergraph(Hypergraph):
+ def __init__(self, edges: list[Hyperedge]):
+ super().__init__(edges)
+ self.edge_coloring_calls = 0
+
+ def edge_coloring(self):
+ self.edge_coloring_calls += 1
+ return super().edge_coloring()
+
+
+def test_model_init_basic():
+ geometry = Hypergraph([Hyperedge([0, 1]), Hyperedge([1, 2])])
+ model = Model(geometry)
+ assert model.geometry is geometry
+ assert model.nqubits == 3
+ assert model.nterms == 0
+ assert model._ops == []
+ assert model._terms == {}
+
+
+def test_model_init_empty_geometry():
+ model = Model(Hypergraph([]))
+ assert model.nqubits == 0
+ assert model.nterms == 0
+
+
+def test_model_add_interaction_basic():
+ edge = Hyperedge([0, 1])
+ model = Model(Hypergraph([edge]))
+ model.add_interaction(edge, "ZZ", -1.5)
+
+ assert len(model._ops) == 1
+ assert model._ops[0] == PauliString.from_qubits((0, 1), "ZZ", -1.5)
+ assert model.nterms == 0
+
+
+def test_model_add_interaction_with_term():
+ edge = Hyperedge([0, 1])
+ model = Model(Hypergraph([edge]))
+ model.add_interaction(edge, "ZZ", -2.0, term=3)
+
+ assert model.nterms == 1
+ assert 3 in model._terms
+ assert model._terms[3] == {0: [0]}
+
+
+def test_model_term_color_query_methods():
+ edge = Hyperedge([0, 1])
+ model = Model(Hypergraph([edge]))
+ model.add_interaction(edge, "ZZ", -1.0, term=1, color=2)
+ model.add_interaction(edge, "XX", -0.5, term=1, color=2)
+ model.add_interaction(edge, "YY", -0.25, term=1, color=3)
+
+ assert model.terms == [1]
+ assert model.ncolors(1) == 2
+ assert set(model.colors(1)) == {2, 3}
+ assert model.nops(1, 2) == 2
+ assert model.nops(1, 3) == 1
+ assert model.ops(1, 2) == [
+ PauliString.from_qubits((0, 1), "ZZ", -1.0),
+ PauliString.from_qubits((0, 1), "XX", -0.5),
+ ]
+ assert model.ops(1, 3) == [PauliString.from_qubits((0, 1), "YY", -0.25)]
+
+
+def test_model_query_methods_raise_for_missing_term_and_color():
+ edge = Hyperedge([0, 1])
+ model = Model(Hypergraph([edge]))
+ model.add_interaction(edge, "ZZ", -1.0, term=0, color=0)
+
+ with pytest.raises(ValueError, match="Term 99 does not exist in the model"):
+ model.ncolors(99)
+ with pytest.raises(ValueError, match="Term 99 does not exist in the model"):
+ model.colors(99)
+ with pytest.raises(ValueError, match="Term 99 does not exist in the model"):
+ model.nops(99, 0)
+ with pytest.raises(ValueError, match="Term 99 does not exist in the model"):
+ model.ops(99, 0)
+
+ with pytest.raises(ValueError, match="Color 7 does not exist in term 0"):
+ model.nops(0, 7)
+ with pytest.raises(ValueError, match="Color 7 does not exist in term 0"):
+ model.ops(0, 7)
+
+
+def test_model_add_interaction_rejects_edge_not_in_geometry():
+ model = Model(Hypergraph([Hyperedge([0, 1])]))
+ with pytest.raises(ValueError, match="Edge is not part of the model geometry"):
+ model.add_interaction(Hyperedge([1, 2]), "ZZ", -1.0)
+
+
+def test_model_str_and_repr():
+ model = Model(make_chain(3))
+ assert "0 terms" in str(model)
+ assert "3 qubits" in str(model)
+ assert repr(model) == str(model)
+
+
+def test_ising_model_basic():
+ geometry = make_chain_with_vertices(3)
+ model = IsingModel(geometry, h=1.0, J=1.0)
+
+ assert isinstance(model, Model)
+ assert model.geometry is geometry
+ assert model.nterms == 2
+ assert set(model._terms.keys()) == {0, 1}
+
+
+def test_ising_model_str_and_repr():
+ geometry = make_chain_with_vertices(3)
+ model = IsingModel(geometry, h=0.5, J=2.0)
+
+ assert str(model) == "Ising model with 2 terms on 3 qubits (h=0.5, J=2.0)."
+ assert repr(model) == "IsingModel(nqubits=3, nterms=2, h=0.5, J=2.0)"
+
+
+def test_heisenberg_model_str_and_repr():
+ geometry = make_chain(3)
+ model = HeisenbergModel(geometry, J=1.5)
+
+ assert str(model) == "Heisenberg model with 3 terms on 3 qubits (J=1.5)."
+ assert repr(model) == "HeisenbergModel(nqubits=3, nterms=3, J=1.5)"
+
+
+def test_ising_model_coloring_matches_geometry_coloring():
+ geometry = make_chain_with_vertices(4)
+ model = IsingModel(geometry, h=1.0, J=1.0)
+ geometry_coloring = geometry.edge_coloring()
+
+ for color, indices in model._terms[1].items():
+ for index in indices:
+ op = model._ops[index]
+ edge_vertices = tuple(sorted(op.qubits))
+ assert geometry_coloring.color(edge_vertices) == color
+
+
+def test_ising_model_initialization_calls_geometry_edge_coloring_once():
+ geometry = CountingColoringHypergraph(
+ [
+ Hyperedge([0, 1]),
+ Hyperedge([1, 2]),
+ Hyperedge([0]),
+ Hyperedge([1]),
+ Hyperedge([2]),
+ ]
+ )
+
+ model = IsingModel(geometry, h=1.0, J=1.0)
+
+ assert isinstance(model, IsingModel)
+ assert geometry.edge_coloring_calls == 1
+
+
+def test_ising_model_coefficients_and_paulis():
+ geometry = make_chain_with_vertices(3)
+ model = IsingModel(geometry, h=0.5, J=2.0)
+
+ ops_by_qubits = {tuple(sorted(op.qubits)): op for op in model._ops}
+
+ assert ops_by_qubits[(0, 1)] == PauliString.from_qubits((0, 1), "ZZ", -2.0)
+ assert ops_by_qubits[(1, 2)] == PauliString.from_qubits((1, 2), "ZZ", -2.0)
+ assert ops_by_qubits[(0,)] == PauliString.from_qubits((0,), "X", -0.5)
+ assert ops_by_qubits[(1,)] == PauliString.from_qubits((1,), "X", -0.5)
+ assert ops_by_qubits[(2,)] == PauliString.from_qubits((2,), "X", -0.5)
+
+
+def test_ising_model_term_grouping_indices():
+ geometry = make_chain_with_vertices(4)
+ model = IsingModel(geometry, h=1.0, J=1.0)
+
+ assert set(model._terms.keys()) == {0, 1}
+ assert all(
+ len(model._ops[index].qubits) == 1
+ for indices in model._terms[0].values()
+ for index in indices
+ )
+ assert all(
+ len(model._ops[index].qubits) == 2
+ for indices in model._terms[1].values()
+ for index in indices
+ )
+
+
+def test_heisenberg_model_basic():
+ geometry = make_chain(3)
+ model = HeisenbergModel(geometry, J=1.0)
+
+ assert isinstance(model, Model)
+ assert model.geometry is geometry
+ assert model.nterms == 3
+ assert set(model._terms.keys()) == {0, 1, 2}
+
+
+def test_heisenberg_model_coefficients_and_paulis():
+ geometry = make_chain(3)
+ model = HeisenbergModel(geometry, J=2.5)
+
+ expected = [
+ PauliString.from_qubits((0, 1), "XX", -2.5),
+ PauliString.from_qubits((1, 2), "XX", -2.5),
+ PauliString.from_qubits((0, 1), "YY", -2.5),
+ PauliString.from_qubits((1, 2), "YY", -2.5),
+ PauliString.from_qubits((0, 1), "ZZ", -2.5),
+ PauliString.from_qubits((1, 2), "ZZ", -2.5),
+ ]
+ for pauli in expected:
+ assert pauli in model._ops
+
+
+def test_heisenberg_model_term_grouping_colors_and_paulis():
+ geometry = make_chain(4)
+ model = HeisenbergModel(geometry, J=1.0)
+
+ paulis_by_term = {0: "XX", 1: "YY", 2: "ZZ"}
+ for term, pauli in paulis_by_term.items():
+ for color, indices in model._terms[term].items():
+ for index in indices:
+ op = model._ops[index]
+ expected = PauliString.from_qubits(
+ tuple(sorted(op.qubits)), pauli, -1.0
+ )
+ assert op == expected
+ assert model.coloring.color(tuple(sorted(op.qubits))) == color
diff --git a/source/pip/tests/qre/magnets/test_pauli.py b/source/pip/tests/qre/magnets/test_pauli.py
new file mode 100644
index 0000000000..77fc84a5da
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_pauli.py
@@ -0,0 +1,124 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for Pauli and PauliString utilities."""
+
+import pytest
+from qsharp.qre.application.magnets import Pauli, PauliString, PauliX, PauliY, PauliZ
+
+cirq = pytest.importorskip("cirq")
+
+
+def test_pauli_init_from_int_and_string():
+ """Test Pauli initialization from int and case-insensitive string labels."""
+ p_i = Pauli(0, qubit=1)
+ p_x = Pauli("x", qubit=2)
+ p_z = Pauli(2, qubit=3)
+ p_y = Pauli("Y", qubit=4)
+
+ assert p_i.op == 0 and p_i.qubit == 1
+ assert p_x.op == 1 and p_x.qubit == 2
+ assert p_z.op == 2 and p_z.qubit == 3
+ assert p_y.op == 3 and p_y.qubit == 4
+
+
+@pytest.mark.parametrize("value", [-1, 4, 42])
+def test_pauli_invalid_int_raises(value: int):
+ """Test invalid integer Pauli identifiers raise ValueError."""
+ with pytest.raises(ValueError, match="Integer value must be 0-3"):
+ Pauli(value)
+
+
+def test_pauli_invalid_string_raises():
+ """Test invalid string Pauli identifiers raise ValueError."""
+ with pytest.raises(ValueError, match="String value must be one of"):
+ Pauli("A")
+
+
+def test_pauli_invalid_type_raises():
+ """Test non-int/non-str Pauli identifiers raise ValueError."""
+ with pytest.raises(ValueError, match="Expected int or str"):
+ Pauli(1.5) # type: ignore
+
+
+def test_pauli_helpers_create_expected_operator():
+ """Test PauliX/PauliY/PauliZ helper constructors."""
+ assert PauliX(0) == Pauli("X", 0)
+ assert PauliY(1) == Pauli("Y", 1)
+ assert PauliZ(2) == Pauli("Z", 2)
+
+
+def test_pauli_cirq_property_returns_operation_on_line_qubit():
+ """Test Pauli.cirq returns a Cirq operation on the target qubit."""
+ q = cirq.LineQubit(3)
+ assert Pauli("I", 3).cirq == cirq.I.on(q)
+ assert Pauli("X", 3).cirq == cirq.X.on(q)
+ assert Pauli("Y", 3).cirq == cirq.Y.on(q)
+ assert Pauli("Z", 3).cirq == cirq.Z.on(q)
+
+
+def test_pauli_string_init_requires_pauli_instances():
+ """Test PauliString initializer validates element types."""
+ with pytest.raises(TypeError, match="Expected Pauli instance"):
+ PauliString([PauliX(0), "Z"]) # type: ignore
+
+
+def test_pauli_string_from_qubits_accepts_string_and_int_values():
+ """Test PauliString.from_qubits accepts both string and int identifiers."""
+ from_string = PauliString.from_qubits((0, 1, 2), "XZY", coefficient=-1j)
+ from_ints = PauliString.from_qubits((0, 1, 2), [1, 2, 3], coefficient=-1j)
+
+ assert from_string == from_ints
+ assert len(from_string) == 3
+ assert from_string.qubits == (0, 1, 2)
+
+
+def test_pauli_string_from_qubits_length_mismatch_raises():
+ """Test from_qubits raises when qubit/value lengths differ."""
+ with pytest.raises(ValueError, match="Length mismatch"):
+ PauliString.from_qubits((0, 1), "XYZ")
+
+
+def test_pauli_string_sequence_protocol_and_indexing():
+ """Test iteration, len, and indexing behavior."""
+ ps = PauliString([PauliX(0), PauliZ(2)], coefficient=2.0)
+
+ assert ps.qubits == (0, 2)
+ assert len(ps) == 2
+ assert ps[0] == PauliX(0)
+ assert list(ps) == [PauliX(0), PauliZ(2)]
+
+
+def test_pauli_string_equality_and_hash_include_coefficient():
+ """Test equality/hash depend on Pauli terms and coefficient."""
+ p1 = PauliString.from_qubits((0, 1), "XZ", coefficient=1.0)
+ p2 = PauliString.from_qubits((0, 1), "XZ", coefficient=1.0)
+ p3 = PauliString.from_qubits((0, 1), "XZ", coefficient=-1.0)
+
+ assert p1 == p2
+ assert hash(p1) == hash(p2)
+ assert p1 != p3
+
+
+def test_pauli_string_mul_scales_coefficient_and_preserves_terms():
+ """Test PauliString.__mul__ returns scaled coefficient with same operators."""
+ ps = PauliString.from_qubits((0, 2), "XZ", coefficient=2.0)
+
+ scaled = ps * (-0.25j)
+
+ assert scaled.qubits == ps.qubits
+ assert list(scaled) == list(ps)
+ assert scaled.coefficient == -0.5j
+ assert ps.coefficient == 2.0
+
+
+def test_pauli_string_cirq_property_preserves_terms_and_coefficient():
+ """Test PauliString.cirq conversion with coefficient."""
+ ps = PauliString.from_qubits((0, 2), "XZ", coefficient=-0.5j)
+
+ expected = cirq.PauliString(
+ {cirq.LineQubit(0): cirq.X, cirq.LineQubit(2): cirq.Z},
+ coefficient=-0.5j,
+ )
+
+ assert ps.cirq == expected
diff --git a/source/pip/tests/qre/magnets/test_trotter.py b/source/pip/tests/qre/magnets/test_trotter.py
new file mode 100644
index 0000000000..e7a5045de5
--- /dev/null
+++ b/source/pip/tests/qre/magnets/test_trotter.py
@@ -0,0 +1,450 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+"""Unit tests for Trotter-Suzuki decomposition classes and factory functions."""
+
+import pytest
+from qsharp.qre.application.magnets import (
+ Hyperedge,
+ Hypergraph,
+ Model,
+ PauliString,
+ TrotterExpansion,
+ TrotterStep,
+ fourth_order_trotter_suzuki,
+ strang_splitting,
+ suzuki_recursion,
+ yoshida_recursion,
+)
+
+
+def make_two_term_model() -> Model:
+ edge = Hyperedge([0, 1])
+ model = Model(Hypergraph([edge]))
+ model.add_interaction(edge, "ZZ", -2.0, term=0, color=0)
+ model.add_interaction(edge, "XX", -0.5, term=1, color=0)
+ return model
+
+
+# TrotterStep tests
+
+
+def test_trotter_step_empty_init():
+ """Test that TrotterStep initializes as empty."""
+ trotter = TrotterStep()
+ assert trotter.nterms == 0
+ assert trotter.time_step == 0.0
+ assert trotter.order == 0
+ assert list(trotter.step()) == []
+
+
+def test_trotter_step_reduce_combines_consecutive():
+ """Test that reduce combines consecutive same-term entries."""
+ trotter = TrotterStep()
+ trotter.terms = [(0.5, 0), (0.5, 0), (0.5, 1)]
+ trotter.reduce()
+ assert list(trotter.step()) == [(1.0, 0), (0.5, 1)]
+
+
+def test_trotter_step_reduce_no_change_when_different():
+ """Test that reduce does not change non-consecutive same terms."""
+ trotter = TrotterStep()
+ trotter.terms = [(0.5, 0), (0.5, 1), (0.5, 0)]
+ trotter.reduce()
+ assert list(trotter.step()) == [(0.5, 0), (0.5, 1), (0.5, 0)]
+
+
+def test_trotter_step_reduce_empty():
+ """Test that reduce handles empty terms."""
+ trotter = TrotterStep()
+ trotter.reduce()
+ assert list(trotter.step()) == []
+
+
+# first-order TrotterStep constructor tests
+
+
+def test_trotter_step_from_explicit_terms_basic():
+ """Test basic TrotterStep creation from explicit term indices."""
+ trotter = TrotterStep(terms=[0, 1, 2], time_step=0.5)
+ assert trotter.nterms == 3
+ assert trotter.time_step == 0.5
+ assert trotter.order == 1
+
+
+def test_trotter_step_first_order_single_term():
+ """Test TrotterStep with a single explicit term."""
+ trotter = TrotterStep(terms=[7], time_step=1.0)
+ result = list(trotter.step())
+ assert result == [(1.0, 7)]
+
+
+def test_trotter_step_first_order_multiple_terms():
+ """Test TrotterStep with multiple explicit terms."""
+ trotter = TrotterStep(terms=[0, 1, 2], time_step=0.5)
+ result = list(trotter.step())
+ assert result == [(0.5, 0), (0.5, 1), (0.5, 2)]
+
+
+def test_trotter_step_first_order_zero_time():
+ """Test TrotterStep with zero time."""
+ trotter = TrotterStep(terms=[0, 1], time_step=0.0)
+ result = list(trotter.step())
+ assert result == [(0.0, 0), (0.0, 1)]
+
+
+def test_trotter_step_first_order_returns_all_terms():
+ """Test that TrotterStep returns all provided term indices in order."""
+ terms = [2, 4, 7, 11, 15]
+ trotter = TrotterStep(terms=terms, time_step=1.0)
+ result = list(trotter.step())
+ assert len(result) == len(terms)
+ term_indices = [idx for _, idx in result]
+ assert term_indices == terms
+
+
+def test_trotter_step_first_order_uniform_time():
+ """Test that all entries have the same configured time."""
+ time = 0.25
+ trotter = TrotterStep(terms=[0, 1, 2, 3], time_step=time)
+ result = list(trotter.step())
+ for t, _ in result:
+ assert t == time
+
+
+def test_trotter_step_first_order_str():
+ """Test string representation of TrotterStep."""
+ trotter = TrotterStep(terms=[0, 1, 2], time_step=0.5)
+ result = str(trotter)
+ assert "order" in result.lower() or "1" in result
+
+
+def test_trotter_step_first_order_repr():
+ """Test repr representation of TrotterStep."""
+ trotter = TrotterStep(terms=[0, 1, 2], time_step=0.5)
+ assert "TrotterStep" in repr(trotter)
+
+
+# strang_splitting factory tests
+
+
+def test_strang_splitting_basic():
+ """Test basic strang_splitting creation."""
+ strang = strang_splitting(terms=[0, 1, 2], time=0.5)
+ assert strang.nterms == 3
+ assert strang.time_step == 0.5
+ assert strang.order == 2
+
+
+def test_strang_splitting_single_term():
+ """Test strang_splitting with a single term."""
+ strang = strang_splitting(terms=[0], time=1.0)
+ result = list(strang.step())
+ # Single term: just full time on term 0
+ assert result == [(1.0, 0)]
+
+
+def test_strang_splitting_two_terms():
+ """Test strang_splitting with two terms."""
+ strang = strang_splitting(terms=[0, 1], time=1.0)
+ result = list(strang.step())
+ # Forward: half on term 0, full on term 1, backward: half on term 0
+ assert result == [(0.5, 0), (1.0, 1), (0.5, 0)]
+
+
+def test_strang_splitting_three_terms():
+ """Test strang_splitting with three terms (example from docstring)."""
+ strang = strang_splitting(terms=[0, 1, 2], time=0.5)
+ result = list(strang.step())
+ expected = [(0.25, 0), (0.25, 1), (0.5, 2), (0.25, 1), (0.25, 0)]
+ assert result == expected
+
+
+def test_strang_splitting_symmetric():
+ """Test that strang_splitting produces symmetric sequence."""
+ strang = strang_splitting(terms=[0, 1, 2, 3], time=1.0)
+ result = list(strang.step())
+ # Check symmetry: term indices should be palindromic
+ term_indices = [idx for _, idx in result]
+ assert term_indices == term_indices[::-1]
+
+
+def test_strang_splitting_time_sum():
+ """Test that total time in strang_splitting equals expected value."""
+ time = 1.0
+ terms = [0, 1, 2]
+ strang = strang_splitting(terms=terms, time=time)
+ result = list(strang.step())
+ total_time = sum(t for t, _ in result)
+ # Each term appears once with full time equivalent
+ # (half + half for outer terms, full for middle)
+ assert abs(total_time - time * len(terms)) < 1e-10
+
+
+def test_strang_splitting_middle_term_full_time():
+ """Test that the middle term gets full time step."""
+ strang = strang_splitting(terms=[0, 1, 2, 3, 4], time=2.0)
+ result = list(strang.step())
+ # Middle term (index 4, the last term) should have full time
+ middle_entries = [(t, idx) for t, idx in result if idx == 4]
+ assert len(middle_entries) == 1
+ assert middle_entries[0][0] == 2.0
+
+
+def test_strang_splitting_outer_terms_half_time():
+ """Test that outer terms get half time steps."""
+ strang = strang_splitting(terms=[0, 1, 2, 3], time=2.0)
+ result = list(strang.step())
+ # Term 0 should appear twice with half time each
+ term_0_entries = [(t, idx) for t, idx in result if idx == 0]
+ assert len(term_0_entries) == 2
+ for t, _ in term_0_entries:
+ assert t == 1.0
+
+
+def test_strang_splitting_repr():
+ """Test repr representation of strang_splitting result."""
+ strang = strang_splitting(terms=[0, 1, 2], time=0.5)
+ assert "StrangSplitting" in repr(strang)
+
+
+# suzuki_recursion tests
+
+
+def test_suzuki_recursion_from_strang():
+ """Test Suzuki recursion applied to Strang splitting produces 4th order."""
+ strang = strang_splitting(terms=[0, 1], time=1.0)
+ suzuki = suzuki_recursion(strang)
+ assert suzuki.order == 4
+ assert suzuki.nterms == 2
+ assert suzuki.time_step == 1.0
+
+
+def test_suzuki_recursion_from_first_order():
+ """Test Suzuki recursion applied to first-order Trotter produces 3rd order."""
+ trotter = TrotterStep(terms=[0, 1], time_step=1.0)
+ suzuki = suzuki_recursion(trotter)
+ assert suzuki.order == 3
+ assert suzuki.nterms == 2
+
+
+def test_suzuki_recursion_preserves_nterms():
+ """Test that Suzuki recursion preserves number of terms."""
+ base = strang_splitting(terms=[0, 1, 2, 3, 4], time=0.5)
+ suzuki = suzuki_recursion(base)
+ assert suzuki.nterms == base.nterms
+
+
+def test_suzuki_recursion_preserves_time_step():
+ """Test that Suzuki recursion preserves time step."""
+ base = strang_splitting(terms=[0, 1, 2], time=0.75)
+ suzuki = suzuki_recursion(base)
+ assert suzuki.time_step == base.time_step
+
+
+def test_suzuki_recursion_repr():
+ """Test repr of Suzuki recursion result."""
+ base = strang_splitting(terms=[0, 1], time=1.0)
+ suzuki = suzuki_recursion(base)
+ assert "SuzukiRecursion" in repr(suzuki)
+
+
+def test_suzuki_recursion_time_weights_sum():
+ """Test that time weights in Suzuki recursion sum correctly."""
+ base = TrotterStep(terms=[0, 1], time_step=1.0)
+ suzuki = suzuki_recursion(base)
+ # The total scaled time should equal the original total time * nterms
+ # because we're scaling times, not adding them
+ result = list(suzuki.step())
+ total_time = sum(t for t, _ in result)
+ # For Suzuki: 5 copies scaled by p, p, (1-4p), p, p
+ # where weights sum to 4p + (1-4p) = 1, so total = base total
+ base_total = sum(t for t, _ in base.step())
+ assert abs(total_time - base_total) < 1e-10
+
+
+# yoshida_recursion tests
+
+
+def test_yoshida_recursion_from_strang():
+ """Test Yoshida recursion applied to Strang splitting produces 4th order."""
+ strang = strang_splitting(terms=[0, 1], time=1.0)
+ yoshida = yoshida_recursion(strang)
+ assert yoshida.order == 4
+ assert yoshida.nterms == 2
+ assert yoshida.time_step == 1.0
+
+
+def test_yoshida_recursion_from_first_order():
+ """Test Yoshida recursion applied to first-order Trotter produces 3rd order."""
+ trotter = TrotterStep(terms=[0, 1], time_step=1.0)
+ yoshida = yoshida_recursion(trotter)
+ assert yoshida.order == 3
+ assert yoshida.nterms == 2
+
+
+def test_yoshida_recursion_preserves_nterms():
+ """Test that Yoshida recursion preserves number of terms."""
+ base = strang_splitting(terms=[0, 1, 2, 3, 4], time=0.5)
+ yoshida = yoshida_recursion(base)
+ assert yoshida.nterms == base.nterms
+
+
+def test_yoshida_recursion_preserves_time_step():
+ """Test that Yoshida recursion preserves time step."""
+ base = strang_splitting(terms=[0, 1, 2], time=0.75)
+ yoshida = yoshida_recursion(base)
+ assert yoshida.time_step == base.time_step
+
+
+def test_yoshida_recursion_repr():
+ """Test repr of Yoshida recursion result."""
+ base = strang_splitting(terms=[0, 1], time=1.0)
+ yoshida = yoshida_recursion(base)
+ assert "YoshidaRecursion" in repr(yoshida)
+
+
+def test_yoshida_recursion_time_weights_sum():
+ """Test that time weights in Yoshida recursion sum correctly."""
+ base = TrotterStep(terms=[0, 1], time_step=1.0)
+ yoshida = yoshida_recursion(base)
+ # The total scaled time should equal the original total time * nterms
+ # because weights w1 + w0 + w1 = 2*w1 + w0 = 2*w1 + (1 - 2*w1) = 1
+ result = list(yoshida.step())
+ total_time = sum(t for t, _ in result)
+ base_total = sum(t for t, _ in base.step())
+ assert abs(total_time - base_total) < 1e-10
+
+
+def test_yoshida_fewer_terms_than_suzuki():
+ """Test that Yoshida produces fewer terms than Suzuki (3x vs 5x)."""
+ base = strang_splitting(terms=[0, 1, 2], time=1.0)
+ suzuki = suzuki_recursion(base)
+ yoshida = yoshida_recursion(base)
+ # Yoshida uses 3 copies, Suzuki uses 5 copies
+ # After reduction, Yoshida should generally have fewer terms
+ assert len(list(yoshida.step())) <= len(list(suzuki.step()))
+
+
+# fourth_order_trotter_suzuki tests
+
+
+def test_fourth_order_trotter_suzuki_basic():
+ """Test fourth_order_trotter_suzuki factory function."""
+ fourth = fourth_order_trotter_suzuki(terms=[0, 1], time=1.0)
+ assert fourth.order == 4
+ assert fourth.nterms == 2
+ assert fourth.time_step == 1.0
+
+
+def test_fourth_order_trotter_suzuki_equals_suzuki_of_strang():
+ """Test that fourth_order_trotter_suzuki equals suzuki_recursion(strang_splitting)."""
+ fourth = fourth_order_trotter_suzuki(terms=[0, 1, 2], time=0.5)
+ manual = suzuki_recursion(strang_splitting(terms=[0, 1, 2], time=0.5))
+ assert list(fourth.step()) == list(manual.step())
+ assert fourth.order == manual.order
+
+
+# TrotterExpansion tests
+
+
+def test_trotter_expansion_order_property():
+ """Test TrotterExpansion order property."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(strang_splitting, model, time=1.0, num_steps=4)
+ assert expansion.order == 2
+
+
+def test_trotter_expansion_nterms_property():
+ """Test TrotterExpansion nterms property."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.0, num_steps=4)
+ assert expansion.nterms == 2
+
+
+def test_trotter_expansion_num_steps_property():
+ """Test TrotterExpansion num_steps property."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.0, num_steps=8)
+ assert expansion.nsteps == 8
+
+
+def test_trotter_expansion_total_time_property():
+ """Test TrotterExpansion total_time property."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.0, num_steps=4)
+ assert expansion.total_time == 1.0
+
+
+def test_trotter_expansion_step_iterator():
+ """Test TrotterExpansion.step() yields scaled PauliStrings."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.2, num_steps=3)
+ result = list(expansion.step())
+
+ # dt = 1.2 / 3 = 0.4 and model terms are 0->ZZ(-2.0), 1->XX(-0.5)
+ expected = [
+ ((0, 1), "ZZ", -0.8),
+ ((0, 1), "XX", -0.2),
+ ((0, 1), "ZZ", -0.8),
+ ((0, 1), "XX", -0.2),
+ ((0, 1), "ZZ", -0.8),
+ ((0, 1), "XX", -0.2),
+ ]
+ assert len(result) == len(expected)
+ for op, (qubits, paulis, coefficient) in zip(result, expected):
+ assert op.qubits == qubits
+ assert op.paulis == paulis
+ assert op.coefficient == pytest.approx(coefficient)
+
+
+def test_trotter_expansion_step_iterator_with_strang():
+ """Test TrotterExpansion.step() with Strang splitting schedule."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(strang_splitting, model, time=2.0, num_steps=2)
+ result = list(expansion.step())
+
+ # dt = 1.0; one Strang step over terms [0,1] is:
+ # (0.5,0), (1.0,1), (0.5,0)
+ expected_single = [
+ PauliString.from_qubits((0, 1), "ZZ", -1.0),
+ PauliString.from_qubits((0, 1), "XX", -0.5),
+ PauliString.from_qubits((0, 1), "ZZ", -1.0),
+ ]
+ expected = expected_single * 2
+ assert result == expected
+
+
+def test_trotter_expansion_str():
+ """Test TrotterExpansion string representation."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(strang_splitting, model, time=1.0, num_steps=4)
+ result = str(expansion)
+ assert "order=2" in result
+ assert "num_steps=4" in result
+ assert "total_time=1.0" in result
+ assert "num_terms=2" in result
+
+
+def test_trotter_expansion_repr():
+ """Test TrotterExpansion repr representation."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.0, num_steps=4)
+ result = repr(expansion)
+ assert "TrotterExpansion" in result
+ assert "num_steps=4" in result
+
+
+def test_trotter_expansion_cirq_repetitions():
+ """Test that TrotterExpansion.cirq repeats one-step circuit num_steps times."""
+ model = make_two_term_model()
+ expansion = TrotterExpansion(TrotterStep, model, time=1.0, num_steps=5)
+
+ op = expansion.cirq()
+ assert op.repetitions == 5
+
+
+def test_strang_splitting_rejects_empty_terms():
+ """Test strang_splitting raises for empty term list."""
+ with pytest.raises(IndexError):
+ strang_splitting([], time=1.0)
diff --git a/source/pip/tests/qre/test_interop.py b/source/pip/tests/qre/test_interop.py
index 99416d6bb7..e1b33ddac4 100644
--- a/source/pip/tests/qre/test_interop.py
+++ b/source/pip/tests/qre/test_interop.py
@@ -237,8 +237,7 @@ def test_qsharp_from_string():
def test_qsharp_from_callable():
- qsharp.eval(
- """
+ qsharp.eval("""
operation Test(numTs: Int) : Unit {{
use (a, b, c) = (Qubit(), Qubit(), Qubit());
for i in 1..numTs {{
@@ -247,8 +246,7 @@ def test_qsharp_from_callable():
CCNOT(a, b, c);
Rz(1.2345, a);
}}
- """
- )
+ """)
for num_ts in range(1, 6):
app = QSharpApplication(qsharp.code.Test, args=(num_ts,)) # type: ignore
diff --git a/source/pip/tests/qre/test_isa.py b/source/pip/tests/qre/test_isa.py
index e8fda19f29..2953838437 100644
--- a/source/pip/tests/qre/test_isa.py
+++ b/source/pip/tests/qre/test_isa.py
@@ -15,7 +15,7 @@
from qsharp.qre.models import SurfaceCode, GateBased
from qsharp.qre._architecture import _make_instruction
from qsharp.qre.instruction_ids import CCX, CCZ, LATTICE_SURGERY, T
-from qsharp.qre.property_keys import DISTANCE
+from qsharp.qre.property_keys import ACCELERATION, ATOM_SPACING, DISTANCE, VELOCITY
def test_isa():
@@ -128,6 +128,9 @@ def test_instruction_constraints():
def test_property_names():
"""Test property name lookup and case-insensitive key resolution."""
assert property_name(DISTANCE) == "DISTANCE"
+ assert property_name(ACCELERATION) == "ACCELERATION"
+ assert property_name(ATOM_SPACING) == "ATOM_SPACING"
+ assert property_name(VELOCITY) == "VELOCITY"
# An unregistered property
UNKNOWN = 10_000
@@ -139,9 +142,15 @@ def test_property_names():
assert property_name(UNKNOWN) == "DISTANCE"
assert property_name_to_key("DISTANCE") == DISTANCE
+ assert property_name_to_key("ACCELERATION") == ACCELERATION
+ assert property_name_to_key("ATOM_SPACING") == ATOM_SPACING
+ assert property_name_to_key("VELOCITY") == VELOCITY
# But we also allow case-insensitive lookup
assert property_name_to_key("distance") == DISTANCE
+ assert property_name_to_key("acceleration") == ACCELERATION
+ assert property_name_to_key("atom_spacing") == ATOM_SPACING
+ assert property_name_to_key("velocity") == VELOCITY
def test_block_linear_function():
diff --git a/source/pip/tests/qre/test_models.py b/source/pip/tests/qre/test_models.py
index 46b236afb0..681a1bde01 100644
--- a/source/pip/tests/qre/test_models.py
+++ b/source/pip/tests/qre/test_models.py
@@ -11,6 +11,7 @@
CZ,
H,
MEAS_Z,
+ PHYSICAL_MOVE,
MEAS_X,
MEAS_XX,
MEAS_ZZ,
@@ -19,6 +20,9 @@
PREP_Z,
LATTICE_SURGERY,
MEMORY,
+ MEAS_RESET_Z,
+ RZ,
+ SQRT_X,
SQRT_SQRT_X,
SQRT_SQRT_X_DAG,
SQRT_SQRT_Y,
@@ -29,15 +33,22 @@
from qsharp.qre.models import (
GateBased,
Majorana,
+ NeutralAtom,
RoundBasedFactory,
MagicUpToClifford,
Litinski19Factory,
SurfaceCode,
+ SurfaceCodeLowMove,
ThreeAux,
TwoDimensionalYokedSurfaceCode,
)
-from qsharp.qre.property_keys import DISTANCE
-
+from qsharp.qre.property_keys import (
+ ACCELERATION,
+ ATOM_SPACING,
+ CODE_CYCLE_TIME,
+ DISTANCE,
+ VELOCITY,
+)
# ---------------------------------------------------------------------------
# GateBased architecture tests
@@ -178,6 +189,66 @@ def test_two_qubit_measurement_arities(self):
assert isa[MEAS_ZZ].arity == 2
+# ---------------------------------------------------------------------------
+# NeutralAtom architecture tests
+# ---------------------------------------------------------------------------
+
+
+class TestNeutralAtom:
+ def test_default_parameters(self):
+ arch = NeutralAtom()
+
+ assert arch.rydberg_time == 500
+ assert arch.rydberg_error == 1e-3
+ assert arch.one_qubit_time == 1000
+ assert arch.one_qubit_error == 1e-4
+ assert arch.measurement_time == 10000
+ assert arch.measurement_error == 1e-4
+ assert arch.handoff_time == 0
+ assert arch.atom_spacing == 3
+ assert arch.max_velocity == 1
+ assert arch.max_acceleration == 5000
+
+ def test_provided_isa_contains_expected_instructions(self):
+ arch = NeutralAtom()
+ isa = arch.context().isa
+
+ for instr_id in [
+ RZ,
+ T,
+ SQRT_X,
+ H,
+ CZ,
+ CNOT,
+ MEAS_Z,
+ MEAS_RESET_Z,
+ PHYSICAL_MOVE,
+ ]:
+ assert instr_id in isa
+
+ def test_rz_is_free(self):
+ arch = NeutralAtom()
+ isa = arch.context().isa
+
+ assert isa[RZ].expect_time() == 0
+ assert isa[RZ].expect_error_rate() == 0.0
+
+ def test_physical_move_has_motion_properties(self):
+ arch = NeutralAtom(atom_spacing=8, max_velocity=17, max_acceleration=9000)
+ isa = arch.context().isa
+ move = isa[PHYSICAL_MOVE]
+
+ assert move.get_property(ATOM_SPACING) == 8
+ assert move.get_property(VELOCITY) == 17
+ assert move.get_property(ACCELERATION) == 9000
+
+ def test_physical_move_has_expected_time(self):
+ arch = NeutralAtom(atom_spacing=8, handoff_time=17)
+ isa = arch.context().isa
+
+ assert isa[PHYSICAL_MOVE].expect_time() == 34
+
+
# ---------------------------------------------------------------------------
# SurfaceCode QEC tests
# ---------------------------------------------------------------------------
@@ -302,6 +373,36 @@ def test_custom_error_correction_threshold(self):
assert error_low > error_high
+class TestSurfaceCodeLowMove:
+ def test_required_isa_is_satisfied_by_neutral_atom(self):
+ arch = NeutralAtom()
+
+ assert arch.context().isa.satisfies(SurfaceCodeLowMove.required_isa())
+
+ def test_provides_lattice_surgery(self):
+ arch = NeutralAtom()
+ ctx = arch.context()
+ sc = SurfaceCodeLowMove(distance=3)
+
+ isas = list(sc.provided_isa(ctx.isa, ctx))
+
+ assert len(isas) == 1
+ assert LATTICE_SURGERY in isas[0]
+ assert isas[0][LATTICE_SURGERY].encoding == LOGICAL
+
+ def test_time_scales_from_code_cycle_time(self):
+ arch = NeutralAtom()
+ ctx = arch.context()
+ sc = SurfaceCodeLowMove(distance=3)
+
+ lattice_surgery = list(sc.provided_isa(ctx.isa, ctx))[0][LATTICE_SURGERY]
+
+ assert lattice_surgery.get_property(CODE_CYCLE_TIME) > 0
+ assert lattice_surgery.expect_time(1) == (
+ lattice_surgery.get_property(CODE_CYCLE_TIME) * sc.distance
+ )
+
+
# ---------------------------------------------------------------------------
# ThreeAux QEC tests
# ---------------------------------------------------------------------------
diff --git a/source/qdk_package/src/qdk/qre/__init__.py b/source/qdk_package/src/qdk/qre/__init__.py
new file mode 100644
index 0000000000..59fcc4cd8e
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/__init__.py
@@ -0,0 +1,23 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre package: re-export of qsharp.qre namespaces.
+
+Requires optional extra installation: `pip install qdk[qre]`.
+
+Usage examples:
+ from qdk import qre
+ results = qre.estimate(app, arch, isa_query)
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre names.
+ from qsharp.qre import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre requires the qre extra. Install with 'pip install qdk[qre]'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/application/__init__.py b/source/qdk_package/src/qdk/qre/application/__init__.py
new file mode 100644
index 0000000000..f41d8b0b26
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/application/__init__.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.application package: re-export of qsharp.qre.application symbols.
+
+Requires installation: ``pip install \"qdk[qre]\"``.
+
+Example:
+ from qdk.qre.application import QSharpApplication
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.application names.
+ from qsharp.qre.application import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.application requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/application/magnets.py b/source/qdk_package/src/qdk/qre/application/magnets.py
new file mode 100644
index 0000000000..ec1318651d
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/application/magnets.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.application.magnets package: re-export of qsharp.qre.application.magnets symbols.
+
+Requires installation: ``pip install \"qdk[qre]\"``.
+
+Example:
+ from qdk.qre.application.magnets import IsingModel
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.application.magnets names.
+ from qsharp.qre.application.magnets import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.application.magnets requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/instruction_ids.py b/source/qdk_package/src/qdk/qre/instruction_ids.py
new file mode 100644
index 0000000000..39e9b916ee
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/instruction_ids.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.instruction_ids package: re-export of qsharp.qre.instruction_ids symbols.
+
+Requires installation: ``pip install "qdk[qre]"``.
+
+Example:
+ from qdk.qre.instruction_ids import *
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.instruction_ids names.
+ from qsharp.qre.instruction_ids import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.instruction_ids requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/interop.py b/source/qdk_package/src/qdk/qre/interop.py
new file mode 100644
index 0000000000..7e7637bc69
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/interop.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.interop package: re-export of qsharp.qre.interop symbols.
+
+Requires installation: ``pip install "qdk[qre]"``.
+
+Example:
+ from qdk.qre.interop import trace_from_qir
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.interop names.
+ from qsharp.qre.interop import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.interop requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/models.py b/source/qdk_package/src/qdk/qre/models.py
new file mode 100644
index 0000000000..8ddf1a61f1
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/models.py
@@ -0,0 +1,22 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.models package: re-export of qsharp.qre.models symbols.
+
+Requires installation: ``pip install "qdk[qre]"``.
+
+Example:
+ from qdk.qre.models import SurfaceCode
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.models names.
+ from qsharp.qre.models import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.models requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
diff --git a/source/qdk_package/src/qdk/qre/property_keys.py b/source/qdk_package/src/qdk/qre/property_keys.py
new file mode 100644
index 0000000000..2d2641194f
--- /dev/null
+++ b/source/qdk_package/src/qdk/qre/property_keys.py
@@ -0,0 +1,41 @@
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+
+# flake8: noqa F403
+# pyright: ignore[reportWildcardImportFromLibrary]
+
+"""qdk.qre.property_keys package: re-export of qsharp.qre.property_keys symbols.
+
+Requires installation: ``pip install "qdk[qre]"``.
+
+Example:
+ from qdk.qre.property_keys import *
+
+"""
+
+try:
+ # Re-export the top-level qsharp.qre.property_keys names.
+ from qsharp.qre.property_keys import *
+except Exception as ex:
+ raise ImportError(
+ "qdk.qre.property_keys requires the qre extras. Install with 'pip install \"qdk[qre]\"'."
+ ) from ex
+
+# Some starting index for custom properties, to avoid conflicts with the
+# built-in ones. We do not expect to have more than 1 million built-in
+# properties anytime soon.
+CUSTOM_PROPERTY: int = 1_000_000
+
+
+def custom_property(index: int) -> int:
+ """Returns a custom property key for the given index."""
+ if index < 0:
+ raise ValueError("Custom property index must be non-negative.")
+ return CUSTOM_PROPERTY + index
+
+
+def custom_properties(count: int) -> list[int]:
+ """Returns a list of custom property keys for the given count."""
+ if count < 0:
+ raise ValueError("Custom property count must be non-negative.")
+ return [custom_property(i) for i in range(count)]
diff --git a/source/qre/src/isa/property_keys.rs b/source/qre/src/isa/property_keys.rs
index 96dcf664bd..952d1bfcff 100644
--- a/source/qre/src/isa/property_keys.rs
+++ b/source/qre/src/isa/property_keys.rs
@@ -50,6 +50,8 @@ define_properties! {
SURFACE_CODE_ONE_QUBIT_TIME_FACTOR,
SURFACE_CODE_TWO_QUBIT_TIME_FACTOR,
ACCELERATION,
+ ATOM_SPACING,
+ VELOCITY,
NUM_TS_PER_ROTATION,
RUNTIME_SINGLE_SHOT,
EXPECTED_SHOTS,