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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namequbitsruntimeerrorcompute_distancecompute qubitsnum_ts_per_rotationfactoriescycle_time
0MyPlatform3024500 days 00:31:36.3454230.00700221284563191×T48300
1MyPlatform3076430 days 00:18:30.4725450.00542621284563192×T48300
2MyPlatform3191830 days 00:12:14.6202990.00467221284563193×T48300
3MyPlatform3252030 days 00:04:53.6854130.00971019232883198×T43700
4MyPlatform3367430 days 00:04:22.7711590.00902419232883199×T43700
5MyPlatform3482830 days 00:03:51.8569050.008339192328831910×T43700
6MyPlatform3598230 days 00:03:20.9426510.007653192328831911×T43700
7MyPlatform3829030 days 00:02:50.0283970.006968192328831913×T43700
8MyPlatform4175230 days 00:02:19.1141430.006282192328831916×T43700
9MyPlatform4752230 days 00:01:48.1998890.005597192328831921×T43700
10MyPlatform5675430 days 00:01:17.2856350.004911192328831929×T43700
11MyPlatform6799030 days 00:01:15.8413500.009763192328831831×T43700
12MyPlatform7637230 days 00:00:45.5048100.009878192328831846×T43700
13MyPlatform16151270 days 00:00:19.9582500.0088692540342718105×T57500
14MyPlatform16569710 days 00:00:18.3615900.0088722334141118114×T52900
15MyPlatform17270630 days 00:00:16.7649300.0089022128456318125×T48300
16MyPlatform18254030 days 00:00:15.1682700.0092051923288318138×T43700
17MyPlatform20327710 days 00:00:13.8300610.0066251718637119160×T39100
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namequbitsruntimeerrorcompute_distancecompute qubitsnum_ts_per_rotationfactoriescycle_time
0Majorana e-5, 3-aux2826940 days 00:00:00.2260880.001483111106301676×T59000
1Majorana e-5, 3-aux3234460 days 00:00:00.1839360.001483111106301694×T48000
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namequbitsruntimeerrorcompute_distancecompute qubitsnum_ts_per_rotationfactories
0new Majorana e-5, 3-aux1174220 days 00:00:05.4432000.00528811110630153×T
1new Majorana e-5, 3-aux1189610 days 00:00:05.0803200.00528811110630153×T
2new Majorana e-5, 3-aux1196860 days 00:00:04.1731200.00528811110630154×T
3new Majorana e-5, 3-aux1217380 days 00:00:03.7913400.00528811110630154×T
4new Majorana e-5, 3-aux1219500 days 00:00:03.2659200.00528811110630155×T
5new Majorana e-5, 3-aux1242140 days 00:00:02.7216000.00528811110630156×T
6new Majorana e-5, 3-aux1264780 days 00:00:02.3587200.00528811110630157×T
7new Majorana e-5, 3-aux1287420 days 00:00:02.1772800.00528811110630158×T
8new Majorana e-5, 3-aux1310060 days 00:00:01.8144000.00528811110630159×T
9new Majorana e-5, 3-aux1332700 days 00:00:01.6329600.005288111106301510×T
10new Majorana e-5, 3-aux1355340 days 00:00:01.5611400.005288111106301511×T
11new Majorana e-5, 3-aux1377980 days 00:00:01.4515200.005288111106301512×T
12new Majorana e-5, 3-aux1400620 days 00:00:01.2700800.005288111106301513×T
13new Majorana e-5, 3-aux1445900 days 00:00:01.0886400.005288111106301515×T
14new Majorana e-5, 3-aux1513820 days 00:00:00.9072000.005288111106301518×T
15new Majorana e-5, 3-aux1536460 days 00:00:00.8920800.005288111106301519×T
16new Majorana e-5, 3-aux1627020 days 00:00:00.7257600.005288111106301523×T
17new Majorana e-5, 3-aux1672300 days 00:00:00.6690600.005288111106301525×T
18new Majorana e-5, 3-aux1785500 days 00:00:00.5443200.005288111106301530×T
19new Majorana e-5, 3-aux1943980 days 00:00:00.4460400.005288111106301537×T
20new Majorana e-5, 3-aux2125100 days 00:00:00.3628800.005288111106301545×T
\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/84x8yduxY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3bp1zfu1TZs2smbNGp/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,