From dcc2d3481cbc9e7a86e80468f954dfe241ccafbb Mon Sep 17 00:00:00 2001 From: cuda-quantum-bot Date: Thu, 30 Jan 2025 05:31:49 +0000 Subject: [PATCH] Docs preview for PR #2458. --- pr-2458/CMakeLists.txt | 2 +- ...ications_python_logical_aim_sqale_38_0.png | Bin 0 -> 128920 bytes ...ications_python_logical_aim_sqale_56_0.png | Bin 0 -> 137263 bytes pr-2458/_sources/api/default_ops.rst.txt | 4 +- .../_sources/api/languages/cpp_api.rst.txt | 17 + .../_sources/api/languages/python_api.rst.txt | 2 + .../python/deutschs_algorithm.ipynb.txt | 49 +- .../digitized_counterdiabatic_qaoa.ipynb.txt | 24 +- .../python/hadamard_test.ipynb.txt | 34 +- .../applications/python/krylov.ipynb.txt | 48 +- .../python/logical_aim_sqale.ipynb.txt | 1356 ++++++++++++ .../python/vqe_advanced.ipynb.txt | 2 +- .../python/executing_kernels.ipynb.txt | 2 +- .../executing_photonic_kernels.ipynb.txt | 171 ++ pr-2458/_sources/releases.rst.txt | 52 +- pr-2458/_sources/using/applications.rst.txt | 5 +- .../_sources/using/backends/backends.rst.txt | 5 +- .../_sources/using/backends/dynamics.rst.txt | 45 +- .../_sources/using/backends/hardware.rst.txt | 122 ++ .../_sources/using/backends/platform.rst.txt | 2 +- .../using/backends/simulators.rst.txt | 166 +- .../_sources/using/examples/examples.rst.txt | 2 + .../using/examples/hardware_providers.rst.txt | 17 +- .../examples/photonic_operations.rst.txt | 158 ++ .../using/install/data_center_install.rst.txt | 2 +- .../using/install/local_installation.rst.txt | 8 +- pr-2458/_sources/using/quick_start.rst.txt | 2 +- pr-2458/_static/cudaq_override.css | 2 +- pr-2458/_static/pygments.css | 72 +- pr-2458/api/api.html | 70 +- pr-2458/api/default_ops.html | 88 +- pr-2458/api/languages/cpp_api.html | 206 +- pr-2458/api/languages/python_api.html | 118 +- pr-2458/applications/python/afqmc.html | 98 +- .../python/bernstein_vazirani.html | 78 +- .../python/cost_minimization.html | 80 +- .../python/deutschs_algorithm.html | 125 +- .../python/deutschs_algorithm.ipynb | 50 +- .../digitized_counterdiabatic_qaoa.html | 113 +- .../digitized_counterdiabatic_qaoa.ipynb | 24 +- .../python/divisive_clustering_coresets.html | 114 +- .../applications/python/hadamard_test.html | 146 +- .../applications/python/hadamard_test.ipynb | 34 +- pr-2458/applications/python/hybrid_qnns.html | 120 +- pr-2458/applications/python/krylov.html | 137 +- pr-2458/applications/python/krylov.ipynb | 48 +- .../python/logical_aim_sqale.html | 1949 +++++++++++++++++ .../python/logical_aim_sqale.ipynb | 1356 ++++++++++++ pr-2458/applications/python/qaoa.html | 86 +- .../python/quantum_fourier_transform.html | 84 +- .../python/quantum_teleportation.html | 80 +- .../applications/python/quantum_volume.html | 88 +- .../python/readout_error_mitigation.html | 108 +- pr-2458/applications/python/shors.html | 112 +- pr-2458/applications/python/trotter.html | 88 +- .../unitary_compilation_diffusion_models.html | 90 +- pr-2458/applications/python/vqe.html | 96 +- pr-2458/applications/python/vqe_advanced.html | 114 +- .../applications/python/vqe_advanced.ipynb | 2 +- .../examples/python/executing_kernels.html | 86 +- .../examples/python/executing_kernels.ipynb | 2 +- .../python/executing_photonic_kernels.html | 951 ++++++++ .../python/executing_photonic_kernels.ipynb | 227 ++ .../examples/python/measuring_kernels.html | 84 +- .../examples/python/noisy_simulations.html | 78 +- pr-2458/examples/python/operators.html | 76 +- .../examples/python/optimizers_gradients.html | 90 +- .../python/performance_optimizations.html | 74 +- pr-2458/examples/python/visualization.html | 86 +- pr-2458/genindex.html | 92 +- pr-2458/index.html | 76 +- pr-2458/notebook_validation.py | 2 +- pr-2458/objects.inv | Bin 49794 -> 52093 bytes pr-2458/py-modindex.html | 70 +- pr-2458/releases.html | 117 +- pr-2458/search.html | 70 +- pr-2458/searchindex.js | 2 +- pr-2458/specification/cudaq.html | 70 +- .../cudaq/algorithmic_primitives.html | 80 +- pr-2458/specification/cudaq/control_flow.html | 70 +- .../specification/cudaq/dynamic_kernels.html | 70 +- pr-2458/specification/cudaq/examples.html | 100 +- pr-2458/specification/cudaq/kernels.html | 92 +- .../specification/cudaq/machine_model.html | 70 +- pr-2458/specification/cudaq/namespace.html | 70 +- pr-2458/specification/cudaq/operations.html | 70 +- pr-2458/specification/cudaq/operators.html | 72 +- pr-2458/specification/cudaq/patterns.html | 74 +- pr-2458/specification/cudaq/platform.html | 70 +- pr-2458/specification/cudaq/synthesis.html | 78 +- pr-2458/specification/cudaq/types.html | 70 +- pr-2458/specification/index.html | 70 +- pr-2458/specification/quake-dialect.html | 70 +- pr-2458/sphinx/_static/cudaq_override.css | 2 +- pr-2458/sphinx/api/default_ops.rst | 4 +- pr-2458/sphinx/api/languages/cpp_api.rst | 17 + pr-2458/sphinx/api/languages/python_api.rst | 2 + .../applications/cpp/bernstein_vazirani.cpp | 2 +- .../sphinx/applications/cpp/iterative_qpe.cpp | 2 +- .../applications/cpp/random_walk_qpe.cpp | 2 +- .../applications/cpp/trotter_kernel_mode.cpp | 2 +- .../python/deutschs_algorithm.ipynb | 49 +- .../digitized_counterdiabatic_qaoa.ipynb | 24 +- .../main_divisive_clustering.py | 2 +- .../applications/python/hadamard_test.ipynb | 34 +- .../sphinx/applications/python/krylov.ipynb | 48 +- .../python/logical_aim_sqale.ipynb | 1356 ++++++++++++ .../applications/python/vqe_advanced.ipynb | 2 +- pr-2458/sphinx/conf.py | 4 +- .../examples/cpp/other/builder/builder.cpp | 2 +- .../cpp/other/builder/qaoa_maxcut_builder.cpp | 2 +- .../cpp/other/builder/vqe_h2_builder.cpp | 2 +- .../examples/cpp/other/compute_actions.cpp | 2 +- .../examples/cpp/other/distributed/mpi.cpp | 2 +- .../sphinx/examples/cpp/other/gradients.cpp | 2 +- .../examples/cpp/other/remote_sim/simple.cpp | 2 +- .../examples/python/building_kernels.ipynb | 2 +- .../examples/python/building_kernels.py | 4 +- .../python/dynamics/mgmn/initial_state.py | 71 + .../python/dynamics/mgmn/multi_gpu.py | 94 + .../examples/python/executing_kernels.ipynb | 2 +- .../python/executing_photonic_kernels.ipynb | 171 ++ pr-2458/sphinx/releases.rst | 52 +- pr-2458/sphinx/snippets/cpp/quick_start.cpp | 2 +- .../cpp/using/backends/trajectory.cpp | 40 + .../cpp/using/backends/trajectory_observe.cpp | 45 + .../cpp/using/cudaq/nvqc/nvqc_intro.cpp | 2 +- .../cpp/using/cudaq/nvqc/nvqc_mqpu.cpp | 2 +- .../using/cudaq/platform/get_state_async.cpp | 2 +- .../cpp/using/cudaq/platform/observe_mqpu.cpp | 2 +- .../using/cudaq/platform/observe_mqpu_mpi.cpp | 2 +- .../cpp/using/cudaq/platform/sample_async.cpp | 2 +- .../cudaq/platform/sample_async_remote.cpp | 2 +- .../snippets/cpp/using/first_observe.cpp | 2 +- .../snippets/cpp/using/first_sample.cpp | 2 +- pr-2458/sphinx/snippets/cpp/using/time.cpp | 2 +- .../cpp/using/two_qubit_custom_op.cpp | 2 +- pr-2458/sphinx/snippets/python/quick_start.py | 2 +- .../python/using/backends/dynamics.py | 43 +- .../python/using/backends/trajectory.py | 43 + .../using/backends/trajectory_observe.py | 44 + .../python/using/cudaq/nvqc/nvqc_intro.py | 2 +- .../python/using/cudaq/nvqc/nvqc_mqpu.py | 2 +- .../using/cudaq/platform/get_state_async.py | 2 +- .../using/cudaq/platform/observe_mqpu.py | 2 +- .../using/cudaq/platform/observe_mqpu_mpi.py | 2 +- .../using/cudaq/platform/sample_async.py | 2 +- .../cudaq/platform/sample_async_remote.py | 2 +- .../examples/annihilate_photonic_gate.py | 35 + .../examples/beam_splitter_photonic_gate.py | 38 + .../python/using/examples/cnot_gate.py | 2 +- .../using/examples/create_photonic_gate.py | 32 + .../python/using/examples/hadamard_gate.py | 2 +- .../multi_gpu_workflows/circuit_batching.py | 2 +- .../hamiltonian_batching.py | 2 +- .../multi_gpu_workflows/multiple_targets.py | 2 +- .../python/using/examples/pauli_x_gate.py | 2 +- .../using/examples/two_qubit_custom_op.py | 2 +- .../snippets/python/using/first_observe.py | 2 +- .../snippets/python/using/first_sample.py | 2 +- pr-2458/sphinx/snippets/python/using/time.py | 2 +- pr-2458/sphinx/targets/cpp/infleqtion.cpp | 65 + .../targets/cpp/photonics_tbi_get_state.cpp | 3 +- .../targets/cpp/photonics_tbi_sample.cpp | 3 +- .../targets/python/fermioniq_observables.py | 2 +- pr-2458/sphinx/targets/python/infleqtion.py | 54 + pr-2458/sphinx/using/applications.rst | 5 +- pr-2458/sphinx/using/backends/backends.rst | 5 +- pr-2458/sphinx/using/backends/dynamics.rst | 45 +- pr-2458/sphinx/using/backends/hardware.rst | 122 ++ pr-2458/sphinx/using/backends/platform.rst | 2 +- pr-2458/sphinx/using/backends/simulators.rst | 166 +- pr-2458/sphinx/using/examples/examples.rst | 2 + .../using/examples/hardware_providers.rst | 17 +- .../using/examples/photonic_operations.rst | 158 ++ .../using/install/data_center_install.rst | 2 +- .../using/install/local_installation.rst | 8 +- pr-2458/sphinx/using/quick_start.rst | 2 +- pr-2458/using/applications.html | 78 +- pr-2458/using/backends/backends.html | 81 +- pr-2458/using/backends/dynamics.html | 154 +- pr-2458/using/backends/hardware.html | 243 +- pr-2458/using/backends/nvqc.html | 80 +- pr-2458/using/backends/platform.html | 88 +- pr-2458/using/backends/simulators.html | 391 +++- pr-2458/using/basics/basics.html | 70 +- pr-2458/using/basics/build_kernel.html | 74 +- pr-2458/using/basics/kernel_intro.html | 70 +- pr-2458/using/basics/run_kernel.html | 82 +- pr-2458/using/basics/troubleshooting.html | 70 +- pr-2458/using/examples/building_kernels.html | 120 +- pr-2458/using/examples/examples.html | 72 +- .../using/examples/expectation_values.html | 82 +- .../using/examples/hardware_providers.html | 259 ++- pr-2458/using/examples/introduction.html | 74 +- pr-2458/using/examples/multi_control.html | 76 +- .../using/examples/multi_gpu_workflows.html | 88 +- .../using/examples/photonic_operations.html | 995 +++++++++ .../using/examples/quantum_operations.html | 88 +- pr-2458/using/extending/cudaq_ir.html | 70 +- pr-2458/using/extending/extending.html | 70 +- pr-2458/using/extending/mlir_pass.html | 70 +- pr-2458/using/extending/nvqir_simulator.html | 70 +- .../using/install/data_center_install.html | 72 +- pr-2458/using/install/install.html | 70 +- pr-2458/using/install/local_installation.html | 80 +- pr-2458/using/integration/cmake_app.html | 70 +- pr-2458/using/integration/cuda_gpu.html | 70 +- pr-2458/using/integration/integration.html | 70 +- pr-2458/using/integration/libraries.html | 70 +- pr-2458/using/quick_start.html | 83 +- 211 files changed, 16339 insertions(+), 2516 deletions(-) create mode 100644 pr-2458/_images/applications_python_logical_aim_sqale_38_0.png create mode 100644 pr-2458/_images/applications_python_logical_aim_sqale_56_0.png create mode 100644 pr-2458/_sources/applications/python/logical_aim_sqale.ipynb.txt create mode 100644 pr-2458/_sources/examples/python/executing_photonic_kernels.ipynb.txt create mode 100644 pr-2458/_sources/using/examples/photonic_operations.rst.txt create mode 100644 pr-2458/applications/python/logical_aim_sqale.html create mode 100644 pr-2458/applications/python/logical_aim_sqale.ipynb create mode 100644 pr-2458/examples/python/executing_photonic_kernels.html create mode 100644 pr-2458/examples/python/executing_photonic_kernels.ipynb create mode 100644 pr-2458/sphinx/applications/python/logical_aim_sqale.ipynb create mode 100644 pr-2458/sphinx/examples/python/dynamics/mgmn/initial_state.py create mode 100644 pr-2458/sphinx/examples/python/dynamics/mgmn/multi_gpu.py create mode 100644 pr-2458/sphinx/examples/python/executing_photonic_kernels.ipynb create mode 100644 pr-2458/sphinx/snippets/cpp/using/backends/trajectory.cpp create mode 100644 pr-2458/sphinx/snippets/cpp/using/backends/trajectory_observe.cpp create mode 100644 pr-2458/sphinx/snippets/python/using/backends/trajectory.py create mode 100644 pr-2458/sphinx/snippets/python/using/backends/trajectory_observe.py create mode 100644 pr-2458/sphinx/snippets/python/using/examples/annihilate_photonic_gate.py create mode 100644 pr-2458/sphinx/snippets/python/using/examples/beam_splitter_photonic_gate.py create mode 100644 pr-2458/sphinx/snippets/python/using/examples/create_photonic_gate.py create mode 100644 pr-2458/sphinx/targets/cpp/infleqtion.cpp create mode 100644 pr-2458/sphinx/targets/python/infleqtion.py create mode 100644 pr-2458/sphinx/using/examples/photonic_operations.rst create mode 100644 pr-2458/using/examples/photonic_operations.html diff --git a/pr-2458/CMakeLists.txt b/pr-2458/CMakeLists.txt index ce8cd35572..133c00cb1d 100644 --- a/pr-2458/CMakeLists.txt +++ b/pr-2458/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================ # -# Copyright (c) 2022 - 2024 NVIDIA Corporation & Affiliates. # +# Copyright (c) 2022 - 2025 NVIDIA Corporation & Affiliates. # # All rights reserved. # # # # This source code and the accompanying materials are made available under # diff --git a/pr-2458/_images/applications_python_logical_aim_sqale_38_0.png b/pr-2458/_images/applications_python_logical_aim_sqale_38_0.png new file mode 100644 index 0000000000000000000000000000000000000000..805126ce892f79680a4553a53aa8d0bc266b2bbf GIT binary patch literal 128920 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�nhd^7F%#`?AkHp+kLN3q|akd;Sd2 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 literal 0 HcmV?d00001 diff --git a/pr-2458/_images/applications_python_logical_aim_sqale_56_0.png b/pr-2458/_images/applications_python_logical_aim_sqale_56_0.png new file mode 100644 index 0000000000000000000000000000000000000000..916bee4409ba3b79d2748e286373cb94b2bc007f GIT binary patch literal 137263 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 HE{*vY(6DkM literal 0 HcmV?d00001 diff --git a/pr-2458/_sources/api/default_ops.rst.txt b/pr-2458/_sources/api/default_ops.rst.txt index 214c8f6575..6789518664 100644 --- a/pr-2458/_sources/api/default_ops.rst.txt +++ b/pr-2458/_sources/api/default_ops.rst.txt @@ -650,7 +650,7 @@ defined by the qudit level that represents the qumode. If it is applied to a qum where the number of photons is already at the maximum value, the operation has no effect. -:math:`U|0\rangle → |1\rangle, U|1\rangle → |2\rangle, U|2\rangle → |3\rangle, \cdots, U|d\rangle → |d\rangle` +:math:`C|0\rangle → |1\rangle, C|1\rangle → |2\rangle, C|2\rangle → |3\rangle, \cdots, C|d\rangle → |d\rangle` where :math:`d` is the qudit level. .. tab:: Python @@ -674,7 +674,7 @@ This operation reduces the number of photons in a qumode up to a minimum value o 0 representing the vacuum state. If it is applied to a qumode where the number of photons is already at the minimum value 0, the operation has no effect. -:math:`U|0\rangle → |0\rangle, U|1\rangle → |0\rangle, U|2\rangle → |1\rangle, \cdots, U|d\rangle → |d-1\rangle` +:math:`A|0\rangle → |0\rangle, A|1\rangle → |0\rangle, A|2\rangle → |1\rangle, \cdots, A|d\rangle → |d-1\rangle` where :math:`d` is the qudit level. .. tab:: Python diff --git a/pr-2458/_sources/api/languages/cpp_api.rst.txt b/pr-2458/_sources/api/languages/cpp_api.rst.txt index b16e570f53..34487dbefb 100644 --- a/pr-2458/_sources/api/languages/cpp_api.rst.txt +++ b/pr-2458/_sources/api/languages/cpp_api.rst.txt @@ -35,6 +35,14 @@ Common .. doxygenclass:: cudaq::observe_result :members: +.. doxygenstruct:: cudaq::observe_options + :members: + +.. doxygenfunction:: cudaq::observe(const observe_options &options, QuantumKernel &&kernel, spin_op H, Args &&...args) +.. doxygenfunction:: cudaq::observe(std::size_t shots, QuantumKernel &&kernel, spin_op H, Args &&...args) +.. doxygenfunction:: cudaq::observe(QuantumKernel &&kernel, spin_op H, Args &&...args) +.. doxygenfunction:: cudaq::observe(QuantumKernel &&kernel, const SpinOpContainer &termList, Args &&...args) + .. doxygenclass:: cudaq::ExecutionContext :members: @@ -53,6 +61,13 @@ Common .. doxygenclass:: cudaq::sample_result :members: +.. doxygenstruct:: cudaq::sample_options + :members: + +.. doxygenfunction:: cudaq::sample(const sample_options &options, QuantumKernel &&kernel, Args &&...args) +.. doxygenfunction:: cudaq::sample(std::size_t shots, QuantumKernel &&kernel, Args &&...args) +.. doxygenfunction:: cudaq::sample(QuantumKernel &&kernel, Args&&... args) + .. doxygenclass:: cudaq::SimulationState .. doxygenstruct:: cudaq::SimulationState::Tensor @@ -89,6 +104,8 @@ Common .. doxygenfunction:: cudaq::draw(QuantumKernel &&kernel, Args&&... args) +.. doxygenfunction:: cudaq::get_state(QuantumKernel &&kernel, Args&&... args) + .. doxygenclass:: cudaq::Resources .. doxygentypedef:: cudaq::complex_matrix::value_type diff --git a/pr-2458/_sources/api/languages/python_api.rst.txt b/pr-2458/_sources/api/languages/python_api.rst.txt index d84ddc427c..3c26a73e6d 100644 --- a/pr-2458/_sources/api/languages/python_api.rst.txt +++ b/pr-2458/_sources/api/languages/python_api.rst.txt @@ -157,6 +157,8 @@ Data Types .. autoclass:: cudaq.operator.cudm_state.CuDensityMatState :members: +.. autoclass:: cudaq.operator.helpers.InitialState + .. autofunction:: cudaq.operator.cudm_state.to_cupy_array .. autoclass:: cudaq::SampleResult diff --git a/pr-2458/_sources/applications/python/deutschs_algorithm.ipynb.txt b/pr-2458/_sources/applications/python/deutschs_algorithm.ipynb.txt index feaacacd9d..b1e281a0af 100644 --- a/pr-2458/_sources/applications/python/deutschs_algorithm.ipynb.txt +++ b/pr-2458/_sources/applications/python/deutschs_algorithm.ipynb.txt @@ -13,17 +13,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We have a function which takes in a bit and outputs a bit. This can be represented as $f: \\{0,1\\} \\longrightarrow \\{0,1\\}$. \n", + "Deutsch's Algorithm is a concise demonstration of the differences in computational complexity between classical and quantum algorithms for certain problems. For Desutch's algorithm, we begin with a function which takes in a bit and outputs a bit. This can be represented as $f: \\{0,1\\} \\longrightarrow \\{0,1\\}$. \n", + "The function $f$ has the property that it either constant or balanced. The goal of Deutsch's Algorithm is to determine whether our given function is constant or whether it is balanced. \n", "\n", - "The function $f$ has a property; either it is constant or balanced. \n", + "A constant function is \"A balanced function is a function such that the outputs are the same regardless of the inputs, i.e., if $f(0) = 0$ then $f(1) = 1$ or if $f(0) = 1$ then $f(1) = 0$.\n\", the outputs are the same regardless of the inputs, i.e., in the case of $f: \\{0,1\\} \\longrightarrow \\{0,1\\}$, there are are two ways in which this can occur: $f(0) = f(1) = 0$ or $f(0) = f(1) = 1$.\n", "\n", - "If constant, the outputs are the same regardless of the inputs, i.e., $f(0) = f(1) = 0$ or $f(0) = f(1) = 1$.\n", - "\n", - "If balanced, the ouputs are balanced across their possibilities, i.e, if $f(0) = 0$ then $f(1) = 1$ or if $f(0) = 1$ then $f(1) = 0$.\n", - "\n", - "The question we would like to answer is if the function is constant or balanced. \n", + "A balanced function is defined such that the ouputs are balanced across their possibilities, i.e., if $f(0) = 0$ then $f(1) = 1$ or if $f(0) = 1$ then $f(1) = 0$.\n", " \n", - "Classically, if we are given a function $f$, we can solve to find its property via the code below: \n" + "Classically, if we are given a function $f: \\{0,1\\} \\longrightarrow \\{0,1\\}$, we can determine if it is constant or balanced by evaluating the function at $0$ and at $1$. This is carried out in the code below: \n" ] }, { @@ -96,11 +93,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you step through the `if` statements above, one can see that we require 2 calls to the function to determine its property. That is, we have to query $f$ twice.\n", + "If you step through the `if` statements above, you may notice that we require 2 calls to the function to determine its property. That is, we have to query $f$ twice.\n", "\n", - "The claim is that Deutsch's algorithm can solve for this property with 1 function evalulation, demonstrating quantum advantage. \n", + "The claim is that Deutsch's Algorithm can determine if a given function is constant or balanced with just 1 function evalulation, demonstrating quantum advantage. \n", "\n", - "Below we first go through the math and then the implementation in CUDA Quantum. \n", + "Below we first outline Deutsch's Algorithm and work through the math to verify that it does as promised. Then, we provide the implementation in CUDA-Q. \n", "\n" ] }, @@ -130,7 +127,7 @@ "\n", "\n", "\n", - "Suppose we have $f(x): \\{0,1\\} \\longrightarrow \\{0,1\\}$. We can compute this function on a quantum computer using oracles which we treat as black box functions that yield the output with an appropriate sequence of logic gates. \n", + "Suppose we have $f(x): \\{0,1\\} \\longrightarrow \\{0,1\\}$. We can compute this function on a quantum computer using oracles which we treat as black box functions that yield the output with an appropriate sequence of logical gates. \n", "\n", "Above you see an oracle represented as $U_f$ which allows us to transform the state $\\ket{x}\\ket{y}$ into: \n", "\n", @@ -140,7 +137,7 @@ "\\end{aligned}\n", "$$\n", "\n", - "If $y = 0$, then $U_f\\ket{x}\\ket{y} = U_f\\ket{x}\\ket{0} = \\ket{x}\\ket{0 \\oplus f(x)} = \\ket{x}\\ket{f(x)}$ since $f(x)$ can either be $0/1$ and $0 \\oplus 0 = 0$ and $0 \\oplus 1 = 1$.\n", + "If $y = 0$, then $U_f\\ket{x}\\ket{y} = U_f\\ket{x}\\ket{0} = \\ket{x}\\ket{0 \\oplus f(x)} = \\ket{x}\\ket{f(x)}$, since $f(x)$ can either be $0$ or $1$ and $0 \\oplus 0 = 0$ and $0 \\oplus 1 = 1$.\n", "\n", "This is remarkable because by setting $\\ket{y} = \\ket{0}$, we can extract the value of $f(x)$ by measuring the value of the second qubit. \n", " \n", @@ -213,7 +210,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Deutschs' Algorithm: \n", + "## Deutsch's Algorithm: \n", "\n", "Our aim is to find out if $f: \\{0,1\\} \\longrightarrow \\{0,1\\}$ is a constant or a balanced function? If constant, $f(0) = f(1)$, and if balanced, $f(0) \\neq f(1)$.\n", "\n", @@ -296,18 +293,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.10/dist-packages/qutip/__init__.py:66: UserWarning: The new version of Cython, (>= 3.0.0) is not supported.\n", - " warnings.warn(\n" - ] - } - ], + "outputs": [], "source": [ "# Import the CUDA-Q package and set the target to run on NVIDIA GPUs.\n", "\n", @@ -391,6 +379,17 @@ "elif np.array(result)[0] == '1':\n", " print('f(x) is a balanced function')" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This algorithm can be generalized to determine if a $n$-bit function $f:{0,1}^n\\longrightarrow {0,1}$ is constant or a balanced with only $\\frac{n}{2}$ function evaluations, for $n$ even. A function if balanced if half of the inputs map to $0$ and half map to $1$. \n", + "\n", + "Here we must assume that the function that we are given is either constant or balanced since there are $n$-bit functions that are neither constant, nor balanced. For instance the $2$-bit function $f(b_0,b_1) = \\max(b_0,b_1)$ is neither balanced, nor constant.\n", + "\n", + "A hint on how you might approach this problem is to first solve the problem for $n=2$ and see if you can then use that approach to handle $n$-bit functions for larger values of $n$." + ] } ], "metadata": { diff --git a/pr-2458/_sources/applications/python/digitized_counterdiabatic_qaoa.ipynb.txt b/pr-2458/_sources/applications/python/digitized_counterdiabatic_qaoa.ipynb.txt index 35dcb5778a..a3043b7a1b 100644 --- a/pr-2458/_sources/applications/python/digitized_counterdiabatic_qaoa.ipynb.txt +++ b/pr-2458/_sources/applications/python/digitized_counterdiabatic_qaoa.ipynb.txt @@ -8,7 +8,7 @@ "\n", "Drugs often work by binding to an active site of a protein, inhibiting or activating its function for some therapeutic purpose. Finding new candidate drugs is extremely difficult. The study of molecular docking helps guide this search and involves the prediction of how strongly a certain ligand (drug) will bind to its target (usually a protein). \n", "\n", - "One of the primary challenges to molecular docking arises from the many geometric degrees of freedom present in proteins and ligands, making it difficult to predict the optimal orientation and assess if the drug is a good candidate or not. One solution is to formulate the problem as a mathematical optimization problem where the optimal solution corresponds to the most likely ligand-protein configuration. This optimization problem can be solved on a quantum computer using methods like the Quantum Approximate Optimization Algorithm (QAOA). This tutorial demonstrates how this [paper](https://arxiv.org/pdf/2308.04098) used digitized-counteradiabatic (DC) QAOA to study molecular docking. This tutorial assumes you have an understanding of QAOA, if not, please see the CUDA-Q MaxCut tutorial found [here](https://nvidia.github.io/cuda-quantum/latest/examples/python/tutorials/qaoa.html)\n", + "One of the primary challenges to molecular docking arises from the many geometric degrees of freedom present in proteins and ligands, making it difficult to predict the optimal orientation and assess if the drug is a good candidate or not. One solution is to formulate the problem as a mathematical optimization problem where the optimal solution corresponds to the most likely ligand-protein configuration. This optimization problem can be solved on a quantum computer using methods like the Quantum Approximate Optimization Algorithm (QAOA). This tutorial demonstrates how this [paper](https://arxiv.org/pdf/2308.04098) used digitized-counteradiabatic (DC) QAOA to study molecular docking. This tutorial assumes you have an understanding of QAOA, if not, please see the CUDA-Q MaxCut tutorial found [here](https://nvidia.github.io/cuda-quantum/latest/applications/python/qaoa.html).\n", "\n", "The next section provides more detail on the problem setup followed by CUDA-Q implementations below." ] @@ -25,10 +25,10 @@ "\n", "\n", "There are 6 key steps:\n", - "1. The experimental protein and ligand structures are determined and used to select pharmacores, or an important chemical group that will govern the chemical interactions,\n", - "2. T wo labeled distance graphs (LAGs) of size $N$ and $M$ represent the protein and the ligand, respectively. Each node corresponds to a pharmacore and each edge weight corresponds to the distance between pharmacores.\n", + "1. The experimental protein and ligand structures are determined and used to select pharmacores, or an important chemical group that will govern the chemical interactions.\n", + "2. Two labeled distance graphs (LAGs) of size $N$ and $M$ represent the protein and the ligand, respectively. Each node corresponds to a pharmacore and each edge weight corresponds to the distance between pharmacores.\n", "3. A $M*N$ node binding interaction graph (BIG) is created from the LAGs. Each node in the BIG graph corresponds to a pair of pharmacores, one from the ligand and the other from the protein. The existence of edges between nodes in the BIG graph are determined from the LAGs and correspond to interactions that can feesibly coexist. Therefore, cliques in the graph correspond to mutually possible interactions. \n", - "4. The problem is mapped to a QAOA circuit and corresponding Hamiltonian, and the ground state solution is determined.\n", + "4. The problem is mapped to a QAOA circuit and corresponding Hamiltonian. From there, the ground state solution is determined.\n", "5. The ground state will produce the maximum weighted clique which corresponds to the best (most strongly bound) orientation of the ligand and protein.\n", "6. The predicted docking structure is interpreted from the QAOA result and is used for further analysis.\n" ] @@ -50,16 +50,14 @@ "source": [ "import cudaq\n", "from cudaq import spin\n", - "import numpy as np\n", - "\n", - "# cudaq.set_target('nvidia')" + "import numpy as np\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The block below defines two of the BIG data sets from the paper. The first is a smaller example, but it can be swapped with the commented out example below at your discretion. The weights are specified for each node based on the nature of the ligand and protein pharmacores represented by the node" + "The block below defines two of the BIG data sets from the paper. The first is a smaller example, but it can be swapped with the commented out example below at your discretion. The weights are specified for each node based on the nature of the ligand and protein pharmacores represented by the node." ] }, { @@ -77,7 +75,7 @@ } ], "source": [ - "# The two graphs input from the paper\n", + "# The two graph inputs from the paper\n", "\n", "# BIG 1\n", "\n", @@ -113,12 +111,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, the Hamiltonian is constructed. \n", + "Next, the Hamiltonian is constructed: \n", "\n", "$$H = \\frac{1}{2}\\sum_{i \\in V}w_i(\\sigma^z_i - 1) + \\frac{P}{4} \\sum_{(i,j) \\notin E, i \\neq j} (\\sigma^z_i -1)(\\sigma^z_j - 1) $$\n", "\n", "\n", - "The first term concerns the vertices and the weights of the given pharmacores. The second term is a penalty term that penalizes edges of the graph with no interactions. The penalty $P$ is set by the user and is defined as 6 in the cell above. The function below returns the Hamiltonina as a CUDA-Q `spin_op` object.\n", + "The first term concerns the vertices and the weights of the given pharmacores. The second term is a penalty term that penalizes edges of the graph with no interactions. The penalty $P$ is set by the user and is defined as 6 in the cell above. The function below returns the Hamiltonian as a CUDA-Q `spin_op` object.\n", "\n" ] }, @@ -208,7 +206,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The kernel below defines a DC-QAOA circuit. What makes the approach \"DC\" is the inclusion of additional counteradiabatic terms to better drive the optimization to the ground state. These terms are digitized and applied as additional operations following each QAOA layer. The increase in parameters is hopefully offset by requiring fewer layers. In this example, the DC terms are additional parameterized $Y$ operations applied to each qubit. These can be commented out to run conventional QAOA." + "The kernel below defines a DC-QAOA circuit. What makes the approach \"DC\" is the inclusion of additional counteradiabatic terms to better drive the optimization to the ground state. These terms are digitized and applied as additional operations following each QAOA layer. The increase in parameters is hopefully offset by requiring fewer layers. In this example, the DC terms are the additional parameterized $Y$ operations applied to each qubit. These can be commented out to run conventional QAOA." ] }, { @@ -246,7 +244,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The classical optimizer for the QAOA procedure can be specified as one of the build in CUDA-Q optimizers, in this case Nelder Mead. The parameter count is defined for DC-QAOA, but can be swapped with the commented line below for conventional QAOA." + "The classical optimizer for the QAOA procedure can be specified as one of the built-in CUDA-Q optimizers, in this case Nelder Mead. The parameter count is defined for DC-QAOA, but can be swapped with the commented line below for conventional QAOA." ] }, { diff --git a/pr-2458/_sources/applications/python/hadamard_test.ipynb.txt b/pr-2458/_sources/applications/python/hadamard_test.ipynb.txt index 8199b74d6b..1d1f781d59 100644 --- a/pr-2458/_sources/applications/python/hadamard_test.ipynb.txt +++ b/pr-2458/_sources/applications/python/hadamard_test.ipynb.txt @@ -6,14 +6,14 @@ "source": [ "# Using the Hadamard Test to Determine Quantum Krylov Subspace Decomposition Matrix Elements\n", "\n", - "The Hadamard test, is a quantum algorithm for estimating the expectation values and is a useful subroutine for a number of quantum applications ranging from estimation of molecular ground state energies to quantum semidefinite programming. This tutorial will briefly introduce the Hadamard test, and demonstrate how it can be implemented in CUDA-Q and then parallelized for a Quantum Krylov Subspace Diagonalization application.\n", + "The Hadamard test is a quantum algorithm for estimating expectation values and is a useful subroutine for a number of quantum applications ranging from estimation of molecular ground state energies to quantum semidefinite programming. This tutorial will briefly introduce the Hadamard test, demonstrate how it can be implemented in CUDA-Q, and then parallelized for a Quantum Krylov Subspace Diagonalization application.\n", "\n", "The Hadamard test is performed using a register with an ancilla qubit in the $\\ket{0}$ state and a prepared quantum state $\\ket{\\psi}$, the following circuit can be used to extract the expectation value from measurement of the ancilla.\n", "\n", "\n", "![Htest](./images/htest.png)\n", "\n", - "The key insight is to note that $$P(0) = \\frac{1}{2} \\left[ I + Re \\bra{\\psi} O \\ket{\\phi} \\right]$$ and $$P(1) = \\frac{1}{2} \\left[ I - Re \\bra{\\psi} O \\ket{\\phi} \\right]$$ so their difference is equal to $$P(0)-P(1) = Re \\bra{\\psi} O \\ket{\\phi}$$\n", + "The key insight is that $$P(0) = \\frac{1}{2} \\left[ I + Re \\bra{\\psi} O \\ket{\\phi} \\right]$$ and $$P(1) = \\frac{1}{2} \\left[ I - Re \\bra{\\psi} O \\ket{\\phi} \\right]$$ so their difference is equal to $$P(0)-P(1) = Re \\bra{\\psi} O \\ket{\\phi}.$$\n", "\n", "\n", "More details and a short derivation can be found [here](https://en.wikipedia.org/wiki/Hadamard_test)." @@ -26,17 +26,17 @@ "What if you want to perform the Hadamard test to compute an expectation value like $\\bra{\\psi} O \\ket{\\phi}$, where $\\ket{\\psi}$ and $\\ket{\\phi}$ are different states and $O$ is a Pauli Operator? This is a common subroutine for the QKSD, where matrix elements are determined by computing expectation values between different states.\n", "\n", "Defining $O$ as \n", - "$$O = X_1X_2$$\n", + "$$O = X_1X_2,$$\n", "\n", "and given the fact that\n", - "$$\\ket{\\psi} = U_{\\psi}\\ket{0} \\qquad \\ket{\\phi} = U_{\\phi}\\ket{0}$$\n", + "$$\\ket{\\psi} = U_{\\psi}\\ket{0} \\qquad \\ket{\\phi} = U_{\\phi}\\ket{0},$$\n", "\n", - "We can combine the state preparation steps into the operator resulting in\n", - "$$\\bra{\\psi}O\\ket{\\phi} = \\bra{0}U_\\psi^\\dagger O U_\\phi\\ket{0}$$\n", - "Which corresponds to the following circuit\n", + "we can combine the state preparation steps into the operator resulting in\n", + "$$\\bra{\\psi}O\\ket{\\phi} = \\bra{0}U_\\psi^\\dagger O U_\\phi\\ket{0},$$\n", + "which corresponds to the following circuit.\n", "![Htest2](./images/htestfactored.png)\n", "\n", - "By preparing this circuit, and repeatedly measuring the ancilla qubit, allows for estimation of the expectation value as $$P(0)-P(1) = Re \\bra{\\psi} O \\ket{\\phi}$$\n", + "By preparing this circuit, and repeatedly measuring the ancilla qubit, we estimate the expectation value as $$P(0)-P(1) = Re \\bra{\\psi} O \\ket{\\phi}.$$\n", "\n", "\n", "The following sections demonstrate how this can be performed in CUDA-Q." @@ -53,7 +53,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Before performing the Hadamard test, lets determine the exact expectation value by performing the matrix multiplications explicitly. The code below builds two CUDA-Q kernels corresponding to $\\ket{\\psi} = \\frac{1}{\\sqrt{2}}\\begin{pmatrix}1 \\\\ 0 \\\\ 1 \\\\ 0\\end{pmatrix}$ and $\\ket{\\phi} = \\begin{pmatrix}0 \\\\ 1 \\\\ 0 \\\\ 0\\end{pmatrix}$" + "Before performing the Hadamard test, let's determine the exact expectation value by performing the matrix multiplications explicitly. The code below builds two CUDA-Q kernels corresponding to $\\ket{\\psi} = \\frac{1}{\\sqrt{2}}\\begin{pmatrix}1 \\\\ 0 \\\\ 1 \\\\ 0\\end{pmatrix}$ and $\\ket{\\phi} = \\begin{pmatrix}0 \\\\ 1 \\\\ 0 \\\\ 0\\end{pmatrix}.$" ] }, { @@ -87,7 +87,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The state vectors can be accessed using the `get_state` command and printed as numpy arrays" + "The state vectors can be accessed using the `get_state` command and printed as numpy arrays:" ] }, { @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The Hamiltonian operator ($O$ in the derivation above) is defined as a CUDA-Q spin operator and converted to a matrix withe the `to_matrix`. The following line of code performs the explicit matrix multiplications to produce the exact expectation value." + "The Hamiltonian operator ($O$ in the derivation above) is defined as a CUDA-Q spin operator and converted to a matrix with `to_matrix`. The following line of code performs the explicit matrix multiplications to produce the exact expectation value." ] }, { @@ -208,7 +208,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The CUDA-Q Sample method computes 100000 sample ancilla measurements and uses them to estimate the expectation value. The standard error is provided as well. Try increasing the sample size and note the convergence of the expectation value and the standard error towards the numerical result." + "The CUDA-Q `sample` method computes 100000 sample ancilla measurements, and from them we can estimate the expectation value. The standard error is provided as well. Try increasing the sample size and note the convergence of the expectation value and the standard error towards the numerical result." ] }, { @@ -249,9 +249,9 @@ "\n", "![Htest3](./images/QKSD.png)\n", "\n", - "This method can be easily parallelized and multiple QPUs, if available could compute the matrix elements asynchronously. The CUDA-Q `mqpu` backend allows you to simulate a computation across multiple simulated QPUs. The code below demonstrates how.\n", + "This method can be easily parallelized, and multiple QPUs, if available, could compute the matrix elements asynchronously. The CUDA-Q `mqpu` backend allows you to simulate a computation across multiple simulated QPUs. The code below demonstrates how.\n", "\n", - "First, the Hadamard test circuit is defined, but this time the $\\ket{\\psi}$ and $\\ket{\\phi}$ states contain parameterized rotations so that multiple states can be quickly generated for the sake of example." + "First, the Hadamard test circuit is defined, but this time the $\\ket{\\psi}$ and $\\ket{\\phi}$ states contain parameterized rotations so that multiple states can be quickly generated, for the sake of example." ] }, { @@ -302,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -314,7 +314,7 @@ } ], "source": [ - "cudaq.set_target(\"nvidia-mqpu\")\n", + "cudaq.set_target(\"nvidia\", option=\"mqpu\")\n", "\n", "target = cudaq.get_target()\n", "qpu_count = target.num_qpus()\n", @@ -354,7 +354,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The four matrix elements are shown below and now be classically processed to produce the eigenvalues." + "The four matrix elements are shown below and can be classically processed to produce the eigenvalues." ] }, { diff --git a/pr-2458/_sources/applications/python/krylov.ipynb.txt b/pr-2458/_sources/applications/python/krylov.ipynb.txt index 1954212c02..183a13d691 100644 --- a/pr-2458/_sources/applications/python/krylov.ipynb.txt +++ b/pr-2458/_sources/applications/python/krylov.ipynb.txt @@ -7,39 +7,45 @@ "source": [ "# Multi-reference Quantum Krylov Algorithm - $H_2$ Molecule\n", "\n", - "The multireference selected quantum Krylov (MRSQK) algorithm is defined in [this paper](https://arxiv.org/pdf/1911.05163) and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The CUDA-Q Hadamard test tutorial might provide helpful background information for understanding this tutorial.\n", + "The multireference selected quantum Krylov (MRSQK) algorithm is defined in [this paper](https://arxiv.org/pdf/1911.05163) and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The [CUDA-Q Hadamard test tutorial](https://nvidia.github.io/cuda-quantum/latest/applications/python/hadamard_test.html) might provide helpful background information for understanding this tutorial.\n", "\n", "The algorithm works by preparing an initial state, and then defining this state in a smaller subspace constructed with a basis that corresponds to Trotter steps of the initial state. This subspace can be diagonalized to produce an approximate energy for the system without variational optimization of any parameters.\n", "\n", "In the example below, the initial guess is the ground state of the diagonalized Hamiltonian for demonstration purposes. In practice one could use a number of heuristics to prepare the ground state such as Hartree Fock or CISD. A very promising ground state preparation method which can leverage quantum computers is the linear combination of unitaries (LCU). LCU would allow for the state preparation to occur completely on the quantum computer and avoid storing an inputting the exponentially large state vector.\n", "\n", "\n", - "Regardless of the method used for state preparation, the procedure begins by selecting a $d$ dimensional basis of reference states ${\\Phi_0 \\cdots \\Phi_d}$ where each is a linear combination of slater determinants. \n", + "Regardless of the method used for state preparation, the procedure begins by selecting a $d$-dimensional basis of reference states ${\\Phi_0 \\cdots \\Phi_d},$ where each is a linear combination of Slater determinants: \n", "\n", - "$$ \\ket{\\Phi_I} = \\sum_{\\mu} d_{\\mu I}\\ket{\\phi_{\\mu}} $$\n", + "$$ \\ket{\\Phi_I} = \\sum_{\\mu} d_{\\mu I}\\ket{\\phi_{\\mu}}. $$\n", "\n", "\n", - "From this, a non-orthogonal Krylov Space $\\mathcal{K} = \\{\\psi_{0} \\cdots \\psi_{N}\\}$ is constructed by applying a family of $s$ unitary operators on each of the $d$ reference states resulting in $d*s = N$ elements in the Krylov space where, \n", - "$$ \\ket{\\psi_{\\alpha}} \\equiv \\ket{\\psi_I^{(n)}} = \\hat{U}_n\\ket{\\Phi_I} $$\n", + "From this, a non-orthogonal Krylov Space $\\mathcal{K} = \\{\\psi_{0} \\cdots \\psi_{N}\\}$ is constructed by applying a family of $s$ unitary operators on each of the $d$ reference states resulting in $d*s = N$ elements in the Krylov space where \n", + "$$ \\ket{\\psi_{\\alpha}} \\equiv \\ket{\\psi_I^{(n)}} = \\hat{U}_n\\ket{\\Phi_I}, $$\n", "\n", "Therefore, the general quantum state that we originally set out to describe is\n", "\n", - "$$ \\ket{\\Psi} = \\sum_{\\alpha} c_{\\alpha}\\ket{\\psi_{\\alpha}} = \\sum_{I=0}^d \\sum_{n=0}^s c_I^{(n)}\\hat{U}_n\\ket{\\Phi_I} $$\n", + "$$ \\ket{\\Psi} = \\sum_{\\alpha} c_{\\alpha}\\ket{\\psi_{\\alpha}} = \\sum_{I=0}^d \\sum_{n=0}^s c_I^{(n)}\\hat{U}_n\\ket{\\Phi_I}. $$\n", "\n", "The energy of this state can be obtained by solving the generalized eigenvalue problem\n", - "$$ \\boldsymbol{Hc}=\\boldsymbol{Sc}E $$\n", + "$$ \\boldsymbol{Hc}=\\boldsymbol{Sc}E, $$\n", "\n", - "Where the elements of the overlap and Hamiltonian matrix are\n", + "where the elements of the overlap are\n", "\n", "$$S_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{U}_n|\\Phi_J}$$ \n", "\n", - "$$H_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\hat{H}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{H}\\hat{U}_n|\\Phi_J}$$\n", + "and Hamiltonian matrix is\n", "\n", - "These matrix elements are computed using a quantum computer and the Hadamard test with a circuit shown below for the case of the overlap matrix elements (The Hamiltonian matrix elements circuit would include controlled application of the Hamiltonian in the circuit). Once the matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.\n", + "$$H_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\hat{H}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{H}\\hat{U}_n|\\Phi_J}.$$\n", + "\n", + "The matrix elements for $S$ are computed with the Hadamard test with a circuit shown below for the case of the overlap matrix elements. \n", "\n", "![Htest](./images/krylovcircuit.png)\n", "\n", - "The $2\\sigma_+$ term refers to measurement of the expectation value of this circuit with the $X+iY$ operator. \n" + "The $2\\sigma_+$ term refers to measurement of the expectation value of this circuit with the $X+iY$ operator.\n", + "\n", + "The Hamiltonian matrix elements are computed with a circuit that includes controlled application of the Hamiltonian. Once the $H$ and $S$ matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.\n", + "\n", + "\n" ] }, { @@ -140,7 +146,7 @@ " return result\n", "\n", "\n", - "#Build the lists of coefficients and Pauli Words from H2 Hamiltonian\n", + "# Build the lists of coefficients and Pauli Words from the H2 Hamiltonian\n", "coefficient = termCoefficients(hamiltonian)\n", "pauli_string = termWords(hamiltonian)\n", "\n", @@ -153,7 +159,7 @@ "id": "74b4c079-8837-47ae-a484-52ec5f4a160e", "metadata": {}, "source": [ - "In the case of this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the $\\psi$ basis. Each receives the target qubits, the time step, and components of the Hamiltonian." + "In this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the $\\psi$ basis. Each receives the target qubits, the time step, and components of the Hamiltonian." ] }, { @@ -300,11 +306,11 @@ "\n", "The cell below computes the overlap matrix. This can be done in serial or in parallel, depending on the `multi_gpu` specification. First, an operator is built to apply the identity to the overlap matrix circuit when `apply_pauli` is called. Next, the `wf_overlap` array is constructed which will hold the matrix elements. \n", "\n", - "Next, a pair of nested loops, iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix $S$ using the Hadamard test. This is accomplished by calling the CUDA-Q `observe` function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector `vec`.\n", + "Next, a pair of nested loops iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix $S$ using the Hadamard test. This is accomplished by calling the CUDA-Q `observe` function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector `vec`.\n", "\n", "The observe function broadcasts over the two provided operators $X$ and $Y$ and returns a list of results. The `expectation` function returns the expectation values which are summed and stored in the matrix.\n", "\n", - "The multi-gpu case completes the same steps, expect for `observe_async` is used. This allows for the $X$ and $Y$ observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real an imaginary parts, and then accessed later with the `get` command to build $S$\n" + "The multi-gpu case completes the same steps, except the `observe_async` command is used. This allows for the $X$ and $Y$ observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real and imaginary parts. These are then accessed later with the `get` command to build $S$.\n" ] }, { @@ -541,19 +547,19 @@ "id": "1917bd58-4ce3-4e3e-9ccf-096577c0da14", "metadata": {}, "source": [ - "### Determining the ground state energy of the Subspace\n", + "### Determining the ground state energy of the subspace\n", "\n", "The final step is to solve the generalized eigenvaulue problem with the overlap and Hamiltonian matrices constructed using the quantum computer. The procedure begins by diagonalizing $S$ with the transform $$S = U\\Sigma U^{\\dagger}$$\n", "\n", - "The eigenvectors $v$ and eigenvalues $s$ are used to construct a new matrix $X'$\n", + "The eigenvectors $v$ and eigenvalues $s$ are used to construct a new matrix $X':$\n", "\n", - "$$ X' = S ^{\\frac{-1}{2}} = \\sum_k v_{ki} \\frac{1}{\\sqrt{s_k}} v_{kj}$$\n", + "$$ X' = S ^{\\frac{-1}{2}} = \\sum_k v_{ki} \\frac{1}{\\sqrt{s_k}} v_{kj}.$$\n", "\n", - "The $X'$ matrix diagonalizes $H$\n", + "The matrix $X'$ diagonalizes $H:$\n", "\n", - "$$ X'^{\\dagger}HX' = ES^{\\frac{1}{2}}C$$\n", + "$$ X'^{\\dagger}HX' = ES^{\\frac{1}{2}}C.$$\n", "\n", - "Using the eigenvectors of $H'$, ($^{\\frac{1}{2}}C$), the original eigenvectors to the problem can be found by left multiplying by $S^{\\frac{-1}{2}}C$" + "Using the eigenvectors of $H'$, ($^{\\frac{1}{2}}C$), the original eigenvectors to the problem can be found by left multiplying by $S^{\\frac{-1}{2}}C.$" ] }, { diff --git a/pr-2458/_sources/applications/python/logical_aim_sqale.ipynb.txt b/pr-2458/_sources/applications/python/logical_aim_sqale.ipynb.txt new file mode 100644 index 0000000000..f51bd10294 --- /dev/null +++ b/pr-2458/_sources/applications/python/logical_aim_sqale.ipynb.txt @@ -0,0 +1,1356 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Anderson Impurity Model ground state solver on Infleqtion's Sqale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ground state quantum chemistry—computing total energies of molecular configurations to within chemical accuracy—is perhaps the most highly-touted industrial application of fault-tolerant quantum computers. Strongly correlated materials, for example, are particularly interesting, and tools like dynamical mean-field theory (DMFT) allow one to account for the effect of their strong, localized electronic correlations. These DMFT models help predict material properties by approximating the system as a single site impurity inside a “bath” that encompasses the rest of the system. Simulating such dynamics can be a tough task using classical methods, but can be done efficiently on a quantum computer via quantum simulation.\n", + "\n", + "In this notebook, we showcase a workflow for preparing the ground state of the minimal single-impurity Anderson model (SIAM) using the Hamiltonian Variational Ansatz for a range of realistic parameters. As a first step towards running DMFT on a fault-tolerant quantum computer, we will use logical qubits encoded in the `[[4, 2, 2]]` code. Using this workflow, we will obtain the ground state energy estimates via noisy simulation, and then also execute the corresponding optimized circuits on Infleqtion's gate-based neutral-atom quantum computer, making the benefits of logical qubits apparent. More details can be found in our [paper](https://arxiv.org/abs/2412.07670)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This demo notebook uses CUDA-Q (`cudaq`) and a CUDA-QX library, `cudaq-solvers`; let us first begin by importing (and installing as needed) these packages:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import cudaq_solvers as solvers\n", + " import cudaq\n", + " import matplotlib.pyplot as plt\n", + "except ImportError:\n", + " print(\"Installing required packages...\")\n", + " %pip install --quiet 'cudaq-solvers' 'matplotlib'\n", + " print(\"Installed `cudaq`, `cudaq-solvers`, and `matplotlib` packages.\")\n", + " print(\"You may need to restart the kernel to import newly installed packages.\")\n", + " import cudaq_solvers as solvers\n", + " import cudaq\n", + " import matplotlib.pyplot as plt\n", + "\n", + "from collections.abc import Mapping, Sequence\n", + "import numpy as np\n", + "from scipy.optimize import minimize\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performing logical Variational Quantum Eigensolver (VQE) with CUDA-QX" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To prepare our ground state quantum Anderson impurity model circuits (referred to as AIM circuits in this notebook for short), we use VQE to train an ansatz to minimize a Hamiltonian and obtain optimal angles that can be used to set the AIM circuits. As described in our [paper](https://arxiv.org/abs/2412.07670), the associated restricted Hamiltonian for our SIAM can be reduced to,\n", + "$$ \n", + "\\begin{equation}\n", + "H_{(U, V)} = U (Z_0 Z_2 - 1) / 4 + V (X_0 + X_2),\n", + "\\end{equation}\n", + "$$\n", + "where $U$ is the Coulomb interaction and $V$ the hybridization strength. In this notebook workflow, we will optimize over a 2-dimensional grid of Hamiltonian parameter values, namely $U\\in \\{1, 5, 9\\}$ and $V\\in \\{-9, -1, 7\\}$ (with all values assumed to be in units of eV), to ensure that the ansatz is generally trainable and expressive, and obtain 9 different circuit layers identified by the key $(U, V)$. We will simulate the VQE on GPU (or optionally on CPU if you do not have GPU access), enabled by CUDA-Q, in the absence of noise:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "if cudaq.num_available_gpus() == 0:\n", + " cudaq.set_target(\"qpp-cpu\", option=\"fp64\")\n", + "else:\n", + " cudaq.set_target(\"nvidia\", option=\"fp64\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This workflow can be easily defined in CUDA-Q as shown in the cell below, using the CUDA-QX Solvers library (which accelerates quantum algorithms like the VQE):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def ansatz(n_qubits: int) -> cudaq.Kernel:\n", + " # Create a CUDA-Q parameterized kernel\n", + " paramterized_ansatz, variational_angles = cudaq.make_kernel(list)\n", + " qubits = paramterized_ansatz.qalloc(n_qubits)\n", + "\n", + " # Using |+> as the initial state:\n", + " paramterized_ansatz.h(qubits[0])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + "\n", + " paramterized_ansatz.rx(variational_angles[0], qubits[0])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + " paramterized_ansatz.rz(variational_angles[1], qubits[1])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + " return paramterized_ansatz\n", + "\n", + "\n", + "def run_logical_vqe(cudaq_hamiltonian: cudaq.SpinOperator) -> tuple[float, list[float]]:\n", + " # Set seed for easier reproduction\n", + " np.random.seed(42)\n", + "\n", + " # Initial angles for the optimizer\n", + " init_angles = np.random.random(2) * 1e-1\n", + "\n", + " # Obtain CUDA-Q Ansatz\n", + " num_qubits = cudaq_hamiltonian.get_qubit_count()\n", + " variational_kernel = ansatz(num_qubits)\n", + "\n", + " # Perform VQE optimization\n", + " energy, params, _ = solvers.vqe(\n", + " variational_kernel,\n", + " cudaq_hamiltonian,\n", + " init_angles,\n", + " optimizer=minimize,\n", + " method=\"SLSQP\",\n", + " tol=1e-10,\n", + " )\n", + " return energy, params" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Constructing circuits in the `[[4,2,2]]` encoding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `[[4,2,2]]` code is a quantum error detection code that uses four physical qubits to encode two logical qubits. In this notebook, we will construct two variants of quantum circuits: physical (bare, unencoded) and logical (encoded). These circuits will be informed by the Hamiltonian Variational Ansatz described earlier. To measure all the terms in our Hamiltonian, we will measure the data qubits in both the $Z$- and $X$-basis, as allowed by the `[[4,2,2]]` logical gateset. Full details on the circuit constructions are outlined in our [paper](https://arxiv.org/abs/2412.07670)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below, we create functions to build our CUDA-Q AIM circuits, both physical and logical versions. As we consider noisy simulation in this notebook, we will include some noisy gates. Here, for simplicity, we will just register a custom identity gate -- to be later used as a noisy operation to model readout error: " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.register_operation(\"meas_id\", np.identity(2))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def aim_physical_circuit(\n", + " angles: list[float], basis: str, *, ignore_meas_id: bool = False\n", + ") -> cudaq.Kernel:\n", + " kernel = cudaq.make_kernel()\n", + " qubits = kernel.qalloc(2)\n", + "\n", + " # Bell state prep\n", + " kernel.h(qubits[0])\n", + " kernel.cx(qubits[0], qubits[1])\n", + "\n", + " # Rx Gate\n", + " kernel.rx(angles[0], qubits[0])\n", + "\n", + " # ZZ rotation\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.rz(angles[1], qubits[1])\n", + " kernel.cx(qubits[0], qubits[1])\n", + "\n", + " if basis == \"z_basis\":\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=2, function=lambda q_idx: getattr(kernel, \"meas_id\")(qubits[q_idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " elif basis == \"x_basis\":\n", + " kernel.h(qubits)\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=2, function=lambda q_idx: getattr(kernel, \"meas_id\")(qubits[q_idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " else:\n", + " raise ValueError(\"Unsupported basis provided:\", basis)\n", + " return kernel" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def aim_logical_circuit(\n", + " angles: list[float], basis: str, *, ignore_meas_id: bool = False\n", + ") -> cudaq.Kernel:\n", + " kernel = cudaq.make_kernel()\n", + " qubits = kernel.qalloc(6)\n", + "\n", + " kernel.for_loop(start=0, stop=3, function=lambda idx: kernel.h(qubits[idx]))\n", + " kernel.cx(qubits[1], qubits[4])\n", + " kernel.cx(qubits[2], qubits[3])\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.cx(qubits[0], qubits[3])\n", + "\n", + " # Rx teleportation\n", + " kernel.rx(angles[0], qubits[0])\n", + "\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.cx(qubits[0], qubits[3])\n", + " kernel.h(qubits[0])\n", + "\n", + " if basis == \"z_basis\":\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=5, function=lambda idx: getattr(kernel, \"meas_id\")(qubits[idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " elif basis == \"x_basis\":\n", + " # ZZ rotation and teleportation\n", + " kernel.cx(qubits[3], qubits[5])\n", + " kernel.cx(qubits[2], qubits[5])\n", + " kernel.rz(angles[1], qubits[5])\n", + " kernel.cx(qubits[1], qubits[5])\n", + " kernel.cx(qubits[4], qubits[5])\n", + " kernel.for_loop(start=1, stop=5, function=lambda idx: kernel.h(qubits[idx]))\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=6, function=lambda idx: getattr(kernel, \"meas_id\")(qubits[idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " else:\n", + " raise ValueError(\"Unsupported basis provided:\", basis)\n", + " return kernel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the circuit definitions above, we can now define a function that automatically runs the VQE and constructs a dictionary containing all the AIM circuits we want to submit to hardware (or noisily simulate):" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_circuit_set(ignore_meas_id: bool = False) -> object:\n", + " u_vals = [1, 5, 9]\n", + " v_vals = [-9, -1, 7]\n", + " circuit_dict = {}\n", + " for u in u_vals:\n", + " for v in v_vals:\n", + " qubit_hamiltonian = (\n", + " 0.25 * u * cudaq.spin.z(0) * cudaq.spin.z(1)\n", + " - 0.25 * u\n", + " + v * cudaq.spin.x(0)\n", + " + v * cudaq.spin.x(1)\n", + " )\n", + " _, opt_params = run_logical_vqe(qubit_hamiltonian)\n", + " angles = [float(angle) for angle in opt_params]\n", + " print(f\"Computed optimal angles={angles} for U={u}, V={v}\")\n", + "\n", + " tmp_physical_dict = {}\n", + " tmp_logical_dict = {}\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " tmp_physical_dict[basis] = aim_physical_circuit(\n", + " angles, basis, ignore_meas_id=ignore_meas_id\n", + " )\n", + " tmp_logical_dict[basis] = aim_logical_circuit(\n", + " angles, basis, ignore_meas_id=ignore_meas_id\n", + " )\n", + "\n", + " circuit_dict[f\"{u}:{v}\"] = {\n", + " \"physical\": tmp_physical_dict,\n", + " \"logical\": tmp_logical_dict,\n", + " }\n", + " print(\"\\nFinished building optimized circuits!\")\n", + " return circuit_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9\n", + "Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1\n", + "Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7\n", + "Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9\n", + "Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1\n", + "Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7\n", + "Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9\n", + "Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1\n", + "Computed optimal angles=[-1.7301462729177735, 1.570796033796985] for U=9, V=7\n", + "\n", + "Finished building optimized circuits!\n" + ] + } + ], + "source": [ + "sim_circuit_dict = generate_circuit_set()\n", + "circuit_layers = sim_circuit_dict.keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up submission and decoding workflow " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we define various helper functions that will play a role in generating the associated energies of the AIM circuits based on the circuit samples (in the different bases), as well as decode the logical circuits with post-selection informed by the `[[4,2,2]]` code:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def _num_qubits(counts: Mapping[str, float]) -> int:\n", + " for key in counts:\n", + " if key.isdecimal():\n", + " return len(key)\n", + " return 0\n", + "\n", + "\n", + "def process_counts(\n", + " counts: Mapping[str, float],\n", + " data_qubits: Sequence[int],\n", + " flag_qubits: Sequence[int] = (),\n", + ") -> dict[str, float]:\n", + " new_data: dict[str, float] = {}\n", + " for key, val in counts.items():\n", + " if not all(key[i] == \"0\" for i in flag_qubits):\n", + " continue\n", + "\n", + " new_key = \"\".join(key[i] for i in data_qubits)\n", + "\n", + " if not set(\"01\").issuperset(new_key):\n", + " continue\n", + "\n", + " new_data.setdefault(new_key, 0)\n", + " new_data[new_key] += val\n", + "\n", + " return new_data\n", + "\n", + "\n", + "def decode(counts: Mapping[str, float]) -> dict[str, float]:\n", + " \"\"\"Decode physical counts into logical counts. Should be called after `process_counts`.\"\"\"\n", + "\n", + " if not counts:\n", + " return {}\n", + "\n", + " num_qubits = _num_qubits(counts)\n", + " assert num_qubits % 4 == 0\n", + "\n", + " physical_to_logical = {\n", + " \"0000\": \"00\",\n", + " \"1111\": \"00\",\n", + " \"0011\": \"01\",\n", + " \"1100\": \"01\",\n", + " \"0101\": \"10\",\n", + " \"1010\": \"10\",\n", + " \"0110\": \"11\",\n", + " \"1001\": \"11\",\n", + " }\n", + "\n", + " new_data: dict[str, float] = {}\n", + " for key, val in counts.items():\n", + " physical_keys = [key[i : i + 4] for i in range(0, num_qubits, 4)]\n", + " logical_keys = [physical_to_logical.get(physical_key) for physical_key in physical_keys]\n", + " if None not in logical_keys:\n", + " new_key = \"\".join(logical_keys)\n", + " new_data.setdefault(new_key, 0)\n", + " new_data[new_key] += val\n", + "\n", + " return new_data\n", + "\n", + "\n", + "def ev_x(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * ((-1) ** int(k[0]) + (-1) ** int(k[1]))\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def ev_xx(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * (-1) ** k.count(\"1\")\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def ev_zz(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * (-1) ** k.count(\"1\")\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def aim_logical_energies(\n", + " data_ordering: object, counts_list: Sequence[dict[str, float]]\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " counts_data = {\n", + " data_ordering[i]: decode(\n", + " process_counts(\n", + " counts,\n", + " data_qubits=[1, 2, 3, 4],\n", + " flag_qubits=[0, 5],\n", + " )\n", + " )\n", + " for i, counts in enumerate(counts_list)\n", + " }\n", + " return _aim_energies(counts_data)\n", + "\n", + "\n", + "def aim_physical_energies(\n", + " data_ordering: object, counts_list: Sequence[dict[str, float]]\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " counts_data = {\n", + " data_ordering[i]: process_counts(\n", + " counts,\n", + " data_qubits=[0, 1],\n", + " )\n", + " for i, counts in enumerate(counts_list)\n", + " }\n", + " return _aim_energies(counts_data)\n", + "\n", + "\n", + "def _aim_energies(\n", + " counts_data: Mapping[tuple[int, int, str], dict[str, float]],\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " evxs: dict[tuple[int, int], float] = {}\n", + " evxxs: dict[tuple[int, int], float] = {}\n", + " evzzs: dict[tuple[int, int], float] = {}\n", + " totals: dict[tuple[int, int], float] = {}\n", + "\n", + " for key, counts in counts_data.items():\n", + " h_params, basis = key\n", + " key_a, key_b = h_params.split(\":\")\n", + " u, v = int(key_a), int(key_b)\n", + " if basis.startswith(\"x\"):\n", + " evxs[u, v] = ev_x(counts)\n", + " evxxs[u, v] = ev_xx(counts)\n", + " else:\n", + " evzzs[u, v] = ev_zz(counts)\n", + "\n", + " totals.setdefault((u, v), 0)\n", + " totals[u, v] += sum(counts.values())\n", + "\n", + " energies = {}\n", + " uncertainties = {}\n", + " for u, v in evxs.keys() & evzzs.keys():\n", + " string_key = f\"{u}:{v}\"\n", + " energies[string_key] = u * (evzzs[u, v] - 1) / 4 + v * evxs[u, v]\n", + "\n", + " uncertainty_xx = 2 * v**2 * (1 + evxxs[u, v]) - u * v * evxs[u, v] / 2\n", + " uncertainty_zz = u**2 * (1 - evzzs[u, v]) / 2\n", + "\n", + " uncertainties[string_key] = np.sqrt(\n", + " (uncertainty_zz + uncertainty_xx - energies[string_key] ** 2) / (totals[u, v] / 2)\n", + " )\n", + "\n", + " return energies, uncertainties\n", + "\n", + "\n", + "def _get_energy_diff(\n", + " bf_energies: dict[str, float],\n", + " physical_energies: dict[str, float],\n", + " logical_energies: dict[str, float],\n", + ") -> tuple[list[float], list[float]]:\n", + " physical_energy_diff = []\n", + " logical_energy_diff = []\n", + "\n", + " # Data ordering following `bf_energies` keys\n", + " for layer in bf_energies.keys():\n", + " physical_sim_energy = physical_energies[layer]\n", + " logical_sim_energy = logical_energies[layer]\n", + " true_energy = bf_energies[layer]\n", + " u, v = layer.split(\":\")\n", + " print(f\"Layer=({u}, {v}) has brute-force energy of: {true_energy}\")\n", + " print(f\"Physical circuit of layer=({u}, {v}) got an energy of: {physical_sim_energy}\")\n", + " print(f\"Logical circuit of layer=({u}, {v}) got an energy of: {logical_sim_energy}\")\n", + " print(\"-\" * 72)\n", + "\n", + " if logical_sim_energy < physical_sim_energy:\n", + " print(\"Logical circuit achieved the lower energy!\")\n", + " else:\n", + " print(\"Physical circuit achieved the lower energy\")\n", + " print(\"-\" * 72, \"\\n\")\n", + "\n", + " physical_energy_diff.append(\n", + " -1 * (true_energy - physical_sim_energy)\n", + " ) # Multiply by -1 since negative energies\n", + " logical_energy_diff.append(-1 * (true_energy - logical_sim_energy))\n", + " return physical_energy_diff, logical_energy_diff" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def submit_aim_circuits(\n", + " circuit_dict: object,\n", + " *,\n", + " folder_path: str = \"future_aim_results\",\n", + " shots_count: int = 1000,\n", + " noise_model: cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel | None = None,\n", + " run_async: bool = False,\n", + ") -> dict[str, list[dict[str, int]]] | None:\n", + " if run_async:\n", + " os.makedirs(folder_path, exist_ok=True)\n", + " else:\n", + " aim_results = {\"physical\": [], \"logical\": []}\n", + "\n", + " for layer in circuit_dict.keys():\n", + " if run_async:\n", + " print(f\"Posting circuits associated with layer=('{layer}')\")\n", + " else:\n", + " print(f\"Running circuits associated with layer=('{layer}')\")\n", + "\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " if run_async:\n", + " u, v = layer.split(\":\")\n", + "\n", + " tmp_physical_results = cudaq.sample_async(\n", + " circuit_dict[layer][\"physical\"][basis], shots_count=shots_count\n", + " )\n", + " file = open(f\"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt\", \"w\")\n", + " file.write(str(tmp_physical_results))\n", + " file.close()\n", + "\n", + " tmp_logical_results = cudaq.sample_async(\n", + " circuit_dict[layer][\"logical\"][basis], shots_count=shots_count\n", + " )\n", + " file = open(f\"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt\", \"w\")\n", + " file.write(str(tmp_logical_results))\n", + " file.close()\n", + " else:\n", + " tmp_physical_results = cudaq.sample(\n", + " circuit_dict[layer][\"physical\"][basis],\n", + " shots_count=shots_count,\n", + " noise_model=noise_model,\n", + " )\n", + " tmp_logical_results = cudaq.sample(\n", + " circuit_dict[layer][\"logical\"][basis],\n", + " shots_count=shots_count,\n", + " noise_model=noise_model,\n", + " )\n", + " aim_results[\"physical\"].append({k: v for k, v in tmp_physical_results.items()})\n", + " aim_results[\"logical\"].append({k: v for k, v in tmp_logical_results.items()})\n", + " if not run_async:\n", + " print(\"\\nCompleted all circuit sampling!\")\n", + " return aim_results\n", + " else:\n", + " print(\"\\nAll circuits submitted for async sampling!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def _get_async_results(\n", + " layers: object, *, folder_path: str = \"future_aim_results\"\n", + ") -> dict[str, list[dict[str, int]]]:\n", + " aim_results = {\"physical\": [], \"logical\": []}\n", + " for layer in layers:\n", + " print(f\"Retrieving all circuits counts associated with layer=('{layer}')\")\n", + " u, v = layer.split(\":\")\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " file = open(f\"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt\", \"r\")\n", + " tmp_physical_results = cudaq.AsyncSampleResult(str(file.read()))\n", + " physical_counts = tmp_physical_results.get()\n", + "\n", + " file = open(f\"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt\", \"r\")\n", + " tmp_logical_results = cudaq.AsyncSampleResult(str(file.read()))\n", + " logical_counts = tmp_logical_results.get()\n", + "\n", + " aim_results[\"physical\"].append({k: v for k, v in physical_counts.items()})\n", + " aim_results[\"logical\"].append({k: v for k, v in logical_counts.items()})\n", + "\n", + " print(\"\\nObtained all circuit samples!\")\n", + " return aim_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running a CUDA-Q noisy simulation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we will first explore the performance of the physical and logical circuits under the influence of a device noise model. This will help us predict experimental results, as well as understand the dominant error sources at play. Such a simulation can be achieved via CUDA-Q's density matrix simulator: " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "cudaq.set_target(\"density-matrix-cpu\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def get_device_noise(\n", + " depolar_prob_1q: float,\n", + " depolar_prob_2q: float,\n", + " *,\n", + " readout_error_prob: float | None = None,\n", + " custom_gates: list[str] | None = None,\n", + ") -> cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel:\n", + " noise = cudaq.NoiseModel()\n", + " depolar_noise = cudaq.DepolarizationChannel(depolar_prob_1q)\n", + "\n", + " noisy_ops = [\"z\", \"s\", \"x\", \"h\", \"rx\", \"rz\"]\n", + " for op in noisy_ops:\n", + " noise.add_all_qubit_channel(op, depolar_noise)\n", + "\n", + " if custom_gates:\n", + " custom_depolar_channel = cudaq.DepolarizationChannel(depolar_prob_1q)\n", + " for op in custom_gates:\n", + " noise.add_all_qubit_channel(op, custom_depolar_channel)\n", + "\n", + " # Two qubit depolarization error\n", + " p_0 = 1 - depolar_prob_2q\n", + " p_1 = np.sqrt((1 - p_0**2) / 3)\n", + "\n", + " k0 = np.array(\n", + " [[p_0, 0.0, 0.0, 0.0], [0.0, p_0, 0.0, 0.0], [0.0, 0.0, p_0, 0.0], [0.0, 0.0, 0.0, p_0]],\n", + " dtype=np.complex128,\n", + " )\n", + " k1 = np.array(\n", + " [[0.0, 0.0, p_1, 0.0], [0.0, 0.0, 0.0, p_1], [p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0]],\n", + " dtype=np.complex128,\n", + " )\n", + " k2 = np.array(\n", + " [\n", + " [0.0, 0.0, -1j * p_1, 0.0],\n", + " [0.0, 0.0, 0.0, -1j * p_1],\n", + " [1j * p_1, 0.0, 0.0, 0.0],\n", + " [0.0, 1j * p_1, 0.0, 0.0],\n", + " ],\n", + " dtype=np.complex128,\n", + " )\n", + " k3 = np.array(\n", + " [[p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0], [0.0, 0.0, -p_1, 0.0], [0.0, 0.0, 0.0, -p_1]],\n", + " dtype=np.complex128,\n", + " )\n", + " kraus_channel = cudaq.KrausChannel([k0, k1, k2, k3])\n", + "\n", + " noise.add_all_qubit_channel(\"cz\", kraus_channel)\n", + " noise.add_all_qubit_channel(\"cx\", kraus_channel)\n", + "\n", + " if readout_error_prob is not None:\n", + " # Readout error modeled with a Bit flip channel on identity before measurement\n", + " bit_flip = cudaq.BitFlipChannel(readout_error_prob)\n", + " noise.add_all_qubit_channel(\"meas_id\", bit_flip)\n", + " return noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, with our example noise model defined above, we can synchronously & noisily sample all of our AIM circuits by passing `noise_model=cudaq_noise_model` to the workflow containing function `submit_aim_circuits()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Example parameters that can model execution on hardware at the high, simulation, level:\n", + "# Take single-qubit gate depolarization rate: ~0.2% or better (fidelity ≥99.8%)\n", + "# Take two-qubit gate depolarization rate: ~1–2% (fidelity ~98–99%)\n", + "cudaq_noise_model = get_device_noise(0.002, 0.02, readout_error_prob=0.02)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running circuits associated with layer=('1:-9')\n", + "Running circuits associated with layer=('1:-1')\n", + "Running circuits associated with layer=('1:7')\n", + "Running circuits associated with layer=('5:-9')\n", + "Running circuits associated with layer=('5:-1')\n", + "Running circuits associated with layer=('5:7')\n", + "Running circuits associated with layer=('9:-9')\n", + "Running circuits associated with layer=('9:-1')\n", + "Running circuits associated with layer=('9:7')\n", + "\n", + "Completed all circuit sampling!\n" + ] + } + ], + "source": [ + "aim_sim_data = submit_aim_circuits(sim_circuit_dict, noise_model=cudaq_noise_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "data_ordering = []\n", + "for key in circuit_layers:\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " data_ordering.append((key, basis))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "sim_physical_energies, sim_physical_uncertainties = aim_physical_energies(\n", + " data_ordering, aim_sim_data[\"physical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "sim_logical_energies, sim_logical_uncertainties = aim_logical_energies(\n", + " data_ordering, aim_sim_data[\"logical\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To analyze our simulated energy results in the above cells, we will compare them to the brute-force computed exact ground state energies for the AIM Hamiltonian. For simplicity, these are already stored in the dictionary `bf_energies` below:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "bf_energies = {\n", + " \"1:-9\": -18.251736027394713,\n", + " \"1:-1\": -2.265564437074638,\n", + " \"1:7\": -14.252231964940428,\n", + " \"5:-9\": -19.293350575766127,\n", + " \"5:-1\": -3.608495283014149,\n", + " \"5:7\": -15.305692796870582,\n", + " \"9:-9\": -20.39007993367173,\n", + " \"9:-1\": -5.260398644698076,\n", + " \"9:7\": -16.429650912487233,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the above metric, we can assess the performance of the logical circuits against the physical circuits by considering how far away the respective energies are from the brute-force expected energies. The cell below computes these energy deviations:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Layer=(1, -9) has brute-force energy of: -18.251736027394713\n", + "Physical circuit of layer=(1, -9) got an energy of: -15.929\n", + "Logical circuit of layer=(1, -9) got an energy of: -17.46016175277361\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, -1) has brute-force energy of: -2.265564437074638\n", + "Physical circuit of layer=(1, -1) got an energy of: -1.97\n", + "Logical circuit of layer=(1, -1) got an energy of: -2.176531948420889\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, 7) has brute-force energy of: -14.252231964940428\n", + "Physical circuit of layer=(1, 7) got an energy of: -12.268\n", + "Logical circuit of layer=(1, 7) got an energy of: -13.26321740664324\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -9) has brute-force energy of: -19.293350575766127\n", + "Physical circuit of layer=(5, -9) got an energy of: -16.8495\n", + "Logical circuit of layer=(5, -9) got an energy of: -18.46681284816878\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -1) has brute-force energy of: -3.608495283014149\n", + "Physical circuit of layer=(5, -1) got an energy of: -3.1965000000000003\n", + "Logical circuit of layer=(5, -1) got an energy of: -3.4531715120183297\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, 7) has brute-force energy of: -15.305692796870582\n", + "Physical circuit of layer=(5, 7) got an energy of: -13.336\n", + "Logical circuit of layer=(5, 7) got an energy of: -14.341784541550897\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -9) has brute-force energy of: -20.39007993367173\n", + "Physical circuit of layer=(9, -9) got an energy of: -17.802\n", + "Logical circuit of layer=(9, -9) got an energy of: -19.339249509416753\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -1) has brute-force energy of: -5.260398644698076\n", + "Physical circuit of layer=(9, -1) got an energy of: -4.8580000000000005\n", + "Logical circuit of layer=(9, -1) got an energy of: -5.1227150992242025\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, 7) has brute-force energy of: -16.429650912487233\n", + "Physical circuit of layer=(9, 7) got an energy of: -14.3635\n", + "Logical circuit of layer=(9, 7) got an energy of: -15.448422736181264\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n" + ] + } + ], + "source": [ + "sim_physical_energy_diff, sim_logical_energy_diff = _get_energy_diff(\n", + " bf_energies, sim_physical_energies, sim_logical_energies\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both physical and logical circuits were subject to the same noise model, but the `[[4,2,2]]` provides additional information that can help overcome some errors. Visualizing the computed energy differences from the above the cell, our noisy simulation provides a preview of the benefits logical qubits can offer:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACIMAAAVkCAYAAABNJ02+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdd1RU1/c28GfovWNXsBCxKwhWBLEbe+81tqgxliTGxBLLV41Go9FYE3vXqLFrFDv2ggVsoGKnd6n3/cNXfg73DkxlAJ/PWq7l7Ln3nM30mbvvPjJBEAQQERERERERERERERERERERUZFgoO8EiIiIiIiIiIiIiIiIiIiIiEh7WAxCREREREREREREREREREREVISwGISIiIiIiIiIiIiIiIiIiIioCGExCBEREREREREREREREREREVERwmIQIiIiIiIiIiIiIiIiIiIioiKExSBERERERERERERERERERERERQiLQYiIiIiIiIiIiIiIiIiIiIiKEBaDEBERERERERERERERERERERUhLAYhIiIiIiIiIiIiIiIiIiIiKkJYDEJERERERERERERERERERERUhLAYhIiIiIiIiIiIiIiIiIiIiKgIYTEIERERERERERERERERERERURHCYhAiIiIiIiIiIiIiIiIiIiKiIoTFIERERERERERERERERERERERFCItBiIiIiIiIiIiIiIiIiIiIiIoQFoMQERERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqQlgMQkRERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqAhhMQgRERERERERERERERERERFREcJiECIiIiIios/IjBkzIJPJ5P7NmDFD32kRAD8/P9F9c/r0aX2nRVrA513B5+rqKrqPnj59qu+0CgQ+fgufsLAwmJuby91np06dUmpfvhdRQbd+/XrRY3TQoEH6Tkvn+FpMhUGTJk3kHqNfffWVvlMiIvrsGek7ASIiIso/oaGhePLkCZ4/f474+HgkJyfDxMQEdnZ2sLe3R/HixVGrVi3Y2NjoO1WiXCUmJuLevXsIDQ1FREQEkpKSIAgCLC0t4ezsjIoVK6Jq1aqwtrbWd6pESktMTERwcDCePXuGN2/eIDk5Genp6bCxsYG9vT3s7OzwxRdfwM3NDTKZTN/pEhV6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f+kxIyIi+tykpaVh0aJFcrE+ffqwEISISE9YDEJERERERdLEiRMxfvx4UTwyMhItW7bEixcv9JAVEREREZFuuLm5YdiwYXKxBQsWiJZPJCIi0pV169bh1atX2ZfNzMwwc+ZMPWZERPR5YzEIERERERVZv/32G3r16iWKP3/+HK1atUJ0dLQesiIiIiIi0o3Zs2fD0dEx+/Lz58+xfPlyPWZERESfi6SkJPzyyy9yse+//x7ly5fXU0ZERMRiECIiIiIqsmQyGTZs2AB/f3/Rdffv38eXX36J5ORkPWRGRERERKR9Dg4OmDt3rlxszpw5iIuL01NGRET0uVi0aBFev36dfdnV1RWTJ0/WY0ZERCQTBEHQdxJERERERLoUHx+P4cOHIzY2VnRdmzZtMG7cuPxPioiIiIhIB7KysrBgwQKkpKRkxzp06AAPDw89ZkVEREXdokWLEB8fn325RYsWaNSokR4zIiIiFoMQERERERERERERERERERERFSFcJoaIiIiIiIiIiIiIiIiIiIioCGExCBEREREREREREREREREREVERwmIQIiIiIiIiIiIiIiIiIiIioiKExSBERERERERERERERERERERERQiLQYiIiIiIiIiIiIiIiIiIiIiKECN9J0CkyPv373Hnzh0AgLOzM4yM+HAlIiIiIiIiIiIiIiIiIqKiJSMjAxEREQCAGjVqwMzMTOMxeXSdCqw7d+7A29tb32kQERERERERERERERERERHliytXrsDLy0vjcbhMDBEREREREREREREREREREVERws4gVGA5Oztn///KlSsoWbKkHrMhIiIiIiIiIiIiIiIiIiLSvtevX2evmvHpcXJNsBiECiwjo/97eJYsWRJlypTRYzZERERERERERERERERERES69elxck1wmRgiIiIiIiIiIiIiIiIiIiKiIoTFIERERERERERERERERERERERFCItBiIiIiIiIiIiIiIiIiIiIiIoQFoMQERERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqQlgMQkRERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqAgx0ncCRVlUVBQePnyI8PBwvH37FklJScjKyoKtrS2cnJxQq1YtVK5cGTKZTN+pAgAiIiIQGBiI0NBQJCYmwsLCAi4uLvD29kbZsmX1nR4REREREREREREREREREREpgcUgWnT79m0cOnQIFy5cwM2bN/H69es897Gzs0OvXr0watQo1KxZMx+yFDt79ixmz56NkydPIisrS3Kb+vXrY/LkyejYsWM+Z0dERERERERERERERERERESqkAmCIOg7iaKiX79+2LJli1r7GhgYYMyYMZg3bx7Mzc21nJm0jIwMTJgwAX/88YfS+/To0QN///03LC0tdZjZBy9evMjuSBIeHo4yZcrofE4iIiIiIiIiIiIiIiIiIqL8pItj4wYaj0BKMTExgaOjI6ysrCSXhcnKysLSpUvRpk0bJCYm6jyfrKws9O3bV2EhiK2trWR8586daNu2Ld6/f6/L9IiIiIiIiIiIiIiIiIiIiEhNLAbRgRIlSqBXr15YsWIFAgMDER0djdTUVERGRiIhIQGJiYm4cOECxo0bJ+oCcubMGYwYMULnOc6dOxc7d+6Ui9WoUQM7d+5EQkICYmNjkZycjMOHD6NRo0Zy2509exbffPONznMkIiIiIiIiIiIiIiIiIiIi1XGZGC3at28fnJ2d0bBhQ8nuH1KePHmC1q1b4/Hjx3Lxs2fPwsfHRxdpIjw8HG5ubkhNTc2OtWzZEnv37oWFhYVo+4yMDAwdOhQbN26Ui1+5cgVeXl46yRHgMjFERERERERERERERERERFT0cZmYAq5Tp05o1KiR0oUgAFCxYkUcPHgQJiYmcvFNmzZpO71ss2bNkisEKVmyJHbs2CFZCAIARkZGWLt2LapXry4X//nnn3WWIxEREREREREREREREREREamHxSAFQOXKldGhQwe52JkzZ3QyV0REBNatWycXmz17Nuzs7HLdz9jYGL///rtc7Pjx47h165Z2EyQiIiIiIiIiIiIiIiIiIiKNsBikgKhfv77c5VevXulkngMHDiAjIyP7sq2tLXr16qXUvv7+/qhUqZJcbO/evVrNj4iIiIiIiIiIiIiIiIiIiDTDYpACwtraWu5yVlaWTubZv3+/3OV27dopXB4mJ5lMhh49euQ6HhEREREREREREREREREREekXi0EKiJcvX8pdLlu2rE7mCQgIkLvcqFEjlfZv2LCh3OXbt28jKipK47yIiIiIiIiIiIiIiIiIiIhIO1gMUkAcPHhQ7rK/v7/W5wgPD0dCQoJcrF69eiqNkXM5GwAIDg7WKC8iIiIiIiIiIiIiIiIiIiLSHhaDFAArVqzAjRs3si8bGhpizJgxWp8nJCREFKtQoYJKYzg6OsLGxibPcYmIiIiIiIiIiIiIiIiIiEg/WAyiR4mJiZg6daqo8GP69OmoWrWq1ud7+PCh3GVra2vY2dmpPE7OJWwePHigSVpERERERERERERERERERESkRUb6TqAoEwQBq1atkoulpqYiKioKQUFB+O+//5CUlJR9nYGBAX766SdMnTpVJ/lER0fLXS5RooRa45QsWRL37t3LvhwTE6NRXkRERERERERERERERAWNIAh4//494uLikJqaiszMTGRmZuo7LSIi0jJDQ0MYGhrC1NQUtra2MDMzg0wm03daGmMxiA5lZmZi1KhReW5nZGSENm3a4Oeff4a3t7fO8klMTJS7bGFhodY45ubmuY5LRERERERERERERERUWGVkZCA2NhZxcXFIS0vTdzpERKRjGRkZAIDk5GTExMTAxMQEtra2sLOzg5FR4S2pKLyZFyGNGzdG165dUatWLZ3O82kXEgAwMzNTa5ycxSA5x1XWixcvcr3+9evXao1LRERERERERERERESkjvT0dDx79gzp6emi62QyGQwNDfWQFRER6VJmZiYEQci+nJaWhoiICMTGxsLFxQXGxsZ6zE59LAYpAE6fPo3Tp0/jxx9/xJ9//olOnTrpZJ6UlBS5yyYmJmqNY2pqmuu4yipbtqxa+xEREREREREREREREWlbZmYmwsPD5QpBLCwsYGtrC2traxaCEBEVYZmZmUhISEBcXBySk5MBfCgQDA8Ph4uLS6F8DzDQdwJFmZGREQRBkPuXkJCAJ0+eYNeuXejdu7dcQcbr16/RuXNnLFiwQCf55OwEom5rs9TU1FzHJSIiIiIiIiIiIiIiKkyysrIQHh6efQzE2NgYFStWhIuLC+zs7ArlQUAiIlKeoaEh7Ozs4OLigooVK2Z3A0lNTUV4eDiysrL0nKHq2Bkkn1lZWcHKygoVKlRAt27dEBISgt69e+PWrVvZ23z//fdwd3dH+/bttT73p96/f6/WODk7geQcV1nh4eG5Xv/69Wt4e3urNTYREREREREREREREZGyYmJiso9/GBoaoly5cmp3WCciosLNxMQE5cqVw9OnT5GZmYmUlBTExMTA0dFR36mphMUgeubu7o5Tp06hQYMGePDgQXZ87NixaNu2rVYrTXMWbXxsb6MqbRWDlClTRq39iIiIiIiIiIiIiIiItCkhISH7/2XKlGEhCBHRZ87ExARlypTBs2fPAACJiYmFrhiEy8QUAPb29vjjjz/kYs+ePcPhw4e1Ps+n3r59q9Y4r1+/znVcIiIiIiIiIiIiIiKiwiIjIyP7RFgTExNYWFjoOSMiIioILCwssosDk5OTkZmZqeeMVMNikAKiefPmKFWqlFwsICBAq3N88cUXcpfj4+MRGxur8jg5l3fJOS4REREREREREREREVFhkZSUlP1/a2trPWZCREQFzafvC4mJiXrMRHUsBikgZDIZateuLRcLCwvT6hzu7u6iWGhoqEpjREdHIz4+Ps9xiYiIiIiIiIiIiIiICoNPD+5ZWVnpMRMiIipoPn1fYDEIqc3W1lbucnJyslbHL1u2rOhDzOXLl1Ua49KlS6JYlSpVNMqLiIiIiIiIiIiIiIhIX9LT07P/b25ursdMiIiooPn0feHT94vCgMUgBUhUVJTcZWdnZ62OL5PJ0LRpU7nYhQsXVBoj5/Y1a9aEk5OTxrkRERERERERERERERHpQ1ZWFgDAwMAAMplMz9kQEVFBIpPJst8bPr5fFBYsBikgsrKycOPGDblYqVKltD5Px44d5S4fPHhQpQ4kO3fuzHU8IiIiIiIiIiIiIiKiwiQzMxPAh2IQIiKinAwNDQH83/tFYcF3tQLi4MGDiIyMlIs1b95c6/O0b98eRkZG2Zfj4uKwfft2pfY9deoUHj9+LBfr1KmTNtMjIiIiIiIiIiIiIiIiIiIiDbEYREtSU1PV3jciIgLjx4+Xizk4OMDPzy/X/VxdXbPb0shksjy3B4BixYph4MCBcrGff/4ZsbGxue6Xnp6Ob7/9Vi7WvHlzeHh45DknERERERERERERERERERER5R8Wg2jJ2LFjMXr0aDx//lyl/W7dugU/Pz+EhobKxWfOnAkTExNtppht2rRpcmO/fv0avXr1UrhcTEZGBoYNG4Y7d+7IxWfPnq2T/IiIiIiIiIiIiIiIiIiIiEh9RnlvQspIS0vDmjVrsGLFCjRq1AgdO3aEp6cnatasCUdHx+ztBEHA06dPcfXqVezYsQP79+8XrS3k7++PkSNH6izXcuXK4aeffsL06dOzY8eOHUP9+vUxbdo0tGnTBpaWlkhJScHZs2cxa9YsXLhwQW6MIUOGoF69ejrLkYiIiIiIiIiIiIiIiHRnxaqjWLH6qNbHHTW8NUaNaK31cYmISDUsBtEyQRBw/vx5nD9/PjtmaGgIGxsbZGVlISEhAVlZWQr3b9q0KQ4cOABDQ0Od5vnzzz/jzp072L17d3bszp076N69OwDA1tYW8fHxEARBtG/jxo2xbNkyneZHREREREREREREREREupOQmILXb2J0Mi4REekfi0HyQWZmJmJicn8ztbCwwC+//ILx48frvBAEAAwMDLB161YUK1YMf/75p+j6uLg4yf26du2K9evXw9zcXNcpEhERERERERERERERkY5YW5mjZAl7hddnZQl4+y5WLla8mB0MDGR5jktERPrHYhAtWbx4MVq3bo2jR4/iwoULePz4cZ77GBoaonbt2ujXrx/69esHJyenfMj0/xgbG2P58uXo3r07Zs+ejVOnTkl2AgEAb29vTJ48GZ07d87XHImIiIiIiIiIiIiIiEj7Ro3IfTmXyKh4VKk5Vi52+r9ZcHK00XVqRESkBSwG0RJ7e3v06tULvXr1AgDExMQgODgYz549w7t375CUlASZTAYbGxvY2tqiYsWKqFWrFiwsLNSe8+nTp1rJ3c/PD35+fnj79i0uXbqE0NBQJCUlwdzcHOXKlUO9evVQrlw5rcxFREREREREREREREREREREusViEB2xt7dHw4YN0bBhQ32norTixYujY8eO+k6DiIiIiIiIiIiIiIiIiIiINGCg7wSIiIiIiIiIiIiIiIiIiKhgWr9+PWQymdy/06dP6zutImfGjBmi21lbK0UUJXw8Ko+dQYiIiIiIiIiIiIiIiIiICjiZTKb0tgYGBrCxsYGdnR2KFSsGT09PeHt7o02bNihevLgOsySigoKdQYiIiIiIiIiIiIiIiIiIipCsrCzExsbi6dOnuHLlClasWIHBgwejXLly6Nu3L+7du6fvFIlIx1gMQkRERERERERERERERET0GUhLS8PWrVvh6emJ33//Xd/pEJEOcZkYIiIiIiIiIiIiIiIiIqJCyNraGgYG4vP/s7KykJCQoHC/1NRUjB8/HpGRkZg9e7YuUyQiPWFnECIiIiIiIiIiIiIiIiKiQigoKAixsbGif/Hx8UhPT0dISAiWLVsGNzc3yf3nzJmDrVu35nPWRJQfWAxCRERERERERERERERERFTEGBkZoXLlyhg9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nBxt9JQRkWJVq1ZFcHBw9mUzMzO8fPkSDg4OWpsjMzMToaGhePz4MV68eIH4+HgkJyfDwsICNjY2KFOmDGrVqoVSpUppbU5tyMrKwu3btxEaGorIyEhERUXByMgI1tbWKF26NKpUqYKKFSvCwED9PhLx8fG4cOECnj17hujoaBgYGMDe3h6VKlWCl5cXbGwK9+tGfrxP6OLYuJHGIxAREREREREREREREREREenBxYsX5QpBAKBr165aLQQBAENDQ7i5uRW6ojEDAwPUqVMHderU0dkcNjY2aNOmjc7GJ/VwmRgiIiIiIiIiIiIiIiIiIiqUVq5cKYoNHz5cD5kQFSwsBiEiIiIiIiIiIiIiIiIiokLn3bt32LVrl1ysevXqaNKkiZ4yIio4WAxCRERERERERERERERERESFzoIFC/D+/Xu52OjRo/WUDVHBwmIQIiIiIiIiIiIiIiIiIiIqVG7evIklS5bIxYoVK4YBAwboKSOigoXFIEREREREREREREREREREVCi8efMGy5YtQ4sWLZCeni533eTJk2FhYaGnzIgKFiN9J0BERERERERERERERJRfVqw6ihWrj2p93FHDW2PUiNZaH5dIV/J6LmRlCaKYX/OpMDCQ5TounwukbVu3bsXXX38NAEhNTRUtC/NR1apVs7cjIhaDEBERERERERERERHRZyQhMQWv38ToZFyiwkSd58Lbd7FKjUukTWlpaYiLi8t1GwsLC2zcuBGmpqb5lBVRwVegikHevn2Lhw8f4unTpwgPD0dCQgKSkpKQkZEBCwsLWFpaolixYnBxcUH58uXh7u4OQ0NDfadNRERERERERERERESFhLWVOUqWsFd4fVaWIDrgXbyYXZ7dEKytzLWRHlG+yeu5oMm4RPmpWLFi2LZtGzw9PfWdClGBotdikMePH+PIkSM4ffo0rl69ipcvX6q0v6mpKWrVqoV69eqhVatW8Pf3Z7UXEREREREREREREREpNGpE7ktYREbFo0rNsXKx0//NgpOjja5TI8pXeT0XiAoqQ0ND2Nvbo2rVqmjfvj2GDh0Ke3vtFzYRFXb5XgwSFhaGjRs3YuvWrXj8+HF2XBDE647l5f3797hy5QquXLmCP/74A2ZmZmjRogUGDBiA9u3bw9jYWJupExERERERERERERERERFRPho0aBAGDRqk7zSICp18KwbZ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+PWvf73OdQMGDIi//vWvOaGIefPmxTPPPLPF71KfvPjii3HUUUfFSy+9tFn3XX/99XHqqafm/LllMpm4+uqr890iAAAAAAAAAFADqY2Jufrqq2Pu3LkREVFUVBS33nprzliXLTFkyJB44IEH4u9//3skSRLXXHNNnH/++dGuXbuc64455pg45JBD4rnnnssee/HFF+Poo4+u0fOrvf766/H666+v99yrr766zrGbb755g7VOPvnkaNGiRV76ivhyZ5Ann3wynnzyyejatWuccMIJ8fWvfz169eoVnTp1iqKioux1n3zySYwaNSr+53/+J9577711al1++eWx33775a03AAAAAAAAAKDmUgmDVFVVxW233RaZTCYiIg444IDo2bNnXmpfcMEF8fe//z0ymUxUVFTEXXfdFRdffPE6151zzjnx3HPPZXsYM2ZMXp4f8eWYmiuvvHKTrz/33HM3eO7II4/MaxhkTZMmTcrZ2SOTycQ222wTJSUlsWDBgqiqqtrgvRdddFFcfvnlBekLAAAAAAAAANhyqYyJef3112P+/PnZ9RFHHJG32gcccEA0bdo0u97Q+JeDDjoo+3WSJDFz5sy89VBfJUkSixcvjvnz528wCNKuXbsYMWJEDB8+vJa7AwAAAAAAAAA2RSphkPfffz8ivgwfRER06tQpb7WLioqiY8eO2frVz1rbdtttF61bt86uy8vL89ZDXdarV6+48cYbY8iQIdG5c+dNuqekpCT69+8ft956a3z22Wdx3HHHFbhLAAAAAAAAAGBLpTImZu7cublNFOe3jUaNGm3wWWtq3bp1NgSyaNGivD3/iiuuiCuuuCJv9b5KdaBmU2277bZx7rnnZkfTzJ8/Pz788MOYNm1azJo1K5YuXRpVVVXRsmXLKCsri5133jn69OkTTZo0KUT7AAAAAAAAAECepRIGWdsXX3yR13prjnzJZDIbvK60tDT7dUlJSV57qC9at24dAwYMSLsNAAAAAAAAACBPUhkTUz3GpTqo8dxzz+Wt9vjx42Px4sXZdYcOHTZ47Zq7gTRv3jxvPQAAAAAAAAAApCWVMMhOO+2U/TpJknjmmWdi2rRpeal96623Zr/OZDI5z1pTVVVVzJ49O7v+qtAIAAAAAAAAAEB9kUoYpH///lFWVpZdr1y5Ms4555xIkqRGdUePHh233HJLZDKZbK2jjjpqvdd+/PHHUVFRERFfhka6dOlSo2cDAAAAAAAAANQFqYRBiouLY/DgwZEkSTa48dRTT8X3v//9bEBjc7388svx7W9/OydQUlRUFCeccMJ6r3/11Vdz1j169Nii5wIAAAAAAAAA1CWphEEiIq644opo3rx5REQ2EHL//ffHXnvtFQ888EBUVlZuUp3JkyfHj3/84zjkkENiwYIFERHZkMm55567wTExjz76aPbaiC93KwEAAAAAAAAAqO8ySU1ns9TADTfcEBdddFFkMpmI+FcwI5PJRFlZWRx66KHRu3fv6NKlS7Rq1SoaN24cixcvjnnz5sW7774bY8aMibFjx2bvXbNOly5d4u23344WLVqs89x58+ZF586do6KiIpIkidLS0pg9e/Z6ryU906dPj86dO0dExLRp06JTp04pdwQAAAAAAAAA+VWIn40X17hCDVx44YUxa9as+N3vfheZTCYnzDF//vx48MEH48EHH/zKGmsGSKrXnTt3jmeffXaD4Y6bb745VqxYkV0feuihgiAAAAAAAAAAQIOQahgkIuI3v/lNtGvXLn7+85/HihUr1gmFbEz1tdXX9+/fP+6+++7o0qXLBu8577zz4t/+7d+y62222WbLXwAAAAAAAAAAoA4pSruBiIiLLroo3nrrrTjiiCMi4stQR/XYl419qq9t3759DBs2LF5++eWvDIJERGy77bax3XbbZT/NmzevhbcEAAAAAAAAACi81HcGqbbbbrvFk08+GRMnTow///nPMWrUqHj77bejsrJyg/d06NAh+vXrFyeddFIcf/zxUVJSUosdAwAAAAAAAADUPXUmDFKtW7du8fvf/z4iIioqKuLDDz+MefPmRXl5eVRUVESrVq2irKwsOnfuHJ07d065WwAAAAAAAACAuqXOhUHWVFpaGl/72tfSbgMAAAAAAAAAoN4oSrsBAAAAAAAAAADyRxgEAAAAAAAAAKABEQYBAAAAAAAAAGhAhEEAAAAAAAAAABoQYRAAAAAAAAAAgAZEGAQAAAAAAAAAoAERBgEAAAAAAAAAaECEQQAAAAAAAAAAGhBhEAAAAAAAAACABkQYBAAAAAAAAACgAREGAQAAAAAAAABoQIRBAAAAAAAAAAAaEGEQAAAAAAAAAIAGRBgEAAAAAAAAAKABEQYBAAAAAAAAAGhAhEEAAAAAAAAAABoQYRAA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CwAAm6qianVB669Yvaqg9QEANpUwCDmmTZsWr732Wnz22WexfPny2GabbaJr167Rv3//aNeuXdrtAQAA9VTLksaxQ5PmGzxflSQxo2JZzrGOpc2iKJPZaF0AANhUpUWNYkUBAyFNGvmxCwBQN/hbSQElSRKffvppjB07NsaNGxdjx46NN998M1asWLHOdWl75JFH4ve//32MGTNmveeLiori0EMPjV/84hdx0EEH1XJ3AABAfbexcS5zKpZH+3/emXPs7YNPiHalTQvdGgAAW5Hdt9k23l40r3D1m7cqWG0AgM0hDJJnS5Ysid/97ncxbty4GDduXCxYsCDtlr7S0qVL44wzzogHHnjgK6+rqqqKkSNHxsiRI+PCCy+Ma6+9NoqL/c8HAAAAAID6o8+2bQsaBumzrR22AYC6wU/z82zu3Lnx29/+Nu02Nsny5cvjqKOOihdffHGdc5lMJlq2bBkLFy5c59wNN9wQs2bNir/97W+R2ciWzQAAAAAAUFcc2b5z3Db1o4LVP6J9p4LVBgDYHEVpN0B6LrzwwnWCIAcccEA89dRTsXTp0liwYEEsWrQo7rvvvth7771zrrvvvvvid7/7XW22CwAAAAAANXJshy7RobRZQWp3KG0Wgzt0KUhtAIDNJQxSYM2bN48DDzwwLr744vjb3/4Wv/71r9NuKSIixo0bF7feemvOsdNPPz2ef/75OOKII6Jp0y/ncrdo0SKGDBkSY8aMicMOOyzn+l/96lcxffr0WusZAAAAAABqonFRoxjatUdBag/t2iNKihoVpDYAwOYyJibPmjVrFuecc07st99+sd9++0X37t2jUaN//eXvjjvuSK+5NVx22WU56x49esQtt9yS0+uamjdvHvfdd1907949Zs6cGRERFRUV8etf/zr+9Kc/FbxfAAAAAADIh6HdesR9X0yM8Qvn5q1mn1Zt4+JuPfNWDwCgpuwMkmft27ePm266Kc4888zo0aPHBsMVaXrzzTdj5MiROceuu+66KCkp+cr7ysrK4r/+679yjt12220xZ86cvPcIAAAAAACFUFLUKO7c55BoWdw4L/VaFTeOO3sPjOIiP3IBAOoOfzPZCj300EM561133TUGDhy4Sfd+97vfjRYtWmTXq1atiscffzyv/QEAAAAAQCHt1bJ1PNlvUI0DIa2KG8c/+g2K7i3K8tQZAEB+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33+sTJ+emzJq06ZNXuvXZ3vssUfOeuHChdnwzKaaPHnyRusCANQVu2+zbWHrN29V0PoAADQslVWr49Q3n6txEKTaolUr4wfjR0VlgXfEAwCgYTFeu+FLJQzSvn37iIjIZDIREfHRRx/ltf5LL72Us873GJr6rHv37usce+211zarxpgxY3LW22yzTXTq1KlGfQEAFEqfbdtu/KIa1W9X0PoAADQswye+u8WjYTZk/MK5MXziu3mtCQBAw2a8dsOXShhk9913z1m/8soreas9a9asePXVV7NBk+Li4thvv/3yVr++a9u2bfTo0SPn2Ob++a99/cCBA7N/3gAAdc2R7TsXtP4R7YViAQDYNCurVsfwSYUJbQyf9K7dQQAA2GTGazd8qYRBdtttt9hpp50iIiJJkhg7dmx8/PHHeak9fPjwWLnyyy0WM5lM7LffftG0adO81G4ojj322Jz1/fffv8n3Llu2LB5//PGvrAcAUJcc26FLdChtVpDaHUqbxeAOXQpSGwCAhueRmVNiZsWygtSeWbEsHp45pSC1AQBoeIzXbvhSCYNERBx55JGRJEl2R4lLLrmkxjVfffXVGD58eGQymUiSJCIEFdbnuOOOy1l/8sknMWrUqE269957741FixZl18XFxfHtb387r/0BAORT46JGMbRrj41fuAWGdu0RJQVO0AMA0HA8NXtaQev/c/b0gtYHAKDhMF674UstDHLxxRdHo0ZffuM8SZJ47LHH4tprr93ieuPGjYvjjz8+Kisrs8datWoV55xzTo17rcsymUzO5/TTT9/oPb17945DDz0059hFF12U82e3PgsWLIjLLrss59jpp58e7du33+y+AQBq09BuPaJ3q/z+46ZPq7Zxcbeeea0JAEDD9saCuQWuP6eg9QEAaDiM1274UguD7LrrrnHaaadldwdJkiQuueSSuPDCC2Pp0qWbXKe8vDyuuOKKOOigg2LWrFnZWplMJi688MJo0aJFAd+i/vrNb36Ts3733Xfj7LPPjtWr1z9XdOnSpXHSSSfFzJkzs8dKS0vjP//zPwvaJwBAPpQUNYo79zkkWhY3zku9VsWN487eA6O4KLW/TgMAUA99tGRBYesvXVjQ+gAANBzGazd8xWk+/Oqrr44XXnghJk2alA1x/M///E/cddddcdJJJ8WAAQNiyZIl2ZEvEREjR46MefPmxWeffRYvvvhivPjii7Fs2bKckTOZTCb69u0bv/jFL1J5r9dffz1ef/319Z579dVX1zl28803b7DWySefXJBAS9++feOMM86I22+/PXvsjjvuiE8//TR++ctfxkEHHRRNmjSJJUuWxJNPPhm/+tWv4r333supcdlll0XnzoVNjAEA5MteLVvHk/0GxaAxT8aiVSu3uE6r4sbxj36DonuLsjx2BwDA1qCiav2/iJUvK1avKmh9AAAajurx2pdOeC3vtY3XrhtSDYO0bt06nnjiiejfv38sWLAgGwhZuHBh/PnPf44///nPOdcnSRJHHnnkOsciIhsESZIkOnToEA888EAUF6fzeo8//nhceeWVm3z9ueeeu8FzRx55ZMF2N/njH/8YH3/8cbzyyivZYy+//HIcccQRkclkomXLlrFw4fp/m+CEE05YZ2QMAEBdN6B1h3j1wMHxg/GjYvzCzd+iu3ertnFX74GCIAAAbJHSokaxooCBkCaNUv12LwAA9czQbj3ivi8mbtH3SjfEeO26I/V9rXfbbbd46aWXYo899sju7lEdCqn+rGnN42teX32uR48e8eqrr8YOO+yQxuvUK82aNYunnnoqjj/++HXOVYdy1ue8886Le+65J4psiw4A1EPdW5TFmAMHx1V79t3kbRA7lDaLq/bsG2MOHCwIAgDAFtt9m20LW795q4LWBwCgYTFeu2GrE/8tdO/ePcaNGxfnnHNOlJSU5IQ8NvaJ+DK40KhRo/jhD38Yo0ePjp122inlN6o/ttlmm/j73/8eI0aMiP3333+D12UymTj00EPj+eefjz/+8Y9RUlJSi10CAORXSVGjuGTXXjH1sO/H/ft+M07eYZd1rtm7RVmcteMecf++34yph30/Ltm1l60NAQCokT7bti1w/XYFrQ8AQMNTPV67poEQ47Xrnkyy9tYbKfviiy9i2LBh8fe//z0+++yzjV7fvn37OOaYY+JnP/tZdO3atRY6bNimTp0aY8aMialTp8aKFSuiefPm0bVr1+jfv3+0b9++VnuZPn16dO7cOSIipk2bFp06darV5wMAW485Fcuj/T/vzDk2+4hTo11p05Q6gq2P/x8CsDV44IuJMeT1ZwpW//59vxknbt+tYPVha+HvpgBsjT5YXG68dooK8bPxOjdEcvvtt48//OEP8Yc//CGmTp0ar7zySkyfPj3m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fp3JZOKAAw7YpPtWrVq10V0+zj333Pjd734XM2bMiCRJ4sYbbxQGYatmnAsAAAAAAADA1qUojYeWl5dHRESSJBERsccee6z3uuqdQ6qtWLFio7WLiori2GOPzdaeMGFCTJ06tSbtAgAAAAAAAADUG6mEQRYsWJCzbtWq1Xqva968eTbUERGxdOnSTaq/995756zfeuutzeoPAAAAAAAAAKC+SiUM0rhx45z1hka/tGjRImc9ffr0Tarfrl27nPVnn322Gd0BAAAAAAAAANRfqYRBWrZsmbNevHjxeq8rKyvLWU+ZMmWT6i9fvjwi/jVmZkP1AQAAAAAAAAAamlTCIDvuuGNE/CusUV5evt7r9txzz5zrXn311U2q/8EHH0REZEfMNG3adMubBQAAAAAAAACoR1IJg+yxxx45648++mi91/Xo0SP7dZIk8fjjj29S/YceeigbIImIaNu27RZ0CQAAAAAAAABQ/6QSBtlpp51yRsBU7+SxtgMPPDBKSkqy608++STuvffer6x90003xccff5xzrFevXlveLAAAAAAAAABAPZJKGCTiy6BHkiSRJEm8/vrrUVFRsc41rVu3jsMPPzySJIlMJhNJksSPfvSjeOSRR9Zb8+abb45///d/z9kVpEOHDjk7jAAAAAAAAAAANGTFaT340EMPjUcffTQiIioqKuLFF1+Mww47bJ3rLrroonjiiSciIiKTycTixYvj+OOPj7322isOPPDAaN26dcydOzeeeeaZmDRpUk5wJJPJxAUXXFCr7wUAAAAAAAAAkKbUwiDHH398XHTRRdn1vffeu94wyKGHHhonnnhiPPDAA5HJZLJBj/feey/ef//97HVJkkREZHcFyWQysfvuu8eFF15Y2BcBAAAAAAAAAKhDUhsTs8MOO8SAAQOyo2Luv//+WLx48XqvvfXWW6Nv3745gY/qUEj1p/pYxJfBkPbt28eIESOiWbNmtfZOAAAAAAAAAABpSy0MEhHx0ksvRVVVVVRVVcXixYujRYsW672uRYsW8fTTT8eZZ54ZEbFOAGTNEEiSJHHQQQfF2LFjY4899qi1dwEAAAAAAAAAqAtSGxOzuVq0aBG33nprXHTRRXHffffFyJEjY9q0aTF37txo3rx5dOzYMQ488MAYMmRIDBw4MO12AQAAWMOwie/EsInvbPB81f/tBLmmrz3/YBT9X/h/Qy7u1jMu7tazxv0BAAAAQENSb8Ig1fbee+/Ye++949e//nXarQAAALCJFlWujM9XLN2se2ZULNukugAAAABArnoXBgEAAKD+aVnSOHZo0rwgdQEAAACAXMIgAAAAFJxxLgAAAABQe4RBAAAAALYSN/3pqbjplqfyXvfcs4+Mc390ZN7rAgAAAFtGGAQAAABgK7F4yfKYMbO8IHUBAACAukMYBAAAAGAr0WKbptGxQ9kGz1dVJTFr9oKcY9u13zaKijIbrQsAAADUHcIgAAAAAFuJc3/01eNc5s5bFHv2vCDn2PPP/DratmlZ6NYAAACAPCpKuwEAAAAAAAAAAPJHGAQAAAAAAAAAoAERBgEAAAAAAAAAaECEQQAAAAAAAAAAGhBhEAAAAAAAAACABkQYBAAAAAAAAACgAREGAQAAAAAAAABoQIRBAAAAAAAAAAAaEGEQAAAAAAAAAIAGRBgEAAAAAAAAAKABEQYBAAAAAAAAAGhAitNuYGtRVVUVb7zxRrz77rsxe/bsSJIk2rRpE927d4++fftGSUlJ2i0CAAAAAAAAAA2AMEiBLVmyJK655pq4+eabY/bs2eu9plWrVnH66afHZZddFu3atauVvrp06RKfffZZjWrcfvvtcfrpp+enIQAAAAAAAAAgL1IbE/Pf//3fsWjRorQeXytef/312GuvveJXv/rVBoMgERELFy6M66+/PvbYY4946qmnarFDAAAAAAAAAKChSS0M8u///u+xww47xNlnnx3jx49Pq42Cee211+KQQw6JqVOnrnOutLQ0mjZtus7x+fPnx9FHHx2PPvpobbQIAAAAAAAAADRAqY6JWbZsWfzlL3+Jv/zlL7HvvvvGj3/84zjppJOiSZMmabZVY3PmzInjjjsulixZkj1WXFwc559/fpx77rmxyy67RCaTialTp8Zf/vKXGDZsWCxdujQiIlatWhUnn3xyvPHGG7HbbrvVWs//9V//FW3atNmse/r371+gbgAAAAAAAACALZVqGCQiIkmSiIgYN25cnHnmmXHxxRfHaaedFj/60Y9i9913T7m7LXPFFVfEjBkzsuvS0tJ48MEH49vf/nbOdTvttFP86le/im9961sxaNCgKC8vj4iIJUuWxMUXXxyPP/54rfV88sknR5cuXWrteQAAAAAAAABAYaQ2JqZaJpOJTCYTEV8GQ8rLy+P666+P7t27x6GHHhp///vfY/Xq1Sl3uemmTJkSt956a86xK6+8cp0gyJr69u0b//M//5Nz7IknnohXX321ID0CAAAAAAAAAA1XamGQESNGxGGHHRYRX4ZAqkMhmUwmkiSJJEni+eefjyFDhkTnzp3j8ssvj+nTp6fV7iYbPnx4rFy5Mrveeeed4z/+4z82et/3vve9OOCAA3KOXXXVVXnvDwAAAAAAAABo2FILgwwePDieeuqp+Pjjj+M//uM/ok2bNtkQyNqhkJkzZ8Z//dd/xc477xyDBw+Of/7zn2m1vVEPP/xwzvqss86K4uJNm8Zz9tln56yffvrpWLZsWb5aAwAAAAAAAAC2AqmPienWrVtcc801MX369LjzzjtjwIAB64RCqoMhq1evjsceeyyOOuqo7H1z585N+xWy3nzzzZg6dWrOsZNOOmmT7//Od76TExxZvnx5PP3003nrDwAAAAAAAABo+FIPg1Rr3LhxnHLKKfHyyy/H22+/Heecc05ss802G9wtZPLkyfGzn/0sOnfuHD/4wQ/ilVdeSfsVYtSoUTnr7bbbLnbZZZdNvr9Zs2bRq1evnGPPPvtsPloDAAAAAAAAALYSdSYMsqYePXrEjTfeGF988UXceOON8bWvfW2Du4VUVFTEPffcEwcddFD07NkzbrrppliyZEkqfX/wwQc56/3333+za/Tr1y9nPWHChBr1BAAAAAAAAABsXepkGKRa8+bN45xzzok333wzRo8eHaecckqUlpZGkiQREevsFvLee+/F+eefH9tvv32ce+658fbbb9dqvx9++GHOumvXrptdY+171q5ZSFOmTIknn3wy7rzzzrjrrrviH//4R7zxxhtRWVlZaz0AAAAAAAAAADVTnHYDm6pfv37Rr1+/uO666+K2226LW265JT799NOI+DIUEhHZUMiSJUvilltuiVtuuSX69u0bP/7xj2PIkCHRuHHjgvb48ccf56x33HHHza7RuXPnnPXnn38eS5cujebNm9eot43Zd999Y968ees917Rp0+jfv3+cddZZMWTIkCgurjf/swEAAAAAAACArU6d3hlkfVq3bh0/+clP4uOPP45//vOfMXjw4GjUqNF6R8gkSRKvvfZanHbaabH99tvHpZdeGlOnTi1Yb+Xl5TnrDh06bHaNjh07brRuIWwoCBIRsXz58hg1alScfPLJseuuu8Zzzz1X8H4AAAAAAAAAgC1T78IgazrssMNixIgR8dlnn8V3vvOd7PiYiHVHyMyfPz/+8Ic/RLdu3eK73/1ufPTRR3ntZfny5bF69eqcY82aNdvsOk2bNl3n2JIlS7a4r3ybMmVKfPOb34yrr7467VYAAAAAAAAAgPWo1/M+Kisr4/7774+bb745Ro8enQ1/VI+NiYicr5MkidWrV8cDDzwQI0aMiHPPPTd+//vfrzeAsbmWLl26zrEmTZpsdp319bK+2vnQqFGj+PrXvx6DBg2KPn36xJ577hllZWVRUlIS8+fPjw8//DCee+65+POf/xwzZszI3ldVVRWXXnpptGnTJs4666wtfv706dO/8vyazwQAAAAAAAAANk29DINMmjQp/vSnP8Xtt9+eHW+y5piY6nVERElJSVRWVkZE5JxbtWpV/PGPf4xRo0bFyJEjt2iky5qWL1++zrHGjRtvdp3S0tJNql1Tl1xySRx77LGxww47rPd8hw4dokOHDnHwwQfHZZddFr/85S/jmmuuydl95ZxzzokDDjggdt999y3qoXPnzlt0HwAAAAAAAACwYfVmTEySJPHII4/EkUceGbvttlv84Q9/iLlz52bDCWsGPYqLi+O73/1uvPzyyzF//vy4+eabo3fv3tmRMWuOkHn//ffjmGOOiaqqqhr1t75dQFauXLnZdSoqKjapdk39+Mc/3mAQZG2NGzeOq666Km644Yac46tWrYrLLrss770BAAAAAAAAAFuuzodBZsyYEb/61a9ip512iuOPPz5GjhwZVVVV64Q6kiSJjh07xpVXXhlTp06Ne+65JwYMGBDNmzePs88+O15//fV4+eWXY9CgQesESN5444249957a9TnNttss86xFStWbHad9e0Csr7aaTj//PPj+OOPzzk2YsSImDVr1hbVmzZt2ld+xo4dm4+2AQAAAAAAAGCrUmfHxDz77LNx0003xWOPPRarVq3KGU+y9iiYAw88MBtUaNSo0QZrDhgwIJ544ol47LHH4pRTToklS5Zkz913333x/e9/f4v7bdq0aTRq1ChWr16dPbZs2bLNrlOXwyAREZdffnmMGDEiu06SJJ5++un4wQ9+sNm1OnXqlM/WAAAAAAAAAICoYzuDlJeXx7Bhw2L33XePww8/PB566KGorKzM2QWkeieQpk2bxg9/+MN4++2344UXXogTTzzxK4Mgazr66KPjmmuuydZNkiTGjx9f4/633XbbnPXMmTM3u8aMGTM2WjdNPXv2jB133DHnmB08AAAAAAAAAKDuqBNhkDFjxsTpp58enTp1ip/+9KfxySefZEe/rD0Kplu3bjFs2LD4/PPP409/+lP06NFji5555plnRklJSXY9d+7cGr/HbrvtlrOeOnXqZteYNm1aznr77bevUzuDRER07949Zz179uyUOgEAAAAAAAAA1pbamJilS5fG3XffHTfddFO88847EfGvsS/VY2CqjxUVFcWgQYPi/PPPjyOPPDIvzy8uLo4dd9wxJk2aFBERK1eurHHNPfbYI1599dXsurr25pg8efI6Neua1q1b56zLy8tT6gQAAAAAAAAAWFtqYZCOHTvG0qVLswGQiH+FQKqPlZWVxZlnnhk//vGPY+edd857D/necWPtHTO2ZHzKmDFjctZ77rlnjXoqhAULFuSsW7VqlU4jAAAAAAAAAMA6UguDLFmyJDsCplp1CKRXr15x3nnnxcknnxxNmjQpaB9rhlFqauDAgTnrWbNmxaeffhq77LLLJt2/bNmyeOutt3KOHXrooflqL28++eSTnHX79u1T6gQAAAAAAAAAWFtqYZA1JUkSJSUl8Z3vfCfOO++8+PrXv14rzz3nnHNi5syZeavXu3fv6Ny5c0ybNi177L777ovLLrtsk+4fMWJEVFZWZtdNmjSJww8/PG/95cOnn366ThikZ8+eKXUDAAAAAAAAAKwt1TBIkiTRsWPH+NGPfhQ/+tGPYrvttqvV5//oRz/Ke83BgwfHf//3f2fXf/nLX+LSSy+N4uKN/1HfcsstOevDDjssmjdvnvcea+I3v/nNOseOPPLIFDoBAAAAAAAAANanKK0HH3jggXHvvffGZ599Fv/5n/9Z60GQQhk6dGiUlJRk15MnT45rr712o/fde++98dJLL+Ucu/TSSzd6X/WonerP6aef/pXX12Qszr333ht//etfc44dfPDBsdNOO21xTQAAAAAAAAAgv1ILg7zwwgsxZMiQTdoxoz7Zeeed46yzzso5dsUVV8QTTzyxwXvGjh0b5513Xs6xQYMGFWRczosvvhhHHXXUOsGTjbn++uvj1FNPzQmTZDKZuPrqq/PdIgAAAAAAAABQA6mFQRqyK6+8Mjp06JBdr1ixIgYPHhxD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/1nkvBtuuEGdO3c2jb388suW5ydJ69ev108//WQae/PNNxUZGVnovPLly2v8+PGmsY8//lgnTpywPEcAAAAAAAAAAAAAAOAZmkEs9t1335m2R48erYiICJfm3n777abtH3/8Uenp6ValZvftt9+aths2bKiePXu6NPf6669XbGysfTsnJ0dz5syxND8AAAAAAAAAAAAAAOA5mkEstH79eu3fv980dt1117k8/5prrjE1jpw7d04//vijZfmdN2vWLNP2sGHDXJ5bpkwZDRw4sNB4AAAAAAAAAAAAAADAf2gGsdDChQtN21WqVFGDBg1cnl+6dGm1atXKNPbLL79YkZrdyZMntXHjRtPYZZdd5laMTp06mbbzP28AAAAAAAAAAAAAAOA/NINYaMuWLabt9u3bux2jY8eOpu2tW7d6lVN+zuJ16NDBrRj5c0xJSdHBgwe9ygsAAAAAAAAAAAAAAFiDZhALbdu2zbRdr149t2Pkn5M/prfyx4uPj1eFChXciuHseVmdJwAAAAAAAAAAAAAA8AzNIBbasWOHabtWrVpux6hZs6Zp+9ChQ0pLS/MqrwtZkWP58uVVpkwZ09j27du9ygsAAAAAAAAAAAAAAFiDZhALnTlzxrSdmJjodoyqVasWGdcbp0+fNm17kqPkmKeVOQIAAAAAAAAAAAAAAM9F+DuBUHHu3Dnl5uaaxkqXLu12nFKlSjmMpaamepxXUbE8yVFyzNPKHJ256qqrFB0dbUms66+/Xg888ECh+7z11lv68ssvLTneeb///nuhjx8/flxXX321pce8//77dcMNNxS6z5NPPqmFCxdadszKlStr9uzZhe6zadMm3X777ZYdU5LGjx+vXr16FbrPbbfdpj///NOyYzZr1kwfffRRofv88ssveuqppyw7piR9+OGHat68eaH7XHXVVTpx4oRlx+zZs6deeOGFQvf54osv9Pbbb1t2TEmaNWuWEhISCt3n0ksvtfSYnCPMOEd4jnOEGecI73CO+B/OEd7hHGHGOcJznCPMQukckdioQaH7cI7wHOcIM84RnmMdYcY5wjucI/6Hc4R3OEeYcY7wHOcIM84RnuMcYcY5wnPFdY7IzMz0ar4zNINYxNmtXGJiYtyO46wZxMrbxOSP5UmOkmOenuR48ODBQh8/cuSI/d/r1693O35BXDnB7tu3TytWrLDsmK7I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ZIi++eYb+1ipUqX0/vvvu33cYMG6FEWhFksGajG4UaeeY23qG6F5vRPAC8OGDdPkyZPt23PnztXo0aPdipGSkqLPPvvM5f0XLVqkjIwMp4+1bdvW4R5jwe7o0aPq1auXGjZsqEGDBunyyy9Xq1atlJCQIOnvv8o5ceKEfvnlF33xxRf6/vvvTfPr16/v1vf3QseOHdP69evt2w0aNNAll1zi+ZOBT1CHxWPNmjVas2aN08d+//13h7HCFo833XSTYmNjXToudRgaqFPPTJkyxbQdHR2tG264wfLjUGehw5taMwxD8+bN07x581SvXj1de+21uuyyy9SqVSvVqFFDYWFh9v127typhQsX6t1339Wff/7pEGvcuHFq166dNU8qwLA2RVGow+LB2hTeoE49w9oU7rDi/wHHjh2rPXv2qH///urfv7/atWunhg0b2ussPT1d69at06xZs/Thhx8qOTnZPjcsLExTp05VgwYNrHlCAYh1KVxBLRYP1qbwBnXqGdamPmIAMMnJyTESExMNSYYko3Tp0kZ6erpbMf766y/7fG+/xo0b59Hxnn32WQ+/A763fv16p881KirKqFixohEREVHg9+Piiy829u/f7/Gx33vvvaD5PpVk1GHxGDdunGXfo7/++svl41KHoYE6dV9WVpZRqVIl0/Gvu+46nxyLOgsd3tTaokWLCqwZm81mxMbGGhUqVDDCwsIKra8HH3zQrZz9XWvuYm2KolCHxYO1KbxBnbqPtSncZcX/A7Zs2dLhfR8WFmaUK1fOKFOmTIH1FRkZaXz++edu5+zvOnMX61K4glosHqxN4Q3q1H2sTX2H28QA+YSHh5supZeenq4ffvjBjxkVbcuWLaZtm82mIUOG+Ckbz2VlZenUqVPKyclxeMxms+nWW2/VqlWrVLNmTY+PMWPGDPu/w8LCNHLkSI9jwXeow9BGHYYG6tR9c+bM0cmTJ01jo0aN8smxqLPQ4ataMwxDKSkpOn36tPLy8pzuU7lyZc2cOVNvvPGGW7H9XWtWYW2K86jD0EYdhgbq1H2sTeEuX9VZXl6ezp49q7S0NKePN23aVL///rtHfxns7zqzCutSXIhaDG3UYmigTt3H2tR3aAYBnLj33nsVHh5u3540aZIfsyla/vuNXXvttWrWrJl/knFB3bp1NXbsWLVr104REYXfraps2bIaPny4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sWTJEre+b4U1gyxdutStPEqVKmXMmjXLreN7+rqdPHnSuOSSS7x6La6++mrjzJkzbuVrGAU3GRw8eNC49NJL3crhiSeecPv43rDy3FetWjWHWJ999plpn0B8nVasWGHUqlWryOM6c8MNNxgREREeP5eLL77Yo2a3gpoAkpKSjP79+7t8/Pj4eOOXX35xiL9ly5ZCG5jyfzVo0MCj5q/z9u7dawwZMsSj7+GQIUOKfD8UZzPIRx99ZFStWtXt+FWqVDFmzJjh1vetoPfB0aNHja5duxZ5TGfNIPv27XNpbmFfjz76qFvPwxO5ubkO66O7777bo1g0g5j95z//ccj52muv9Tjeb7/95hCvXr16DmtDVzir5e3bt3ucGwAAAIJL8VwvFAAAAACKyZYtW3Ty5EmP56enp+vee+/VXXfdZUk+L774ou655x5lZma6POett97Sk08+ad/OysrSoEGD9N5777kcIycnR6NGjdKsWbPcyjcUPP/887r++ut16NAht+du3rxZvXv31hdffOF1HnPmzNHll1/uVh7nzp3TNddco/nz53t9/KKkpKRo/fr1XsWYNWuW2rdvr4MHD3qdz549e9ShQwf9/vvvbs178cUX9dRTT3l9fH9ISkpyGCtXrpxpO9Bep6VLl6p79+7av3+/R/OXL1/ucOsDd2zdulUdO3bUzz//7HGM81JSUtSjRw/98MMPLs9JSkrSwIED9ccff9jH/vjjD3Xp0kV//vmny3F27dql7t27O30PFGXFihVq3769Zs6c6fZcSZo5c6Y6duyoXbt2eTTfKtnZ2frHP/6h2267TUeOHHF7/rFjxzRs2DA9//zzXuVx9OhRderUSUuXLnV77t69e9W5c2eP5ha31atXO6yPunfv7p9kQsxNN93kcCur2bNn69SpUx7Fmzx5ssPYrbfeKpvN5nasHj16OIzNmzfPo7wAAAAQfILjZqEAAAAA4KHatWvrkksuUZMmTVSjRg3FxsaqVKlSSk1N1eHDh/XHH39owYIFDh/Ivf/++2revLnuvvtuj4/93XffmZo6qlSpogEDBqh169aqVKmSUlJStGHDBn311Vc6duyYae6ECRM0aNAgtW/fXvfcc4/pF/cXXXSRBgwYoIYNG6pcuXI6ffq0li1bpq+//trUdJKXl6e77rpL3bt3d+se877UoEEDnT17VtLfH8Dlf94tW7YsMkaFChUKfOz555/X2LFjHcYjIiLUo0cPXX755apevbpycnJ04MABzZ07VytWrJBhGPZ9s7KydNNNNyk8PFzDhg1z8ZmZ/fHHH3r88ceVlZUlSSpVqpR69eqlrl27KjExURERETpw4IB+/PFH/fLLL6a5OTk5+sc//qHNmzcX6+tWtmxZtWvXThdffLEaNmyo+Ph4xcbGKisrS2fOnNGWLVu0aNEibd261TRv586duu6667RkyRJFRHj2a4aUlBT169fP3jhjs9nUqVMnXX755apVq5bKli2rEydO6LffftO3336rjIwM0/wJEyZo4MCB6tChg2dP3g/27duntLQ0h/HKlSsXOs+fr9PRo0c1ZMgQ0/e/ffv2uuKKK1S7dm3FxsbqyJEj2rJli2bMmFFkvPDwcLVu3VpNmzbVRRddpIoVKyouLk6GYSg5OVk7d+7UihUr9NtvvykvL88+LzU1Vddff73Wr1+vmjVrevRcJGnkyJFat26dfbtNmzbq16+f6tatq7Jly+ro0aNauHChvv/+e9Px09PTdfPNN2vdunU6efKkBgwYYP/QNzIyUj169FDPnj1VrVo1RUREaO/evZo1a5ZWrlxpOv6ePXv0+OOP67///a/LOS9evFj9+vVzqIGwsDB16dJFnTp1Ut26dVWuXDmdO3dOBw8e1JIlS/TLL78oNzfXvv/27dt15ZVXas2aNYqLi3M4ToUKFezn46ysLIf3U82aNQs9F0t/n+8LkpeXp0GDBmnu3LkOj1WrVk29evXSJZdcokqVKikmJkanT5/W+vXrNW/ePFMjkmEYGjt2rCpVquRRE2deXp6GDRumPXv22Mfq1aun/v3766KLLlKlSpV06tQp/fXXX/rmm28c5t966606cOCAw3irVq3UvXt3NWrUSOXKlVNkZKRSUlJ05swZbdu2TRs3btSaNWtMr4mvLVmyxGGsbdu2xXb8UFa+fHkNHjzY1EialZWlzz77TPfff79bsdLT0zV9+nTTWHh4uEaNGuVRbrVr11blypV14sQJ+9jixYv1wAMPeBQPAAAAQcbPVyYBAAAAEKQC9TYx48aNM5o3b268+eabxo4dO1yak5GRYbz99ttGXFyc6ZjR0dHGwYMHXYrh7DLc528NEx4ebjz//PPGuXPnnM5NSkpyern/K664wvjmm2/s25UrVza++uqrAnPYuXOn0ahRI4c4L774osfPwerbxFxo3Lhxll4KftmyZUZ4eLhDzM6dOxd6SfTly5cbF110kcO8cuXKGfv27SvyuM7erzExMfZ/jxgxwjh8+HCh8ytUqOAQ46WXXnLpeXv6/f/rr7+McuXKGffee6+xePFiIysry6Xj/fbbb0bbtm0djvnqq6+6NN8wHG8DcOH3q0OHDsbatWsLzbt169YOMfr06ePy8b1h1bnv9ddfd4gTFRVlpKamOhwvUF6nC+urRYsWxvLlywucW9D5rmHDhsaQIUOMmTNnGmfPnnUpj7179xo33HCDQz79+/d3+bnkvz3Ihbfuqlu3rvHTTz8VOHfNmjVGlSpVHI7/+eefGwMHDrRvX3755YX+3Pn4448dzlFhYWHGgQMHXHoOR44ccZrHLbfcUuS5ateuXUafPn0c5rpyKwtn73lXbtdVmLFjxzrErFGjhvHVV18ZOTk5Bc7Lzs42PvroI6Ns2bIOtVPYeeO8/O+DC1+PihUrGlOnTi3wVhx5eXlGRkaGffvXX391eA716tUzli1b5tL34PTp08Znn31mdO3a1XjsscdcmuONa6+91pRrbGysR7cdMQxuE+PMzz//7JB3q1at3I4zZcoUhzj9+vXzKrfLL7/cFK969epexQMAAEDwCI7VNAAAAICAE6jNIK5+uOjMhg0bHBpCHn/8cZfmOvtA/vwHfTNnzixyflZWltGsWTPTXJvNZlSqVMmQZFStWtWl5pZdu3aZPuSUZDRq1Mjj5xAszSB5eXlG48aNnX5YnJmZWeT8U6dOOXz/JRkDBgwocq6z9+v5r+eff96l/H/99VfDZrOZ5jZo0MCluZ5+/zMzM4309HSXjpHfuXPnjL59+5qOWbNmTSM7O9ul+QV9vwYMGFBgE8GFTp065fCheFhYmEvNO96y4tx34sQJIzEx0SFOz549HfYNxNfpsssuM5KSkjzKyZtz9DPPPONwjty2bZtLc/M3AZz/uvjii40jR44UOf+3335zqNGEhAT7v2+44QaXvq/jx493yOGFF15w6Tn069fPNC88PNz47LPPXJprGH+fJ2+55RaH469cubLQeVY3gyxfvtwICwszxbv00kvdem/88ccfDj+vXfnAvKD3QZUqVYzNmze79TwefvhhU4zIyEhj586dbsU4Ly0tzaN57qhTp44p344dO3oci2YQR3l5eUbdunUdcl+3bp1bcZy9R7/++muvchszZoxDzMKaVAEAABA6wgQAAAAAFlmzZo1atWrl9dc//vEPj3Pw5rYaLVq00IsvvmgamzRpksfxJOmxxx7T4MGDi9wvMjLS4fYmhmHo5MmTkqRPP/1UDRs2LDJO/fr1dcstt5jGduzYod27d7uRdfD54YcftH37dtNYrVq1NH36dEVFRRU5v0KFCpo9e7ZKlSpVZFxXDRkyRE899ZRL+3bu3FlDhw41je3atcunr1tUVJTD83VVTEyMPvnkE5UuXdo+dv62N56qU6eOpk2bppiYmCL3rVChgsaNG2cay8vL008//eTx8YvLsWPHdNVVV+no0aMOj912220OY4H2OsXHx2v69OlOby3i6nxPjR07Vu3atbNvG4bh1Tk6Ojpa06dPV2JiYpH7durUSf369TONHT9+XJLUuHFjTZw40aXb7/zzn/9UuXLlTGMX3gasIKtXr3bY76WXXtKNN95Y5NzzbDabPvjgA1188cWm8QkTJrgcwwrjx4833XanWrVqmjt3rlvvjZYtWzrcXmfevHnasGGDRzlNnDhRTZo0cWvOhbeWkaTu3bsXemucwlxYo76QlZWlffv2mcZq167t02OWNDabzWH9JUkff/yxyzF2796tpUuXmsYqV66sq666yqvcnL3WO3bs8ComAAAAggPNIAAAAAAsk5aWpg0bNnj95c/GheHDh8tms9m3jx8/7vEvzMuVK6cnnnjC5f0HDBig6Ohoh/HevXurV69eLse59tprHcbWrVvn8vxg9M477ziM/fvf/1aZMmVcjlG3bl09+uijpjHDMPTuu++6nU9YWJheeeUVt+YMHz7cYWzt2rVuH7u4JCQkqG/fvqaxZcuWeRxv3Lhxbn0YfP311ys8PNw0Fsjfrz179mjChAlq0aKFfv/9d4fH27Vrp+uuu87y41r9Oj300EOqXr26t2l5xGazacSIEaYxb57LiBEj1Lx5c5f3v+aaa5yOjx071uUP82NiYjRgwADT2IYNG2QYRqHzXn75ZdN2gwYN9NBDD7l0zAtFRkY6/FyaN2+eMjMz3Y7liT///FNz5841jb344osODTKuuPHGGx2aJL/77ju34/To0cPhNXFFSkqKabtixYpuxygu+/btc3iP+auOQ9moUaMUFmb+dfvnn3/ucn1NnjzZ4XUaMWKEIiMjvcqrRo0aDmN79+71KiYAAACCA80gAAAAAHCB+Ph4JSQkmMZWrFjhUazrrrvOrWaEUqVKqXHjxg7jo0ePduu4l1xyicOYp1e3CAZZWVlasmSJaSwxMdGlK7Lkd/vttzs0GHhytYmePXuqfv36bs1p3769w1igv275P4j1tFbKlCnj1hUOJKl8+fIOx/fX96uwqyI1btxYFStWVP369fX444/bryZxoerVq2vGjBmmRjQrWfU62Ww23XrrrVak5LH8z2XdunXKzs72KJYV59bY2FiHq/q4GyclJUWHDh0qcP+MjAzNmTPHNDZq1CiHc5WrrrzySof4nr4n3PX111+btmNjYz1ugrLZbA5Xa1m8eLHbcdx9H5yXv/lj5cqVysnJ8SiWrx08eNBhzJUr4sA9NWvW1BVXXGEaO336tGbNmlXk3Ly8PE2dOtVh3IpzbtWqVR3GDhw44HVcAAAABL6ir18JAAAAAEHMMAytXbtWa9eu1aZNm3Tw4EGlpKQoOTm5wA8QT58+bdrev3+/R8fu2rWr23Nq166tjRs3msa6dOniVowKFSooNjbW9FfLZ8+edTuXYLFu3TplZGSYxgYNGuTSLRvyq1q1qrp06WL6QHH79u06deqUW3/13a1bN7ePXaVKFZUpU0ZpaWn2saSkJLfjeOPQoUNavny5Nm7cqB07digpKUnJyck6d+6c0ysX5L/Viae10rFjR5du55Nf/fr1tW3bNvt2cX+/zjt/VSRPtGrVSl9++aVbt2zw1+vUoEEDp39h7o3U1FQtXbpUGzdu1JYtW3Tq1CklJycrLS3NdCuRC/e/UGZmpo4dO+Z2XqVLl1bbtm3dmuPsNerYsaPbf7Vfp04dh7GzZ88W+BxWrlzpcGWByy67zK1jXqhChQqKj4831cv69es9Om+5K3/jXuvWrV26NVRB6tata9pev3692zF69Ojh0bE7dOigL7/80r79119/6bbbbtO7777r89u+uCs5OdlhzJ1mVbhu9OjRmj9/vmls8uTJGjZsWKHzfvrpJ4cGjQ4dOqhp06Ze5+Ts/Zj/yjYAAAAITTSDAAAAALBMt27dPPqr3PwWL17s8Ycz5yUlJenf//63Pv30U+3bt8+rWJ42UjRo0MDtObGxsabtUqVKqVq1ah7FufAX/f76kLw4OLsFjrsf8l6oXbt2pvexYRhav369Lr/8cpdj5L96gavi4+P90gzy9ddf67///a+WLFni9AN4V3laK958vy4UTO/zWrVq6Z577tGYMWNcbibw9+vUunVrj4+Z39q1a/Xqq69q9uzZOnfunFexCmukKEjt2rXdbhjLf36WrDnPS4W/d3/77TeHsbvvvtujBqrz0tPTTdsnT570OJarcnNzHa5AsnHjRrVq1crjmPmbN5OSkpSdne1yTVWpUsWjn7HS31f/euKJJ0zv3ylTpmju3LkaNWqUhgwZonbt2jncNsQf8r/e0t/rC1jvqquuUqVKlUw19eOPP+rQoUOF3ppn8uTJDmOeXrUmP2ev9YVrDQAAAIQumkEAAAAAhJxZs2bpjjvu0LFjxyyJ5+kHzOXLl3d7Tv4PsDyJ4SyOp7dRCAbOPsS8+OKLPY7XpEkTl45RmAoVKnh07OJ+3Q4fPqwRI0Zo4cKFlsTztFaC5fvliejoaMXFxalcuXJq1KiR2rRpo65du6pHjx4uf0gcKK9T/ltoeSI7O1tjxozRe++951VDy4U8eT5WnJ+tjFPYe9fZLT62bt3q9nELc+rUKUvjFXSM/FdxOnPmjM6cOWPpcU6fPq0qVaq4tK837+mqVavqxRdf1JgxY0zjx48f1yuvvKJXXnlF5cqVU6dOndShQwd17NhRnTp1UtmyZT0+pqdyc3Mdxjy9zRAKFxUVpREjRuiNN96wj+Xl5emTTz7RE0884XTOmTNn9N1335nGypQpo+uvv96SnJw1vgXqLY0AAABgLZpBAAAAAISUzz//XCNHjnT6wYenPP2A2d1bB/gqRqhz9kFiuXLlPI7n7MPd/H99XpRgeN0OHTqk7t27a9euXZbF9PTDpWD4fhXGqqsiORNIr1NcXJxXx83OztbQoUM1a9Ysr+I4i+suq95zxfHeLY5GDW+vzuKK4ngeknvPxdv39IMPPqicnBw9/vjjTuvq7Nmzmjt3rubOnSvp7w/lO3bsqOuuu07XX3+9KlWq5NXxXeXsyhD5G3NgndGjR5uaQaS/rxpTUDPIZ5995nArqKFDhzq9ipAnnNVEoN3KCAAAAL7h/+sUAgAAAIBFdu/erVtvvdWhESQyMlKDBw/WG2+8oZ9//lnbt2/X6dOnlZaWpry8PBmGYfqqXbu2n54BPOHsvvdlypTxOJ6zuc6OEexGjRrltMGgVatWevzxx/Xtt99q3bp1Onr0qJKTk5WVleVQK+PGjfND5iVLIL1O7t5WJb+XX37ZaSNI9erVdffdd2vatGn6/fffdeDAAZ09e1YZGRkOz2XRokVe5RCMrL5yhr8E4vPw9j0tSQ8//LD+/PNP3XTTTYqJiSl035ycHC1btkz33XefateurX/961/FcrsOZz/XvGkAcvZ9s6K5xFlOwXgFk6ZNm6pDhw6msZ07d+rXX391ur+zW8TceuutluXj7PvqzToJAAAAwYMrgwAAAAAIGY899pjDX1b27dtXH3/8sapWrepynOL4C2lYx9lfznrz4ZqzuVb9dW6g+OGHH/Tzzz+bxhISEvTpp5/qiiuucDkOteJbofQ6HT9+XC+99JJpLCIiQq+++qruvfdelz+UD4TnUtycXdVh69atuuiii/yQjeecPY/rrrtOX375pR+ysVbjxo01bdo0vfvuu/rhhx+0aNEiLVu2TNu3b5dhGE7npKen69///rdmz56tH3/80aeNqM5uh+PuFa8u5OzqW6mpqR7HKyyGp7fL87fRo0dr5cqVprGPP/5YXbp0MY1t3LhR69atM401atTIYT9vOHutrbjtFwAAAAIfVwYBAAAAEBLS0tL0/fffm8Zat26t2bNnu9UIIgXmXy+jYM4+KDp79qzH8ZzNrVChgsfxAtEXX3xh2g4PD9f333/vVoOB5N2HiShaKL1Os2fPVnp6umns5Zdf1oMPPujW1RkC4bkUN2e3EgnG70OoPI/CxMfH68Ybb9RHH32krVu36tSpU5ozZ44effRRNW/e3OmcHTt2qH///srKyvJZXs4aTQ4ePOhxPKt/7hYWI1ibQa6//nqHq2/MmDHDoeFl0qRJDnOtvCqI5Py15ip4AAAAJQPNIAAAAABCwtKlSx2uCvL4448rMjLSrTgHDhxQdna2lanBxypXruwwtnXrVo/jbdmyxWHM2YeYweynn34ybfft21ft27d3O86ePXusSglOhNLrlP+5lC9fXvfdd5/bcQLhuRS3KlWqOIzt27fPD5l4p3LlyrLZbKaxYHwe7ihfvrz69++vCRMmaOPGjdq+fbvuuusuh1ufbN682WlTgFUqVqyouLg405g3zSDOfiZu27bN43jnOfvZHaw/f2NjYzV06FDTWFpamr766iv7dlZWlj777DPTPhEREbr55pstzeXQoUMOY3Xr1rX0GAAAAAhMNIMAAAAACAkHDhxwGPPkEtu///67FemgGLVu3dphbM2aNR7HW716tWnbZrM5PUawyszM1PHjx01jntRKbm6uVq1aZVVayCfUXqf85+gOHTq43awnlcxzdIcOHRzGli5d6odMvBMTE6OWLVuaxnbs2KFjx475KaPi16hRI/33v//V1KlTHR775ptvfHrsFi1amLa3b9/ucSxnPxM3btzocbzz/vzzT4exNm3aeB3XX0aPHu0wNnnyZPu/Z8+erVOnTpke79evnxITEy3NI3+jTnR0dNDdZgoAAACeoRkEAAAAQEg4efKkw5gnt/aYPn26FenABc5uDZGbm+t2nNatWysmJsY09t1333kU69ixY/r1119NY40bNw6p28Tk/+BJ8qxW5s6d63C5e1gn1F6n/OdoT57LyZMntWjRIqtSCho9evRwOF/OmTOn2K5iZdW5WpJ69+7tMDZz5kyPYgWzG2+8Ua1atTKNWdFMUZh27dqZtvft26fk5GSPYl122WUOY/PmzZNhGB7FO2/OnDkuHStYdO7cWY0bNzaNLVu2TDt37pQkffzxxw5znDWQeGvDhg2m7ZYtW3rUjAcAAIDgQzMIAAAAgJCQ/77skvMGkcLs3r1bs2bNsiolFCE2NtZhzJMPrSMjI9WjRw/T2NGjR/Xdd9+5HevDDz9UTk6OaeyKK65wO04gs6JWJOn111+3Ih0UINRep/zPx5Pn8u677yojI8OqlIJGXFycunfvbho7ePCgPv3002I5vlXnakm6+uqrHcb+/e9/O5x3S4L8V2ZISkry6fE6duzoMOZpA0qbNm2c3nbGm2atXbt2OVz5Jzw8XF27dvU4ZiC49dZbHcY+/vhjHT58WD/++KNpvEqVKurfv7+lx8/IyNCOHTtMY86uNgQAAIDQRDMIAAAAgJBQtWpVh7H8v2QvTF5enm699VaP/9oZ7itfvrzD2J49ezyKdc899ziMPfzww0pPT3c5xr59+zRhwgTTmM1m07333utRToEqPj5epUuXNo25UyuSNHHiRC1evNjCrJBfqL1O+c/Ry5cvV1pamsvzN2/erJdeesnqtILGU0895TD28MMPe3zOdEdsbKzD1UE8Pe5ll13m0NiyZ88e/fOf//Q0vaB15MgR03blypV9erxevXopLMz8q+D8V8JyVXR0tG677TaH8X/9618er6Meeughh7FrrrlG1apV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 7), dpi=200)\n", + "\n", + "layer_labels = [(int(key.split(\":\")[0]), int(key.split(\":\")[1])) for key in bf_energies.keys()]\n", + "plot_labels = [str(item) for item in layer_labels]\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " sim_physical_energy_diff,\n", + " yerr=sim_physical_uncertainties.values(),\n", + " ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " color=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Physical\",\n", + ")\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " sim_logical_energy_diff,\n", + " yerr=sim_logical_uncertainties.values(),\n", + " color=(0, 177 / 255.0, 152 / 255.0),\n", + " ecolor=(0, 177 / 255.0, 152 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Logical\",\n", + ")\n", + "\n", + "ax.set_xlabel(\"Hamiltonian Parameters (U, V)\", fontsize=18)\n", + "ax.set_ylabel(\"Energy above true ground state (in eV)\", fontsize=18)\n", + "ax.set_title(\"CUDA-Q AIM Circuits Simulation (lower is better)\", fontsize=20)\n", + "ax.legend(loc=\"upper right\", fontsize=18.5)\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "\n", + "ax.axhline(y=0, color=\"black\", linestyle=\"--\", linewidth=2)\n", + "plt.ylim(\n", + " top=max(sim_physical_energy_diff) + max(sim_physical_uncertainties.values()) + 0.2, bottom=-0.2\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running logical AIM on Infleqtion's hardware " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The entire workflow we've seen thus far can be seamlessly executed on real quantum hardware as well. CUDA-Q has integration with Infleqtion's gate-based neutral atom quantum computer, [Sqale](https://arxiv.org/html/2408.08288v2), allowing execution of CUDA-Q kernels on neutral-atom hardware via Infleqtion’s cross-platform Superstaq compiler API that performs low-level compilation and optimization under the hood. Indeed, the AIM research results seen in [our paper](https://arxiv.org/abs/2412.07670) were obtained via this complete end-to-end workflow.\n", + "\n", + "To do so, users can obtain a Superstaq API key from [superstaq.infleqtion.com](https://superstaq.infleqtion.com/) to gain access to Infleqtion's neutral-atom simulator, with [pre-registration](https://www.infleqtion.com/sqale-preregistration) open for access to Infleqtion’s neutral atom QPU." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a tutorial, let us reproduce the workflow we've run so far but on Infleqtion's QPU. We begin with the same GPU-enhanced VQE to generate the AIM circuits:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "\n", + "if cudaq.num_available_gpus() == 0:\n", + " cudaq.set_target(\"qpp-cpu\", option=\"fp64\")\n", + "else:\n", + " cudaq.set_target(\"nvidia\", option=\"fp64\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9\n", + "Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1\n", + "Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7\n", + "Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9\n", + "Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1\n", + "Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7\n", + "Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9\n", + "Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1\n", + "Computed optimal angles=[-1.7301462945564499, 1.570796044872433] for U=9, V=7\n", + "\n", + "Finished building optimized circuits!\n" + ] + } + ], + "source": [ + "device_circuit_dict = generate_circuit_set(\n", + " ignore_meas_id=True\n", + ") # Setting `ignore_meas_id=True` drops the noisy-identity gate from earlier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now, we change backends! Before selecting an Infleqtion machine in CUDA-Q, we must first set our Superstaq API key, like so:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# os.environ['SUPERSTAQ_API_KEY'] = \"api_key\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we declare the type of execution we would like on Infleqtion's machine based on the keyword options specified:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "\n", + "# Set the following to run on Infleqtion's Sqale QPU:\n", + "cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\")\n", + "\n", + "# Set the following to run an ideal dry-run on Infleqtion's Sqale QPU:\n", + "# cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\", method=\"dry-run\")\n", + "\n", + "# Set the following to run a device-realistic noisy simulation of Infleqtion's Sqale QPU:\n", + "# cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\", method=\"noise-sim\")\n", + "\n", + "# Set the following to run a local, ideal emulation:\n", + "# cudaq.set_target(\"infleqtion\", emulate=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With that, we're all set! That simple change instructs our AIM circuits to execute on Infleqtion's QPU (or simulator). Due to the general queue wait time of running on hardware, we optionally recommend enabling the `run_async=True` flag to asynchronously sample the circuits. This will allow the cell to be executed and not wait synchronously until all the jobs are complete, allowing other classical code to be run in the meantime. When using `run_async`, an optional directory to store the job information can be specified with `folder_path` (this will be important to later retrieve the job results from the same directory)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Posting circuits associated with layer=('1:-9')\n", + "Posting circuits associated with layer=('1:-1')\n", + "Posting circuits associated with layer=('1:7')\n", + "Posting circuits associated with layer=('5:-9')\n", + "Posting circuits associated with layer=('5:-1')\n", + "Posting circuits associated with layer=('5:7')\n", + "Posting circuits associated with layer=('9:-9')\n", + "Posting circuits associated with layer=('9:-1')\n", + "Posting circuits associated with layer=('9:7')\n", + "\n", + "All circuits submitted for async sampling!\n" + ] + } + ], + "source": [ + "submit_aim_circuits(\n", + " device_circuit_dict, folder_path=\"hardware_aim_future_results\", shots_count=1000, run_async=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the above cell execution, all the circuits will post to execute on QPU. We can then return at a later time to retrieve the job results with the cell below:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving all circuits counts associated with layer=('1:-9')\n", + "Retrieving all circuits counts associated with layer=('1:-1')\n", + "Retrieving all circuits counts associated with layer=('1:7')\n", + "Retrieving all circuits counts associated with layer=('5:-9')\n", + "Retrieving all circuits counts associated with layer=('5:-1')\n", + "Retrieving all circuits counts associated with layer=('5:7')\n", + "Retrieving all circuits counts associated with layer=('9:-9')\n", + "Retrieving all circuits counts associated with layer=('9:-1')\n", + "Retrieving all circuits counts associated with layer=('9:7')\n", + "\n", + "Obtained all circuit samples!\n" + ] + } + ], + "source": [ + "aim_device_data = _get_async_results(circuit_layers, folder_path=\"hardware_aim_future_results\")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "physical_energies, physical_uncertainties = aim_physical_energies(\n", + " data_ordering, aim_device_data[\"physical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "logical_energies, logical_uncertainties = aim_logical_energies(\n", + " data_ordering, aim_device_data[\"logical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Layer=(1, -9) has brute-force energy of: -18.251736027394713\n", + "Physical circuit of layer=(1, -9) got an energy of: -17.626499999999997\n", + "Logical circuit of layer=(1, -9) got an energy of: -17.69666562801761\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, -1) has brute-force energy of: -2.265564437074638\n", + "Physical circuit of layer=(1, -1) got an energy of: -2.1415\n", + "Logical circuit of layer=(1, -1) got an energy of: -2.2032104443266585\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, 7) has brute-force energy of: -14.252231964940428\n", + "Physical circuit of layer=(1, 7) got an energy of: -12.9955\n", + "Logical circuit of layer=(1, 7) got an energy of: -13.76919450035401\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -9) has brute-force energy of: -19.293350575766127\n", + "Physical circuit of layer=(5, -9) got an energy of: -18.331\n", + "Logical circuit of layer=(5, -9) got an energy of: -18.85730052910377\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -1) has brute-force energy of: -3.608495283014149\n", + "Physical circuit of layer=(5, -1) got an energy of: -3.476\n", + "Logical circuit of layer=(5, -1) got an energy of: -3.5425689231532203\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, 7) has brute-force energy of: -15.305692796870582\n", + "Physical circuit of layer=(5, 7) got an energy of: -14.043500000000002\n", + "Logical circuit of layer=(5, 7) got an energy of: -14.795918428433312\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -9) has brute-force energy of: -20.39007993367173\n", + "Physical circuit of layer=(9, -9) got an energy of: -19.4715\n", + "Logical circuit of layer=(9, -9) got an energy of: -19.96524696701215\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -1) has brute-force energy of: -5.260398644698076\n", + "Physical circuit of layer=(9, -1) got an energy of: -4.973\n", + "Logical circuit of layer=(9, -1) got an energy of: -5.207315773582224\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, 7) has brute-force energy of: -16.429650912487233\n", + "Physical circuit of layer=(9, 7) got an energy of: -15.182\n", + "Logical circuit of layer=(9, 7) got an energy of: -16.241375689575516\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n" + ] + } + ], + "source": [ + "physical_energy_diff, logical_energy_diff = _get_energy_diff(\n", + " bf_energies, physical_energies, logical_energies\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, we use the same metric of comparing against the true ground state energies; however, this time, both the physical and logical circuits are fully exposed to real hardware noise. Yet, we expect the use of logical qubits afforded to us by the `[[4,2,2]]` code to achieve energies closer to the true ground state than the bare physical circuits (up to a certain error threshold). And indeed they do! Visually, we can plot the energy deviations of both the physical and logical circuits from the cell above and observe that the logical circuits are able to outperform the physical circuits by obtaining much lower energies, demonstrating the power of error detection and the beginning possibilities of fault-tolerant quantum computation: " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACIMAAAVkCAYAAABNJ02+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdd3yN5/8/8NfJHrKQECKJGdTW2JGgqKqt9mxLKa0WbT9GUaVao0W1arQRmxpFbamYsYKYQURIgkRk73X//vBLvk7u+5ycmXMSr+fjcR6P5Dr3dV3vs+75vq9LJgiCACIiIiIiIiIiIiIiIiIiIiIqF0wMHQARERERERERERERERERERER6Q6TQYiIiIiIiIiIiIiIiIiIiIjKESaDEBEREREREREREREREREREZUjTAYhIiIiIiIiIiIiIiIiIiIiKkeYDEJERERERERERERERERERERUjjAZhIiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicoTJIERERERERERERERERERERETlCJNBiIiIiIiIiIiIiIiIiIiIiMoRJoMQERERERERERERERERERERlSNMBiEiIiIiIiIiIiIiIiIiIiIqR5gMQkRERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROcJkECIiIiIiIiIiIiIiIiIiIqJyhMkgREREREREREREREREREREROUIk0GIiIiIiIiIiIiIiIiIiIiIyhEmgxARERERERERERERERERERGVI0wGISIiIiJ6Q2VmZmLjxo348MMP0aRJE1StWhVWVlaQyWRyj759+8rVi4yMFC3j6elpkNdAys2bN0/0Wc2bN8/QYRGVS35+fqLfW1BQkKHDIiJ643h6eorWx5GRkYYOi5RYtGiR3OdVp04d5ObmlliPxyVUFryp+4hcF5Oxu3fvHszNzeW+o2fPnjV0WEQ6Z2boAIiISD0RERF4+PAhnjx5gpSUFGRkZMDCwgKOjo5wcnJClSpV0LRpU9jb2xs6VCKl0tLScPv2bURERODFixdIT0+HIAiwtbWFs7MzateujYYNG8LOzs7QoRKVS6tXr8a3336Lly9fGjoUIiIiIiJ6Q0VFRWHhwoVyZT/8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qBG++uorLF++HHPmzEF2drbcMmFhYejatSuCg4NRoUIFXb4MnZGa/qT451u4nLEngzRr1gzh4eFIS0srKvP399c6GaT4e+Th4QFBECSTgEg7165dE5X5+fmVfiBERERkFNQ9diIi0oWgoCCEhITIlY0bNw4mJpzVnoiISl+9evXg6+uLU6dOFZWtXbsWc+bMMdpzzkSq4t4VEZGB5eXloU+fPpKJIK6urjhz5gx++eUXjYYkk8lk6N27Ny5cuICAgABUrFhRFyGXOyYmJmjXrh1+//13PHr0CJ988onkSBXJycno3r27wtFbNLF7927RqCRVq1bFN998I1pWlRFEDE0QBAwZMgQPHz4UPVe5cmWcPn0as2fPLjER5HUWFhb4+uuvce7cOckpYW7duoUxY8ZoE7beREVF4cSJE6Ly5cuXi8oOHjyIFy9elEJUmrO1tcUHH3wgV3bw4EHExcVp3Obt27dFUwmNHj1a8jdI2ouPjxeVubm5GSASIiIiIiJ6U/38889y/5uZmeHDDz80UDRERETA+PHj5f5PTk7Gn3/+aaBoiHSHySBERAa2YMECXLhwQVTu5uaGs2fPom3btlr3IZPJMGrUKISGhqJDhw5at1eeOTs7448//sD+/fsls34TExPxwQcfIC8vTyf9SSV4DB8+HGPHjhVdDA8NDcXVq1d10q++/Pbbbzh+/Lio3NHRESdPntTqzsOWLVsiKCgITk5Ooud2796NzZs3a9y2vgQEBKCgoECurGXLlhg/fjzq1KkjV56bm4tNmzaVZngaGTt2rNz/eXl5Wr33xUcFkclkRpvcUx4kJyeLyqytrQ0QCRERERERvYkiIiLw77//ypX16NHDqKd/JSKi8m/AgAFwcHCQK1u5ciUEQTBQRES6wWQQIiIDevjwIX744QdRuampKXbv3o1atWrptD83NzcEBgZi6NChOm23PHr//fdx6NAhWFpaip4LCQnB6tWrte7j8ePH+O+//0Tlo0ePhru7Ozp16iR6zphHB4mPj8fMmTMln9uwYQMaNWqkdR8NGjTAxo0bJZ/78ssvkZqaqnUfuiIIAjZs2CAqHz16NABg1KhRoueM+fMt5OPjI0pk0TTu3NxcUSKJn58fatasqXF8pFxOTo6hQyAiIiIiojdYQECA6MLawIEDDRQNERHRK5aWlnj//fflyiIiInDmzBkD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8o8//lhvfSr6rezevVtvfapqx44dyMjIkCurWLGiaN7JgQMHiobsTUpKwj///KPvELVWfDqXxMREteLeuHEj8vLylLZZnt27dw+tWrXC0aNH1aqXnZ2NyZMn44cfftBTZKVv3bp1aNmyJU6ePKlR/ejoaIwYMQJfffWVaOotVT148ACtW7fGkSNH1KqXmZmJL774AlOmTNGo37Lk77//hre3N86ePatR/RcvXmD06NEYM2aM5BR5mlq1ahV69eqFZ8+eqVUvPDwcPj4+uHHjhs5iKY/i4uLw559/IjExUat2Hj9+jH79+uG7777TUWSvREZGwtvbGwcPHtSqnXPnzqFVq1YICQlRq15iYiKGDh2KZcuWadSvnZ0dvL295cqSk5Nx5coVldsIDAzU6LniTp48iYKCArmyTp06lTj9xMaNG3Hr1i2V+5GSnZ2NFStWwM/PD8+fP9eqrdcJgoAPP/wQ06dPR2ZmplZtHThwAE2aNJE8hlNFQkICvvjiCwwfPlyn68CyplGjRvjtt99E5cePH8fChQvVauvKlSuYPn26qLxnz5746quvVGrDWD7X06dPo3Hjxvjjjz9E+8fqePnyJR4/fqxxfZKXk5ODESNG4MMPP8TLly81auP06dN4++23FR4vayI9PR3du3fHzz//LFpvl2TDhg3o27evVt8zbR0+fFhU5ufnV/qBFBMdHY327dtjyZIlGv2eCwoKsG7dOrz99tu4e/euSnV8fHxEU+qdPn1arc+n+NTChfLy8nD69GmV25HaZ+jcubPK9YODg9GkSROsW7cO+fn5KtcrlJGRgfnz56NHjx5ISUlRu76U7OxsvP/++1i8eLFBv/PaevbsGXx8fODv76/x8W6h/Px8o3gvbt++jXbt2uHixYtq1UtJScGYMWPwzTffaNW/sWz/yxpjOHdTnK6OB4vr1KmTqOzQoUM67YOoNHGiayIiA3j27BmuX78uKvfz8yszczm+SWQyGfr27Yvly5fLlefn5+P06dPo37+/Wu0lJydLHnBIJX74+fnBw8ND7qReQUEBAgICMHPmTLX61Zfc3FzJExCenp5o37693vpt3749PD09ERkZKVd+/PhxFBQUlMp8oopIJfsMHToUFhYWcmUVKlRA//79sWnTJlH9IUOG6DVGbfXt2xdOTk5yFwj9/f0xePBgler7+/vL/V+/fn20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Lfrf1NQU4eHhWo+EoGtZWVmIiopCSkoKAMDW1hY1atTQy5335VVKSgqePn2KjIwMCIJQtD51dnbmMYOGEhMT8fLlS6SlpSE/P7/oONnZ2ZnbBy0Zw/a/LDLkuRtd2LJli2j6yn379qF3794GiohId5gMQkREREZp69atGDFihOgOnAoVKuC///5TONw5EZGhvKnJIERERERE6oqPj0etWrWQmppaVDZp0iSsWrXKgFEREdGbRhAENG3aFDdv3iwqa926NS5cuGDAqIh0h2lsREREZJSGDRuGJUuWiMrT0tLw3nvv4d69ewaIioiIiIiIiIi0VblyZXz55ZdyZX/99ZfCKUWIiIj04eDBg3KJIACwcOFCA0VDpHtMBiEiIiKjNW3aNNHJIeDVHUTdunVDdHS0AaIiIiIiIiIiIm1NmzYNVapUKfo/MzMTy5YtM2BERET0pime+NGtWzd06dLFQNEQ6R6TQYiIiMioLVu2DEOGDBGVP3nyBN27d0dCQoIBoiIiIiIiIiIibdjb2+Onn36SK1u5ciViYmIMFBEREb1J9uzZIzcdjLm5OVauXGnAiIh0j8kgREREZNRkMhkCAgLQuXNn0XN37txBz549kZGRYYDIiIiIiIiIiEgbo0aNQvv27Yv+z8zMxNy5cw0YERERvQny8vIwY8YMubKpU6fCy8vLQBER6YeZoQMgIiIiKomFhQX27t2L8ePHIykpSfT8unXrMGXKlNIPjIiIiIiIiIg0JpPJsG7dOuzYsaOozMzMDLm5uTA3NzdgZEREVJ49efIEQ4cOLfpfJpNh+vTpBoyISD9kgiAIhg6CiIiIiIiorBszZgwCAgLkyvz9/TFmzBjDBERERERERERERERvLE4TQ0RERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROSITBEEwdBBEREREREREREREREREREREpBscGYSIiIiIiIiIiIiIiIiIiIioHGEyCBEREREREREREREREREREVE5YmboAIiMSVZWFm7evAkAcHZ2hpkZfyJERERERERERERERERERKQ/eXl5ePHiBQCgcePGsLKy0rpNXukmes3NmzfRqlUrQ4dBRERERERERERERERERERvoEuXLsHb21vrdjhNDBEREREREREREREREREREVE5wpFBiF7j7Oxc9PelS5fg6upqwGiIiIiIiIiIiIiIiIiIiKi8e/bsWdEMFq9fs9YGk0GIXmNm9n8/CVdXV7i5uRkwGiIiIiIiIiIiIiIiIiIiepO8fs1aG5wmhoiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicoTJIERERERERERERERERERERETlCJNBiIiIiIiIiIiIiIiIiIiIiMoRJoMQERERERERERERERERERERlSNMBiEiIiIiIiIiIiIiIiIiIiIqR5gMQkRERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROcJkECIiIiIiIiIiIiIiIiIiIqJyhMkgREREREREREREREREREREROUIk0GIiIiIiIiIiIiIiIiIiIiIyhEmgxARERERERERERERERERERGVI0wGISIiIiIiIiIiIiIiIiIiIipHmAxCREREREREREREREREREREVI4wGYSIiIiIiIiIiIiIiIiIiIioHGEyCBEREREREREREREREREREVE5wmQQIiIiIiIiIiIiIiIiIiIionKEySBERERERERERERERERERERE5QiTQYiIiIiIiIiIiIiIiIiIiIjKETNDB0BE8goKCpCWlobU1FTk5uaioKAA+fn5hg6LiIh0yNTUFKamprC0tISDgwOsrKwgk8kMHRYREREREREREREREZUTTAYhMgKCICA1NRWpqalIS0tDQUGBoUMiIiI9ysvLAwBkZGQgMTERFhYWcHBwgKOjI8zMuHtGRERERERERERERETa4dUGIgMTBAHPnj1DcnKy5PMymQympqalHBUREelTfn4+BEEo+j8nJwcvXrxAUlISPDw8YG5ubsDoiIiIiIiIiIiIiIiorGMyCJEBSSWCmJqaws7ODnZ2drCxsYGJiYkBIyQiIn3Jz89HamoqkpOTkZGRAQDIzc1FVFQUPDw8mAhIREREREREREREREQaYzIIkYFIJYK4urrCwcEBMpnMgJEREVFpMDU1haOjIxwdHZGTk4MnT54gNzcX2dnZiIqKgru7OxMCiYiIiIiIiIiIiIhII7zCQGQghXeDF6pevTocHR2ZCEJE9AaysLCAu7t70WggmZmZSExMNHBURERERERERERERERUVjEZhMhAUlNTi/52dXWFvb29AaMhIiJDs7CwgJubW9H/aWlpBoyGiIiIiIiIiIiIiIjKMiaDEBlAQUFB0UU+U1NTODg4GDgiIiIyBjY2NrCwsAAAZGRkID8/38ARERERERERERERERFRWcRkECIDSEtLQ0FBAQDAzs6OU8MQEVEROzu7or85OggREREREREREREREWmCySBEBvD6FDGvX/QjIiKqUKFC0d9MBiEiIiIiIiIiIiIiIk0wGYTIAHJzc4v+trGxMWAkRERkbKytrYv+fn17QUREREREREREREREpComgxAZQOEUMTKZDCYm/BkSEdH/kclkRdOHFW4viIiIiIiIiIiIiIiI1MGr0EQGkJ+fDwAwNTU1cCRERGSMCrcPhdsLIiIiIiIiIiIiIiIidTAZhIiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicsTM0AEQ0Ztj9ZojWL32iM7bnTj+XUz85F2dt0tEREREREREREREREREVBYxGYSISk1qWiaePU/US7tERERERERERERERERERPQKk0GIqNTYVbCGa1Unhc8XFAiIjUuSK6vi4ggTE1mJ7RIRERERERERERERERER0StMBiGiUjPxE+XTucS/TEGDJp/JlQWd+B6VK9nrOzQiIiIiIiIiIiIiIiIionLDxNABEBEREREREREREREREREREZHuMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERmdDRs2QCaTyT2CgoIMHVa5M2/ePNH7HBkZaeiwjA6/j0REREREREREREREVNaYGToAIiIyXjKZTOVlTUxMYG9vD0dHR7i4uKBly5Zo1aoVevTogSpVqugxSiIiIiIiIiIiIiIiIiJ6HUcGISIinSgoKEBSUhIiIyNx6dIlrF69GmPHjoW7uzuGDx+O27dvGzpEIiIiIiIiIiIiIiIiojcCk0GIiEivcnJysHXrVrRs2RLLly83dDhERERERERERERERERE5R6niSEiIrXY2dnBxEScS1hQUIDU1FSF9bKzs/Hll18iPj4eCxYs0GeIRERERERERERERERERG80jgxCRERquXHjBpKSkkSPlJQU5ObmIiwsDKtWrULdunUl6y9cuBBbt24t5aiJiIiIiIiIiIiIiIiI3hxMBiEiIp0xMzODl5cXJk2ahLt372Lq1KmSy33zzTfIzs4u5eiouHnz5kEQBLmHp6enocMiIiIiIiIiIiIiIiIiLTEZhIiI9MLU1BTLli3D+PHjRc9FR0djw4YNpR8UERERERERERERERER0RuAySBERKRXy5YtQ8WKFUXl//77rwGiISIiIiIiIiIiIiIiIir/mAxCRAaXk5OHfQcuYdbcLaLn+n3wI6ZM+xP7DlxCTk6eAaIjbVWoUAEjR44UlZ86dQr5+fkGiIiIiIiIiIiIiIiIiIiofDMzdABE9ObKzc3DH+uOYvXao3jxIllymbB7MQi7F4Ot20/DxcUBE8Z1x4Rx3WFuztVXWeLn54cVK1bIlaWmpiIuLg6urq5atR0WFoarV6/i6dOnyMnJQeXKleHq6ooOHTrAyclJq7aNRUpKCm7evIkHDx4gOTkZqampMDc3h42NDSpVqgRPT0/UqVMHLi4uhg61yP3793Hv3j3Ex8cjPj4eeXl5sLe3h6urKxo2bIi6devC1NRUqz6ysrKK+nnx4gVSUlIgk8lQsWJFVKpUCY0bN0bdunV19IqIiIiIiIiIiIiIiIjKDl5NJSKDCLsXjUlT1uLGzccq14mLS8b8hTvxz/6L+G3FeNT3ctNjhKRL7u7ukuXx8fEaJYPk5ORgzZo1WLlyJcLDwyWXMTU1RYcOHTB//nx07NhRpXbff/99HDx4UK4sNDQUTZo0UTvG1w0dOhTbt2+XKztz5gw6dOigsE52djY2bNiATZs24fz58xAEocR+PDw80K5dO/Tt2xc9e/aEra2t0uXnzZuH7777Tq7s0aNH8PT0LLEvKZcuXcLq1atx4sQJREdHK13W3t4enTt3Rt++ffHBBx/AxsamxPYFQcDZs2dx8OBBBAUFISQkBHl5ykcMqlKlCt577z1Mnz4dDRs2VOv1EBERERERERERERERlVWcJoaISt2lyw/wXp8FaiWCvO7Gzcd4r88CXLr8QMeRkb7Y29tLlqempqrd1t27d9GiRQt8/vnnChNBACA/Px+nTp2Cr68vJk+ejIKCghLbnjhxoqhs7dq1asf4uvj4eOzdu1eurGHDhkoTQc6cOYNGjRphwoQJOHfunEqJIADw+PFjbNu2DYMHD8bkyZO1ilsdt27dwnvvvYfWrVtjw4YNJSaCAK9GO/nnn38wZswYVKtWDc+fP1e6/NatW+Hu7o6OHTvip59+wsWLF0tMBAGA2NhY+Pv7o1GjRhgzZgwyMjJUfl1ERERERERERERERERlFZNBiKhUhd2LxpCRy5CamqlVO6mpmRgychnu3Y/RUWSkT8nJ0tMAOTg4qNXOlStX0LZtW9y+fVuter/99hvGjRtX4nI9evSAh4eHXNmWLVuQman59zUgIADZ2dlyZePHj1e4/OHDh9GtWzeliS6qUDWBRFu7d+9GmzZtcPjwYY3bSE5ORlZWltJlLl26pFKSiSKCICAgIADt27dHbGysxu0QERERERERERERERGVBZwmhohKTW5uHiZNWat1Ikih1NRMfPr5Ghw5MAfm5lydGbNHjx5JlleuXFnlNqKiojB16lS5xBJPT0907twZbm5usLW1RVxcHM6ePYtLly6JkiH++usv9O7dG3369FHYh4mJCT755BPMnDmzqCwpKQk7duzAmDFjVI71devWrZP738rKCqNGjZJc9sWLFxgxYoRkYkT16tXRvn171K5dG/b29jA1NUVKSgpevnyJO3fu4MaNG0hMTNQoRk39/vvvmDx5smTiiampKby9vdGyZUs4OzvD2toaSUlJiImJwZUrVxAWFqbSaC2KmJiYoFatWmjUqBFq1aoFe3t72NraIj09HXFxcQgNDZUcPeT69esYPnw4jh07BhMT5sQSEREREREREREREVH5xKunRFRq/lh3VOOpYRS5cfMx/lh3FJ992lOn7ZJunTx5UlTm6OgIZ2dnldv48ssv8fLlSwBA48aNsXTpUnTr1k1y2eDgYIwYMQIRERFy5dOmTUPv3r0hk8kU9vPRRx9h7ty5yM3NLSpbu3atRskgp06dwr179+TKBg4cCCcnJ8nlly1bhoSEBLmyOnXq4LffflP4WgsJgoDLly/jwIED+Ouvv9SOVV2nT5/GlClTRIkgNjY2+OKLLzB16lRUqlRJYf24uDjs2bMH/v7+uHTpkkp9mpqaolevXujfvz/ee+89pe0X9vHbb79h8eLFcgk2gYGBWLlyJb744guV+iUiIiIiIiIiIiIiIipreEssEZWKnJw8/LHuqF7a/mPdUeTm5pW8IBlESkoKNm/eLCr38/NTa2SGwkSQ9957D8HBwUqTI9q2bYtTp06hYsWKcuUPHz5EUFCQ0n5cXFzQv39/ubLg4GDcunVL5VgLrV27VlT2ySefKFx+165dcv87Ozvj7NmzJSaCAIBMJkOrVq3w/fff4/Hjx/jmm2/UjldVSUlJGDRokGjUDXd3d1y5cgULFy4sMVHDxcUFEyZMwMWLFxEYGAhHR0ely/fr1w8RERHYu3cvRo4cWWL7hX189913OHv2rOi78PPPP4viJyIiIiIiIiIiIiIiKi+YDEJEpeLw0auIi0sueUENxMUl49CRq3ppm7Q3efJkpKSkiMp79eqldlteXl7YuXMnbG1tS1zWzc0N8+fPF5Xv3bu3xLoTJ04UlUkldiiTkJCA3bt3y5U1bNgQHTp0kFw+JycHDx8+lCsbO3YsqlSpola/AGBmZoYGDRqoXU9Vq1atQmxsrFxZxYoVcfbsWY367dy5c4nJIL6+vnB3d1e7bQBo2bKlaLqeqKgoHDhwQKP2iIiIiIiIiIiIiIiIjB2TQYioVPwXdFOv7Z88pd/2SX3Z2dn45JNPsGnTJtFznp6eGDlypNptrly5UqVEkEIjRoyAlZWVXFlISEiJ9Xx9fdGwYUO5ss2bN8tNNVKSgIAAZGdny5WNGzdO4fLx8fGistq1a6vcX2nJyMjAihUrROVr1qxBjRo1DBCRavr37486derIlUlNX0RERERERERERERERFQeMBmEiEpF6I3IMt0+laygoAAJCQm4fPkyFi1ahDp16kiOpiGTybBs2TKYm5ur1X79+vVVmi7ldQ4ODmjWrJlc2Y0bN1SqO2HCBLn/ExMTsXPnTpX7Lj4ShZWVFUaNGqVw+QoVKojKHj16pHJ/peXo0aOixJUmTZpg4MCBBopIdb6+vnL/X7hwwUCREBERERERERERERER6ReTQYioVDyMeKbf9h8+12v79H9q1qwJmUwmepiamqJSpUpo1aoVZs6ciejoaMn6CxcuRP/+/dXut2vXrhrF+9Zbb8n9n5aWhpycnBLrjRo1CjY2NnJlxRM8FDl79izu3r0rVzZw4EBUrFhRYR17e3u4urrKla1Zswbh4eEq9VlagoKCRGXFE2eMVdWqVeX+v3PnjoEiISIiIiIiIiIiIiIi0i8mgxBRqcjOztNr+1nZuXptn7Rna2uLtWvXYsaMGRrVb9GihUb1nJycRGXJyckl1nNwcMDQoUPlyqSSPKRIjYgyfvz4Euv17t1b7v/ExES8/fbbWLhwIZ49029ClapOnz4tKuvUqVOpx5GYmIiAgABMmTIFnTt3Rq1ateDs7AwrKyvJZCWZTIaFCxfKtZGeno7cXK47iIiIiIiIiIiIiIio/GEyCBGVCktLM722b2Wp3pQjVHpsbW0xbtw4hIaGYty4cRq3U7lyZY37Ly4jI0OluhMnThSVSSV6vC4xMRG7du2SK2vQoAF8fHxK7O+bb74RxZucnIzZs2ejevXqaNOmDWbOnInDhw8jKSmp5BegBxEREXL/Ozg4wMvLq9T6v3PnDvr374+qVatizJgxWLlyJU6ePIlHjx4hPj4e2dnZarVnqPeRiIiIiIiIiIiIiIhIn/R7dZaI6P+rXcsVt+880V/7tauWvBDphJ2dHUxMxLmEJiYmsLOzg6OjI1xcXNCiRQu0atUK77zzDhwcHLTut0KFClq3UUgQBJWWa9myJby9vXH58uWiso0bN+LHH3+EpaWlZJ1NmzYhMzNTrkyVUUGAV1PwbN26FYMGDRIlNQiCgIsXL+LixYtYtGgRZDIZGjduDD8/P3Tt2hXdunWDhYWFSv1oKjc3FykpKXJlVatWhUwm02u/hebPn4/vv/8eeXm6G2lI1cQgIiIiIiIiIiIiIiKisoTJIERUKpo28dRrMkjTJp56a5vk3bhxA56enoYOo9RMnDhRLhkkISEBu3btwvDhwyWXX7dundz/VlZWGDVqlMr99e7dG+fPn8enn36KixcvKlxOEATcuHEDN27cwMqVK+Hk5ISRI0fim2++QbVq1VTuTx0JCQmiMkdHR730Vdy0adPw888/q7SsmZkZrKysYGpqKleelZUlmWRDRERERERERERERERU3nCaGCIqFZ39Guu1/U6++m2f3lxDhgwRJTwomirm/PnzuHXrllzZwIEDUbFiRbX6bNGiBS5cuIDjx49jxIgRKiVcJCYmYuXKlahduzZWrVqlVn/G7siRI5KJINbW1hg+fDjWrFmDixcvIjo6Gnl5ecjNzUVqaiqSkpLkHv/73/8MED0REREREREREREREVHp48ggRFQqenRvARcXB8TFJeu8bRcXB7z3bgudt0sEvEo4GD16NFasWFFUdvr0ady7dw9eXl5yy0oliag6RYyUd955B++88w4KCgpw/fp1nD59GmfPnsXZs2cRGxsrWScrKwufffYZYmNj8f3332vctxSppJakpCSd9iFl2rRporL+/ftj3bp1aiXapKen6zIsIiIiIiIiIiIiIiIio8WRQYioVFhYmGHCuO56aXvCuO4wN2duG+nPhAkTRGXFEz+Sk5Oxc+dOubIGDRrAx8dH6/5NTEzQokULfPHFF9i1axeeP3+OsLAw/Pzzz2jTpo1knQULFiA4OFjrvl9nbm4Oe3t7ubLY2Fi9TrVy+/Zt3LlzR66sbdu22Llzp9ojrkhNc0NERERERERERERERFQeMRmEiErNhHHd0aSxh07bbNrEExPHv6vTNomKq1+/Pjp16iRXtnHjRmRnZxf9v2nTJmRmZsoto82oICXx8vLCl19+ieDgYJw7dw61a9cWLbN06VKd91u8n6SkJNy/f1/n/RQKDAwUlX3zzTcwNTVVuy19xklERERERERERERERGRMmAxCRKXG3NwMv60YDzs7a520Z29vg99WjIeZmfoXhYnUNXHiRLn/4+PjsXfv3qL/161bJ/e8lZUVRo0aVSqxtWvXDkeOHIGFhYVc+YkTJ3TeV8eOHUVlJ0+e1Hk/hZ4+fSoqa9eundrtZGdn4/Lly7oIiYiIiIiIiIiIiIiIyOgxGYSISlV9Lzds3zRN64QQe3sbbNs4FV71qusoMiLl+vbti6pVq8qVFU4Vc/HiRdy4cUPuuQEDBqg9jYk26tSpgw4dOsiVpaSkICkpSaf9FB8hBQD++OMPnfbxOqmpXRwdHdVuZ+fOnXIjuRAREREREREREREREZVnTAYholLXyrsuDu//VuMpY5o09sChfbPRyruujiMjUszc3BwfffSRXFlQUBAePHhQlBTyuk8++aS0Qivi4uIiKsvJydFpH927dxf1ExoaKjdKii7Z2dmJyp49e6ZWG3l5eViyZImuQiIiIiIiIiIiIiIiIjJ6TAYhIoPwqlcdRw7MwZxZg+Di4qBSHRcXB8yZNQhHDszhiCBkEOPHj4eJyf9tOgVBwLJly7Bjxw655Ro0aAAfH5/SDg937tyR+9/c3BzOzs467cPKygpTpkwRlY8fPx4xMTE67QsAqlcX/9YPHDigVhvz5s3DzZs3dRUSERERERERERERERGR0WMyCBEZjLm5GT77tCeuX/oZ6/+YhAH92oqWaVDfDcOHdsT6Pybh+qWf8dmnPWFubmaAaIkAd3d39OzZU65szZo1SE9PlysbP3682m0fPHgQQ4cOxeXLlzWKbefOnaKpatq0aQOZTKZRe8pMmjQJrq6ucmXx8fHw8fHBvXv31G7v1KlTCqez8fPzE5UtWLBA5cSTn3/+GT/88IPaMREREREREREREREREZVlTAYhIoMzNzdDn16tsOC7YaLn9uz8BsuXfoQ+vVoxCYSMwsSJE5U+b2VlhVGjRqndbm5uLrZv345WrVrh7bffxo8//oj79++XWC81NRXff/89hg8fLnruww8/VDsOVTg4OGDHjh0wM5P/TT569AgtW7bEt99+i4SEBKVtvHz5EuvXr0fbtm3h5+enMBmkefPmqF+/vlzZ8+fP0bFjR5w6dUph++Hh4RgwYACmTZsGQRAAQJTAQkREREREREREREREVF7xyioREZEaunfvjpo1a+LRo0eSzw8YMAAVK1bUqo+QkBCEhIRgxowZqFy5Mpo3bw4vLy84OTnBwcEBOTk5ePHiBW7duoUzZ84gKytL1Iavry9Gjx6tVRzK+Pj4YPny5fjss8+Kki0AID09HQsWLMCiRYvQunVrtGjRAs7OzrC2tkZycjJiYmJw9epV3LlzB3l5eSX2I5PJsGDBAgwcOFCuPCIiAn5+fmjSpAl8fX1RrVo1FBQU4Pnz5zh//jyuXr0qF5ePjw98fX2xYMEC3b0JRERERERERERERERERorJIERERGowMTHB+PHjMWPGDMnnP/nkE532Fx8fj+PHj+P48eMq13n77bexc+dOvUwR87pJkybB2dkZY8aMQWZmptxz+fn5OH/+PM6fP691PwMGDMBnn32GX3/9VfTcjRs3RNPjFPfWW29h7969kvWJiIiIiIiIiIiIiIjKI04TQ0REpKYPP/wQFhYWovIGDRrAx8dHozYrV64MJycnreIyMzPD5MmTcfLkSbi4uGjVlqoGDRqE8+fPo1OnThq34ezsDBsbG6XLLF++HDNmzFA7waVPnz44d+4cKlWqpHF8REREREREREREREREZQ2TQYiIiNTk4uKCXr16icrHjRuncZsdOnTAixcvcOrUKcycORO+vr4lJkgUcnd3x/Tp03Hr1i38+uuvqFChgsZxaKJZs2b477//8N9//2HIkCGoXLlyiXUqVqyIQYMGYceOHYiOji4xecXExAQ//PADzp07h/fffx+mpqYKlzUzM8M777yDgwcP4p9//oGDg4Par4mIiIiIiIiIiIiIiKgskwmCIBg6CCJjER0djRo1agAAoqKi4Obmppd+Hjx4gLy8PJiZmaFu3bp66aMsin+ZggZNPpMru3vjV1SuZG+giIgUa9iwIe7evVv0v5WVFWJiYlCxYkWd9ZGfn4+IiAiEh4cjOjoaKSkpyMjIgI2NDezt7eHm5oamTZuiWrVqOutTFwoKChAaGoqIiAjEx8fj5cuXMDMzg52dHapXr44GDRqgdu3aMDHRPCc1JSUF586dw+PHj5GQkAATExM4OTmhTp068Pb2hr192V5vcDtBRERERERERERERPTm0Md1ajOtWyAiInrDnD9/Xi4RBAAGDBig00QQADA1NUXdunXLXDKAiYkJmjdvjubNm+utD3t7e/To0UNv7RMREREREREREREREZVlnCaGiIhITX/88YeobPz48QaIhIiIiIiIiIiIiIiIiEiMySBERERqiIuLw99//y1X1qhRI3Ts2NFAERERERERERERERERERHJYzIIERGRGpYsWYKsrCy5skmTJhkoGiIiIiIiIiIiIiIiIiIxJoMQERGp6Nq1a1ixYoVcmYuLC0aNGmWgiIiIiIiIiIiIiIiIiIjEmAxCRERUgufPn2PVqlXo2rUrcnNz5Z773//+BxsbGwNFRkRERERERERERERERCRmZugAiOjNsXrNEaxee0Th8wUFgqjM751vYWIiU9ruxPHvYuIn72odH1GhrVu34tNPPwUAZGdni6aFKdSwYcOi5YiIiIiIiIiIiIiIiIiMBZNBiKjUpKZl4tnzRLXqxMYlqdQukS7l5OQgOTlZ6TI2NjbYuHEjLC0tSykqIiIiIiIiIiIiIiIiItUYVTJIbGws7t+/j8jISERFRSE1NRXp6enIy8uDjY0NbG1t4eLiAg8PD9SsWRP169eHqampocMmIhXZVbCGa1UnvbRLVJpcXFywbds2tGzZ0tChEBEREREREREREREREYkYNBkkPDwchw8fRlBQEC5fvoyYmBi16ltaWqJp06Zo3bo1unfvjs6dO/MObSIjNvETTudCZZOpqSmcnJzQsGFD9OrVCx999BGcnHSf2ERERERERERERERERESkCzJBEITS7PDRo0fYuHEjtm7divDw8KJyTcOQyWRFf1tZWaFr164YNWoUevXqBXNzc63jpTdLdHQ0atSoAQCIioqCm5ubXvp58OAB8vLyYGZmhrp16+qlDyIiKru4nSAiIiIiIiIiIiIienPo4zp1qY0MsnfvXqxYsQJnzpwBIE7+eD2pQ12FbWVmZuLAgQM4cOAAnJycMHbsWHz++edFbxoRERERERERERERERERERFReWeiz8bz8vLwxx9/oG7duhg4cCDOnDkDQRAgCAJkMpnco7Bc3QcAyXYSEhLw888/o3bt2hg6dChu376tz5dKREREREREREREREREREREZBT0MjKIIAjYtGkTvvvuO0RGRoqSNgqXKeTs7IymTZuicePG8PDwgJubG1xdXWFjYwNra2uYmZkhMzMTmZmZSEhIQHR0NGJiYhAWFobQ0FDcv38feXl5Re293kdeXh527tyJXbt2YejQoZg3bx5q1aqlj5dNREREREREREREREREREREZHA6TwY5f/48Jk+ejNDQULkkEOD/EkCcnZ3Ro0cPdOrUCZ06dYK7u7tWfWZnZyM4OBgnT57EiRMncOHCBVHf+fn52LJlC3bu3ImpU6di9uzZsLGx0apfIiIiIiIiIiIiIiIiIiIiImMjE14fokNLo0aNwpYtWwCgaCqYwuYdHBwwdOhQfPDBB/D19YWJif5mqHn27Bn27NmDrVu3Ijg4GIB8QopMJoObmxs2b94MHx8fvcVBJUtOTsb58+cRHh6OlJQUWFpaonr16nj77bdRt27dUo8nOjoaNWrUAABERUXBzc1NL/08ePAAeXl5MDMzM8jrJCIi48btBBERERERERERERHRm0Mf16l1OjLI5s2bi5IugFeJF61bt8bEiRMxaNAgWFlZ6bI7hVxdXTFp0iRMmjQJt2/fxtq1a7FhwwakpqYWJahER0fj5MmTek0GEQQB4eHhuHTpEi5fvoxLly7h2rVryMrKEi1X2jw9PfH48WOt2vD398eYMWM0qhsaGor58+fjwIEDyM3NlVzmrbfewvTp0zF69Gi57xUREREREREREREREREREREppvNpYoBXyQ3du3fHjBkz0LFjR310obK33noLK1aswPz587Fq1SqsXLkSL1680Ft/aWlpWLRoES5fvozLly8jKSlJb32VVYsWLcKcOXOQl5endLnbt29j7NixCAgIwM6dO+Hs7FxKERIREREREREREREREREREZVdOp+rxcfHBxcuXMDhw4cNngjyOgcHB8yaNQuRkZH4/vvvYWdnp5d+4uPj8cMPP+D48eNMBJHw1VdfYebMmZKJIHZ2dpLTBwUFBcHX1xcvX74sjRCJiIiIiIiIiIiIiIiIiIjKNJ2ODPLvv//ivffe02WTOmdtbY1Zs2ZhwoQJiIiIMHQ4RmPBggWoVKmSWnXatm2r1vJbtmzB0qVL5co8PT0xa9YsDBw4EI6OjsjJycGlS5fw448/4uDBg0XL3b17F8OGDcORI0c4ZQwREREREREREREREREREZESOk0GMfZEkNdVqlRJ7eQHTdja2qJFixbw9vaGt7c3wsPD8e233+q9X3UNHz4cnp6eems/PT0dU6dOlStr3rw5jh49Kjf9i4WFBTp06IB///0Xs2bNwg8//FD03LFjx7B7924MHDhQb3ESERERERERERERERERERGVdTpNBiHAxsYGEyZMKEr+aNiwIUxNTYue37Bhg+GCM6AVK1YgLi6u6H8bGxvs2rVLLhGkuIULFyIkJARHjx4tKpszZw769+8vOZ0MERERERERERERERERERERMRlE51xcXLB69WpDh2FU8vLy8PPPP8uVTZs2DbVq1Sqx7qpVq1CvXj0IggDg1XQx+/fvR9++ffURKhERERERERERERERERERUZnH4RVI706fPo2XL18W/W9iYoJx48apVLdOnTro1KmTXNnevXt1Gh8REREREREREREREREREVF5opdkkHfffRe7du1Cbm6uPpqnMmbfvn1y/7dt2xY1atRQuf6QIUPk/j948CDy8/N1EhsREREREREREREREREREVF5o5dkkGPHjmHw4MGoVq0apk6dips3b+qjGyoj/vvvP7n/27dvr1b9du3ayf3/8uVLXL9+XduwiIiIiIiIiIiIiIiIiIiIyiW9ThPz8uVLrFixAs2aNUOrVq2wdu1apKam6rNLMjL5+fm4f/++XFnr1q3VaqNhw4awt7eXK7t7967WsREREREREREREREREREREZVHZvpsXCaTQRAEAMCVK1cQEhKCqVOnYsCAAfjwww/h6+urz+5JTZGRkbh79y5evHgBmUyGSpUqoUqVKmjSpAnMzc01ajMiIgI5OTlyZbVq1VKrDZlMBk9PT9y4caOoLCwsTKN4iIiIiIiIiIiIiIiIiIiIyju9JoMAry7kA4AgCBAEARn/j737Do+qWt8+fu8kEwghjRKCVINUpQuIdNQTBBFFUNQjRQSponKO8hNRRFQ8VlSkSVVUEAtKVQQEpRcFwSC9JoSSSnqy3z94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LY+JadCggWn7/PnzdqThdevXr9cVV1yhF154ocBGEOnPu2NMmTJFzZo106JFi0oxQyklJUUjRozQkCFDCmwEkf68s8nPP/+snj176pFHHlFWVpbHc77yyivq2LGj5s6dW2AjiCRt375dd999t/r06aOEhASP5wMAAAAAAAAAAAAAoCyxpRmkU6dOkuS828OBAwfsSMOr1qxZo969e+vw4cMur4WHh6t8+fIu+8+ePavBgwfru+++K40UdfHiRQ0cOFBz5sxxec3hcCgqKirfcW+//bZuv/12GYbh9pz/93//p6eeeirfZpJKlSopKMj1W3LZsmXq2bOnzpw54/Z8AAAAAAAAAAAAAACUNbY0g9StW1ddu3Z1NhMsXrzYjjS8JiEhQUOHDlVycrJzX0hIiB599FHt3r1bqampSklJUVxcnJ599llFREQ4j8vKytJtt92mPXv2eD3Phx9+WL/++qtp39VXX61FixYpJSVF58+fV2JiombPnq2WLVuajps9e7ZeeeUVt+abNWuW/vWvf5n2NWzYUB9++KHOnTunxMREXbx4Ub/99psGDRpkOm7nzp3661//6lEDCgAAAAAAAAAAAAAAZYktzSDSn3eIkCTDMLRp0yYtX77crlQsN2HCBJ04ccK5HR4ernnz5unNN9/UZZddpqCgIDkcDjVo0EAvvPCCfvnlF1WpUsV5fHJysh577DGv5rhu3Tp99NFHpn0jR47UsmXL1K9fP+edSypVqqQRI0Zo9erV6tu3r+n4F154QUePHi3WfCkpKS7n1K5dO61du1Z/+9vfVLlyZUlSWFiYrr76ai1YsEBPPfWU6fiffvpJ33zzjTunCQAAAAAAAAAAAABAmWNbM8jQoUN1/fXXO7fvv/9+nT9/3q50LBMXF+fSZPH888+bzjWvLl266N133zXt++GHH/T77797JUdJevrpp03brVq10rRp0xQcHJzv8REREZo9e7ZiYmKc+9LT0zVx4sRizTdlyhSdOnXKuV2hQgV9/fXXqlGjRoFjXnrpJfXr18+0b/z48crJySnWnAAAAAAAAAAAAAAAlEW2NYNI0syZM3XFFVfIMAzt3r1bAwYM0LFjx+xMqcTefPNNZWRkOLcbNWqkv//970WOu/XWW3X11Veb9r322muW5ydJmzZt0s8//2za99Zbbyk0NLTQcVWqVNGLL75o2vfxxx8rISGh0HFZWVmaPHmyad/f//53NW7cuMhc33nnHTkcDuf2zp079d133xU5DgAAAAAAAAAAAACAssrWZpDIyEgtX75cV199tQzD0Nq1a9W6dWtNnDjR9JgVf/Ltt9+atkeNGqWQkJBijb333ntN2z/99JNSU1OtSs1p3rx5pu2mTZuqT58+xRp7yy23qFKlSs7trKwsLViwoNAxv/76q86cOePcDgoK0ujRo4s1X5MmTdS7d2/Tvrz5AwAAAAAAAAAAAACA/ylel4IX3HPPPc5/N2jQQOvXr1d6errOnTunCRMmaMKECYqNjVXTpk1VtWrVIu9aURCHw6Hp06dblXahNm3apMOHD5v23XzzzcUef+ONN+qee+5RVlaWJOnixYv66aefNGTIECvT1Pz5803bI0aMKPbYiIgIDR48WF988YUp3t13313s+a688krVq1ev2HPecsstWrJkiXP7hx9+UHZ2doGPtAEAAAAAAAAAAAAAoCyzrRnk008/NT3+I5fD4ZBhGJKkffv2af/+/R7PYRhGqTaDXNqwIEk1a9ZUkyZNij2+QoUKatu2rdavX+/c98svv1jaDHL69Glt3brVtO+qq65yK0a3bt1MzSB5zzuvvK97Mt+lzpw5o82bN6tDhw5uxQEAAAAAAAAAAAAAoCyw9TEx0p8NG7nNH7kcDofzI/d1dz/ssGPHDtN2586d3Y7RtWtX0/bOnTtLlFNe+cXr0qWLWzHy5piUlKSjR4/me2x2drb27NlTovlatGihyMhI0z6rPy8AAAAAAAAAAAAAAAQK25tBcps+inrd3Q877Nq1y7TduHFjt2PkHZM3ZknljRcVFaWqVau6FSO/8yoozwMHDigjI6PI8YVxOBxq2LBhseYDAAAAAAAAAAAAAKCss+0xMfXr17etacNb8t4Bo379+m7HqFevnmn72LFjSklJUURERIlyy2VFjlWqVFFERIRSUlKc+3bv3q1rr722yPk8nbNevXqmx9vs3r3b7RgAAAAAAAAAAAAAAJQFtjWDxMXF2TW115w7d860HRMT43aMWrVq5RvXqmaQs2fPmrY9yVH6M899+/Y5t/Oee0HzhYaGun0nktz5LlXQfFb6y1/+ovDwcEti3XLLLXrkkUcKPWbKlCn68ssvLZkv1++//17o66dOndINN9xg6ZwPP/ywbr311kKPefrpp7Vk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+v3zn/+0MGN4E7Xn36i9wEVt2ovaClzUVulhzYlLUXv+jdoLXNSmvaitwGVVbaWlpWnJkiX69NNP9frrr+vVV1/VRx99pFWrVikzM9PirP0Ta05citrzb9Re4KI27VWma8sA4DMee+wxQ5IhyYiKijJOnz7t1vgzZ84YixYtMiZOnGgMHjzYiImJccbL/fjkk0+8k7wfyMzMND788EOjZcuWLp+XSz9atGhhTJ061cjKynJ7jilTpjjjhIWFGXv27PHCmcBq1J535eTkGHv27DFmzpxpPPLII8aVV15plCtXzuVzVBLUXmCiNs0++eSTQv//5cnHc889V+ic1FZg8qS2GjRoUOLvN3+qt5JgzYmCUHvexZoTnqI2zVhzwiol/Xlu/fr1xg033JDvtTz3IzIy0hg7dqxx7NgxL52F72LNiYJQe97FmhOeojbNWHOWHppBAB+xc+dOIzQ01HkhevHFF4s1btasWcatt95qxMbG+vUvG7xt586dRvPmzd36H0eHDh2MgwcPujVPenq66ZdC119/vXdOCJah9rwjKSnJeOqpp4y+ffsalStXLtbnqCSovcBDbbryxg9JEydOLHROaivweFpbgfxHLyux5kRBqD3vYM2JkqI2XbHmhBU8rS3D+PP74d577zUcDkexv8cqVqxofPHFF148I9/CmhMFofa8gzUnSoradMWas/TQDAL4iJtuusl5AYqMjDTOnz9frHE9e/YMiF82eNOKFSsKXKQFBQUZVapUMYKDg/N9vXbt2sbevXvdmu/tt982xVixYoWXzgxWoPa84+DBg24v1kqK2gss1KYrb/yQtG7duiLnpbYCi6e1Fch/9LIKa04UhtrzDtacKClq0xVrTljB09pKSUkp9Ge6SpUqGRUqVCjw9XfffdfLZ2Y/1pwoDLXnHaw5UVLUpivWnKXHYRiGIQC22rRpkzp06KDccnziiSf02muvFWtsr169tHz58mLP9cknn2jkyJGepOmXjh8/rvbt2+vkyZOm/cOGDdPDDz+sq666SiEhIcrJydHGjRs1bdo0TZ8+XTk5Oc5jW7RoobVr1yoiIqJYc6ampqpBgwY6ffq0pD+/RkuXLrXupGAZas974uLi1KhRI7fGlHRJQu0FDmozf7t37y7R9/Q///lPnT9/3rndsmVLbdu2rchx1FbgKEltNWzYUIcOHXJuv/jii6pWrZpb8/fu3VuXX365W2P8BWtOFIba8x7WnCgJajN/rDlRUiWprTvuuEMzZ8407WvcuLGeffZZ/eUvf1HVqlUlSSdOnNA333yjF1980bT+CgoK0k8//aRrrrnGorPxLaw5URhqz3tYc6IkqM38seYsRXZ0oAAwu/HGG51daMHBwcbhw4eLPfbSrsCgoCCjefPmxp133mn8+9//NlavXu3SGeer7zzxlkGDBpnO3+FwGNOmTSt0zI8//ujy3LUJEya4Ne9TTz1lGv/rr7+W5DTgJdSe9+TtmI+IiDC6d+9uPPbYY8Z//vMfY+LEiZZ3zBsGtRcoqE3rbdy40eXc//WvfxV7PLUVGEpSW3nfAe3uLaYDHWtOFIba8x7WnCgJatN6rDlhGJ7X1pw5c1y+f6677jojJSWlwDGnT5822rdvbxrTtGlTIzMz06rT8SmsOVEYas97WHOiJKhN67HmdA/NIIDNDhw4YAQFBTkvOoMGDXJr/Isvvmi89tprxtKlS43ExESX18vqH70MwzA2bNjgcv5PPPFEscZ+8MEHpnGVKlUyTp06Vey59+/fb3qG27Bhwzw9DXgJteddJ0+eNMaMGWNMnz7d2Lp1q5GVlWV6Pb/bwFmB2vN/1KZ3PPzww6bzDgkJMeLj44s9ntryfyWtLf7oVTDWnCgMteddrDnhKWrTO1hzoiS11aZNG9P3T+PGjY3k5OQix504ccKoUqWKaez7779fktPwSaw5URhqz7tYc8JT1KZ3sOZ0D80ggM3GjRtnumjNmzfP0vhl9Y9ehmEY9913n+ncq1ataqSmphZ7fMuWLU3jn3nmGbfm79Onj3NsUFAQvxzyMdSevbz1Q5JhUHv+jtq0XkZGhlG9enXTeQ8ePNjtONSWfytpbfFHr4Kx5kRhqD17seZEQahN67HmhGF4Xlu///67y/V69uzZxZ73jTfeMI2tV6+ekZOT4+FZ+CbWnCgMtWcv1pwoCLVpPdac7gsSANtkZWXp888/d25XqlRJAwYMsDGjwLJkyRLT9q233qry5csXe/w999xj2v7666/dmn/48OHOf+fk5GjGjBlujYf3UHuBjdrzX9SmdyxYsMD5HMxcI0eOdDsOteW/qC3vYs2JglB7gY3a81/Upnew5kRJaivveqpy5coaOnRosee+++67FRT0vz91HDlyRGvXri32eH/AmhMFofYCG7Xnv6hN72DN6T6aQQAbLVq0yHTRGjRokMLDw23MKHCcO3dOe/fuNe3r3r27WzGuvvpq0/auXbu0c+fOYo8fOnSo6X+4M2fOdGt+eA+1F9ioPf9FbXrHp59+atquXr26Bg8e7HYcast/UVvew5oThaH2Ahu157+oTe9gzYmS1NaaNWtM2127dlVoaGix565WrZqaNWtm2jd37txij/d1rDlRGGovsFF7/ova9A7WnO6jGQSw0VdffWXa7t+/v02ZBJ6TJ0+67GvSpIlbMZo2beqy77///W+xx9esWVPt27d3bu/du1cbN250Kwd4B7UX2Kg9/0VtWi8hIUELFy407fvrX//q1g+Quagt/0VteQ9rThSG2gts1J7/ojatx5oTUslqK++ayt31lOS6pnJnPeXrWHOiMNReYKP2/Be1aT3WnJ6hGQSwiWEYWrx4sWlfr1697EkmAJ09e9ZlX1RUlFsxIiMjXfZt377drRh5v6Z5/0eF0kftlQ3Unv+hNr1j5syZyszMNO3z5NaJuagt/0NteRdrThSE2isbqD3/Q216B2tOlLS28q6p3F1P5Tdm165dysnJcTuOL2LNiYJQe2UDted/qE3vYM3pGZpBAJts3rxZp06dcm7Xr19fDRo0sDGjwJLf7bbS09PdipHf8e7cPlGSevToYdpetGiRW+NhPWqvbKD2/A+16R2fffaZabtNmzZq166dx/GoLf/jzdqKi4vTwoULNWPGDH3++ef68ccftWHDBpcfzAMZa04UhNorG6g9/0NtegdrTpS0tvKuqdxdT0lSWlqaaTs1NVWHDh1yO44vYs2JglB7ZQO153+oTe9gzemZELsTAMqq1atXm7bbtGljUyaBqWrVqi77EhIS3IqR3/G7d+92K0ber+v69euVlZWlkBAuv3ah9soGas//UJvW27Rpk7Zs2WLaV5JueYna8kfeqq2OHTvqzJkz+b5Wvnx5XXnllRo1apRGjBgR0N8frDlREGqvbKD2/A+1aT3WnJBKXlt511TurqcKGrN79241atTI7Vi+hjUnCkLtlQ3Unv+hNq3HmtNz3BkEsMn69etN261atbIpk8BUq1YthYWFmfZt2LDBrRj5PR8sv9syFqZ+/fqqXLmyczstLU3btm1zKwasRe2VDdSe/6E2rffpp5+atkNDQ3XbbbeVKCa15X+8VVsF/cFL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as//UJslw5oTBbHr57msrCyNHDlSx44dc+675pprdNtttxVrvK/Uljex5gxs1F7ZQO35H2qzZFhzWotmEMAmDofD5cKybNkye5IJYPHx8VqyZEmxj//ll1/Uu3dvnTx50rmvb9++uuOOOzyaP+//TAYOHOhRHFiH2isbqD3/Q216btOmTS6d7HfffbdX5qK2/E9Ja+vXX3/VwIED9dtvv7k175QpU3TnnXea/mjmcDj0+uuvuxXHX7DmRF7UXtlA7fkfatNzrDlRGKt+nvvuu++UlJRUrGPj4+M1bNgwffPNN8595cuX19SpU92e11+w5kRe1F7ZQO35H2rTc6w5rRd49zoB/MiIESP0ySefOLd//PFHjRo1yq0YSUlJmjVrVrGPX7p0qdLS0vJ9rWPHji7PMvN38fHxuuaaa9S0aVMNGTJE1157rdq2bavo6GhJf76rJyEhQb/88ov+85//6PvvvzeNj42Ndevze6mTJ09q06ZNzu0mTZqoXbt2np8MLEPtlY7169dr/fr1+b72+++/u+wrbGF62223qVKlSsWal9rzX9SmZz799FPTdnh4uG699VbL56G2/FdJasswDC1cuFALFy5U48aNddNNN+mqq65S27ZtVbduXQUFBTmP27t3r5YsWaJ3331Xf/zxh0us5557Tp06dbLmpHwMa07kh9orHaw54S5q0zOsOVEUK36eGz9+vA4cOKBBgwZp0KBB6tSpk5o2beqsrdTUVG3cuFHz58/XtGnTlJiY6BwbFBSkGTNmqEmTJtackA9izYn8UHulgzUn3EVteoY1pxcYAGyTlZVlxMTEGJIMSUaFChWM1NRUt2IcPHjQOb6kH88995xH8z3//PMefga8b9OmTfmea1hYmFGtWjUjJCSkwM9H8+bNjcOHD3s89/vvv+83n6eyhtorHc8995xln6ODBw8We15qz39Rm+7LyMgwqlevbpr/5ptv9spc1Jb/KkltLV26tMAacTgcRqVKlYyqVasaQUFBhdbTo48+6lbOdteWu1hzIj/UXulgzQl3UZvuY82J4rDi57k2bdq4fK8HBQUZlStXNiIiIgqsqdDQUOOLL75wO2e7a8tdrDmRH2qvdLDmhLuoTfex5vQOHhMD2Cg4ONh0W77U1FT98MMPNmZUtB07dpi2HQ6Hhg0bZlM2nsvIyNCZM2eUlZXl8prD4dA9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RnJystufr8K+D3JycoxZs2YZXbt2LfD/GZde2/OaO3eucf311xuhoaHF+vzUrl3bGD58uDFz5kzjwoULbp+LJ26//XZTDi1atPAoToMGDUr0/53CuHMt8RVt27Yt9rW8uJo1a+YSc8mSJW7HufPOO00xmjRpUqK8AAAAYA/fXxUDAAAACCi+2gwye/Zso3r16h7/8apChQrGO++843bOhf1B/t133zXCw8OLncMjjzxi5OTkmOKnp6cb999/f7FjhISEGDNmzLDsHKwaV1rNIF9++aVRp04dt2NfccUVxvLly936vBXWDPLrr7+6lUf58uWN+fPnuzW/p1+306dPG+3atSvR1+KGG24wzp0751a+hlFwk8HRo0eNK6+80q0cnnrqKbfnLwkrr321a9d2iTVr1izTMb74dVq9erVRv379IufNz6233mqEhIR4fC7Nmzf3qNmtoCaACxcuGIMGDSr2/FFRUcYvv/ziEn/Hjh2FNjDl/WjSpIlHzV+54uLijGHDhnn0ORw2bFiR3w+l2Qzy4YcfGrVq1XI7fs2aNY05c+a49Xkr6PsgPj7e6NGjR5Fz5tcMcujQoWKNLezjySefdOs8PJGdne2yPnrggQc8ikUziNm///1vl5xvuukmj+OtXLnSJV7jxo1d1obFkV8t79692+PcAAAAYI/Sue8nAAAAAPi4HTt26PTp0x6PT01N1YMPPqj777/fknxefvlljR07Vunp6cUeM2XKFD399NPO7YyMDA0ZMkTvv/9+sWNkZWVp5MiRmj9/vlv5BoKJEyfqlltu0bFjx9weu337dvXt21f/+c9/SpzHggULdO2117qVx8WLF3XjjTdq0aJFJZ6/KElJSdq0aVOJYsyfP1+dO3fW0aNHS5zPgQMH1KVLF/3+++9ujXv55Zf1zDPPlHh+O1y4cMFlX+XKlU3bvvZ1+vXXX9WrVy8dPnzYo/GrVq1yefSBO3bu3KmuXbvqv//9r8cxciUlJal379764Ycfij3mwoULGjx4sDZv3uzct3nzZnXv3l1//PFHsePs27dPvXr1yvd7oCirV69W586dNXfuXLfHStLcuXPVtWtX7du3z6PxVsnMzNTf/vY3jR49WidOnHB7/MmTJzVixAhNnDixRHnEx8erW7du+vXXX90eGxcXp6uvvtqjsaVt3bp1LuujXr162ZNMgLnttttcHmX13Xff6cyZMx7F++STT1z23XPPPXI4HG7H6t27t8u+hQsXepQXAAAA7OMfD/0EAAAAgFLWoEEDtWvXTi1atFDdunVVqVIllS9fXsnJyTp+/Lg2b96sxYsXu/xBburUqWrVqpUeeOABj+f+9ttvTU0dNWvW1PXXX6/27durevXqSkpK0pYtW/TVV1/p5MmTprGvvvqqhgwZos6dO2vs2LGmX9w3a9ZM119/vZo2barKlSvr7NmzWrFihb7++mtT00lOTo7uv/9+9erVy61nzHtTkyZNdP78eUl//gEu73m3adOmyBhVq1Yt8LWJEydq/PjxLvtDQkLUu3dvXXvttapTp46ysrJ05MgR/fjjj1q9erUMw3Aem5GRodtuu03BwcEaMWJEMc/MbPPmzfrnP/+pjIwMSVL58uV1zTXXqEePHoqJiVFISIiOHDmin376Sb/88otpbFZWlv72t79p+/btpfp1q1ixojp16qTmzZuradOmioqKUqVKlZSRkaFz585px44dWrp0qXbu3Gkat3fvXt18881avny5QkI8+/VEUlKSBgwY4GyccTgc6tatm6699lrVr19fFStWVEJCglauXKl58+YpLS3NNP7VV1/V4MGD1aVLF89O3gaHDh1SSkqKy/4aNWoUOs7Or1N8fLyGDRtm+vx37txZ1113nRo0aKBKlSrpxIkT2rFjh+bMmVNkvODgYLVv315XXHGFmjVrpmrVqikyMlKGYSgxMVF79+7V6tWrtXLlSuXk5DjHJScn65ZbbtGmTZtUr149j85Fku68805t3LjRud2hQwcNGDBAjRo1UsWKFRUfH68lS5bo+++/N82fmpqqu+66Sxs3btTp06d1/fXXO//oGxoaqt69e6tPnz6qXbu2QkJCFBcXp/nz52vNmjWm+Q8cOKB//vOfeu+994qd87JlyzRgwACXGggKClL37t3VrVs3NWrUSJUrV9bFixd19OhRLV++XL/88ouys7Odx+/evVsDBw7U+vXrFRkZ6TJP1apVndfjjIwMl++nevXqFXotlv683hckJydHQ4YM0Y8//ujyWu3atXXNNdeoXbt2ql69usqVK6ezZ89q06ZNWrhwoakRyTAMjR8/XtWrV/eoiTMnJ0cjRozQgQMHnPsaN26sQYMGqVmzZqpevbrOnDmjgwcP6ptvvnEZf8899+jIkSMu+9u2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pdatW1vOWRgMHjzYFJszZ46OHz+uH3/80RCvWLGiunbt6tH+L126pAMHDhhijmYbAgAAQOFGMQgAAACA21pISIgplvM/2XOTlZWlwYMHW/62M1wXGBhoiv3++++Wcj3//POm2MiRI3XhwgWncyQlJWny5MmGmM1m0wsvvGBpTIWVv7+/SpcubYi5cq1I0qxZs7R27VoPjgo5FbfjlPMevWnTJmVkZDjdfs+ePZo0aZKnh1VkjBkzxhQbOXKk5XumK/z8/Eyzg1jtt2XLlqbClt9//12vvPKK1eEVWX/99Zdhu3z58nnaX/v27VWihPG/kHPOhOUsHx8fDRs2zBR/9dVXLf8d9fLLL5tijz76qCpVqmQpX2ExYMAA0/Xz2Wefac6cOab36qmnnnI4E487Nm/ebCq2evDBBz3aBwAAAPIexSAAAAAAbmutWrUyxSZMmODUFOhZWVl6+umntW7durwYGm6ifv36plhMTIylXF26dDF9y/rw4cPq27evU984T0tL00MPPWQqHunevbvuvfdeS2MqzCIiIgzba9eudfq9X7Fihf7v//4vL4aFHIrTccp5jz5//rzeeustp9oePnxYPXr00OXLl/NiaEVCmzZtTEuspKWlqVOnTtq3b5+lnJcuXdInn3xyy9ljSpQoobp16xpiK1euVFZWlqV+J0yYIJvNZohNnz5d48aNs7zMyO7duzVgwAClpaVZam/FK6+8or1791pqGxcXZyrEaNiwoSeGdVPlypUzzQjhzkwew4cPNy01EhcXp2effdblc+Ptt9/WsmXLTPGRI0e6lKdt27ay2WyGn7lz57qUw9OCg4NNs30cP35cEydONL3W0Swi7sp5jH19fdWuXTuP9wMAAIC8RTEIAAAAgNtaSEiI6cHpoUOH9OCDDyopKemm7RISEtSpUyfNmjVLklSyZEnTt/GRN+677z7TNPOTJk3S3LlzdfHiRZdy2Ww2zZ49W15eXob40qVL1bFjRx06dOimbbdu3aqIiAjt3LnTEA8ICNAHH3zg0jiKiscff9wU6927t5YsWXLTNhcvXtTbb7+thx56KPv45Dx+8KzidJweffRR06wE7777rt54441cC7a+/PJLPfDAA9kzURSGfSkoc+fONc2ScPDgQd1///2aNGmSU8uM2O12bdq0SSNGjFD16tX1zDPPODXLR4sWLQzbCQkJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 7), dpi=200)\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " physical_energy_diff,\n", + " yerr=physical_uncertainties.values(),\n", + " ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " color=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Physical\",\n", + ")\n", + "plt.errorbar(\n", + " plot_labels,\n", + " logical_energy_diff,\n", + " yerr=logical_uncertainties.values(),\n", + " color=(0, 177 / 255.0, 152 / 255.0),\n", + " ecolor=(0, 177 / 255.0, 152 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Logical\",\n", + ")\n", + "\n", + "ax.set_xlabel(\"Hamiltonian Parameters (U, V)\", fontsize=18)\n", + "ax.set_ylabel(\"Energy above true ground state (in eV)\", fontsize=18)\n", + "ax.set_title(\"CUDA-Q AIM Infleqtion Hardware Execution (lower is better)\", fontsize=20)\n", + "ax.legend(loc=\"upper left\", fontsize=18.5)\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "\n", + "ax.axhline(y=0, color=\"black\", linestyle=\"--\", linewidth=2)\n", + "plt.ylim(top=max(physical_energy_diff) + max(physical_uncertainties.values()) + 0.2, bottom=-0.2)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pr-2458/_sources/applications/python/vqe_advanced.ipynb.txt b/pr-2458/_sources/applications/python/vqe_advanced.ipynb.txt index 188df3af45..3135b93829 100644 --- a/pr-2458/_sources/applications/python/vqe_advanced.ipynb.txt +++ b/pr-2458/_sources/applications/python/vqe_advanced.ipynb.txt @@ -331,7 +331,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[\u001b[38;2;255;000;000mwarning\u001b[0m] Target \u001b[38;2;000;000;255mnvidia-mqpu\u001b[0m: \u001b[38;2;000;000;255mThis target is deprecating. Please use the 'nvidia' target with option 'mqpu,fp32' or 'mqpu' (fp32 is the default precision option) by adding the command line option '--target-option mqpu,fp32' or passing it as cudaq.set_target('nvidia', option='mqpu,fp32') in Python. Please refer to CUDA-Q \u001b]8;;https://nvidia.github.io/cuda-quantum/latest/using/backends/platform.html#nvidia-mqpu-platform\u001b\\documentation\u001b]8;;\u001b\\ for more information.\u001b[0m\n" + "[\u001b[38;2;255;000;000mwarning\u001b[0m] Target \u001b[38;2;000;000;255mnvidia-mqpu\u001b[0m: \u001b[38;2;000;000;255mThis target is deprecating. Please use the 'nvidia' target with option 'mqpu,fp32' or 'mqpu' (fp32 is the default precision option) by adding the command line option '--target-option mqpu,fp32' or passing it as cudaq.set_target('nvidia', option='mqpu,fp32') in Python. Please refer to CUDA-Q \u001b]8;;https://nvidia.github.io/cuda-quantum/latest/using/backends/platform\u001b\\documentation\u001b]8;;\u001b\\ for more information.\u001b[0m\n" ] } ], diff --git a/pr-2458/_sources/examples/python/executing_kernels.ipynb.txt b/pr-2458/_sources/examples/python/executing_kernels.ipynb.txt index 66a7afee3b..0d3250c8c1 100644 --- a/pr-2458/_sources/examples/python/executing_kernels.ipynb.txt +++ b/pr-2458/_sources/examples/python/executing_kernels.ipynb.txt @@ -78,7 +78,7 @@ "source": [ "Note that there is a subtle difference between how `sample` is executed with the target device set to a simulator or with the target device set to a QPU. In simulation mode, the quantum state is built once and then sampled $s$ times where $s$ equals the `shots_count`. In hardware execution mode, the quantum state collapses upon measurement and hence needs to be rebuilt over and over again.\n", "\n", - "There are a number of helpful tools that can be found in the API [here](https://nvidia.github.io/cuda-quantum/latest/api/languages/python_api.html#cudaq.SampleResult) to process the `Sample_Result` object produced by `sample`." + "There are a number of helpful tools that can be found in the [API docs](https://nvidia.github.io/cuda-quantum/latest/api/languages/python_api) to process the `Sample_Result` object produced by `sample`." ] }, { diff --git a/pr-2458/_sources/examples/python/executing_photonic_kernels.ipynb.txt b/pr-2458/_sources/examples/python/executing_photonic_kernels.ipynb.txt new file mode 100644 index 0000000000..62e8901c98 --- /dev/null +++ b/pr-2458/_sources/examples/python/executing_photonic_kernels.ipynb.txt @@ -0,0 +1,171 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Executing Quantum Photonic Circuits \n", + "\n", + "In CUDA-Q, there are 2 ways in which one can execute quantum photonic kernels: \n", + "\n", + "1. `sample`: yields measurement counts \n", + "3. `get_state`: yields the quantum statevector of the computation \n", + "\n", + "## Sample\n", + "\n", + "Quantum states collapse upon measurement and hence need to be sampled many times to gather statistics. The CUDA-Q `sample` call enables this: \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudaq\n", + "import numpy as np\n", + "\n", + "qumode_count = 2\n", + "\n", + "# Define the simulation target.\n", + "cudaq.set_target(\"orca-photonics\")\n", + "\n", + "# Define a quantum kernel function.\n", + "\n", + "\n", + "@cudaq.kernel\n", + "def kernel(qumode_count: int):\n", + " level = qumode_count + 1\n", + " qumodes = [qudit(level) for _ in range(qumode_count)]\n", + "\n", + " # Apply the create gate to the qumodes.\n", + " for i in range(qumode_count):\n", + " create(qumodes[i]) # |00⟩ -> |11⟩\n", + "\n", + " # Apply the beam_splitter gate to the qumodes.\n", + " beam_splitter(qumodes[0], qumodes[1], np.pi / 6)\n", + "\n", + " # measure all qumodes\n", + " mz(qumodes)\n", + "\n", + "\n", + "result = cudaq.sample(kernel, qumode_count, shots_count=1000)\n", + "\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Get state\n", + "\n", + "The `get_state` function gives us access to the quantum statevector of the computation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import cudaq\n", + "import numpy as np\n", + "\n", + "qumode_count = 2\n", + "\n", + "# Define the simulation target.\n", + "cudaq.set_target(\"orca-photonics\")\n", + "\n", + "# Define a quantum kernel function.\n", + "\n", + "\n", + "@cudaq.kernel\n", + "def kernel(qumode_count: int):\n", + " level = qumode_count + 1\n", + " qumodes = [qudit(level) for _ in range(qumode_count)]\n", + "\n", + " # Apply the create gate to the qumodes.\n", + " for i in range(qumode_count):\n", + " create(qumodes[i]) # |00⟩ -> |11⟩\n", + "\n", + " # Apply the beam_splitter gate to the qumodes.\n", + " beam_splitter(qumodes[0], qumodes[1], np.pi / 6)\n", + "\n", + " # measure some of all qumodes if need to be measured\n", + " # mz(qumodes)\n", + "\n", + "\n", + "# Compute the statevector of the kernel\n", + "result = cudaq.get_state(kernel, qumode_count)\n", + "\n", + "print(np.array(result))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statevector generated by the `get_state` command follows little-endian convention for associating numbers with their digit string representations, which places the least significant digit on the right. That is, for the example of a 2-qumode system of level 3 (in which possible states are 0, 1, and 2), we have the following translation between integers and digit string:\n", + "$$\\begin{matrix} \n", + "\\text{Integer} & \\text{digit string representation}\\\\\n", + "& \\text{least significant bit on right}\\\\\n", + "0 = \\textcolor{blue}{0}*3^1 + \\textcolor{red}{0}*3^0 & \\textcolor{blue}{0}\\textcolor{red}{0} \\\\\n", + "1 = \\textcolor{blue}{0}*3^1 + \\textcolor{red}{1}*3^0 & \\textcolor{blue}{0}\\textcolor{red}{1}\\\\\n", + "2 = \\textcolor{blue}{0}*3^1 + \\textcolor{red}{2}*3^0 & \\textcolor{blue}{0}\\textcolor{red}{2}\\\\\n", + "3 = \\textcolor{blue}{1}*3^1 + \\textcolor{red}{0}*3^0 & \\textcolor{blue}{1}\\textcolor{red}{0} \\\\\n", + "4 = \\textcolor{blue}{1}*3^1 + \\textcolor{red}{1}*3^0 & \\textcolor{blue}{1}\\textcolor{red}{1} \\\\\n", + "5 = \\textcolor{blue}{1}*3^1 + \\textcolor{red}{2}*3^0 & \\textcolor{blue}{1}\\textcolor{red}{2} \\\\\n", + "6 = \\textcolor{blue}{2}*3^1 + \\textcolor{red}{0}*3^0 & \\textcolor{blue}{2}\\textcolor{red}{0} \\\\\n", + "7 = \\textcolor{blue}{2}*3^1 + \\textcolor{red}{1}*3^0 & \\textcolor{blue}{2}\\textcolor{red}{1} \\\\\n", + "8 = \\textcolor{blue}{2}*3^1 + \\textcolor{red}{2}*3^0 & \\textcolor{blue}{2}\\textcolor{red}{2} \n", + "\\end{matrix}\n", + "$$\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Parallelization Techniques\n", + "\n", + "The most intensive task in the computation is the execution of the quantum photonic kernel hence each execution function: `sample`, and `get_state` can be parallelized given access to multiple quantum processing units (multi-QPU). We emulate each QPU with a CPU." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(cudaq.__version__)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/pr-2458/_sources/releases.rst.txt b/pr-2458/_sources/releases.rst.txt index 6a8a353462..8e455ff9dd 100644 --- a/pr-2458/_sources/releases.rst.txt +++ b/pr-2458/_sources/releases.rst.txt @@ -4,12 +4,56 @@ CUDA-Q Releases **latest** -The latest version of CUDA-Q is on the main branch of our `GitHub repository `__ and is also available as a Docker image. More information about installing the nightly builds can be found :doc:`here ` +The latest version of CUDA-Q is on the main branch of our `GitHub repository `__ +and is also available as a Docker image. More information about installing the nightly builds can be found +:doc:`here ` - `Docker image (nightly builds) `__ - `Documentation `__ - `Examples `__ +**0.9.1** + +This release adds support for using +`Amazon Braket `__ and +`Infeqtion's Superstaq `__ as backends. + +Starting with this release, all C++ quantum kernels will be processed by the `nvq++` compiler regardless of whether +they run on a simulator or on a quantum hardware backend. This change is largely non-breaking, but language constructs +that are not officially supported within quantum kernels will now lead to a compilation error whereas previously they +could be used when executing on a simulator only. The previous behavior can be forced by passing the `--library-mode` +flag to the compiler. Please note that if you do so, however, the code will never be executable outside of a simulator +and may not be supported even on simulators. + +- `Docker image `__ +- `Python wheel `__ +- `C++ installer `__ +- `Documentation `__ +- `Examples `__ + +The full change log can be found `here `__. + +**0.9.0** + +We are very excited to share a new toolset added for modeling and manipulating the dynamics of physical systems. +The new API allows to define and execute a time evolution under arbitrary operators. For more information, take +a look at the `docs `__. +The 0.9.0 release furthermore includes a range of contribution to add new backends to CUDA-Q, including backends +from `Anyon Technologies `__, +`Ferimioniq `__, and +`QuEra Computing `__, +as well as updates to existing backends from `ORCA `__ +and `OQC `__. +We hope you enjoy the new features - also check out our new notebooks and examples to dive into CUDA-Q. + +- `Docker image `__ +- `Python wheel `__ +- `C++ installer `__ +- `Documentation `__ +- `Examples `__ + +The full change log can be found `here `__. + **0.8.0** The 0.8.0 release adds a range of changes to improve the ease of use and performance with CUDA-Q. @@ -17,7 +61,7 @@ The changes listed below highlight some of what we think will be the most useful to know about. While the listed changes do not capture all of the great contributions, we would like to extend many thanks for every contribution, in particular those from external contributors. -- `Docker image `__ +- `Docker image `__ - `Python wheel `__ - `C++ installer `__ - `Documentation `__ @@ -30,7 +74,7 @@ The full change log can be found `here `__. +`here `__. It furthermore adds a range of bug fixes and changes the Python wheel installation instructions. - `Docker image `__ @@ -46,7 +90,7 @@ The full change log can be found `here `, giving you access to our most powerful GPU-accelerated simulators even if you don't have an NVIDIA GPU. With 0.7.0, we have furthermore greatly increased expressiveness of the Python and C++ language frontends. -Check out our `documentation `__ +Check out our `documentation `__ to get started with the new Python syntax support we have added, and `follow our blog `__ to learn more about the new setup and its performance benefits. diff --git a/pr-2458/_sources/using/applications.rst.txt b/pr-2458/_sources/using/applications.rst.txt index 572187128f..b3119decf4 100644 --- a/pr-2458/_sources/using/applications.rst.txt +++ b/pr-2458/_sources/using/applications.rst.txt @@ -22,7 +22,8 @@ Applications that give an in depth view of CUDA-Q and its applications in Python /applications/python/quantum_teleportation.ipynb /applications/python/quantum_volume.ipynb /applications/python/readout_error_mitigation.ipynb + /applications/python/vqe.ipynb /applications/python/vqe_advanced.ipynb /applications/python/hadamard_test.ipynb - /applications/python/vqe.ipynb - \ No newline at end of file + /applications/python/logical_aim_sqale.ipynb + diff --git a/pr-2458/_sources/using/backends/backends.rst.txt b/pr-2458/_sources/using/backends/backends.rst.txt index e5a8c9b087..9ee2bbbbbf 100644 --- a/pr-2458/_sources/using/backends/backends.rst.txt +++ b/pr-2458/_sources/using/backends/backends.rst.txt @@ -12,11 +12,12 @@ CUDA-Q Backends **The following is a comprehensive list of the available targets in CUDA-Q:** +* :ref:`anyon ` * :ref:`braket ` * :ref:`density-matrix-cpu ` * :ref:`fermioniq ` +* :ref:`infleqtion ` * :ref:`ionq ` -* :ref:`anyon ` * :ref:`iqm ` * :ref:`nvidia ` * :ref:`nvidia-fp64 ` @@ -35,6 +36,6 @@ CUDA-Q Backends * :ref:`tensornet-mps ` .. deprecated:: 0.8 - The `nvidia-fp64`, `nvidia-mgpu`, `nvidia-mqpu`, and `nvidia-mqpu-fp64` targets can be + The `nvidia-fp64`, `nvidia-mgpu`, `nvidia-mqpu`, and `nvidia-mqpu-fp64` targets can be enabled as extensions of the unified `nvidia` target (see `nvidia` :ref:`target documentation `). These target names might be removed in a future release. \ No newline at end of file diff --git a/pr-2458/_sources/using/backends/dynamics.rst.txt b/pr-2458/_sources/using/backends/dynamics.rst.txt index a5b8c056b8..6e6e48e567 100644 --- a/pr-2458/_sources/using/backends/dynamics.rst.txt +++ b/pr-2458/_sources/using/backends/dynamics.rst.txt @@ -84,6 +84,8 @@ For example, we can plot the Pauli expectation value for the above simulation as In particular, for each time step, `evolve` captures an array of expectation values, one for each observable. Hence, we convert them into sequences for plotting purposes. +Examples that illustrate how to use the ``dynamics`` target are available +in the `CUDA-Q repository `__. Operator +++++++++++ @@ -272,4 +274,45 @@ backend target. If the output is a '`None`' string, it indicates that your Torch installation does not support CUDA. In this case, you need to install a CUDA-enabled Torch package via other mechanisms, e.g., building Torch from source or using their Docker images. - \ No newline at end of file + +Multi-GPU Multi-Node Execution ++++++++++++++++++++++++++++++++ + +.. _cudensitymat_mgmn: + +CUDA-Q ``dynamics`` target supports parallel execution on multiple GPUs. +To enable parallel execution, the application must initialize MPI as follows. + + +.. tab:: Python + + .. literalinclude:: ../../snippets/python/using/backends/dynamics.py + :language: python + :start-after: [Begin MPI] + :end-before: [End MPI] + + .. code:: bash + + mpiexec -np python3 program.py + + where ``N`` is the number of processes. + + +By initializing the MPI execution environment (via `cudaq.mpi.initialize()`) in the application code and +invoking it via an MPI launcher, we have activated the multi-node multi-GPU feature of the ``dynamics`` target. +Specifically, it will detect the number of processes (GPUs) and distribute the computation across all available GPUs. + + +.. note:: + The number of MPI processes must be a power of 2, one GPU per process. + +.. note:: + Not all integrators are capable of handling distributed state. Errors will be raised if parallel execution is activated + but the selected integrator does not support distributed state. + +.. warning:: + As of cuQuantum version 24.11, there are a couple of `known limitations `__ for parallel execution: + + - Computing the expectation value of a mixed quantum state is not supported. Thus, `collapse_operators` are not supported if expectation calculation is required. + + - Some combinations of quantum states and quantum many-body operators are not supported. Errors will be raised in those cases. diff --git a/pr-2458/_sources/using/backends/hardware.rst.txt b/pr-2458/_sources/using/backends/hardware.rst.txt index 366e837173..33f4907cec 100644 --- a/pr-2458/_sources/using/backends/hardware.rst.txt +++ b/pr-2458/_sources/using/backends/hardware.rst.txt @@ -112,6 +112,128 @@ To see a complete example for using Amazon Braket backends, take a look at our : The ``cudaq.observe`` API is not yet supported on the `braket` target. +Infleqtion +================================== + +.. _infleqtion-backend: + +Infleqtion is a quantum hardware provider of gate-based neutral atom quantum computers. Their backends may be +accessed via `Superstaq `__, Infleqtion’s cross-platform software API +that performs low-level compilation and cross-layer optimization. To get started users can create a Superstaq +account by following `these instructions `__. + +For access to Infleqtion's neutral atom quantum computer, Sqale, +`pre-registration `__ is now open. + +Setting Credentials +````````````````````````` + +Programmers of CUDA-Q may access Infleqtion backends from either C++ or Python. Generate +an API key from your `Superstaq account `__ and export +it as an environment variable: + +.. code:: bash + + export SUPERSTAQ_API_KEY="superstaq_api_key" + +Submission from C++ +````````````````````````` + +To target quantum kernel code for execution on Infleqtion's backends, +pass the flag ``--target infleqtion`` to the ``nvq++`` compiler. + +.. code:: bash + + nvq++ --target infleqtion src.cpp + +This will take the API key and handle all authentication with, and submission to, Infleqtion's QPU +(or simulator). By default, quantum kernel code will be submitted to Infleqtion's Sqale +simulator. + +To execute your kernels on a QPU, pass the ``--infleqtion-machine`` flag to the ``nvq++`` compiler +to specify which machine to submit quantum kernels to: + +.. code:: bash + + nvq++ --target infleqtion --infleqtion-machine cq_sqale_qpu src.cpp ... + +where ``cq_sqale_qpu`` is an example of a physical QPU. + +To run an ideal dry-run execution on the QPU, additionally pass ``dry-run`` with the ``--infleqtion-method`` +flag to the ``nvq++`` compiler: + +.. code:: bash + + nvq++ --target infleqtion --infleqtion-machine cq_sqale_qpu --infleqtion-method dry-run src.cpp ... + +To noisily simulate the QPU instead, pass ``noise-sim`` to the ``--infleqtion-method`` flag like so: + +.. code:: bash + + nvq++ --target infleqtion --infleqtion-machine cq_sqale_qpu --infleqtion-method noise-sim src.cpp ... + +Alternatively, to emulate the Infleqtion machine locally, without submitting through the cloud, +you can also pass the ``--emulate`` flag to ``nvq++``. This will emit any target +specific compiler diagnostics, before running a noise free emulation. + +.. code:: bash + + nvq++ --emulate --target infleqtion src.cpp + +To see a complete example for using Infleqtion's backends, take a look at our :doc:`C++ examples <../examples/examples>`. + +Submission from Python +````````````````````````` + +The target to which quantum kernels are submitted +can be controlled with the ``cudaq::set_target()`` function. + +.. code:: python + + cudaq.set_target("infleqtion") + +By default, quantum kernel code will be submitted to Infleqtion's Sqale +simulator. + +To specify which Infleqtion QPU to use, set the :code:`machine` parameter. + +.. code:: python + + cudaq.set_target("infleqtion", machine="cq_sqale_qpu") + +where ``cq_sqale_qpu`` is an example of a physical QPU. + +To run an ideal dry-run execution of the QPU, additionally set the ``method`` flag to ``"dry-run"``. + +.. code:: python + + cudaq.set_target("infleqtion", machine="cq_sqale_qpu", method="dry-run") + +To noisily simulate the QPU instead, set the ``method`` flag to ``"noise-sim"``. + +.. code:: python + + cudaq.set_target("infleqtion", machine="cq_sqale_qpu", method="noise-sim") + +Alternatively, to emulate the Infleqtion machine locally, without submitting through the cloud, +you can also set the ``emulate`` flag to ``True``. This will emit any target +specific compiler diagnostics, before running a noise free emulation. + +.. code:: python + + cudaq.set_target("infleqtion", emulate=True) + +The number of shots for a kernel execution can be set through +the ``shots_count`` argument to ``cudaq.sample`` or ``cudaq.observe``. By default, +the ``shots_count`` is set to 1000. + +.. code:: python + + cudaq.sample(kernel, shots_count=100) + +To see a complete example for using Infleqtion's backends, take a look at our :doc:`Python examples <../examples/examples>`. +Moreover, for an end-to-end application workflow example executed on the Infleqtion QPU, take a look at the +:doc:`Anderson Impurity Model ground state solver <../applications>` notebook. IonQ ================================== diff --git a/pr-2458/_sources/using/backends/platform.rst.txt b/pr-2458/_sources/using/backends/platform.rst.txt index ad395ebc55..da019f3f65 100644 --- a/pr-2458/_sources/using/backends/platform.rst.txt +++ b/pr-2458/_sources/using/backends/platform.rst.txt @@ -96,7 +96,7 @@ QPU via the :code:`cudaq::get_state_async` (C++) or :code:`cudaq.get_state_async ./a.out .. deprecated:: 0.8 - The :code:`nvidia-mqpu` and :code:`nvidia-mqpu-fp64` targets, which are equivalent to the multi-QPU options `mgpu,fp32` and `mgpu,fp64`, respectively, of the :code:`nvidia` target, are deprecated and will be removed in a future release. + The :code:`nvidia-mqpu` and :code:`nvidia-mqpu-fp64` targets, which are equivalent to the multi-QPU options `mqpu,fp32` and `mqpu,fp64`, respectively, of the :code:`nvidia` target, are deprecated and will be removed in a future release. Parallel distribution mode ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/pr-2458/_sources/using/backends/simulators.rst.txt b/pr-2458/_sources/using/backends/simulators.rst.txt index 70a94343a5..43d115f127 100644 --- a/pr-2458/_sources/using/backends/simulators.rst.txt +++ b/pr-2458/_sources/using/backends/simulators.rst.txt @@ -33,6 +33,11 @@ and multi-QPU (`mqpu` :ref:`platform `) distribution whereby each Host CPU memory can be leveraged in addition to GPU memory to accommodate the state vector (i.e., maximizing the number of qubits to be simulated). +* Trajectory simulation for noisy quantum circuits + +The :code:`nvidia` target supports noisy quantum circuit simulations using quantum trajectory method across all configurations: single GPU, multi-node multi-GPU, and with host memory. +When simulating many trajectories with small state vectors, the simulation is batched for optimal performance. + .. _cuQuantum single-GPU: @@ -151,7 +156,7 @@ To execute a program on the multi-node multi-GPU NVIDIA target, use the followin .. note:: If you installed CUDA-Q via :code:`pip`, you will need to install the necessary MPI dependencies separately; - please follow the instructions for installing dependencies in the `Project Description `__. + please follow the instructions for installing dependencies in the `Project Description `__. In addition to using MPI in the simulator, you can use it in your application code by installing `mpi4py `__, and invoking the program with the command @@ -266,6 +271,100 @@ environment variable to another integer value as shown below. nvq++ --target nvidia --target-option mgpu,fp64 program.cpp [...] -o program.x CUDAQ_MGPU_FUSE=5 mpiexec -np 2 ./program.x + +Trajectory Noisy Simulation +++++++++++++++++++++++++++++++++++ + +When a :code:`noise_model` is provided to CUDA-Q, the :code:`nvidia` target will incorporate quantum noise into the quantum circuit simulation according to the noise model specified. + + +.. tab:: Python + + .. literalinclude:: ../../snippets/python/using/backends/trajectory.py + :language: python + :start-after: [Begin Docs] + + .. code:: bash + + python3 program.py + { 00:15 01:92 10:81 11:812 } + +.. tab:: C++ + + .. literalinclude:: ../../snippets/cpp/using/backends/trajectory.cpp + :language: cpp + :start-after: [Begin Documentation] + + .. code:: bash + + nvq++ --target nvidia program.cpp [...] -o program.x + ./program.x + { 00:15 01:92 10:81 11:812 } + + +In the case of bit-string measurement sampling as in the above example, each measurement 'shot' is executed as a trajectory, whereby Kraus operators specified in the noise model are sampled. + +For observable expectation value estimation, the statistical error scales asymptotically as :math:`1/\sqrt{N_{trajectories}}`, where :math:`N_{trajectories}` is the number of trajectories. +Hence, depending on the required level of accuracy, the number of trajectories can be specified accordingly. + +.. tab:: Python + + .. literalinclude:: ../../snippets/python/using/backends/trajectory_observe.py + :language: python + :start-after: [Begin Docs] + + .. code:: bash + + python3 program.py + Noisy with 1024 trajectories = -0.810546875 + Noisy with 8192 trajectories = -0.800048828125 + +.. tab:: C++ + + .. literalinclude:: ../../snippets/cpp/using/backends/trajectory_observe.cpp + :language: cpp + :start-after: [Begin Documentation] + + .. code:: bash + + nvq++ --target nvidia program.cpp [...] -o program.x + ./program.x + Noisy with 1024 trajectories = -0.810547 + Noisy with 8192 trajectories = -0.800049 + + +The following environment variable options are applicable to the :code:`nvidia` target for trajectory noisy simulation. Any environment variables must be set +prior to setting the target. + +.. list-table:: **Additional environment variable options for trajectory simulation** + :widths: 20 30 50 + + * - Option + - Value + - Description + * - ``CUDAQ_OBSERVE_NUM_TRAJECTORIES`` + - positive integer + - The default number of trajectories for observe simulation if none was provided in the `observe` call. The default value is 1000. + * - ``CUDAQ_BATCH_SIZE`` + - positive integer or `NONE` + - The number of state vectors in the batched mode. If `NONE`, the batch size will be calculated based on the available device memory. Default is `NONE`. + * - ``CUDAQ_BATCHED_SIM_MAX_BRANCHES`` + - positive integer + - The number of trajectory branches to be tracked simultaneously in the gate fusion. Default is 16. + * - ``CUDAQ_BATCHED_SIM_MAX_QUBITS`` + - positive integer + - The max number of qubits for batching. If the qubit count in the circuit is more than this value, batched trajectory simulation will be disabled. The default value is 20. + * - ``CUDAQ_BATCHED_SIM_MIN_BATCH_SIZE`` + - positive integer + - The minimum number of trajectories for batching. If the number of trajectories is less than this value, batched trajectory simulation will be disabled. Default value is 4. + +.. note:: + + Batched trajectory simulation is only available on the single-GPU execution mode of the :code:`nvidia` target. + + If batched trajectory simulation is not activated, e.g., due to problem size, number of trajectories, or the nature of the circuit (dynamic circuits with mid-circuit measurements and conditional branching), the required number of trajectories will be executed sequentially. + + .. _OpenMP CPU-only: OpenMP CPU-only @@ -382,6 +481,8 @@ Specific aspects of the simulation can be configured by setting the following of * **`CUDA_VISIBLE_DEVICES=X`**: Makes the process only see GPU X on multi-GPU nodes. Each MPI process must only see its own dedicated GPU. For example, if you run 8 MPI processes on a DGX system with 8 GPUs, each MPI process should be assigned its own dedicated GPU via `CUDA_VISIBLE_DEVICES` when invoking `mpiexec` (or `mpirun`) commands. * **`OMP_PLACES=cores`**: Set this environment variable to improve CPU parallelization. * **`OMP_NUM_THREADS=X`**: To enable CPU parallelization, set X to `NUMBER_OF_CORES_PER_NODE/NUMBER_OF_GPUS_PER_NODE`. +* **`CUDAQ_TENSORNET_CONTROLLED_RANK=X`**: Specify the number of controlled qubits whereby the full tensor body of the controlled gate is expanded. If the number of controlled qubits is greater than this value, the gate is applied as a controlled tensor operator to the tensor network state. Default value is 1. +* **`CUDAQ_TENSORNET_OBSERVE_CONTRACT_PATH_REUSE=X`**: Set this environment variable to `TRUE` (`ON`) or `FALSE` (`OFF`) to enable or disable contraction path reuse when computing expectation values. Default is `OFF`. .. note:: @@ -389,10 +490,18 @@ Specific aspects of the simulation can be configured by setting the following of If you do not have these dependencies installed, you may encounter an error stating `Invalid simulator requested`. See the section :ref:`dependencies-and-compatibility` for more information about how to install dependencies. -.. note:: +.. note:: + + When using contraction path reuse (`CUDAQ_TENSORNET_OBSERVE_CONTRACT_PATH_REUSE=TRUE`), :code:`tensornet` backends perform a single contraction path optimization with an opaque spin operator term. This path is then used to contract all the actual terms in the spin operator, hence saving the path finding time. - Setting random seed, via :code:`cudaq::set_random_seed`, is not supported for this backend due to a limitation of the :code:`cuTensorNet` library. This will be fixed in future release once this feature becomes available. + As we use an opaque spin operator term as a placeholder for contraction path optimization, the resulting contraction path is not as optimal as if the actual spin operator is used. + For instance, if the spin operator is sparse (only acting on a few qubits), the contraction can be significantly simplified. +.. note:: + + :code:`tensornet` backends only return the overall expectation value for a :class:`cudaq.SpinOperator` when using the `cudaq::observe` method. + Term-by-term expectation values will not be available in the resulting `ObserveResult` object. + If needed, these values can be computed by calling `cudaq::observe` on individual terms instead. Matrix product state +++++++++++++++++++++++++++++++++++ @@ -436,10 +545,6 @@ Specific aspects of the simulation can be configured by defining the following e If you do not have these dependencies installed, you may encounter an error stating `Invalid simulator requested`. See the section :ref:`dependencies-and-compatibility` for more information about how to install dependencies. -.. note:: - - Setting random seed, via :code:`cudaq::set_random_seed`, is not supported for this backend due to a limitation of the :code:`cuTensorNet` library. This will be fixed in future release once this feature becomes available. - .. note:: The parallelism of Jacobi method (the default `CUDAQ_MPS_SVD_ALGO` setting) gives GPU better performance on small and medium size matrices. If you expect a large number of singular values (e.g., increasing the `CUDAQ_MPS_MAX_BOND` setting), please adjust the `CUDAQ_MPS_SVD_ALGO` setting accordingly. @@ -486,6 +591,45 @@ To execute a program on the :code:`stim` target, use the following commands: can be slower than executing Stim a single time and generating all the shots from that single execution. + +Photonics Simulators +================================== + +The :code:`orca-photonics` target provides a state vector simulator with +the :code:`Q++` library. + +The :code:`orca-photonics` target supports supports a double precision simulator that can run in multiple CPUs. + +OpenMP CPU-only +++++++++++++++++++++++++++++++++++ + +.. _qpp-cpu-photonics-backend: + +This target provides a state vector simulator based on the CPU-only, OpenMP threaded `Q++ `_ library. + +To execute a program on the :code:`orca-photonics` target, use the following commands: + +.. tab:: Python + + .. code:: bash + + python3 program.py [...] --target orca-photonics + + The target can also be defined in the application code by calling + + .. code:: python + + cudaq.set_target('orca-photonics') + + If a target is set in the application code, this target will override the :code:`--target` command line flag given during program invocation. + +.. tab:: C++ + + .. code:: bash + + nvq++ --library-mode --target orca-photonics program.cpp [...] -o program.x + + Fermioniq ================================== @@ -522,7 +666,7 @@ compute expectation values of observables. .. code:: python cudaq.set_target("fermioniq", **{ - "remote-config": remote_config_id + "remote_config": remote_config_id }) For a comprehensive list of all remote configurations, please contact Fermioniq directly. @@ -533,15 +677,15 @@ compute expectation values of observables. .. code:: python cudaq.set_target("fermioniq", **{ - "project-id": project_id + "project_id": project_id }) - To specify the bond dimension, you can pass the ``fermioniq-bond-dim`` parameter. + To specify the bond dimension, you can pass the ``bond_dim`` parameter. .. code:: python cudaq.set_target("fermioniq", **{ - "bond-dim": 5 + "bond_dim": 5 }) .. tab:: C++ diff --git a/pr-2458/_sources/using/examples/examples.rst.txt b/pr-2458/_sources/using/examples/examples.rst.txt index f62c32afd9..ef3fd40e59 100644 --- a/pr-2458/_sources/using/examples/examples.rst.txt +++ b/pr-2458/_sources/using/examples/examples.rst.txt @@ -10,9 +10,11 @@ Examples that illustrate how to use CUDA-Q for application development are avail Introduction Building Kernels Quantum Operations + Photonic Operations Measuring Kernels <../../examples/python/measuring_kernels.ipynb> Visualizing Kernels <../../examples/python/visualization.ipynb> Executing Kernels <../../examples/python/executing_kernels.ipynb> + Executing Photonic Kernels <../../examples/python/executing_photonic_kernels.ipynb> Computing Expectation Values Multi-Control Synthesis Multi-GPU Workflows diff --git a/pr-2458/_sources/using/examples/hardware_providers.rst.txt b/pr-2458/_sources/using/examples/hardware_providers.rst.txt index 96fbc559f2..6abbb8dea7 100644 --- a/pr-2458/_sources/using/examples/hardware_providers.rst.txt +++ b/pr-2458/_sources/using/examples/hardware_providers.rst.txt @@ -2,7 +2,7 @@ Using Quantum Hardware Providers ----------------------------------- CUDA-Q contains support for using a set of hardware providers (Amazon Braket, -IonQ, IQM, OQC, ORCA Computing, Quantinuum and QuEra Computing). +Infleqtion, IonQ, IQM, OQC, ORCA Computing, Quantinuum, and QuEra Computing). For more information about executing quantum kernels on different hardware backends, please take a look at :doc:`hardware <../backends/hardware>`. @@ -21,6 +21,21 @@ The following code illustrates how to run kernels on Amazon Braket's backends. .. literalinclude:: ../../targets/cpp/braket.cpp :language: cpp +Infleqtion +================================== + +The following code illustrates how to run kernels on Infleqtion's backends. + +.. tab:: Python + + .. literalinclude:: ../../targets/python/infleqtion.py + :language: python + +.. tab:: C++ + + .. literalinclude:: ../../targets/cpp/infleqtion.cpp + :language: cpp + IonQ ================================== diff --git a/pr-2458/_sources/using/examples/photonic_operations.rst.txt b/pr-2458/_sources/using/examples/photonic_operations.rst.txt new file mode 100644 index 0000000000..18bd1ffbfa --- /dev/null +++ b/pr-2458/_sources/using/examples/photonic_operations.rst.txt @@ -0,0 +1,158 @@ +Photonics 101 +====================== + +Quantum Photonic States +----------------------------- + +We define a qumode (qudit) to have the states +:math:`\ket{0}`, :math:`\ket{1}`, ... :math:`\ket{d}` in Dirac notation where: + +.. math:: \ket{0} = \begin{bmatrix} 1 & 0 & 0 & \dots & 0 \end{bmatrix} ^ \top + +.. math:: \ket{1} = \begin{bmatrix} 0 & 1 & 0 & \dots & 0 \end{bmatrix}^ \top + +.. math:: \ket{2} = \begin{bmatrix} 0 & 0 & 1 & \dots & 0 \end{bmatrix}^ \top + +.. math:: \vdots + +.. math:: \ket{d} = \begin{bmatrix} 0 & 0 & 0 & \dots & 1 \end{bmatrix}^ \top + +where the linear combinations of states or superpositions are: + +.. math:: \ket{\psi} = \alpha_0\ket{0} + \alpha_1\ket{1} + \alpha_2\ket{2} + \dots + \alpha_d\ket{d} + +where :math:`\alpha_i \in \mathbb{C}`. It is important to note that this is +still the state of one qudit; although we have :math:`d` kets, they represent a +superposition state of one qudit. + +Multiple qudits can be combined and the possible combinations of their states +used to process information. + +A two qudit system, :math:`n=2`, with three levels, :math:`d=3`, has +:math:`d^n=8` computational basis states: +:math:`\ket{00}, \ket{01}, \ket{02}, \ket{10}, \ket{11}, \ket{12}, \ket{20}, \ket{21}, \ket{22}`. + +A photonic quantum state of a :math:`n` qudit system with :math:`d` levels is +written as a sum of :math:`d^n` possible basis states where the coefficients +track the probability of the system collapsing into that state if a measurement +is applied. + +Storing the complex numbers associated with :math:`d^n` amplitudes would not be +feasible using bits and classical computations once :math:`n` and :math:`d` are +relatively large. + + +Quantum Photonics Gates +----------------------- + +We can manipulate the state of a qumode via quantum photonic gates. For +example, the create gate allows us to increase the number of photons in a +qumode up to a maximum given by the qudit level :math:`d`: + +.. math:: C \ket{0} = \ket{1} + +.. math:: \begin{bmatrix} + 0 & 0 & \dots & 0 & 0 & 0 & 0 \\ + 1 & 0 & \dots & 0 & 0 & 0 & 0 \\ + 0 & 1 & \dots & 0 & 0 & 0 & 0 \\ + & & \ddots & & & & \\ + 0 & 0 & \dots & 1 & 0 & 0 & 0 \\ + 0 & 0 & \dots & 0 & 1 & 0 & 0 \\ + 0 & 0 & \dots & 0 & 0 & 1 & 1 + \end{bmatrix} + \begin{bmatrix} 1 \\ 0 \\ 0 \\ \vdots \\ 0 \\ 0 \\ 0 \end{bmatrix} = + \begin{bmatrix} 0 \\ 1 \\ 0 \\ \vdots \\ 0 \\ 0 \\ 0 \end{bmatrix} + +.. literalinclude:: ../../snippets/python/using/examples/create_photonic_gate.py + :language: python + :start-after: [Begin Docs] + :end-before: [End Docs] + +.. parsed-literal:: + + { 1:1000 } + +The annihilate gate allows us to decrease the number of photons in a qumode, if +it is applied to a qumode where the number of photons is already at the minimum +value 0, the operation has no effect: + +.. math:: A \ket{1} = \ket{0} + +.. math:: \begin{bmatrix} + 1 & 1 & 0 & 0 & \dots & 0 & 0 \\ + 0 & 0 & 1 & 0 & \dots & 0 & 0 \\ + 0 & 0 & 0 & 1 & \dots & 0 & 0 \\ + & & & & \ddots & & \\ + 0 & 0 & 0 & 0 & \dots & 1 & 0 \\ + 0 & 0 & 0 & 0 & \dots & 0 & 1 \\ + 0 & 0 & 0 & 0 & \dots & 0 & 0 + \end{bmatrix} + \begin{bmatrix} 0 \\ 1 \\ 0 \\ \vdots \\ 0 \\ 0 \\ 0 \end{bmatrix} = + \begin{bmatrix} 1 \\ 0 \\ 0 \\ \vdots \\ 0 \\ 0 \\ 0 \end{bmatrix} + +.. literalinclude:: ../../snippets/python/using/examples/annihilate_photonic_gate.py + :language: python + :start-after: [Begin Docs] + :end-before: [End Docs] + +.. parsed-literal:: + + { 0:1000 } + +A phase shifter adds a phase :math:`\phi` on a qumode. For the annihilation +(:math:`a_1`) and creation operators (:math:`a_1^\dagger`) of a qumode, the +phase shift operator is defined by + +.. math:: + P(\phi) = \exp\left(i \phi a_1^\dagger a_1 \right) + + +Just like the single-qubit gates above, we can define multi-qudit gates to act +on multiple qumodes. + +Beam splitters act on two qumodes together and are parameterized by a single +angle :math:`\theta`, which is related to the transmission amplitude :math:`t` +by :math:`t=\cos(\theta)`. + +For the annihilation (:math:`a_1` and :math:`a_2`) and creation operators +(:math:`a_1^\dagger` and :math:`a_2^\dagger`) of two qumodes, the beam splitter +operator is defined by + +.. math:: + B(\theta) = \exp\left[i \theta (a_1^\dagger a_2 + a_1 a_2^\dagger) \right] + +As an example, the code below implements a simulation of the Hong-Ou-Mandel +effect, in which two identical photons that interfere on a balanced beam +splitter leave the beam splitter together. + +.. literalinclude:: ../../snippets/python/using/examples/beam_splitter_photonic_gate.py + :language: python + :start-after: [Begin Docs] + :end-before: [End Docs] + +.. parsed-literal:: + + { 02:491 20:509 } + + +For a full list of photonic gates supported in CUDA-Q see +:doc:`../../api/default_ops`. + +Measurements +----------------------------- + +Quantum theory is probabilistic and hence requires statistical inference +to derive observations. Prior to measurement, the state of a qumode is +all possible combinations of :math:`\alpha_0, \alpha_1, \dots, \alpha_d` +and upon measurement, wave function collapse yields either a classical +:math:`0, 1, \dots,` or :math:`d`. + +The mathematical theory devised to explain quantum phenomena tells us +that the probability of observing the qumode in the state +:math:`\ket{0}, \ket{1}, \dots, \ket{d}`, yielding a classical +:math:`0, 1, \dots,` or :math:`d`, is :math:`\lvert \alpha_0 \rvert ^2, \lvert \alpha_1 \rvert ^2, \dots,` +or :math:`\lvert \alpha_d \rvert ^2`, respectively. + +As we see in the example of the `beam_splitter` gate above, states 02 and 20 +are yielded roughly 50% of the times, providing and illustration of the +Hong-Ou-Mandel effect. diff --git a/pr-2458/_sources/using/install/data_center_install.rst.txt b/pr-2458/_sources/using/install/data_center_install.rst.txt index 8b0fb1a0d0..11a78d0876 100644 --- a/pr-2458/_sources/using/install/data_center_install.rst.txt +++ b/pr-2458/_sources/using/install/data_center_install.rst.txt @@ -356,7 +356,7 @@ copy the built `.whl` file to the host system, and install it using `pip`; e.g. .. TODO: update pypi links throughout the docs To install the necessary CUDA and MPI dependencies for some of the components, -you can either follow the instructions on `PyPI.org `__, +you can either follow the instructions on `PyPI.org `__, replacing `pip install cudaq` with the command above, or you can follow the instructions in the remaining sections of this document to customize and better optimize them for your host system. diff --git a/pr-2458/_sources/using/install/local_installation.rst.txt b/pr-2458/_sources/using/install/local_installation.rst.txt index 737ca2a336..8542a0d370 100644 --- a/pr-2458/_sources/using/install/local_installation.rst.txt +++ b/pr-2458/_sources/using/install/local_installation.rst.txt @@ -183,8 +183,8 @@ please take a look at the section on :ref:`Development with VS Code `__. -Installation instructions can be found in the `project description `__. +CUDA-Q Python wheels are available on `PyPI.org `__. +Installation instructions can be found in the `project description `__. For more information about available versions and documentation, see :doc:`../../releases`. @@ -218,7 +218,7 @@ Pre-built binaries Starting with the 0.6.0 release, we provide pre-built binaries for using CUDA-Q with C++. Support for using CUDA-Q with Python can be installed side-by-side with the pre-built binaries for C++ by following the instructions on -`PyPI.org `__. +`PyPI.org `__. The pre-built binaries work across a range of Linux operating systems listed under :ref:`dependencies-and-compatibility`. @@ -659,7 +659,7 @@ certain CUDA libraries separately to take advantage of these. Installation via PyPI ++++++++++++++++++++++++++++++++++++ -If you installed CUDA-Q via `PyPI `__, please follow the installation instructions there to install the necessary CUDA dependencies. +If you installed CUDA-Q via `PyPI `__, please follow the installation instructions there to install the necessary CUDA dependencies. Installation In Container Images ++++++++++++++++++++++++++++++++++++ diff --git a/pr-2458/_sources/using/quick_start.rst.txt b/pr-2458/_sources/using/quick_start.rst.txt index d020dbbb19..8904b3695a 100644 --- a/pr-2458/_sources/using/quick_start.rst.txt +++ b/pr-2458/_sources/using/quick_start.rst.txt @@ -20,7 +20,7 @@ Install CUDA-Q .. tab:: Python To develop CUDA-Q applications using Python, - please follow the instructions for `installing CUDA-Q `_ from PyPI. + please follow the instructions for `installing CUDA-Q `_ from PyPI. If you have an NVIDIA GPU, make sure to also follow the instructions for enabling GPU-acceleration. .. include:: ../../../python/README.md diff --git a/pr-2458/_static/cudaq_override.css b/pr-2458/_static/cudaq_override.css index 4ab0ac179a..7043e0a2b0 100644 --- a/pr-2458/_static/cudaq_override.css +++ b/pr-2458/_static/cudaq_override.css @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2022 - 2024 NVIDIA Corporation & Affiliates. * + * Copyright (c) 2022 - 2025 NVIDIA Corporation & Affiliates. * * All rights reserved. * * * * This source code and the accompanying materials are made available under * diff --git a/pr-2458/_static/pygments.css b/pr-2458/_static/pygments.css index c15243c260..88eaef4dbd 100644 --- a/pr-2458/_static/pygments.css +++ b/pr-2458/_static/pygments.css @@ -4,34 +4,34 @@ span.linenos { color: #3c4354; background-color: transparent; padding-left: 5px; td.linenos .special { color: #3c4354; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #3c4354; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #6e7681 } -.highlight { background: #1d2331; color: #d4d2c8 } -.highlight .c { color: #7e8aa1 } /* Comment */ -.highlight .err { color: #f88f7f } /* Error */ -.highlight .esc { color: #d4d2c8 } /* Escape */ -.highlight .g { color: #d4d2c8 } /* Generic */ +.highlight { background: #1d2331; color: #D4D2C8 } +.highlight .c { color: #7E8AA1 } /* Comment */ +.highlight .err { color: #F88F7F } /* Error */ +.highlight .esc { color: #D4D2C8 } /* Escape */ +.highlight .g { color: #D4D2C8 } /* Generic */ .highlight .k { color: #FFAD66 } /* Keyword */ .highlight .l { color: #D5FF80 } /* Literal */ -.highlight .n { color: #d4d2c8 } /* Name */ +.highlight .n { color: #D4D2C8 } /* Name */ .highlight .o { color: #FFAD66 } /* Operator */ -.highlight .x { color: #d4d2c8 } /* Other */ -.highlight .p { color: #d4d2c8 } /* Punctuation */ -.highlight .ch { color: #f88f7f; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #7e8aa1 } /* Comment.Multiline */ +.highlight .x { color: #D4D2C8 } /* Other */ +.highlight .p { color: #D4D2C8 } /* Punctuation */ +.highlight .ch { color: #F88F7F; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #7E8AA1 } /* Comment.Multiline */ .highlight .cp { color: #FFAD66; font-weight: bold } /* Comment.Preproc */ -.highlight .cpf { color: #7e8aa1 } /* Comment.PreprocFile */ -.highlight .c1 { color: #7e8aa1 } /* Comment.Single */ -.highlight .cs { color: #7e8aa1; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #f88f7f; background-color: #3d1e20 } /* Generic.Deleted */ -.highlight .ge { color: #d4d2c8; font-style: italic } /* Generic.Emph */ -.highlight .ges { color: #d4d2c8 } /* Generic.EmphStrong */ -.highlight .gr { color: #f88f7f } /* Generic.Error */ -.highlight .gh { color: #d4d2c8 } /* Generic.Heading */ -.highlight .gi { color: #6ad4af; background-color: #19362c } /* Generic.Inserted */ -.highlight .go { color: #7e8aa1 } /* Generic.Output */ -.highlight .gp { color: #d4d2c8 } /* Generic.Prompt */ -.highlight .gs { color: #d4d2c8; font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #d4d2c8 } /* Generic.Subheading */ -.highlight .gt { color: #f88f7f } /* Generic.Traceback */ +.highlight .cpf { color: #7E8AA1 } /* Comment.PreprocFile */ +.highlight .c1 { color: #7E8AA1 } /* Comment.Single */ +.highlight .cs { color: #7E8AA1; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #F88F7F; background-color: #3D1E20 } /* Generic.Deleted */ +.highlight .ge { color: #D4D2C8; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #D4D2C8 } /* Generic.EmphStrong */ +.highlight .gr { color: #F88F7F } /* Generic.Error */ +.highlight .gh { color: #D4D2C8 } /* Generic.Heading */ +.highlight .gi { color: #6AD4AF; background-color: #19362C } /* Generic.Inserted */ +.highlight .go { color: #7E8AA1 } /* Generic.Output */ +.highlight .gp { color: #D4D2C8 } /* Generic.Prompt */ +.highlight .gs { color: #D4D2C8; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #D4D2C8 } /* Generic.Subheading */ +.highlight .gt { color: #F88F7F } /* Generic.Traceback */ .highlight .kc { color: #FFAD66 } /* Keyword.Constant */ .highlight .kd { color: #FFAD66 } /* Keyword.Declaration */ .highlight .kn { color: #FFAD66 } /* Keyword.Namespace */ @@ -45,19 +45,19 @@ span.linenos.special { color: #3c4354; background-color: #ffffc0; padding-left: .highlight .nb { color: #FFD173 } /* Name.Builtin */ .highlight .nc { color: #73D0FF } /* Name.Class */ .highlight .no { color: #FFD173 } /* Name.Constant */ -.highlight .nd { color: #7e8aa1; font-weight: bold; font-style: italic } /* Name.Decorator */ +.highlight .nd { color: #7E8AA1; font-weight: bold; font-style: italic } /* Name.Decorator */ .highlight .ni { color: #95E6CB } /* Name.Entity */ .highlight .ne { color: #73D0FF } /* Name.Exception */ .highlight .nf { color: #FFD173 } /* Name.Function */ -.highlight .nl { color: #d4d2c8 } /* Name.Label */ -.highlight .nn { color: #d4d2c8 } /* Name.Namespace */ -.highlight .nx { color: #d4d2c8 } /* Name.Other */ +.highlight .nl { color: #D4D2C8 } /* Name.Label */ +.highlight .nn { color: #D4D2C8 } /* Name.Namespace */ +.highlight .nx { color: #D4D2C8 } /* Name.Other */ .highlight .py { color: #FFD173 } /* Name.Property */ .highlight .nt { color: #5CCFE6 } /* Name.Tag */ -.highlight .nv { color: #d4d2c8 } /* Name.Variable */ +.highlight .nv { color: #D4D2C8 } /* Name.Variable */ .highlight .ow { color: #FFAD66 } /* Operator.Word */ -.highlight .pm { color: #d4d2c8 } /* Punctuation.Marker */ -.highlight .w { color: #d4d2c8 } /* Text.Whitespace */ +.highlight .pm { color: #D4D2C8 } /* Punctuation.Marker */ +.highlight .w { color: #D4D2C8 } /* Text.Whitespace */ .highlight .mb { color: #DFBFFF } /* Literal.Number.Bin */ .highlight .mf { color: #DFBFFF } /* Literal.Number.Float */ .highlight .mh { color: #DFBFFF } /* Literal.Number.Hex */ @@ -67,7 +67,7 @@ span.linenos.special { color: #3c4354; background-color: #ffffc0; padding-left: .highlight .sb { color: #D5FF80 } /* Literal.String.Backtick */ .highlight .sc { color: #D5FF80 } /* Literal.String.Char */ .highlight .dl { color: #D5FF80 } /* Literal.String.Delimiter */ -.highlight .sd { color: #7e8aa1 } /* Literal.String.Doc */ +.highlight .sd { color: #7E8AA1 } /* Literal.String.Doc */ .highlight .s2 { color: #D5FF80 } /* Literal.String.Double */ .highlight .se { color: #95E6CB } /* Literal.String.Escape */ .highlight .sh { color: #D5FF80 } /* Literal.String.Heredoc */ @@ -78,8 +78,8 @@ span.linenos.special { color: #3c4354; background-color: #ffffc0; padding-left: .highlight .ss { color: #DFBFFF } /* Literal.String.Symbol */ .highlight .bp { color: #5CCFE6 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #FFD173 } /* Name.Function.Magic */ -.highlight .vc { color: #d4d2c8 } /* Name.Variable.Class */ -.highlight .vg { color: #d4d2c8 } /* Name.Variable.Global */ -.highlight .vi { color: #d4d2c8 } /* Name.Variable.Instance */ -.highlight .vm { color: #d4d2c8 } /* Name.Variable.Magic */ +.highlight .vc { color: #D4D2C8 } /* Name.Variable.Class */ +.highlight .vg { color: #D4D2C8 } /* Name.Variable.Global */ +.highlight .vi { color: #D4D2C8 } /* Name.Variable.Instance */ +.highlight .vm { color: #D4D2C8 } /* Name.Variable.Magic */ .highlight .il { color: #DFBFFF } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/pr-2458/api/api.html b/pr-2458/api/api.html index 2370ec7e0e..7f61dd13e9 100644 --- a/pr-2458/api/api.html +++ b/pr-2458/api/api.html @@ -128,6 +128,12 @@
  • Measurements
  • +
  • Photonic Operations +
  • Measuring Kernels @@ -149,6 +155,12 @@
  • +
  • Executing Photonic Kernels +
  • Computing Expectation Values @@ -181,6 +193,7 @@
  • Using Quantum Hardware Providers
  • Divisive Clustering With Coresets Using CUDA-Q
  • @@ -322,6 +344,10 @@
  • Stim (CPU)
  • +
  • Photonics Simulators +
  • Fermioniq
  • Default Simulator
  • @@ -333,48 +359,54 @@
  • Submission from Python
  • -
  • IonQ
      -
    • Setting Credentials
    • +
    • Infleqtion
    • -
    • Anyon Technologies/Anyon Computing
        -
      • Setting Credentials
      • +
      • IonQ
      • -
      • IQM
      • -
      • IonQ
          -
        • Setting Credentials
        • +
        • Infleqtion
        • -
        • Anyon Technologies/Anyon Computing
            -
          • Setting Credentials
          • +
          • IonQ
          • -
          • IQM
          • -
          • IonQ
              -
            • Setting Credentials
            • +
            • Infleqtion
            • -
            • Anyon Technologies/Anyon Computing
                -
              • Setting Credentials
              • +
              • IonQ
              • -
              • IQM
              • -
              • IonQ
              • -
              • IonQ
                  -
                • Setting Credentials
                • +
                • Infleqtion
                • -
                • Anyon Technologies/Anyon Computing
                    -
                  • Setting Credentials
                  • +
                  • IonQ
                  • -
                  • IQM
                  • -
                  • IonQ
                      -
                    • Setting Credentials
                    • +
                    • Infleqtion
                    • -
                    • Anyon Technologies/Anyon Computing
                        -
                      • Setting Credentials
                      • +
                      • IonQ
                      • -
                      • IQM
                      • -
                      • IonQ
                          -
                        • Setting Credentials
                        • +
                        • Infleqtion
                        • -
                        • Anyon Technologies/Anyon Computing
                            -
                          • Setting Credentials
                          • +
                          • IonQ
                          • -
                          • IQM
                          • -
                          • IonQ
                              -
                            • Setting Credentials
                            • +
                            • Infleqtion
                            • -
                            • Anyon Technologies/Anyon Computing
                                -
                              • Setting Credentials
                              • +
                              • IonQ
                              • -
                              • IQM
                              • -
                              • IonQ
                                  -
                                • Setting Credentials
                                • +
                                • Infleqtion
                                • -
                                • Anyon Technologies/Anyon Computing
                                    -
                                  • Setting Credentials
                                  • +
                                  • IonQ
                                  • -
                                  • IQM
                                  • -
                                  • IonQ
                                      -
                                    • Setting Credentials
                                    • +
                                    • Infleqtion
                                    • -
                                    • Anyon Technologies/Anyon Computing
                                        -
                                      • Setting Credentials
                                      • +
                                      • IonQ
                                      • -
                                      • IQM
                                      • -
                                      • IonQ
                                          -
                                        • Setting Credentials
                                        • +
                                        • Infleqtion
                                        • -
                                        • Anyon Technologies/Anyon Computing
                                        • -
                                        • IonQ
                                            -
                                          • Setting Credentials
                                          • +
                                          • Infleqtion
                                          • -
                                          • Anyon Technologies/Anyon Computing
                                              -
                                            • Setting Credentials
                                            • +
                                            • IonQ
                                            • -
                                            • IQM
                                            • -
                                            • IonQ
                                                -
                                              • Setting Credentials
                                              • +
                                              • Infleqtion
                                              • -
                                              • Anyon Technologies/Anyon Computing
                                                  -
                                                • Setting Credentials
                                                • +
                                                • IonQ
                                                • -
                                                • IQM
                                                    -
                                                  • Setting Credentials
                                                  • +
                                                  • Anyon Technologies/Anyon Computing
                                                  • -
                                                  • OQC
                                                      +
                                                    • IQM
                                                    • -
                                                    • ORCA Computing
                                                        +
                                                      • OQC
                                                      • -
                                                      • Quantinuum
                                                          -
                                                        • Setting Credentials
                                                        • +
                                                        • ORCA Computing
                                                        • -
                                                        • QuEra Computing
                                                        • NVIDIA Quantum Cloud
                                                        • Installation
                                                            @@ -616,6 +649,7 @@
                                                          • spin.y()
                                                          • spin.z()
                                                          • CuDensityMatState
                                                          • +
                                                          • InitialState
                                                          • to_cupy_array()
                                                          • SampleResult
                                                          • AsyncSampleResult
                                                          • @@ -713,30 +747,33 @@

                                                            Multi-reference Quantum Krylov Algorithm - \(H_2\) Molecule

                                                            -

                                                            The multireference selected quantum Krylov (MRSQK) algorithm is defined in this paper and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The CUDA-Q Hadamard test tutorial might provide helpful background information for understanding this tutorial.

                                                            +

                                                            The multireference selected quantum Krylov (MRSQK) algorithm is defined in this paper and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The CUDA-Q Hadamard test tutorial might provide helpful background information for understanding +this tutorial.

                                                            The algorithm works by preparing an initial state, and then defining this state in a smaller subspace constructed with a basis that corresponds to Trotter steps of the initial state. This subspace can be diagonalized to produce an approximate energy for the system without variational optimization of any parameters.

                                                            In the example below, the initial guess is the ground state of the diagonalized Hamiltonian for demonstration purposes. In practice one could use a number of heuristics to prepare the ground state such as Hartree Fock or CISD. A very promising ground state preparation method which can leverage quantum computers is the linear combination of unitaries (LCU). LCU would allow for the state preparation to occur completely on the quantum computer and avoid storing an inputting the exponentially large state vector.

                                                            -

                                                            Regardless of the method used for state preparation, the procedure begins by selecting a \(d\) dimensional basis of reference states \({\Phi_0 \cdots \Phi_d}\) where each is a linear combination of slater determinants.

                                                            +

                                                            Regardless of the method used for state preparation, the procedure begins by selecting a \(d\)-dimensional basis of reference states \({\Phi_0 \cdots \Phi_d},\) where each is a linear combination of Slater determinants:

                                                            -\[\ket{\Phi_I} = \sum_{\mu} d_{\mu I}\ket{\phi_{\mu}}\]
                                                            -

                                                            From this, a non-orthogonal Krylov Space \(\mathcal{K} = \{\psi_{0} \cdots \psi_{N}\}\) is constructed by applying a family of \(s\) unitary operators on each of the \(d\) reference states resulting in \(d*s = N\) elements in the Krylov space where,

                                                            +\[\ket{\Phi_I} = \sum_{\mu} d_{\mu I}\ket{\phi_{\mu}}.\] +

                                                            From this, a non-orthogonal Krylov Space \(\mathcal{K} = \{\psi_{0} \cdots \psi_{N}\}\) is constructed by applying a family of \(s\) unitary operators on each of the \(d\) reference states resulting in \(d*s = N\) elements in the Krylov space where

                                                            -\[\ket{\psi_{\alpha}} \equiv \ket{\psi_I^{(n)}} = \hat{U}_n\ket{\Phi_I}\]
                                                            +\[\ket{\psi_{\alpha}} \equiv \ket{\psi_I^{(n)}} = \hat{U}_n\ket{\Phi_I},\]

                                                            Therefore, the general quantum state that we originally set out to describe is

                                                            -\[\ket{\Psi} = \sum_{\alpha} c_{\alpha}\ket{\psi_{\alpha}} = \sum_{I=0}^d \sum_{n=0}^s c_I^{(n)}\hat{U}_n\ket{\Phi_I}\]
                                                            +\[\ket{\Psi} = \sum_{\alpha} c_{\alpha}\ket{\psi_{\alpha}} = \sum_{I=0}^d \sum_{n=0}^s c_I^{(n)}\hat{U}_n\ket{\Phi_I}.\]

                                                            The energy of this state can be obtained by solving the generalized eigenvalue problem

                                                            -\[\boldsymbol{Hc}=\boldsymbol{Sc}E\]
                                                            -

                                                            Where the elements of the overlap and Hamiltonian matrix are

                                                            +\[\boldsymbol{Hc}=\boldsymbol{Sc}E,\] +

                                                            where the elements of the overlap are

                                                            \[S_{\alpha \beta} = \braket{\psi_{\alpha}|\psi_{\beta}} = \braket{\Phi_I|\hat{U}_m^{\dagger}\hat{U}_n|\Phi_J}\]
                                                            +

                                                            and Hamiltonian matrix is

                                                            -\[H_{\alpha \beta} = \braket{\psi_{\alpha}|\hat{H}|\psi_{\beta}} = \braket{\Phi_I|\hat{U}_m^{\dagger}\hat{H}\hat{U}_n|\Phi_J}\]
                                                            -

                                                            These matrix elements are computed using a quantum computer and the Hadamard test with a circuit shown below for the case of the overlap matrix elements (The Hamiltonian matrix elements circuit would include controlled application of the Hamiltonian in the circuit). Once the matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.

                                                            +\[H_{\alpha \beta} = \braket{\psi_{\alpha}|\hat{H}|\psi_{\beta}} = \braket{\Phi_I|\hat{U}_m^{\dagger}\hat{H}\hat{U}_n|\Phi_J}.\] +

                                                            The matrix elements for \(S\) are computed with the Hadamard test with a circuit shown below for the case of the overlap matrix elements.

                                                            Htest

                                                            The \(2\sigma_+\) term refers to measurement of the expectation value of this circuit with the \(X+iY\) operator.

                                                            +

                                                            The Hamiltonian matrix elements are computed with a circuit that includes controlled application of the Hamiltonian. Once the \(H\) and \(S\) matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.

                                                            Setup

                                                            This cell installs the necessary packages. This application can be parallelized, so please uncomment the mgpu specification below if you would like to run on more than one GPU.

                                                            @@ -744,9 +781,9 @@

                                                            Setup
                                                            [ ]:
                                                             
                                                            -
                                                            -

                                                            In the case of this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the \(\psi\) basis. Each receives the target qubits, the time step, and components of the Hamiltonian.

                                                            +

                                                            In this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the \(\psi\) basis. Each receives the target qubits, the time step, and components of the Hamiltonian.

                                                            [4]:
                                                             
                                                            # Applies Unitary operation corresponding to Um
                                                             @cudaq.kernel
                                                            -def U_m(qubits: cudaq.qview, dt: float, coefficients: list[complex],
                                                            +def U_m(qubits: cudaq.qview, dt: float, coefficients: list[complex],
                                                                     words: list[cudaq.pauli_word]):
                                                                 # Compute U_m = exp(-i m dt H)
                                                                 for i in range(len(coefficients)):
                                                            @@ -834,7 +871,7 @@ 

                                                            Setup @cudaq.kernel -def U_n(qubits: cudaq.qview, dt: float, coefficients: list[complex], +def U_n(qubits: cudaq.qview, dt: float, coefficients: list[complex], words: list[cudaq.pauli_word]): # Compute U_n = exp(-i n dt H) for i in range(len(coefficients)): @@ -845,7 +882,7 @@

                                                            Setup @cudaq.kernel -def apply_pauli(qubits: cudaq.qview, word: list[int]): +def apply_pauli(qubits: cudaq.qview, word: list[int]): # Add H (Hamiltonian operator) for i in range(len(word)): if word[i] == 1: @@ -860,7 +897,7 @@

                                                            Setup @cudaq.kernel -def qfd_kernel(dt_alpha: float, dt_beta: float, coefficients: list[complex], +def qfd_kernel(dt_alpha: float, dt_beta: float, coefficients: list[complex], words: list[cudaq.pauli_word], word_list: list[int], vec: list[complex]): @@ -883,7 +920,7 @@

                                                            Setup
                                                            [5]:
                                                             
                                                            -
                                                            def pauli_str(pauli_word, qubits_num):
                                                            +
                                                            def pauli_str(pauli_word, qubits_num):
                                                             
                                                                 my_list = []
                                                                 for i in range(qubits_num):
                                                            @@ -927,9 +964,9 @@ 

                                                            Setup

                                                            Computing the matrix elements

                                                            The cell below computes the overlap matrix. This can be done in serial or in parallel, depending on the multi_gpu specification. First, an operator is built to apply the identity to the overlap matrix circuit when apply_pauli is called. Next, the wf_overlap array is constructed which will hold the matrix elements.

                                                            -

                                                            Next, a pair of nested loops, iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix \(S\) using the Hadamard test. This is accomplished by calling the CUDA-Q observe function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector vec.

                                                            +

                                                            Next, a pair of nested loops iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix \(S\) using the Hadamard test. This is accomplished by calling the CUDA-Q observe function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector vec.

                                                            The observe function broadcasts over the two provided operators \(X\) and \(Y\) and returns a list of results. The expectation function returns the expectation values which are summed and stored in the matrix.

                                                            -

                                                            The multi-gpu case completes the same steps, expect for observe_async is used. This allows for the \(X\) and \(Y\) observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real an imaginary parts, and then accessed later with the get command to build \(S\)

                                                            +

                                                            The multi-gpu case completes the same steps, except the observe_async command is used. This allows for the \(X\) and \(Y\) observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real and imaginary parts. These are then accessed later with the get command to build \(S\).

                                                            [8]:
                                                             
                                                            @@ -1149,23 +1186,23 @@

                                                            Computing the matrix elements -

                                                            Determining the ground state energy of the Subspace

                                                            +
                                                            +

                                                            Determining the ground state energy of the subspace

                                                            The final step is to solve the generalized eigenvaulue problem with the overlap and Hamiltonian matrices constructed using the quantum computer. The procedure begins by diagonalizing \(S\) with the transform

                                                            \[S = U\Sigma U^{\dagger}\]
                                                            -

                                                            The eigenvectors \(v\) and eigenvalues \(s\) are used to construct a new matrix \(X'\)

                                                            +

                                                            The eigenvectors \(v\) and eigenvalues \(s\) are used to construct a new matrix \(X':\)

                                                            -\[X' = S ^{\frac{-1}{2}} = \sum_k v_{ki} \frac{1}{\sqrt{s_k}} v_{kj}\]
                                                            -

                                                            The \(X'\) matrix diagonalizes \(H\)

                                                            +\[X' = S ^{\frac{-1}{2}} = \sum_k v_{ki} \frac{1}{\sqrt{s_k}} v_{kj}.\]

                                                            +

                                                            The matrix \(X'\) diagonalizes \(H:\)

                                                            -\[X'^{\dagger}HX' = ES^{\frac{1}{2}}C\]
                                                            -

                                                            Using the eigenvectors of \(H'\), (\(^{\frac{1}{2}}C\)), the original eigenvectors to the problem can be found by left multiplying by \(S^{\frac{-1}{2}}C\)

                                                            +\[X'^{\dagger}HX' = ES^{\frac{1}{2}}C.\]
                                                            +

                                                            Using the eigenvectors of \(H'\), (\(^{\frac{1}{2}}C\)), the original eigenvectors to the problem can be found by left multiplying by \(S^{\frac{-1}{2}}C.\)

                                                            [10]:
                                                             
                                                            -
                                                            def eig(H, s):
                                                            +
                                                            def eig(H, s):
                                                                 #Solver for generalized eigenvalue problem
                                                                 # HC = SCE
                                                             
                                                            @@ -1218,7 +1255,7 @@ 

                                                            Determining the ground state energy of the Subspace
                                                            -

                                                            © Copyright 2024, NVIDIA Corporation & Affiliates.

                                                            +

                                                            © Copyright 2025, NVIDIA Corporation & Affiliates.

                                                            Built with
                                                            Sphinx using a diff --git a/pr-2458/applications/python/krylov.ipynb b/pr-2458/applications/python/krylov.ipynb index 1954212c02..183a13d691 100644 --- a/pr-2458/applications/python/krylov.ipynb +++ b/pr-2458/applications/python/krylov.ipynb @@ -7,39 +7,45 @@ "source": [ "# Multi-reference Quantum Krylov Algorithm - $H_2$ Molecule\n", "\n", - "The multireference selected quantum Krylov (MRSQK) algorithm is defined in [this paper](https://arxiv.org/pdf/1911.05163) and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The CUDA-Q Hadamard test tutorial might provide helpful background information for understanding this tutorial.\n", + "The multireference selected quantum Krylov (MRSQK) algorithm is defined in [this paper](https://arxiv.org/pdf/1911.05163) and was developed as a low-cost alternative to quantum phase estimation. This tutorial will demonstrate how this algorithm can be implemented in CUDA-Q and accelerated using multiple GPUs. The [CUDA-Q Hadamard test tutorial](https://nvidia.github.io/cuda-quantum/latest/applications/python/hadamard_test.html) might provide helpful background information for understanding this tutorial.\n", "\n", "The algorithm works by preparing an initial state, and then defining this state in a smaller subspace constructed with a basis that corresponds to Trotter steps of the initial state. This subspace can be diagonalized to produce an approximate energy for the system without variational optimization of any parameters.\n", "\n", "In the example below, the initial guess is the ground state of the diagonalized Hamiltonian for demonstration purposes. In practice one could use a number of heuristics to prepare the ground state such as Hartree Fock or CISD. A very promising ground state preparation method which can leverage quantum computers is the linear combination of unitaries (LCU). LCU would allow for the state preparation to occur completely on the quantum computer and avoid storing an inputting the exponentially large state vector.\n", "\n", "\n", - "Regardless of the method used for state preparation, the procedure begins by selecting a $d$ dimensional basis of reference states ${\\Phi_0 \\cdots \\Phi_d}$ where each is a linear combination of slater determinants. \n", + "Regardless of the method used for state preparation, the procedure begins by selecting a $d$-dimensional basis of reference states ${\\Phi_0 \\cdots \\Phi_d},$ where each is a linear combination of Slater determinants: \n", "\n", - "$$ \\ket{\\Phi_I} = \\sum_{\\mu} d_{\\mu I}\\ket{\\phi_{\\mu}} $$\n", + "$$ \\ket{\\Phi_I} = \\sum_{\\mu} d_{\\mu I}\\ket{\\phi_{\\mu}}. $$\n", "\n", "\n", - "From this, a non-orthogonal Krylov Space $\\mathcal{K} = \\{\\psi_{0} \\cdots \\psi_{N}\\}$ is constructed by applying a family of $s$ unitary operators on each of the $d$ reference states resulting in $d*s = N$ elements in the Krylov space where, \n", - "$$ \\ket{\\psi_{\\alpha}} \\equiv \\ket{\\psi_I^{(n)}} = \\hat{U}_n\\ket{\\Phi_I} $$\n", + "From this, a non-orthogonal Krylov Space $\\mathcal{K} = \\{\\psi_{0} \\cdots \\psi_{N}\\}$ is constructed by applying a family of $s$ unitary operators on each of the $d$ reference states resulting in $d*s = N$ elements in the Krylov space where \n", + "$$ \\ket{\\psi_{\\alpha}} \\equiv \\ket{\\psi_I^{(n)}} = \\hat{U}_n\\ket{\\Phi_I}, $$\n", "\n", "Therefore, the general quantum state that we originally set out to describe is\n", "\n", - "$$ \\ket{\\Psi} = \\sum_{\\alpha} c_{\\alpha}\\ket{\\psi_{\\alpha}} = \\sum_{I=0}^d \\sum_{n=0}^s c_I^{(n)}\\hat{U}_n\\ket{\\Phi_I} $$\n", + "$$ \\ket{\\Psi} = \\sum_{\\alpha} c_{\\alpha}\\ket{\\psi_{\\alpha}} = \\sum_{I=0}^d \\sum_{n=0}^s c_I^{(n)}\\hat{U}_n\\ket{\\Phi_I}. $$\n", "\n", "The energy of this state can be obtained by solving the generalized eigenvalue problem\n", - "$$ \\boldsymbol{Hc}=\\boldsymbol{Sc}E $$\n", + "$$ \\boldsymbol{Hc}=\\boldsymbol{Sc}E, $$\n", "\n", - "Where the elements of the overlap and Hamiltonian matrix are\n", + "where the elements of the overlap are\n", "\n", "$$S_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{U}_n|\\Phi_J}$$ \n", "\n", - "$$H_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\hat{H}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{H}\\hat{U}_n|\\Phi_J}$$\n", + "and Hamiltonian matrix is\n", "\n", - "These matrix elements are computed using a quantum computer and the Hadamard test with a circuit shown below for the case of the overlap matrix elements (The Hamiltonian matrix elements circuit would include controlled application of the Hamiltonian in the circuit). Once the matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.\n", + "$$H_{\\alpha \\beta} = \\braket{\\psi_{\\alpha}|\\hat{H}|\\psi_{\\beta}} = \\braket{\\Phi_I|\\hat{U}_m^{\\dagger}\\hat{H}\\hat{U}_n|\\Phi_J}.$$\n", + "\n", + "The matrix elements for $S$ are computed with the Hadamard test with a circuit shown below for the case of the overlap matrix elements. \n", "\n", "![Htest](./images/krylovcircuit.png)\n", "\n", - "The $2\\sigma_+$ term refers to measurement of the expectation value of this circuit with the $X+iY$ operator. \n" + "The $2\\sigma_+$ term refers to measurement of the expectation value of this circuit with the $X+iY$ operator.\n", + "\n", + "The Hamiltonian matrix elements are computed with a circuit that includes controlled application of the Hamiltonian. Once the $H$ and $S$ matrices are constructed, the diagonalization is performed classically to produce an estimate for the ground state in question.\n", + "\n", + "\n" ] }, { @@ -140,7 +146,7 @@ " return result\n", "\n", "\n", - "#Build the lists of coefficients and Pauli Words from H2 Hamiltonian\n", + "# Build the lists of coefficients and Pauli Words from the H2 Hamiltonian\n", "coefficient = termCoefficients(hamiltonian)\n", "pauli_string = termWords(hamiltonian)\n", "\n", @@ -153,7 +159,7 @@ "id": "74b4c079-8837-47ae-a484-52ec5f4a160e", "metadata": {}, "source": [ - "In the case of this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the $\\psi$ basis. Each receives the target qubits, the time step, and components of the Hamiltonian." + "In this example, the unitary operators that build the Krylov subspace are first-order Trotter operations at different time steps. The performance here could potentially be improved by increasing the size of the time step, using a higher order Trotter approximation, or using other sorts of approximations. The CUDA-Q kernels below define the unitary operations that construct the $\\psi$ basis. Each receives the target qubits, the time step, and components of the Hamiltonian." ] }, { @@ -300,11 +306,11 @@ "\n", "The cell below computes the overlap matrix. This can be done in serial or in parallel, depending on the `multi_gpu` specification. First, an operator is built to apply the identity to the overlap matrix circuit when `apply_pauli` is called. Next, the `wf_overlap` array is constructed which will hold the matrix elements. \n", "\n", - "Next, a pair of nested loops, iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix $S$ using the Hadamard test. This is accomplished by calling the CUDA-Q `observe` function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector `vec`.\n", + "Next, a pair of nested loops iterate over the time steps defined by the dimension of the subspace. Each m,n combination corresponds to computation of an off-diagonal matrix element of the overlap matrix $S$ using the Hadamard test. This is accomplished by calling the CUDA-Q `observe` function with the X and Y operators, along with the time steps, the components of the Hamiltonian matrix, and the initial state vector `vec`.\n", "\n", "The observe function broadcasts over the two provided operators $X$ and $Y$ and returns a list of results. The `expectation` function returns the expectation values which are summed and stored in the matrix.\n", "\n", - "The multi-gpu case completes the same steps, expect for `observe_async` is used. This allows for the $X$ and $Y$ observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real an imaginary parts, and then accessed later with the `get` command to build $S$\n" + "The multi-gpu case completes the same steps, except the `observe_async` command is used. This allows for the $X$ and $Y$ observables to be evaluated at the same time on two different simulated QPUs. In this case, the results are stored in lists corresponding to the real and imaginary parts. These are then accessed later with the `get` command to build $S$.\n" ] }, { @@ -541,19 +547,19 @@ "id": "1917bd58-4ce3-4e3e-9ccf-096577c0da14", "metadata": {}, "source": [ - "### Determining the ground state energy of the Subspace\n", + "### Determining the ground state energy of the subspace\n", "\n", "The final step is to solve the generalized eigenvaulue problem with the overlap and Hamiltonian matrices constructed using the quantum computer. The procedure begins by diagonalizing $S$ with the transform $$S = U\\Sigma U^{\\dagger}$$\n", "\n", - "The eigenvectors $v$ and eigenvalues $s$ are used to construct a new matrix $X'$\n", + "The eigenvectors $v$ and eigenvalues $s$ are used to construct a new matrix $X':$\n", "\n", - "$$ X' = S ^{\\frac{-1}{2}} = \\sum_k v_{ki} \\frac{1}{\\sqrt{s_k}} v_{kj}$$\n", + "$$ X' = S ^{\\frac{-1}{2}} = \\sum_k v_{ki} \\frac{1}{\\sqrt{s_k}} v_{kj}.$$\n", "\n", - "The $X'$ matrix diagonalizes $H$\n", + "The matrix $X'$ diagonalizes $H:$\n", "\n", - "$$ X'^{\\dagger}HX' = ES^{\\frac{1}{2}}C$$\n", + "$$ X'^{\\dagger}HX' = ES^{\\frac{1}{2}}C.$$\n", "\n", - "Using the eigenvectors of $H'$, ($^{\\frac{1}{2}}C$), the original eigenvectors to the problem can be found by left multiplying by $S^{\\frac{-1}{2}}C$" + "Using the eigenvectors of $H'$, ($^{\\frac{1}{2}}C$), the original eigenvectors to the problem can be found by left multiplying by $S^{\\frac{-1}{2}}C.$" ] }, { diff --git a/pr-2458/applications/python/logical_aim_sqale.html b/pr-2458/applications/python/logical_aim_sqale.html new file mode 100644 index 0000000000..ab9a36e604 --- /dev/null +++ b/pr-2458/applications/python/logical_aim_sqale.html @@ -0,0 +1,1949 @@ + + + + + + + Anderson Impurity Model ground state solver on Infleqtion’s Sqale — NVIDIA CUDA-Q documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                            + + +
                                                            + +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            +
                                                            +
                                                            + +
                                                            +

                                                            Anderson Impurity Model ground state solver on Infleqtion’s Sqale

                                                            +

                                                            Ground state quantum chemistry—computing total energies of molecular configurations to within chemical accuracy—is perhaps the most highly-touted industrial application of fault-tolerant quantum computers. Strongly correlated materials, for example, are particularly interesting, and tools like dynamical mean-field theory (DMFT) allow one to account for the effect of their strong, localized electronic correlations. These DMFT models help predict material properties by approximating the system as +a single site impurity inside a “bath” that encompasses the rest of the system. Simulating such dynamics can be a tough task using classical methods, but can be done efficiently on a quantum computer via quantum simulation.

                                                            +

                                                            In this notebook, we showcase a workflow for preparing the ground state of the minimal single-impurity Anderson model (SIAM) using the Hamiltonian Variational Ansatz for a range of realistic parameters. As a first step towards running DMFT on a fault-tolerant quantum computer, we will use logical qubits encoded in the [[4, 2, 2]] code. Using this workflow, we will obtain the ground state energy estimates via noisy simulation, and then also execute the corresponding optimized circuits on +Infleqtion’s gate-based neutral-atom quantum computer, making the benefits of logical qubits apparent. More details can be found in our paper.

                                                            +

                                                            This demo notebook uses CUDA-Q (cudaq) and a CUDA-QX library, cudaq-solvers; let us first begin by importing (and installing as needed) these packages:

                                                            +
                                                            +
                                                            [1]:
                                                            +
                                                            +
                                                            +
                                                            try:
                                                            +    import cudaq_solvers as solvers
                                                            +    import cudaq
                                                            +    import matplotlib.pyplot as plt
                                                            +except ImportError:
                                                            +    print("Installing required packages...")
                                                            +    %pip install --quiet 'cudaq-solvers' 'matplotlib'
                                                            +    print("Installed `cudaq`, `cudaq-solvers`, and `matplotlib` packages.")
                                                            +    print("You may need to restart the kernel to import newly installed packages.")
                                                            +    import cudaq_solvers as solvers
                                                            +    import cudaq
                                                            +    import matplotlib.pyplot as plt
                                                            +
                                                            +from collections.abc import Mapping, Sequence
                                                            +import numpy as np
                                                            +from scipy.optimize import minimize
                                                            +import os
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Performing logical Variational Quantum Eigensolver (VQE) with CUDA-QX

                                                            +

                                                            To prepare our ground state quantum Anderson impurity model circuits (referred to as AIM circuits in this notebook for short), we use VQE to train an ansatz to minimize a Hamiltonian and obtain optimal angles that can be used to set the AIM circuits. As described in our paper, the associated restricted Hamiltonian for our SIAM can be reduced to,

                                                            +
                                                            +\[\begin{equation} +H_{(U, V)} = U (Z_0 Z_2 - 1) / 4 + V (X_0 + X_2), +\end{equation}\]
                                                            +

                                                            where \(U\) is the Coulomb interaction and \(V\) the hybridization strength. In this notebook workflow, we will optimize over a 2-dimensional grid of Hamiltonian parameter values, namely \(U\in \{1, 5, 9\}\) and \(V\in \{-9, -1, 7\}\) (with all values assumed to be in units of eV), to ensure that the ansatz is generally trainable and expressive, and obtain 9 different circuit layers identified by the key \((U, V)\). We will simulate the VQE on GPU (or optionally on CPU if you +do not have GPU access), enabled by CUDA-Q, in the absence of noise:

                                                            +
                                                            +
                                                            [2]:
                                                            +
                                                            +
                                                            +
                                                            if cudaq.num_available_gpus() == 0:
                                                            +    cudaq.set_target("qpp-cpu", option="fp64")
                                                            +else:
                                                            +    cudaq.set_target("nvidia", option="fp64")
                                                            +
                                                            +
                                                            +
                                                            +

                                                            This workflow can be easily defined in CUDA-Q as shown in the cell below, using the CUDA-QX Solvers library (which accelerates quantum algorithms like the VQE):

                                                            +
                                                            +
                                                            [3]:
                                                            +
                                                            +
                                                            +
                                                            def ansatz(n_qubits: int) -> cudaq.Kernel:
                                                            +    # Create a CUDA-Q parameterized kernel
                                                            +    paramterized_ansatz, variational_angles = cudaq.make_kernel(list)
                                                            +    qubits = paramterized_ansatz.qalloc(n_qubits)
                                                            +
                                                            +    # Using |+> as the initial state:
                                                            +    paramterized_ansatz.h(qubits[0])
                                                            +    paramterized_ansatz.cx(qubits[0], qubits[1])
                                                            +
                                                            +    paramterized_ansatz.rx(variational_angles[0], qubits[0])
                                                            +    paramterized_ansatz.cx(qubits[0], qubits[1])
                                                            +    paramterized_ansatz.rz(variational_angles[1], qubits[1])
                                                            +    paramterized_ansatz.cx(qubits[0], qubits[1])
                                                            +    return paramterized_ansatz
                                                            +
                                                            +
                                                            +def run_logical_vqe(cudaq_hamiltonian: cudaq.SpinOperator) -> tuple[float, list[float]]:
                                                            +    # Set seed for easier reproduction
                                                            +    np.random.seed(42)
                                                            +
                                                            +    # Initial angles for the optimizer
                                                            +    init_angles = np.random.random(2) * 1e-1
                                                            +
                                                            +    # Obtain CUDA-Q Ansatz
                                                            +    num_qubits = cudaq_hamiltonian.get_qubit_count()
                                                            +    variational_kernel = ansatz(num_qubits)
                                                            +
                                                            +    # Perform VQE optimization
                                                            +    energy, params, _ = solvers.vqe(
                                                            +        variational_kernel,
                                                            +        cudaq_hamiltonian,
                                                            +        init_angles,
                                                            +        optimizer=minimize,
                                                            +        method="SLSQP",
                                                            +        tol=1e-10,
                                                            +    )
                                                            +    return energy, params
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Constructing circuits in the [[4,2,2]] encoding

                                                            +

                                                            The [[4,2,2]] code is a quantum error detection code that uses four physical qubits to encode two logical qubits. In this notebook, we will construct two variants of quantum circuits: physical (bare, unencoded) and logical (encoded). These circuits will be informed by the Hamiltonian Variational Ansatz described earlier. To measure all the terms in our Hamiltonian, we will measure the data qubits in both the \(Z\)- and \(X\)-basis, as allowed by the [[4,2,2]] logical gateset. +Full details on the circuit constructions are outlined in our paper.

                                                            +

                                                            Below, we create functions to build our CUDA-Q AIM circuits, both physical and logical versions. As we consider noisy simulation in this notebook, we will include some noisy gates. Here, for simplicity, we will just register a custom identity gate – to be later used as a noisy operation to model readout error:

                                                            +
                                                            +
                                                            [4]:
                                                            +
                                                            +
                                                            +
                                                            cudaq.register_operation("meas_id", np.identity(2))
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [5]:
                                                            +
                                                            +
                                                            +
                                                            def aim_physical_circuit(
                                                            +    angles: list[float], basis: str, *, ignore_meas_id: bool = False
                                                            +) -> cudaq.Kernel:
                                                            +    kernel = cudaq.make_kernel()
                                                            +    qubits = kernel.qalloc(2)
                                                            +
                                                            +    # Bell state prep
                                                            +    kernel.h(qubits[0])
                                                            +    kernel.cx(qubits[0], qubits[1])
                                                            +
                                                            +    # Rx Gate
                                                            +    kernel.rx(angles[0], qubits[0])
                                                            +
                                                            +    # ZZ rotation
                                                            +    kernel.cx(qubits[0], qubits[1])
                                                            +    kernel.rz(angles[1], qubits[1])
                                                            +    kernel.cx(qubits[0], qubits[1])
                                                            +
                                                            +    if basis == "z_basis":
                                                            +        if not ignore_meas_id:
                                                            +            kernel.for_loop(
                                                            +                start=0, stop=2, function=lambda q_idx: getattr(kernel, "meas_id")(qubits[q_idx])
                                                            +            )
                                                            +        kernel.mz(qubits)
                                                            +    elif basis == "x_basis":
                                                            +        kernel.h(qubits)
                                                            +        if not ignore_meas_id:
                                                            +            kernel.for_loop(
                                                            +                start=0, stop=2, function=lambda q_idx: getattr(kernel, "meas_id")(qubits[q_idx])
                                                            +            )
                                                            +        kernel.mz(qubits)
                                                            +    else:
                                                            +        raise ValueError("Unsupported basis provided:", basis)
                                                            +    return kernel
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [6]:
                                                            +
                                                            +
                                                            +
                                                            def aim_logical_circuit(
                                                            +    angles: list[float], basis: str, *, ignore_meas_id: bool = False
                                                            +) -> cudaq.Kernel:
                                                            +    kernel = cudaq.make_kernel()
                                                            +    qubits = kernel.qalloc(6)
                                                            +
                                                            +    kernel.for_loop(start=0, stop=3, function=lambda idx: kernel.h(qubits[idx]))
                                                            +    kernel.cx(qubits[1], qubits[4])
                                                            +    kernel.cx(qubits[2], qubits[3])
                                                            +    kernel.cx(qubits[0], qubits[1])
                                                            +    kernel.cx(qubits[0], qubits[3])
                                                            +
                                                            +    # Rx teleportation
                                                            +    kernel.rx(angles[0], qubits[0])
                                                            +
                                                            +    kernel.cx(qubits[0], qubits[1])
                                                            +    kernel.cx(qubits[0], qubits[3])
                                                            +    kernel.h(qubits[0])
                                                            +
                                                            +    if basis == "z_basis":
                                                            +        if not ignore_meas_id:
                                                            +            kernel.for_loop(
                                                            +                start=0, stop=5, function=lambda idx: getattr(kernel, "meas_id")(qubits[idx])
                                                            +            )
                                                            +        kernel.mz(qubits)
                                                            +    elif basis == "x_basis":
                                                            +        # ZZ rotation and teleportation
                                                            +        kernel.cx(qubits[3], qubits[5])
                                                            +        kernel.cx(qubits[2], qubits[5])
                                                            +        kernel.rz(angles[1], qubits[5])
                                                            +        kernel.cx(qubits[1], qubits[5])
                                                            +        kernel.cx(qubits[4], qubits[5])
                                                            +        kernel.for_loop(start=1, stop=5, function=lambda idx: kernel.h(qubits[idx]))
                                                            +        if not ignore_meas_id:
                                                            +            kernel.for_loop(
                                                            +                start=0, stop=6, function=lambda idx: getattr(kernel, "meas_id")(qubits[idx])
                                                            +            )
                                                            +        kernel.mz(qubits)
                                                            +    else:
                                                            +        raise ValueError("Unsupported basis provided:", basis)
                                                            +    return kernel
                                                            +
                                                            +
                                                            +
                                                            +

                                                            With the circuit definitions above, we can now define a function that automatically runs the VQE and constructs a dictionary containing all the AIM circuits we want to submit to hardware (or noisily simulate):

                                                            +
                                                            +
                                                            [7]:
                                                            +
                                                            +
                                                            +
                                                            def generate_circuit_set(ignore_meas_id: bool = False) -> object:
                                                            +    u_vals = [1, 5, 9]
                                                            +    v_vals = [-9, -1, 7]
                                                            +    circuit_dict = {}
                                                            +    for u in u_vals:
                                                            +        for v in v_vals:
                                                            +            qubit_hamiltonian = (
                                                            +                0.25 * u * cudaq.spin.z(0) * cudaq.spin.z(1)
                                                            +                - 0.25 * u
                                                            +                + v * cudaq.spin.x(0)
                                                            +                + v * cudaq.spin.x(1)
                                                            +            )
                                                            +            _, opt_params = run_logical_vqe(qubit_hamiltonian)
                                                            +            angles = [float(angle) for angle in opt_params]
                                                            +            print(f"Computed optimal angles={angles} for U={u}, V={v}")
                                                            +
                                                            +            tmp_physical_dict = {}
                                                            +            tmp_logical_dict = {}
                                                            +            for basis in ("z_basis", "x_basis"):
                                                            +                tmp_physical_dict[basis] = aim_physical_circuit(
                                                            +                    angles, basis, ignore_meas_id=ignore_meas_id
                                                            +                )
                                                            +                tmp_logical_dict[basis] = aim_logical_circuit(
                                                            +                    angles, basis, ignore_meas_id=ignore_meas_id
                                                            +                )
                                                            +
                                                            +            circuit_dict[f"{u}:{v}"] = {
                                                            +                "physical": tmp_physical_dict,
                                                            +                "logical": tmp_logical_dict,
                                                            +            }
                                                            +    print("\nFinished building optimized circuits!")
                                                            +    return circuit_dict
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [8]:
                                                            +
                                                            +
                                                            +
                                                            sim_circuit_dict = generate_circuit_set()
                                                            +circuit_layers = sim_circuit_dict.keys()
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9
                                                            +Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1
                                                            +Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7
                                                            +Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9
                                                            +Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1
                                                            +Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7
                                                            +Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9
                                                            +Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1
                                                            +Computed optimal angles=[-1.7301462729177735, 1.570796033796985] for U=9, V=7
                                                            +
                                                            +Finished building optimized circuits!
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Setting up submission and decoding workflow

                                                            +

                                                            In this section, we define various helper functions that will play a role in generating the associated energies of the AIM circuits based on the circuit samples (in the different bases), as well as decode the logical circuits with post-selection informed by the [[4,2,2]] code:

                                                            +
                                                            +
                                                            [9]:
                                                            +
                                                            +
                                                            +
                                                            def _num_qubits(counts: Mapping[str, float]) -> int:
                                                            +    for key in counts:
                                                            +        if key.isdecimal():
                                                            +            return len(key)
                                                            +    return 0
                                                            +
                                                            +
                                                            +def process_counts(
                                                            +    counts: Mapping[str, float],
                                                            +    data_qubits: Sequence[int],
                                                            +    flag_qubits: Sequence[int] = (),
                                                            +) -> dict[str, float]:
                                                            +    new_data: dict[str, float] = {}
                                                            +    for key, val in counts.items():
                                                            +        if not all(key[i] == "0" for i in flag_qubits):
                                                            +            continue
                                                            +
                                                            +        new_key = "".join(key[i] for i in data_qubits)
                                                            +
                                                            +        if not set("01").issuperset(new_key):
                                                            +            continue
                                                            +
                                                            +        new_data.setdefault(new_key, 0)
                                                            +        new_data[new_key] += val
                                                            +
                                                            +    return new_data
                                                            +
                                                            +
                                                            +def decode(counts: Mapping[str, float]) -> dict[str, float]:
                                                            +    """Decode physical counts into logical counts. Should be called after `process_counts`."""
                                                            +
                                                            +    if not counts:
                                                            +        return {}
                                                            +
                                                            +    num_qubits = _num_qubits(counts)
                                                            +    assert num_qubits % 4 == 0
                                                            +
                                                            +    physical_to_logical = {
                                                            +        "0000": "00",
                                                            +        "1111": "00",
                                                            +        "0011": "01",
                                                            +        "1100": "01",
                                                            +        "0101": "10",
                                                            +        "1010": "10",
                                                            +        "0110": "11",
                                                            +        "1001": "11",
                                                            +    }
                                                            +
                                                            +    new_data: dict[str, float] = {}
                                                            +    for key, val in counts.items():
                                                            +        physical_keys = [key[i : i + 4] for i in range(0, num_qubits, 4)]
                                                            +        logical_keys = [physical_to_logical.get(physical_key) for physical_key in physical_keys]
                                                            +        if None not in logical_keys:
                                                            +            new_key = "".join(logical_keys)
                                                            +            new_data.setdefault(new_key, 0)
                                                            +            new_data[new_key] += val
                                                            +
                                                            +    return new_data
                                                            +
                                                            +
                                                            +def ev_x(counts: Mapping[str, float]) -> float:
                                                            +    ev = 0.0
                                                            +
                                                            +    for k, val in counts.items():
                                                            +        ev += val * ((-1) ** int(k[0]) + (-1) ** int(k[1]))
                                                            +
                                                            +    total = sum(counts.values())
                                                            +    ev /= total
                                                            +    return ev
                                                            +
                                                            +
                                                            +def ev_xx(counts: Mapping[str, float]) -> float:
                                                            +    ev = 0.0
                                                            +
                                                            +    for k, val in counts.items():
                                                            +        ev += val * (-1) ** k.count("1")
                                                            +
                                                            +    total = sum(counts.values())
                                                            +    ev /= total
                                                            +    return ev
                                                            +
                                                            +
                                                            +def ev_zz(counts: Mapping[str, float]) -> float:
                                                            +    ev = 0.0
                                                            +
                                                            +    for k, val in counts.items():
                                                            +        ev += val * (-1) ** k.count("1")
                                                            +
                                                            +    total = sum(counts.values())
                                                            +    ev /= total
                                                            +    return ev
                                                            +
                                                            +
                                                            +def aim_logical_energies(
                                                            +    data_ordering: object, counts_list: Sequence[dict[str, float]]
                                                            +) -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:
                                                            +    counts_data = {
                                                            +        data_ordering[i]: decode(
                                                            +            process_counts(
                                                            +                counts,
                                                            +                data_qubits=[1, 2, 3, 4],
                                                            +                flag_qubits=[0, 5],
                                                            +            )
                                                            +        )
                                                            +        for i, counts in enumerate(counts_list)
                                                            +    }
                                                            +    return _aim_energies(counts_data)
                                                            +
                                                            +
                                                            +def aim_physical_energies(
                                                            +    data_ordering: object, counts_list: Sequence[dict[str, float]]
                                                            +) -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:
                                                            +    counts_data = {
                                                            +        data_ordering[i]: process_counts(
                                                            +            counts,
                                                            +            data_qubits=[0, 1],
                                                            +        )
                                                            +        for i, counts in enumerate(counts_list)
                                                            +    }
                                                            +    return _aim_energies(counts_data)
                                                            +
                                                            +
                                                            +def _aim_energies(
                                                            +    counts_data: Mapping[tuple[int, int, str], dict[str, float]],
                                                            +) -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:
                                                            +    evxs: dict[tuple[int, int], float] = {}
                                                            +    evxxs: dict[tuple[int, int], float] = {}
                                                            +    evzzs: dict[tuple[int, int], float] = {}
                                                            +    totals: dict[tuple[int, int], float] = {}
                                                            +
                                                            +    for key, counts in counts_data.items():
                                                            +        h_params, basis = key
                                                            +        key_a, key_b = h_params.split(":")
                                                            +        u, v = int(key_a), int(key_b)
                                                            +        if basis.startswith("x"):
                                                            +            evxs[u, v] = ev_x(counts)
                                                            +            evxxs[u, v] = ev_xx(counts)
                                                            +        else:
                                                            +            evzzs[u, v] = ev_zz(counts)
                                                            +
                                                            +        totals.setdefault((u, v), 0)
                                                            +        totals[u, v] += sum(counts.values())
                                                            +
                                                            +    energies = {}
                                                            +    uncertainties = {}
                                                            +    for u, v in evxs.keys() & evzzs.keys():
                                                            +        string_key = f"{u}:{v}"
                                                            +        energies[string_key] = u * (evzzs[u, v] - 1) / 4 + v * evxs[u, v]
                                                            +
                                                            +        uncertainty_xx = 2 * v**2 * (1 + evxxs[u, v]) - u * v * evxs[u, v] / 2
                                                            +        uncertainty_zz = u**2 * (1 - evzzs[u, v]) / 2
                                                            +
                                                            +        uncertainties[string_key] = np.sqrt(
                                                            +            (uncertainty_zz + uncertainty_xx - energies[string_key] ** 2) / (totals[u, v] / 2)
                                                            +        )
                                                            +
                                                            +    return energies, uncertainties
                                                            +
                                                            +
                                                            +def _get_energy_diff(
                                                            +    bf_energies: dict[str, float],
                                                            +    physical_energies: dict[str, float],
                                                            +    logical_energies: dict[str, float],
                                                            +) -> tuple[list[float], list[float]]:
                                                            +    physical_energy_diff = []
                                                            +    logical_energy_diff = []
                                                            +
                                                            +    # Data ordering following `bf_energies` keys
                                                            +    for layer in bf_energies.keys():
                                                            +        physical_sim_energy = physical_energies[layer]
                                                            +        logical_sim_energy = logical_energies[layer]
                                                            +        true_energy = bf_energies[layer]
                                                            +        u, v = layer.split(":")
                                                            +        print(f"Layer=({u}, {v}) has brute-force energy of: {true_energy}")
                                                            +        print(f"Physical circuit of layer=({u}, {v}) got an energy of: {physical_sim_energy}")
                                                            +        print(f"Logical circuit of layer=({u}, {v}) got an energy of: {logical_sim_energy}")
                                                            +        print("-" * 72)
                                                            +
                                                            +        if logical_sim_energy < physical_sim_energy:
                                                            +            print("Logical circuit achieved the lower energy!")
                                                            +        else:
                                                            +            print("Physical circuit achieved the lower energy")
                                                            +        print("-" * 72, "\n")
                                                            +
                                                            +        physical_energy_diff.append(
                                                            +            -1 * (true_energy - physical_sim_energy)
                                                            +        )  # Multiply by -1 since negative energies
                                                            +        logical_energy_diff.append(-1 * (true_energy - logical_sim_energy))
                                                            +    return physical_energy_diff, logical_energy_diff
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [10]:
                                                            +
                                                            +
                                                            +
                                                            def submit_aim_circuits(
                                                            +    circuit_dict: object,
                                                            +    *,
                                                            +    folder_path: str = "future_aim_results",
                                                            +    shots_count: int = 1000,
                                                            +    noise_model: cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel | None = None,
                                                            +    run_async: bool = False,
                                                            +) -> dict[str, list[dict[str, int]]] | None:
                                                            +    if run_async:
                                                            +        os.makedirs(folder_path, exist_ok=True)
                                                            +    else:
                                                            +        aim_results = {"physical": [], "logical": []}
                                                            +
                                                            +    for layer in circuit_dict.keys():
                                                            +        if run_async:
                                                            +            print(f"Posting circuits associated with layer=('{layer}')")
                                                            +        else:
                                                            +            print(f"Running circuits associated with layer=('{layer}')")
                                                            +
                                                            +        for basis in ("z_basis", "x_basis"):
                                                            +            if run_async:
                                                            +                u, v = layer.split(":")
                                                            +
                                                            +                tmp_physical_results = cudaq.sample_async(
                                                            +                    circuit_dict[layer]["physical"][basis], shots_count=shots_count
                                                            +                )
                                                            +                file = open(f"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt", "w")
                                                            +                file.write(str(tmp_physical_results))
                                                            +                file.close()
                                                            +
                                                            +                tmp_logical_results = cudaq.sample_async(
                                                            +                    circuit_dict[layer]["logical"][basis], shots_count=shots_count
                                                            +                )
                                                            +                file = open(f"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt", "w")
                                                            +                file.write(str(tmp_logical_results))
                                                            +                file.close()
                                                            +            else:
                                                            +                tmp_physical_results = cudaq.sample(
                                                            +                    circuit_dict[layer]["physical"][basis],
                                                            +                    shots_count=shots_count,
                                                            +                    noise_model=noise_model,
                                                            +                )
                                                            +                tmp_logical_results = cudaq.sample(
                                                            +                    circuit_dict[layer]["logical"][basis],
                                                            +                    shots_count=shots_count,
                                                            +                    noise_model=noise_model,
                                                            +                )
                                                            +                aim_results["physical"].append({k: v for k, v in tmp_physical_results.items()})
                                                            +                aim_results["logical"].append({k: v for k, v in tmp_logical_results.items()})
                                                            +    if not run_async:
                                                            +        print("\nCompleted all circuit sampling!")
                                                            +        return aim_results
                                                            +    else:
                                                            +        print("\nAll circuits submitted for async sampling!")
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [11]:
                                                            +
                                                            +
                                                            +
                                                            def _get_async_results(
                                                            +    layers: object, *, folder_path: str = "future_aim_results"
                                                            +) -> dict[str, list[dict[str, int]]]:
                                                            +    aim_results = {"physical": [], "logical": []}
                                                            +    for layer in layers:
                                                            +        print(f"Retrieving all circuits counts associated with layer=('{layer}')")
                                                            +        u, v = layer.split(":")
                                                            +        for basis in ("z_basis", "x_basis"):
                                                            +            file = open(f"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt", "r")
                                                            +            tmp_physical_results = cudaq.AsyncSampleResult(str(file.read()))
                                                            +            physical_counts = tmp_physical_results.get()
                                                            +
                                                            +            file = open(f"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt", "r")
                                                            +            tmp_logical_results = cudaq.AsyncSampleResult(str(file.read()))
                                                            +            logical_counts = tmp_logical_results.get()
                                                            +
                                                            +            aim_results["physical"].append({k: v for k, v in physical_counts.items()})
                                                            +            aim_results["logical"].append({k: v for k, v in logical_counts.items()})
                                                            +
                                                            +    print("\nObtained all circuit samples!")
                                                            +    return aim_results
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Running a CUDA-Q noisy simulation

                                                            +

                                                            In this section, we will first explore the performance of the physical and logical circuits under the influence of a device noise model. This will help us predict experimental results, as well as understand the dominant error sources at play. Such a simulation can be achieved via CUDA-Q’s density matrix simulator:

                                                            +
                                                            +
                                                            [12]:
                                                            +
                                                            +
                                                            +
                                                            cudaq.reset_target()
                                                            +cudaq.set_target("density-matrix-cpu")
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [13]:
                                                            +
                                                            +
                                                            +
                                                            def get_device_noise(
                                                            +    depolar_prob_1q: float,
                                                            +    depolar_prob_2q: float,
                                                            +    *,
                                                            +    readout_error_prob: float | None = None,
                                                            +    custom_gates: list[str] | None = None,
                                                            +) -> cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel:
                                                            +    noise = cudaq.NoiseModel()
                                                            +    depolar_noise = cudaq.DepolarizationChannel(depolar_prob_1q)
                                                            +
                                                            +    noisy_ops = ["z", "s", "x", "h", "rx", "rz"]
                                                            +    for op in noisy_ops:
                                                            +        noise.add_all_qubit_channel(op, depolar_noise)
                                                            +
                                                            +    if custom_gates:
                                                            +        custom_depolar_channel = cudaq.DepolarizationChannel(depolar_prob_1q)
                                                            +        for op in custom_gates:
                                                            +            noise.add_all_qubit_channel(op, custom_depolar_channel)
                                                            +
                                                            +    # Two qubit depolarization error
                                                            +    p_0 = 1 - depolar_prob_2q
                                                            +    p_1 = np.sqrt((1 - p_0**2) / 3)
                                                            +
                                                            +    k0 = np.array(
                                                            +        [[p_0, 0.0, 0.0, 0.0], [0.0, p_0, 0.0, 0.0], [0.0, 0.0, p_0, 0.0], [0.0, 0.0, 0.0, p_0]],
                                                            +        dtype=np.complex128,
                                                            +    )
                                                            +    k1 = np.array(
                                                            +        [[0.0, 0.0, p_1, 0.0], [0.0, 0.0, 0.0, p_1], [p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0]],
                                                            +        dtype=np.complex128,
                                                            +    )
                                                            +    k2 = np.array(
                                                            +        [
                                                            +            [0.0, 0.0, -1j * p_1, 0.0],
                                                            +            [0.0, 0.0, 0.0, -1j * p_1],
                                                            +            [1j * p_1, 0.0, 0.0, 0.0],
                                                            +            [0.0, 1j * p_1, 0.0, 0.0],
                                                            +        ],
                                                            +        dtype=np.complex128,
                                                            +    )
                                                            +    k3 = np.array(
                                                            +        [[p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0], [0.0, 0.0, -p_1, 0.0], [0.0, 0.0, 0.0, -p_1]],
                                                            +        dtype=np.complex128,
                                                            +    )
                                                            +    kraus_channel = cudaq.KrausChannel([k0, k1, k2, k3])
                                                            +
                                                            +    noise.add_all_qubit_channel("cz", kraus_channel)
                                                            +    noise.add_all_qubit_channel("cx", kraus_channel)
                                                            +
                                                            +    if readout_error_prob is not None:
                                                            +        # Readout error modeled with a Bit flip channel on identity before measurement
                                                            +        bit_flip = cudaq.BitFlipChannel(readout_error_prob)
                                                            +        noise.add_all_qubit_channel("meas_id", bit_flip)
                                                            +    return noise
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Finally, with our example noise model defined above, we can synchronously & noisily sample all of our AIM circuits by passing noise_model=cudaq_noise_model to the workflow containing function submit_aim_circuits():

                                                            +
                                                            +
                                                            [14]:
                                                            +
                                                            +
                                                            +
                                                            # Example parameters that can model execution on hardware at the high, simulation, level:
                                                            +# Take single-qubit gate depolarization rate: ~0.2% or better (fidelity ≥99.8%)
                                                            +# Take two-qubit gate depolarization rate: ~1–2% (fidelity ~98–99%)
                                                            +cudaq_noise_model = get_device_noise(0.002, 0.02, readout_error_prob=0.02)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [15]:
                                                            +
                                                            +
                                                            +
                                                            aim_sim_data = submit_aim_circuits(sim_circuit_dict, noise_model=cudaq_noise_model)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Running circuits associated with layer=('1:-9')
                                                            +Running circuits associated with layer=('1:-1')
                                                            +Running circuits associated with layer=('1:7')
                                                            +Running circuits associated with layer=('5:-9')
                                                            +Running circuits associated with layer=('5:-1')
                                                            +Running circuits associated with layer=('5:7')
                                                            +Running circuits associated with layer=('9:-9')
                                                            +Running circuits associated with layer=('9:-1')
                                                            +Running circuits associated with layer=('9:7')
                                                            +
                                                            +Completed all circuit sampling!
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [16]:
                                                            +
                                                            +
                                                            +
                                                            data_ordering = []
                                                            +for key in circuit_layers:
                                                            +    for basis in ("z_basis", "x_basis"):
                                                            +        data_ordering.append((key, basis))
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [17]:
                                                            +
                                                            +
                                                            +
                                                            sim_physical_energies, sim_physical_uncertainties = aim_physical_energies(
                                                            +    data_ordering, aim_sim_data["physical"]
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [18]:
                                                            +
                                                            +
                                                            +
                                                            sim_logical_energies, sim_logical_uncertainties = aim_logical_energies(
                                                            +    data_ordering, aim_sim_data["logical"]
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +

                                                            To analyze our simulated energy results in the above cells, we will compare them to the brute-force computed exact ground state energies for the AIM Hamiltonian. For simplicity, these are already stored in the dictionary bf_energies below:

                                                            +
                                                            +
                                                            [19]:
                                                            +
                                                            +
                                                            +
                                                            bf_energies = {
                                                            +    "1:-9": -18.251736027394713,
                                                            +    "1:-1": -2.265564437074638,
                                                            +    "1:7": -14.252231964940428,
                                                            +    "5:-9": -19.293350575766127,
                                                            +    "5:-1": -3.608495283014149,
                                                            +    "5:7": -15.305692796870582,
                                                            +    "9:-9": -20.39007993367173,
                                                            +    "9:-1": -5.260398644698076,
                                                            +    "9:7": -16.429650912487233,
                                                            +}
                                                            +
                                                            +
                                                            +
                                                            +

                                                            With the above metric, we can assess the performance of the logical circuits against the physical circuits by considering how far away the respective energies are from the brute-force expected energies. The cell below computes these energy deviations:

                                                            +
                                                            +
                                                            [20]:
                                                            +
                                                            +
                                                            +
                                                            sim_physical_energy_diff, sim_logical_energy_diff = _get_energy_diff(
                                                            +    bf_energies, sim_physical_energies, sim_logical_energies
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Layer=(1, -9) has brute-force energy of: -18.251736027394713
                                                            +Physical circuit of layer=(1, -9) got an energy of: -15.929
                                                            +Logical circuit of layer=(1, -9) got an energy of: -17.46016175277361
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(1, -1) has brute-force energy of: -2.265564437074638
                                                            +Physical circuit of layer=(1, -1) got an energy of: -1.97
                                                            +Logical circuit of layer=(1, -1) got an energy of: -2.176531948420889
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(1, 7) has brute-force energy of: -14.252231964940428
                                                            +Physical circuit of layer=(1, 7) got an energy of: -12.268
                                                            +Logical circuit of layer=(1, 7) got an energy of: -13.26321740664324
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, -9) has brute-force energy of: -19.293350575766127
                                                            +Physical circuit of layer=(5, -9) got an energy of: -16.8495
                                                            +Logical circuit of layer=(5, -9) got an energy of: -18.46681284816878
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, -1) has brute-force energy of: -3.608495283014149
                                                            +Physical circuit of layer=(5, -1) got an energy of: -3.1965000000000003
                                                            +Logical circuit of layer=(5, -1) got an energy of: -3.4531715120183297
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, 7) has brute-force energy of: -15.305692796870582
                                                            +Physical circuit of layer=(5, 7) got an energy of: -13.336
                                                            +Logical circuit of layer=(5, 7) got an energy of: -14.341784541550897
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, -9) has brute-force energy of: -20.39007993367173
                                                            +Physical circuit of layer=(9, -9) got an energy of: -17.802
                                                            +Logical circuit of layer=(9, -9) got an energy of: -19.339249509416753
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, -1) has brute-force energy of: -5.260398644698076
                                                            +Physical circuit of layer=(9, -1) got an energy of: -4.8580000000000005
                                                            +Logical circuit of layer=(9, -1) got an energy of: -5.1227150992242025
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, 7) has brute-force energy of: -16.429650912487233
                                                            +Physical circuit of layer=(9, 7) got an energy of: -14.3635
                                                            +Logical circuit of layer=(9, 7) got an energy of: -15.448422736181264
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Both physical and logical circuits were subject to the same noise model, but the [[4,2,2]] provides additional information that can help overcome some errors. Visualizing the computed energy differences from the above the cell, our noisy simulation provides a preview of the benefits logical qubits can offer:

                                                            +
                                                            +
                                                            [21]:
                                                            +
                                                            +
                                                            +
                                                            fig, ax = plt.subplots(figsize=(11, 7), dpi=200)
                                                            +
                                                            +layer_labels = [(int(key.split(":")[0]), int(key.split(":")[1])) for key in bf_energies.keys()]
                                                            +plot_labels = [str(item) for item in layer_labels]
                                                            +
                                                            +plt.errorbar(
                                                            +    plot_labels,
                                                            +    sim_physical_energy_diff,
                                                            +    yerr=sim_physical_uncertainties.values(),
                                                            +    ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),
                                                            +    color=(20 / 255.0, 26 / 255.0, 94 / 255.0),
                                                            +    capsize=4,
                                                            +    elinewidth=1.5,
                                                            +    fmt="o",
                                                            +    markersize=8,
                                                            +    markeredgewidth=1,
                                                            +    label="Physical",
                                                            +)
                                                            +
                                                            +plt.errorbar(
                                                            +    plot_labels,
                                                            +    sim_logical_energy_diff,
                                                            +    yerr=sim_logical_uncertainties.values(),
                                                            +    color=(0, 177 / 255.0, 152 / 255.0),
                                                            +    ecolor=(0, 177 / 255.0, 152 / 255.0),
                                                            +    capsize=4,
                                                            +    elinewidth=1.5,
                                                            +    fmt="o",
                                                            +    markersize=8,
                                                            +    markeredgewidth=1,
                                                            +    label="Logical",
                                                            +)
                                                            +
                                                            +ax.set_xlabel("Hamiltonian Parameters (U, V)", fontsize=18)
                                                            +ax.set_ylabel("Energy above true ground state (in eV)", fontsize=18)
                                                            +ax.set_title("CUDA-Q AIM Circuits Simulation (lower is better)", fontsize=20)
                                                            +ax.legend(loc="upper right", fontsize=18.5)
                                                            +plt.xticks(fontsize=16)
                                                            +plt.yticks(fontsize=16)
                                                            +
                                                            +ax.axhline(y=0, color="black", linestyle="--", linewidth=2)
                                                            +plt.ylim(
                                                            +    top=max(sim_physical_energy_diff) + max(sim_physical_uncertainties.values()) + 0.2, bottom=-0.2
                                                            +)
                                                            +plt.tight_layout()
                                                            +plt.show()
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +../../_images/applications_python_logical_aim_sqale_38_0.png +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Running logical AIM on Infleqtion’s hardware

                                                            +

                                                            The entire workflow we’ve seen thus far can be seamlessly executed on real quantum hardware as well. CUDA-Q has integration with Infleqtion’s gate-based neutral atom quantum computer, Sqale, allowing execution of CUDA-Q kernels on neutral-atom hardware via Infleqtion’s cross-platform Superstaq compiler API that performs low-level compilation and optimization under the hood. Indeed, the AIM research results seen in our +paper were obtained via this complete end-to-end workflow.

                                                            +

                                                            To do so, users can obtain a Superstaq API key from superstaq.infleqtion.com to gain access to Infleqtion’s neutral-atom simulator, with pre-registration open for access to Infleqtion’s neutral atom QPU.

                                                            +

                                                            As a tutorial, let us reproduce the workflow we’ve run so far but on Infleqtion’s QPU. We begin with the same GPU-enhanced VQE to generate the AIM circuits:

                                                            +
                                                            +
                                                            [22]:
                                                            +
                                                            +
                                                            +
                                                            cudaq.reset_target()
                                                            +
                                                            +if cudaq.num_available_gpus() == 0:
                                                            +    cudaq.set_target("qpp-cpu", option="fp64")
                                                            +else:
                                                            +    cudaq.set_target("nvidia", option="fp64")
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [23]:
                                                            +
                                                            +
                                                            +
                                                            device_circuit_dict = generate_circuit_set(
                                                            +    ignore_meas_id=True
                                                            +)  # Setting `ignore_meas_id=True` drops the noisy-identity gate from earlier
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9
                                                            +Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1
                                                            +Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7
                                                            +Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9
                                                            +Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1
                                                            +Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7
                                                            +Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9
                                                            +Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1
                                                            +Computed optimal angles=[-1.7301462945564499, 1.570796044872433] for U=9, V=7
                                                            +
                                                            +Finished building optimized circuits!
                                                            +
                                                            +
                                                            +

                                                            And now, we change backends! Before selecting an Infleqtion machine in CUDA-Q, we must first set our Superstaq API key, like so:

                                                            +
                                                            +
                                                            [24]:
                                                            +
                                                            +
                                                            +
                                                            # os.environ['SUPERSTAQ_API_KEY'] = "api_key"
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Next, we declare the type of execution we would like on Infleqtion’s machine based on the keyword options specified:

                                                            +
                                                            +
                                                            [25]:
                                                            +
                                                            +
                                                            +
                                                            cudaq.reset_target()
                                                            +
                                                            +# Set the following to run on Infleqtion's Sqale QPU:
                                                            +cudaq.set_target("infleqtion", machine="cq_sqale_qpu")
                                                            +
                                                            +# Set the following to run an ideal dry-run on Infleqtion's Sqale QPU:
                                                            +# cudaq.set_target("infleqtion", machine="cq_sqale_qpu", method="dry-run")
                                                            +
                                                            +# Set the following to run a device-realistic noisy simulation of Infleqtion's Sqale QPU:
                                                            +# cudaq.set_target("infleqtion", machine="cq_sqale_qpu", method="noise-sim")
                                                            +
                                                            +# Set the following to run a local, ideal emulation:
                                                            +# cudaq.set_target("infleqtion", emulate=True)
                                                            +
                                                            +
                                                            +
                                                            +

                                                            With that, we’re all set! That simple change instructs our AIM circuits to execute on Infleqtion’s QPU (or simulator). Due to the general queue wait time of running on hardware, we optionally recommend enabling the run_async=True flag to asynchronously sample the circuits. This will allow the cell to be executed and not wait synchronously until all the jobs are complete, allowing other classical code to be run in the meantime. When using run_async, an optional directory to store the job +information can be specified with folder_path (this will be important to later retrieve the job results from the same directory)

                                                            +
                                                            +
                                                            [26]:
                                                            +
                                                            +
                                                            +
                                                            submit_aim_circuits(
                                                            +    device_circuit_dict, folder_path="hardware_aim_future_results", shots_count=1000, run_async=True
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Posting circuits associated with layer=('1:-9')
                                                            +Posting circuits associated with layer=('1:-1')
                                                            +Posting circuits associated with layer=('1:7')
                                                            +Posting circuits associated with layer=('5:-9')
                                                            +Posting circuits associated with layer=('5:-1')
                                                            +Posting circuits associated with layer=('5:7')
                                                            +Posting circuits associated with layer=('9:-9')
                                                            +Posting circuits associated with layer=('9:-1')
                                                            +Posting circuits associated with layer=('9:7')
                                                            +
                                                            +All circuits submitted for async sampling!
                                                            +
                                                            +
                                                            +

                                                            With the above cell execution, all the circuits will post to execute on QPU. We can then return at a later time to retrieve the job results with the cell below:

                                                            +
                                                            +
                                                            [27]:
                                                            +
                                                            +
                                                            +
                                                            aim_device_data = _get_async_results(circuit_layers, folder_path="hardware_aim_future_results")
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Retrieving all circuits counts associated with layer=('1:-9')
                                                            +Retrieving all circuits counts associated with layer=('1:-1')
                                                            +Retrieving all circuits counts associated with layer=('1:7')
                                                            +Retrieving all circuits counts associated with layer=('5:-9')
                                                            +Retrieving all circuits counts associated with layer=('5:-1')
                                                            +Retrieving all circuits counts associated with layer=('5:7')
                                                            +Retrieving all circuits counts associated with layer=('9:-9')
                                                            +Retrieving all circuits counts associated with layer=('9:-1')
                                                            +Retrieving all circuits counts associated with layer=('9:7')
                                                            +
                                                            +Obtained all circuit samples!
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [28]:
                                                            +
                                                            +
                                                            +
                                                            physical_energies, physical_uncertainties = aim_physical_energies(
                                                            +    data_ordering, aim_device_data["physical"]
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [29]:
                                                            +
                                                            +
                                                            +
                                                            logical_energies, logical_uncertainties = aim_logical_energies(
                                                            +    data_ordering, aim_device_data["logical"]
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            [30]:
                                                            +
                                                            +
                                                            +
                                                            physical_energy_diff, logical_energy_diff = _get_energy_diff(
                                                            +    bf_energies, physical_energies, logical_energies
                                                            +)
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +Layer=(1, -9) has brute-force energy of: -18.251736027394713
                                                            +Physical circuit of layer=(1, -9) got an energy of: -17.626499999999997
                                                            +Logical circuit of layer=(1, -9) got an energy of: -17.69666562801761
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(1, -1) has brute-force energy of: -2.265564437074638
                                                            +Physical circuit of layer=(1, -1) got an energy of: -2.1415
                                                            +Logical circuit of layer=(1, -1) got an energy of: -2.2032104443266585
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(1, 7) has brute-force energy of: -14.252231964940428
                                                            +Physical circuit of layer=(1, 7) got an energy of: -12.9955
                                                            +Logical circuit of layer=(1, 7) got an energy of: -13.76919450035401
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, -9) has brute-force energy of: -19.293350575766127
                                                            +Physical circuit of layer=(5, -9) got an energy of: -18.331
                                                            +Logical circuit of layer=(5, -9) got an energy of: -18.85730052910377
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, -1) has brute-force energy of: -3.608495283014149
                                                            +Physical circuit of layer=(5, -1) got an energy of: -3.476
                                                            +Logical circuit of layer=(5, -1) got an energy of: -3.5425689231532203
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(5, 7) has brute-force energy of: -15.305692796870582
                                                            +Physical circuit of layer=(5, 7) got an energy of: -14.043500000000002
                                                            +Logical circuit of layer=(5, 7) got an energy of: -14.795918428433312
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, -9) has brute-force energy of: -20.39007993367173
                                                            +Physical circuit of layer=(9, -9) got an energy of: -19.4715
                                                            +Logical circuit of layer=(9, -9) got an energy of: -19.96524696701215
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, -1) has brute-force energy of: -5.260398644698076
                                                            +Physical circuit of layer=(9, -1) got an energy of: -4.973
                                                            +Logical circuit of layer=(9, -1) got an energy of: -5.207315773582224
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +Layer=(9, 7) has brute-force energy of: -16.429650912487233
                                                            +Physical circuit of layer=(9, 7) got an energy of: -15.182
                                                            +Logical circuit of layer=(9, 7) got an energy of: -16.241375689575516
                                                            +------------------------------------------------------------------------
                                                            +Logical circuit achieved the lower energy!
                                                            +------------------------------------------------------------------------
                                                            +
                                                            +
                                                            +
                                                            +

                                                            As before, we use the same metric of comparing against the true ground state energies; however, this time, both the physical and logical circuits are fully exposed to real hardware noise. Yet, we expect the use of logical qubits afforded to us by the [[4,2,2]] code to achieve energies closer to the true ground state than the bare physical circuits (up to a certain error threshold). And indeed they do! Visually, we can plot the energy deviations of both the physical and logical circuits from +the cell above and observe that the logical circuits are able to outperform the physical circuits by obtaining much lower energies, demonstrating the power of error detection and the beginning possibilities of fault-tolerant quantum computation:

                                                            +
                                                            +
                                                            [31]:
                                                            +
                                                            +
                                                            +
                                                            fig, ax = plt.subplots(figsize=(11, 7), dpi=200)
                                                            +
                                                            +plt.errorbar(
                                                            +    plot_labels,
                                                            +    physical_energy_diff,
                                                            +    yerr=physical_uncertainties.values(),
                                                            +    ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),
                                                            +    color=(20 / 255.0, 26 / 255.0, 94 / 255.0),
                                                            +    capsize=4,
                                                            +    elinewidth=1.5,
                                                            +    fmt="o",
                                                            +    markersize=8,
                                                            +    markeredgewidth=1,
                                                            +    label="Physical",
                                                            +)
                                                            +plt.errorbar(
                                                            +    plot_labels,
                                                            +    logical_energy_diff,
                                                            +    yerr=logical_uncertainties.values(),
                                                            +    color=(0, 177 / 255.0, 152 / 255.0),
                                                            +    ecolor=(0, 177 / 255.0, 152 / 255.0),
                                                            +    capsize=4,
                                                            +    elinewidth=1.5,
                                                            +    fmt="o",
                                                            +    markersize=8,
                                                            +    markeredgewidth=1,
                                                            +    label="Logical",
                                                            +)
                                                            +
                                                            +ax.set_xlabel("Hamiltonian Parameters (U, V)", fontsize=18)
                                                            +ax.set_ylabel("Energy above true ground state (in eV)", fontsize=18)
                                                            +ax.set_title("CUDA-Q AIM Infleqtion Hardware Execution (lower is better)", fontsize=20)
                                                            +ax.legend(loc="upper left", fontsize=18.5)
                                                            +plt.xticks(fontsize=16)
                                                            +plt.yticks(fontsize=16)
                                                            +
                                                            +ax.axhline(y=0, color="black", linestyle="--", linewidth=2)
                                                            +plt.ylim(top=max(physical_energy_diff) + max(physical_uncertainties.values()) + 0.2, bottom=-0.2)
                                                            +plt.tight_layout()
                                                            +plt.show()
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +../../_images/applications_python_logical_aim_sqale_56_0.png +
                                                            +
                                                            +
                                                            +
                                                            + + +
                                                            +
                                                            + +
                                                            +
                                                            +
                                                            +
                                                            + + + + + + + \ No newline at end of file diff --git a/pr-2458/applications/python/logical_aim_sqale.ipynb b/pr-2458/applications/python/logical_aim_sqale.ipynb new file mode 100644 index 0000000000..f51bd10294 --- /dev/null +++ b/pr-2458/applications/python/logical_aim_sqale.ipynb @@ -0,0 +1,1356 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Anderson Impurity Model ground state solver on Infleqtion's Sqale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ground state quantum chemistry—computing total energies of molecular configurations to within chemical accuracy—is perhaps the most highly-touted industrial application of fault-tolerant quantum computers. Strongly correlated materials, for example, are particularly interesting, and tools like dynamical mean-field theory (DMFT) allow one to account for the effect of their strong, localized electronic correlations. These DMFT models help predict material properties by approximating the system as a single site impurity inside a “bath” that encompasses the rest of the system. Simulating such dynamics can be a tough task using classical methods, but can be done efficiently on a quantum computer via quantum simulation.\n", + "\n", + "In this notebook, we showcase a workflow for preparing the ground state of the minimal single-impurity Anderson model (SIAM) using the Hamiltonian Variational Ansatz for a range of realistic parameters. As a first step towards running DMFT on a fault-tolerant quantum computer, we will use logical qubits encoded in the `[[4, 2, 2]]` code. Using this workflow, we will obtain the ground state energy estimates via noisy simulation, and then also execute the corresponding optimized circuits on Infleqtion's gate-based neutral-atom quantum computer, making the benefits of logical qubits apparent. More details can be found in our [paper](https://arxiv.org/abs/2412.07670)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This demo notebook uses CUDA-Q (`cudaq`) and a CUDA-QX library, `cudaq-solvers`; let us first begin by importing (and installing as needed) these packages:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " import cudaq_solvers as solvers\n", + " import cudaq\n", + " import matplotlib.pyplot as plt\n", + "except ImportError:\n", + " print(\"Installing required packages...\")\n", + " %pip install --quiet 'cudaq-solvers' 'matplotlib'\n", + " print(\"Installed `cudaq`, `cudaq-solvers`, and `matplotlib` packages.\")\n", + " print(\"You may need to restart the kernel to import newly installed packages.\")\n", + " import cudaq_solvers as solvers\n", + " import cudaq\n", + " import matplotlib.pyplot as plt\n", + "\n", + "from collections.abc import Mapping, Sequence\n", + "import numpy as np\n", + "from scipy.optimize import minimize\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Performing logical Variational Quantum Eigensolver (VQE) with CUDA-QX" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To prepare our ground state quantum Anderson impurity model circuits (referred to as AIM circuits in this notebook for short), we use VQE to train an ansatz to minimize a Hamiltonian and obtain optimal angles that can be used to set the AIM circuits. As described in our [paper](https://arxiv.org/abs/2412.07670), the associated restricted Hamiltonian for our SIAM can be reduced to,\n", + "$$ \n", + "\\begin{equation}\n", + "H_{(U, V)} = U (Z_0 Z_2 - 1) / 4 + V (X_0 + X_2),\n", + "\\end{equation}\n", + "$$\n", + "where $U$ is the Coulomb interaction and $V$ the hybridization strength. In this notebook workflow, we will optimize over a 2-dimensional grid of Hamiltonian parameter values, namely $U\\in \\{1, 5, 9\\}$ and $V\\in \\{-9, -1, 7\\}$ (with all values assumed to be in units of eV), to ensure that the ansatz is generally trainable and expressive, and obtain 9 different circuit layers identified by the key $(U, V)$. We will simulate the VQE on GPU (or optionally on CPU if you do not have GPU access), enabled by CUDA-Q, in the absence of noise:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "if cudaq.num_available_gpus() == 0:\n", + " cudaq.set_target(\"qpp-cpu\", option=\"fp64\")\n", + "else:\n", + " cudaq.set_target(\"nvidia\", option=\"fp64\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This workflow can be easily defined in CUDA-Q as shown in the cell below, using the CUDA-QX Solvers library (which accelerates quantum algorithms like the VQE):" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def ansatz(n_qubits: int) -> cudaq.Kernel:\n", + " # Create a CUDA-Q parameterized kernel\n", + " paramterized_ansatz, variational_angles = cudaq.make_kernel(list)\n", + " qubits = paramterized_ansatz.qalloc(n_qubits)\n", + "\n", + " # Using |+> as the initial state:\n", + " paramterized_ansatz.h(qubits[0])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + "\n", + " paramterized_ansatz.rx(variational_angles[0], qubits[0])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + " paramterized_ansatz.rz(variational_angles[1], qubits[1])\n", + " paramterized_ansatz.cx(qubits[0], qubits[1])\n", + " return paramterized_ansatz\n", + "\n", + "\n", + "def run_logical_vqe(cudaq_hamiltonian: cudaq.SpinOperator) -> tuple[float, list[float]]:\n", + " # Set seed for easier reproduction\n", + " np.random.seed(42)\n", + "\n", + " # Initial angles for the optimizer\n", + " init_angles = np.random.random(2) * 1e-1\n", + "\n", + " # Obtain CUDA-Q Ansatz\n", + " num_qubits = cudaq_hamiltonian.get_qubit_count()\n", + " variational_kernel = ansatz(num_qubits)\n", + "\n", + " # Perform VQE optimization\n", + " energy, params, _ = solvers.vqe(\n", + " variational_kernel,\n", + " cudaq_hamiltonian,\n", + " init_angles,\n", + " optimizer=minimize,\n", + " method=\"SLSQP\",\n", + " tol=1e-10,\n", + " )\n", + " return energy, params" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Constructing circuits in the `[[4,2,2]]` encoding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `[[4,2,2]]` code is a quantum error detection code that uses four physical qubits to encode two logical qubits. In this notebook, we will construct two variants of quantum circuits: physical (bare, unencoded) and logical (encoded). These circuits will be informed by the Hamiltonian Variational Ansatz described earlier. To measure all the terms in our Hamiltonian, we will measure the data qubits in both the $Z$- and $X$-basis, as allowed by the `[[4,2,2]]` logical gateset. Full details on the circuit constructions are outlined in our [paper](https://arxiv.org/abs/2412.07670)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below, we create functions to build our CUDA-Q AIM circuits, both physical and logical versions. As we consider noisy simulation in this notebook, we will include some noisy gates. Here, for simplicity, we will just register a custom identity gate -- to be later used as a noisy operation to model readout error: " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.register_operation(\"meas_id\", np.identity(2))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def aim_physical_circuit(\n", + " angles: list[float], basis: str, *, ignore_meas_id: bool = False\n", + ") -> cudaq.Kernel:\n", + " kernel = cudaq.make_kernel()\n", + " qubits = kernel.qalloc(2)\n", + "\n", + " # Bell state prep\n", + " kernel.h(qubits[0])\n", + " kernel.cx(qubits[0], qubits[1])\n", + "\n", + " # Rx Gate\n", + " kernel.rx(angles[0], qubits[0])\n", + "\n", + " # ZZ rotation\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.rz(angles[1], qubits[1])\n", + " kernel.cx(qubits[0], qubits[1])\n", + "\n", + " if basis == \"z_basis\":\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=2, function=lambda q_idx: getattr(kernel, \"meas_id\")(qubits[q_idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " elif basis == \"x_basis\":\n", + " kernel.h(qubits)\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=2, function=lambda q_idx: getattr(kernel, \"meas_id\")(qubits[q_idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " else:\n", + " raise ValueError(\"Unsupported basis provided:\", basis)\n", + " return kernel" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def aim_logical_circuit(\n", + " angles: list[float], basis: str, *, ignore_meas_id: bool = False\n", + ") -> cudaq.Kernel:\n", + " kernel = cudaq.make_kernel()\n", + " qubits = kernel.qalloc(6)\n", + "\n", + " kernel.for_loop(start=0, stop=3, function=lambda idx: kernel.h(qubits[idx]))\n", + " kernel.cx(qubits[1], qubits[4])\n", + " kernel.cx(qubits[2], qubits[3])\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.cx(qubits[0], qubits[3])\n", + "\n", + " # Rx teleportation\n", + " kernel.rx(angles[0], qubits[0])\n", + "\n", + " kernel.cx(qubits[0], qubits[1])\n", + " kernel.cx(qubits[0], qubits[3])\n", + " kernel.h(qubits[0])\n", + "\n", + " if basis == \"z_basis\":\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=5, function=lambda idx: getattr(kernel, \"meas_id\")(qubits[idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " elif basis == \"x_basis\":\n", + " # ZZ rotation and teleportation\n", + " kernel.cx(qubits[3], qubits[5])\n", + " kernel.cx(qubits[2], qubits[5])\n", + " kernel.rz(angles[1], qubits[5])\n", + " kernel.cx(qubits[1], qubits[5])\n", + " kernel.cx(qubits[4], qubits[5])\n", + " kernel.for_loop(start=1, stop=5, function=lambda idx: kernel.h(qubits[idx]))\n", + " if not ignore_meas_id:\n", + " kernel.for_loop(\n", + " start=0, stop=6, function=lambda idx: getattr(kernel, \"meas_id\")(qubits[idx])\n", + " )\n", + " kernel.mz(qubits)\n", + " else:\n", + " raise ValueError(\"Unsupported basis provided:\", basis)\n", + " return kernel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the circuit definitions above, we can now define a function that automatically runs the VQE and constructs a dictionary containing all the AIM circuits we want to submit to hardware (or noisily simulate):" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_circuit_set(ignore_meas_id: bool = False) -> object:\n", + " u_vals = [1, 5, 9]\n", + " v_vals = [-9, -1, 7]\n", + " circuit_dict = {}\n", + " for u in u_vals:\n", + " for v in v_vals:\n", + " qubit_hamiltonian = (\n", + " 0.25 * u * cudaq.spin.z(0) * cudaq.spin.z(1)\n", + " - 0.25 * u\n", + " + v * cudaq.spin.x(0)\n", + " + v * cudaq.spin.x(1)\n", + " )\n", + " _, opt_params = run_logical_vqe(qubit_hamiltonian)\n", + " angles = [float(angle) for angle in opt_params]\n", + " print(f\"Computed optimal angles={angles} for U={u}, V={v}\")\n", + "\n", + " tmp_physical_dict = {}\n", + " tmp_logical_dict = {}\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " tmp_physical_dict[basis] = aim_physical_circuit(\n", + " angles, basis, ignore_meas_id=ignore_meas_id\n", + " )\n", + " tmp_logical_dict[basis] = aim_logical_circuit(\n", + " angles, basis, ignore_meas_id=ignore_meas_id\n", + " )\n", + "\n", + " circuit_dict[f\"{u}:{v}\"] = {\n", + " \"physical\": tmp_physical_dict,\n", + " \"logical\": tmp_logical_dict,\n", + " }\n", + " print(\"\\nFinished building optimized circuits!\")\n", + " return circuit_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9\n", + "Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1\n", + "Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7\n", + "Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9\n", + "Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1\n", + "Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7\n", + "Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9\n", + "Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1\n", + "Computed optimal angles=[-1.7301462729177735, 1.570796033796985] for U=9, V=7\n", + "\n", + "Finished building optimized circuits!\n" + ] + } + ], + "source": [ + "sim_circuit_dict = generate_circuit_set()\n", + "circuit_layers = sim_circuit_dict.keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up submission and decoding workflow " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we define various helper functions that will play a role in generating the associated energies of the AIM circuits based on the circuit samples (in the different bases), as well as decode the logical circuits with post-selection informed by the `[[4,2,2]]` code:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def _num_qubits(counts: Mapping[str, float]) -> int:\n", + " for key in counts:\n", + " if key.isdecimal():\n", + " return len(key)\n", + " return 0\n", + "\n", + "\n", + "def process_counts(\n", + " counts: Mapping[str, float],\n", + " data_qubits: Sequence[int],\n", + " flag_qubits: Sequence[int] = (),\n", + ") -> dict[str, float]:\n", + " new_data: dict[str, float] = {}\n", + " for key, val in counts.items():\n", + " if not all(key[i] == \"0\" for i in flag_qubits):\n", + " continue\n", + "\n", + " new_key = \"\".join(key[i] for i in data_qubits)\n", + "\n", + " if not set(\"01\").issuperset(new_key):\n", + " continue\n", + "\n", + " new_data.setdefault(new_key, 0)\n", + " new_data[new_key] += val\n", + "\n", + " return new_data\n", + "\n", + "\n", + "def decode(counts: Mapping[str, float]) -> dict[str, float]:\n", + " \"\"\"Decode physical counts into logical counts. Should be called after `process_counts`.\"\"\"\n", + "\n", + " if not counts:\n", + " return {}\n", + "\n", + " num_qubits = _num_qubits(counts)\n", + " assert num_qubits % 4 == 0\n", + "\n", + " physical_to_logical = {\n", + " \"0000\": \"00\",\n", + " \"1111\": \"00\",\n", + " \"0011\": \"01\",\n", + " \"1100\": \"01\",\n", + " \"0101\": \"10\",\n", + " \"1010\": \"10\",\n", + " \"0110\": \"11\",\n", + " \"1001\": \"11\",\n", + " }\n", + "\n", + " new_data: dict[str, float] = {}\n", + " for key, val in counts.items():\n", + " physical_keys = [key[i : i + 4] for i in range(0, num_qubits, 4)]\n", + " logical_keys = [physical_to_logical.get(physical_key) for physical_key in physical_keys]\n", + " if None not in logical_keys:\n", + " new_key = \"\".join(logical_keys)\n", + " new_data.setdefault(new_key, 0)\n", + " new_data[new_key] += val\n", + "\n", + " return new_data\n", + "\n", + "\n", + "def ev_x(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * ((-1) ** int(k[0]) + (-1) ** int(k[1]))\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def ev_xx(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * (-1) ** k.count(\"1\")\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def ev_zz(counts: Mapping[str, float]) -> float:\n", + " ev = 0.0\n", + "\n", + " for k, val in counts.items():\n", + " ev += val * (-1) ** k.count(\"1\")\n", + "\n", + " total = sum(counts.values())\n", + " ev /= total\n", + " return ev\n", + "\n", + "\n", + "def aim_logical_energies(\n", + " data_ordering: object, counts_list: Sequence[dict[str, float]]\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " counts_data = {\n", + " data_ordering[i]: decode(\n", + " process_counts(\n", + " counts,\n", + " data_qubits=[1, 2, 3, 4],\n", + " flag_qubits=[0, 5],\n", + " )\n", + " )\n", + " for i, counts in enumerate(counts_list)\n", + " }\n", + " return _aim_energies(counts_data)\n", + "\n", + "\n", + "def aim_physical_energies(\n", + " data_ordering: object, counts_list: Sequence[dict[str, float]]\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " counts_data = {\n", + " data_ordering[i]: process_counts(\n", + " counts,\n", + " data_qubits=[0, 1],\n", + " )\n", + " for i, counts in enumerate(counts_list)\n", + " }\n", + " return _aim_energies(counts_data)\n", + "\n", + "\n", + "def _aim_energies(\n", + " counts_data: Mapping[tuple[int, int, str], dict[str, float]],\n", + ") -> tuple[dict[tuple[int, int], float], dict[tuple[int, int], float]]:\n", + " evxs: dict[tuple[int, int], float] = {}\n", + " evxxs: dict[tuple[int, int], float] = {}\n", + " evzzs: dict[tuple[int, int], float] = {}\n", + " totals: dict[tuple[int, int], float] = {}\n", + "\n", + " for key, counts in counts_data.items():\n", + " h_params, basis = key\n", + " key_a, key_b = h_params.split(\":\")\n", + " u, v = int(key_a), int(key_b)\n", + " if basis.startswith(\"x\"):\n", + " evxs[u, v] = ev_x(counts)\n", + " evxxs[u, v] = ev_xx(counts)\n", + " else:\n", + " evzzs[u, v] = ev_zz(counts)\n", + "\n", + " totals.setdefault((u, v), 0)\n", + " totals[u, v] += sum(counts.values())\n", + "\n", + " energies = {}\n", + " uncertainties = {}\n", + " for u, v in evxs.keys() & evzzs.keys():\n", + " string_key = f\"{u}:{v}\"\n", + " energies[string_key] = u * (evzzs[u, v] - 1) / 4 + v * evxs[u, v]\n", + "\n", + " uncertainty_xx = 2 * v**2 * (1 + evxxs[u, v]) - u * v * evxs[u, v] / 2\n", + " uncertainty_zz = u**2 * (1 - evzzs[u, v]) / 2\n", + "\n", + " uncertainties[string_key] = np.sqrt(\n", + " (uncertainty_zz + uncertainty_xx - energies[string_key] ** 2) / (totals[u, v] / 2)\n", + " )\n", + "\n", + " return energies, uncertainties\n", + "\n", + "\n", + "def _get_energy_diff(\n", + " bf_energies: dict[str, float],\n", + " physical_energies: dict[str, float],\n", + " logical_energies: dict[str, float],\n", + ") -> tuple[list[float], list[float]]:\n", + " physical_energy_diff = []\n", + " logical_energy_diff = []\n", + "\n", + " # Data ordering following `bf_energies` keys\n", + " for layer in bf_energies.keys():\n", + " physical_sim_energy = physical_energies[layer]\n", + " logical_sim_energy = logical_energies[layer]\n", + " true_energy = bf_energies[layer]\n", + " u, v = layer.split(\":\")\n", + " print(f\"Layer=({u}, {v}) has brute-force energy of: {true_energy}\")\n", + " print(f\"Physical circuit of layer=({u}, {v}) got an energy of: {physical_sim_energy}\")\n", + " print(f\"Logical circuit of layer=({u}, {v}) got an energy of: {logical_sim_energy}\")\n", + " print(\"-\" * 72)\n", + "\n", + " if logical_sim_energy < physical_sim_energy:\n", + " print(\"Logical circuit achieved the lower energy!\")\n", + " else:\n", + " print(\"Physical circuit achieved the lower energy\")\n", + " print(\"-\" * 72, \"\\n\")\n", + "\n", + " physical_energy_diff.append(\n", + " -1 * (true_energy - physical_sim_energy)\n", + " ) # Multiply by -1 since negative energies\n", + " logical_energy_diff.append(-1 * (true_energy - logical_sim_energy))\n", + " return physical_energy_diff, logical_energy_diff" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def submit_aim_circuits(\n", + " circuit_dict: object,\n", + " *,\n", + " folder_path: str = \"future_aim_results\",\n", + " shots_count: int = 1000,\n", + " noise_model: cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel | None = None,\n", + " run_async: bool = False,\n", + ") -> dict[str, list[dict[str, int]]] | None:\n", + " if run_async:\n", + " os.makedirs(folder_path, exist_ok=True)\n", + " else:\n", + " aim_results = {\"physical\": [], \"logical\": []}\n", + "\n", + " for layer in circuit_dict.keys():\n", + " if run_async:\n", + " print(f\"Posting circuits associated with layer=('{layer}')\")\n", + " else:\n", + " print(f\"Running circuits associated with layer=('{layer}')\")\n", + "\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " if run_async:\n", + " u, v = layer.split(\":\")\n", + "\n", + " tmp_physical_results = cudaq.sample_async(\n", + " circuit_dict[layer][\"physical\"][basis], shots_count=shots_count\n", + " )\n", + " file = open(f\"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt\", \"w\")\n", + " file.write(str(tmp_physical_results))\n", + " file.close()\n", + "\n", + " tmp_logical_results = cudaq.sample_async(\n", + " circuit_dict[layer][\"logical\"][basis], shots_count=shots_count\n", + " )\n", + " file = open(f\"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt\", \"w\")\n", + " file.write(str(tmp_logical_results))\n", + " file.close()\n", + " else:\n", + " tmp_physical_results = cudaq.sample(\n", + " circuit_dict[layer][\"physical\"][basis],\n", + " shots_count=shots_count,\n", + " noise_model=noise_model,\n", + " )\n", + " tmp_logical_results = cudaq.sample(\n", + " circuit_dict[layer][\"logical\"][basis],\n", + " shots_count=shots_count,\n", + " noise_model=noise_model,\n", + " )\n", + " aim_results[\"physical\"].append({k: v for k, v in tmp_physical_results.items()})\n", + " aim_results[\"logical\"].append({k: v for k, v in tmp_logical_results.items()})\n", + " if not run_async:\n", + " print(\"\\nCompleted all circuit sampling!\")\n", + " return aim_results\n", + " else:\n", + " print(\"\\nAll circuits submitted for async sampling!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def _get_async_results(\n", + " layers: object, *, folder_path: str = \"future_aim_results\"\n", + ") -> dict[str, list[dict[str, int]]]:\n", + " aim_results = {\"physical\": [], \"logical\": []}\n", + " for layer in layers:\n", + " print(f\"Retrieving all circuits counts associated with layer=('{layer}')\")\n", + " u, v = layer.split(\":\")\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " file = open(f\"{folder_path}/physical_{basis}_job_u={u}_v={v}_result.txt\", \"r\")\n", + " tmp_physical_results = cudaq.AsyncSampleResult(str(file.read()))\n", + " physical_counts = tmp_physical_results.get()\n", + "\n", + " file = open(f\"{folder_path}/logical_{basis}_job_u={u}_v={v}_result.txt\", \"r\")\n", + " tmp_logical_results = cudaq.AsyncSampleResult(str(file.read()))\n", + " logical_counts = tmp_logical_results.get()\n", + "\n", + " aim_results[\"physical\"].append({k: v for k, v in physical_counts.items()})\n", + " aim_results[\"logical\"].append({k: v for k, v in logical_counts.items()})\n", + "\n", + " print(\"\\nObtained all circuit samples!\")\n", + " return aim_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running a CUDA-Q noisy simulation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section, we will first explore the performance of the physical and logical circuits under the influence of a device noise model. This will help us predict experimental results, as well as understand the dominant error sources at play. Such a simulation can be achieved via CUDA-Q's density matrix simulator: " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "cudaq.set_target(\"density-matrix-cpu\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def get_device_noise(\n", + " depolar_prob_1q: float,\n", + " depolar_prob_2q: float,\n", + " *,\n", + " readout_error_prob: float | None = None,\n", + " custom_gates: list[str] | None = None,\n", + ") -> cudaq.mlir._mlir_libs._quakeDialects.cudaq_runtime.NoiseModel:\n", + " noise = cudaq.NoiseModel()\n", + " depolar_noise = cudaq.DepolarizationChannel(depolar_prob_1q)\n", + "\n", + " noisy_ops = [\"z\", \"s\", \"x\", \"h\", \"rx\", \"rz\"]\n", + " for op in noisy_ops:\n", + " noise.add_all_qubit_channel(op, depolar_noise)\n", + "\n", + " if custom_gates:\n", + " custom_depolar_channel = cudaq.DepolarizationChannel(depolar_prob_1q)\n", + " for op in custom_gates:\n", + " noise.add_all_qubit_channel(op, custom_depolar_channel)\n", + "\n", + " # Two qubit depolarization error\n", + " p_0 = 1 - depolar_prob_2q\n", + " p_1 = np.sqrt((1 - p_0**2) / 3)\n", + "\n", + " k0 = np.array(\n", + " [[p_0, 0.0, 0.0, 0.0], [0.0, p_0, 0.0, 0.0], [0.0, 0.0, p_0, 0.0], [0.0, 0.0, 0.0, p_0]],\n", + " dtype=np.complex128,\n", + " )\n", + " k1 = np.array(\n", + " [[0.0, 0.0, p_1, 0.0], [0.0, 0.0, 0.0, p_1], [p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0]],\n", + " dtype=np.complex128,\n", + " )\n", + " k2 = np.array(\n", + " [\n", + " [0.0, 0.0, -1j * p_1, 0.0],\n", + " [0.0, 0.0, 0.0, -1j * p_1],\n", + " [1j * p_1, 0.0, 0.0, 0.0],\n", + " [0.0, 1j * p_1, 0.0, 0.0],\n", + " ],\n", + " dtype=np.complex128,\n", + " )\n", + " k3 = np.array(\n", + " [[p_1, 0.0, 0.0, 0.0], [0.0, p_1, 0.0, 0.0], [0.0, 0.0, -p_1, 0.0], [0.0, 0.0, 0.0, -p_1]],\n", + " dtype=np.complex128,\n", + " )\n", + " kraus_channel = cudaq.KrausChannel([k0, k1, k2, k3])\n", + "\n", + " noise.add_all_qubit_channel(\"cz\", kraus_channel)\n", + " noise.add_all_qubit_channel(\"cx\", kraus_channel)\n", + "\n", + " if readout_error_prob is not None:\n", + " # Readout error modeled with a Bit flip channel on identity before measurement\n", + " bit_flip = cudaq.BitFlipChannel(readout_error_prob)\n", + " noise.add_all_qubit_channel(\"meas_id\", bit_flip)\n", + " return noise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, with our example noise model defined above, we can synchronously & noisily sample all of our AIM circuits by passing `noise_model=cudaq_noise_model` to the workflow containing function `submit_aim_circuits()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Example parameters that can model execution on hardware at the high, simulation, level:\n", + "# Take single-qubit gate depolarization rate: ~0.2% or better (fidelity ≥99.8%)\n", + "# Take two-qubit gate depolarization rate: ~1–2% (fidelity ~98–99%)\n", + "cudaq_noise_model = get_device_noise(0.002, 0.02, readout_error_prob=0.02)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running circuits associated with layer=('1:-9')\n", + "Running circuits associated with layer=('1:-1')\n", + "Running circuits associated with layer=('1:7')\n", + "Running circuits associated with layer=('5:-9')\n", + "Running circuits associated with layer=('5:-1')\n", + "Running circuits associated with layer=('5:7')\n", + "Running circuits associated with layer=('9:-9')\n", + "Running circuits associated with layer=('9:-1')\n", + "Running circuits associated with layer=('9:7')\n", + "\n", + "Completed all circuit sampling!\n" + ] + } + ], + "source": [ + "aim_sim_data = submit_aim_circuits(sim_circuit_dict, noise_model=cudaq_noise_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "data_ordering = []\n", + "for key in circuit_layers:\n", + " for basis in (\"z_basis\", \"x_basis\"):\n", + " data_ordering.append((key, basis))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "sim_physical_energies, sim_physical_uncertainties = aim_physical_energies(\n", + " data_ordering, aim_sim_data[\"physical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "sim_logical_energies, sim_logical_uncertainties = aim_logical_energies(\n", + " data_ordering, aim_sim_data[\"logical\"]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To analyze our simulated energy results in the above cells, we will compare them to the brute-force computed exact ground state energies for the AIM Hamiltonian. For simplicity, these are already stored in the dictionary `bf_energies` below:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "bf_energies = {\n", + " \"1:-9\": -18.251736027394713,\n", + " \"1:-1\": -2.265564437074638,\n", + " \"1:7\": -14.252231964940428,\n", + " \"5:-9\": -19.293350575766127,\n", + " \"5:-1\": -3.608495283014149,\n", + " \"5:7\": -15.305692796870582,\n", + " \"9:-9\": -20.39007993367173,\n", + " \"9:-1\": -5.260398644698076,\n", + " \"9:7\": -16.429650912487233,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the above metric, we can assess the performance of the logical circuits against the physical circuits by considering how far away the respective energies are from the brute-force expected energies. The cell below computes these energy deviations:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Layer=(1, -9) has brute-force energy of: -18.251736027394713\n", + "Physical circuit of layer=(1, -9) got an energy of: -15.929\n", + "Logical circuit of layer=(1, -9) got an energy of: -17.46016175277361\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, -1) has brute-force energy of: -2.265564437074638\n", + "Physical circuit of layer=(1, -1) got an energy of: -1.97\n", + "Logical circuit of layer=(1, -1) got an energy of: -2.176531948420889\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, 7) has brute-force energy of: -14.252231964940428\n", + "Physical circuit of layer=(1, 7) got an energy of: -12.268\n", + "Logical circuit of layer=(1, 7) got an energy of: -13.26321740664324\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -9) has brute-force energy of: -19.293350575766127\n", + "Physical circuit of layer=(5, -9) got an energy of: -16.8495\n", + "Logical circuit of layer=(5, -9) got an energy of: -18.46681284816878\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -1) has brute-force energy of: -3.608495283014149\n", + "Physical circuit of layer=(5, -1) got an energy of: -3.1965000000000003\n", + "Logical circuit of layer=(5, -1) got an energy of: -3.4531715120183297\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, 7) has brute-force energy of: -15.305692796870582\n", + "Physical circuit of layer=(5, 7) got an energy of: -13.336\n", + "Logical circuit of layer=(5, 7) got an energy of: -14.341784541550897\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -9) has brute-force energy of: -20.39007993367173\n", + "Physical circuit of layer=(9, -9) got an energy of: -17.802\n", + "Logical circuit of layer=(9, -9) got an energy of: -19.339249509416753\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -1) has brute-force energy of: -5.260398644698076\n", + "Physical circuit of layer=(9, -1) got an energy of: -4.8580000000000005\n", + "Logical circuit of layer=(9, -1) got an energy of: -5.1227150992242025\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, 7) has brute-force energy of: -16.429650912487233\n", + "Physical circuit of layer=(9, 7) got an energy of: -14.3635\n", + "Logical circuit of layer=(9, 7) got an energy of: -15.448422736181264\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n" + ] + } + ], + "source": [ + "sim_physical_energy_diff, sim_logical_energy_diff = _get_energy_diff(\n", + " bf_energies, sim_physical_energies, sim_logical_energies\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Both physical and logical circuits were subject to the same noise model, but the `[[4,2,2]]` provides additional information that can help overcome some errors. Visualizing the computed energy differences from the above the cell, our noisy simulation provides a preview of the benefits logical qubits can offer:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACIMAAAVkCAYAAABNJ02+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdd1RU1/c28GfovWNXsBCxKwhWBLEbe+81tqgxliTGxBLLV41Go9FYE3vXqLFrFDv2ggVsoGKnd6n3/cNXfg73DkxlAJ/PWq7l7Ln3nM30mbvvPjJBEAQQERERERERERERERERERERUZFgoO8EiIiIiIiIiIiIiIiIiIiIiEh7WAxCREREREREREREREREREREVISwGISIiIiIiIiIiIiIiIiIiIioCGExCBEREREREREREREREREREVERwmIQIiIiIiIiIiIiIiIiIiIioiKExSBERERERERERERERERERERERQiLQYiIiIiIiIiIiIiIiIiIiIiKEBaDEBERERERERERERERERERERUhLAYhIiIiIiIiIiIiIiIiIiIiKkJYDEJERERERERERERERERERERUhLAYhIiIiIiIiIiIiIiIiIiIiKgIYTEIERERERERERERERERERERURHCYhAiIiIiIiIiIiIiIiIiIiKiIoTFIERERERERERERERERERERERFCItBiIiIiIiIiIiIiIiIiIiIiIoQFoMQERERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqQlgMQkRERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqAhhMQgRERERERERERERERERERFREcJiECIiIiIios/IjBkzIJPJ5P7NmDFD32kRAD8/P9F9c/r0aX2nRVrA513B5+rqKrqPnj59qu+0CgQ+fgufsLAwmJuby91np06dUmpfvhdRQbd+/XrRY3TQoEH6Tkvn+FpMhUGTJk3kHqNfffWVvlMiIvrsGek7ASIiIso/oaGhePLkCZ4/f474+HgkJyfDxMQEdnZ2sLe3R/HixVGrVi3Y2NjoO1WiXCUmJuLevXsIDQ1FREQEkpKSIAgCLC0t4ezsjIoVK6Jq1aqwtrbWd6pESktMTERwcDCePXuGN2/eIDk5Genp6bCxsYG9vT3s7OzwxRdfwM3NDTKZTN/pEhV6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f+kxIyIi+tykpaVh0aJFcrE+ffqwEISISE9YDEJERERERdLEiRMxfvx4UTwyMhItW7bEixcv9JAVEREREZFuuLm5YdiwYXKxBQsWiJZPJCIi0pV169bh1atX2ZfNzMwwc+ZMPWZERPR5YzEIERERERVZv/32G3r16iWKP3/+HK1atUJ0dLQesiIiIiIi0o3Zs2fD0dEx+/Lz58+xfPlyPWZERESfi6SkJPzyyy9yse+//x7ly5fXU0ZERMRiECIiIiIqsmQyGTZs2AB/f3/Rdffv38eXX36J5ORkPWRGRERERKR9Dg4OmDt3rlxszpw5iIuL01NGRET0uVi0aBFev36dfdnV1RWTJ0/WY0ZERCQTBEHQdxJERERERLoUHx+P4cOHIzY2VnRdmzZtMG7cuPxPioiIiIhIB7KysrBgwQKkpKRkxzp06AAPDw89ZkVEREXdokWLEB8fn325RYsWaNSokR4zIiIiFoMQERERERERERERERERERERFSFcJoaIiIiIiIiIiIiIiIiIiIioCGExCBEREREREREREREREREREVERwmIQIiIiIiIiIiIiIiIiIiIioiKExSBERERERERERERERERERERERQiLQYiIiIiIiIiIiIiIiIiIiIiKECN9J0CkyPv373Hnzh0AgLOzM4yM+HAlIiIiIiIiIiIiIiIiIqKiJSMjAxEREQCAGjVqwMzMTOMxeXSdCqw7d+7A29tb32kQERERERERERERERERERHliytXrsDLy0vjcbhMDBEREREREREREREREREREVERws4gVGA5Oztn///KlSsoWbKkHrMhIiIiIiIiIiIiIiIiIiLSvtevX2evmvHpcXJNsBiECiwjo/97eJYsWRJlypTRYzZERERERERERERERERERES69elxck1wmRgiIiIiIiIiIiIiIiIiIiKiIoTFIERERERERERERERERERERERFCItBiIiIiIiIiIiIiIiIiIiIiIoQFoMQERERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqQlgMQkRERERERERERERERERERFSEsBiEiIiIiIiIiIiIiIiIiIiIqAgx0ncCRVlUVBQePnyI8PBwvH37FklJScjKyoKtrS2cnJxQq1YtVK5cGTKZTN+pAgAiIiIQGBiI0NBQJCYmwsLCAi4uLvD29kbZsmX1nR4REREREREREREREREREREpgcUgWnT79m0cOnQIFy5cwM2bN/H69es897Gzs0OvXr0watQo1KxZMx+yFDt79ixmz56NkydPIisrS3Kb+vXrY/LkyejYsWM+Z0dERERERERERERERERERESqkAmCIOg7iaKiX79+2LJli1r7GhgYYMyYMZg3bx7Mzc21nJm0jIwMTJgwAX/88YfS+/To0QN///03LC0tdZjZBy9evMjuSBIeHo4yZcrofE4iIiIiIiIiIiIiIiIiIqL8pItj4wYaj0BKMTExgaOjI6ysrCSXhcnKysLSpUvRpk0bJCYm6jyfrKws9O3bV2EhiK2trWR8586daNu2Ld6/f6/L9IiIiIiIiIiIiIiIiIiIiEhNLAbRgRIlSqBXr15YsWIFAgMDER0djdTUVERGRiIhIQGJiYm4cOECxo0bJ+oCcubMGYwYMULnOc6dOxc7d+6Ui9WoUQM7d+5EQkICYmNjkZycjMOHD6NRo0Zy2509exbffPONznMkIiIiIiIiIiIiIiIiIiIi1XGZGC3at28fnJ2d0bBhQ8nuH1KePHmC1q1b4/Hjx3Lxs2fPwsfHRxdpIjw8HG5ubkhNTc2OtWzZEnv37oWFhYVo+4yMDAwdOhQbN26Ui1+5cgVeXl46yRHgMjFERERERERERERERERERFT0cZmYAq5Tp05o1KiR0oUgAFCxYkUcPHgQJiYmcvFNmzZpO71ss2bNkisEKVmyJHbs2CFZCAIARkZGWLt2LapXry4X//nnn3WWIxEREREREREREREREREREamHxSAFQOXKldGhQwe52JkzZ3QyV0REBNatWycXmz17Nuzs7HLdz9jYGL///rtc7Pjx47h165Z2EyQiIiIiIiIiIiIiIiIiIiKNsBikgKhfv77c5VevXulkngMHDiAjIyP7sq2tLXr16qXUvv7+/qhUqZJcbO/evVrNj4iIiIiIiIiIiIiIiIiIiDTDYpACwtraWu5yVlaWTubZv3+/3OV27dopXB4mJ5lMhh49euQ6HhEREREREREREREREREREekXi0EKiJcvX8pdLlu2rE7mCQgIkLvcqFEjlfZv2LCh3OXbt28jKipK47yIiIiIiIiIiIiIiIiIiIhIO1gMUkAcPHhQ7rK/v7/W5wgPD0dCQoJcrF69eiqNkXM5GwAIDg7WKC8iIiIiIiIiIiIiIiIiIiLSHhaDFAArVqzAjRs3si8bGhpizJgxWp8nJCREFKtQoYJKYzg6OsLGxibPcYmIiIiIiIiIiIiIiIiIiEg/WAyiR4mJiZg6daqo8GP69OmoWrWq1ud7+PCh3GVra2vY2dmpPE7OJWwePHigSVpERERERERERERERERERESkRUb6TqAoEwQBq1atkoulpqYiKioKQUFB+O+//5CUlJR9nYGBAX766SdMnTpVJ/lER0fLXS5RooRa45QsWRL37t3LvhwTE6NRXkRERERERERERERERAWNIAh4//494uLikJqaiszMTGRmZuo7LSIi0jJDQ0MYGhrC1NQUtra2MDMzg0wm03daGmMxiA5lZmZi1KhReW5nZGSENm3a4Oeff4a3t7fO8klMTJS7bGFhodY45ubmuY5LRERERERERERERERUWGVkZCA2NhZxcXFIS0vTdzpERKRjGRkZAIDk5GTExMTAxMQEtra2sLOzg5FR4S2pKLyZFyGNGzdG165dUatWLZ3O82kXEgAwMzNTa5ycxSA5x1XWixcvcr3+9evXao1LRERERERERERERESkjvT0dDx79gzp6emi62QyGQwNDfWQFRER6VJmZiYEQci+nJaWhoiICMTGxsLFxQXGxsZ6zE59LAYpAE6fPo3Tp0/jxx9/xJ9//olOnTrpZJ6UlBS5yyYmJmqNY2pqmuu4yipbtqxa+xEREREREREREREREWlbZmYmwsPD5QpBLCwsYGtrC2traxaCEBEVYZmZmUhISEBcXBySk5MBfCgQDA8Ph4uLS6F8DzDQdwJFmZGREQRBkPuXkJCAJ0+eYNeuXejdu7dcQcbr16/RuXNnLFiwQCf55OwEom5rs9TU1FzHJSIiIiIiIiIiIiIiKkyysrIQHh6efQzE2NgYFStWhIuLC+zs7ArlQUAiIlKeoaEh7Ozs4OLigooVK2Z3A0lNTUV4eDiysrL0nKHq2Bkkn1lZWcHKygoVKlRAt27dEBISgt69e+PWrVvZ23z//fdwd3dH+/bttT73p96/f6/WODk7geQcV1nh4eG5Xv/69Wt4e3urNTYREREREREREREREZGyYmJiso9/GBoaoly5cmp3WCciosLNxMQE5cqVw9OnT5GZmYmUlBTExMTA0dFR36mphMUgeubu7o5Tp06hQYMGePDgQXZ87NixaNu2rVYrTXMWbXxsb6MqbRWDlClTRq39iIiIiIiIiIiIiIiItCkhISH7/2XKlGEhCBHRZ87ExARlypTBs2fPAACJiYmFrhiEy8QUAPb29vjjjz/kYs+ePcPhw4e1Ps+n3r59q9Y4r1+/znVcIiIiIiIiIiIiIiKiwiIjIyP7RFgTExNYWFjoOSMiIioILCwssosDk5OTkZmZqeeMVMNikAKiefPmKFWqlFwsICBAq3N88cUXcpfj4+MRGxur8jg5l3fJOS4REREREREREREREVFhkZSUlP1/a2trPWZCREQFzafvC4mJiXrMRHUsBikgZDIZateuLRcLCwvT6hzu7u6iWGhoqEpjREdHIz4+Ps9xiYiIiIiIiIiIiIiICoNPD+5ZWVnpMRMiIipoPn1fYDEIqc3W1lbucnJyslbHL1u2rOhDzOXLl1Ua49KlS6JYlSpVNMqLiIiIiIiIiIiIiIhIX9LT07P/b25ursdMiIiooPn0feHT94vCgMUgBUhUVJTcZWdnZ62OL5PJ0LRpU7nYhQsXVBoj5/Y1a9aEk5OTxrkRERERERERERERERHpQ1ZWFgDAwMAAMplMz9kQEVFBIpPJst8bPr5fFBYsBikgsrKycOPGDblYqVKltD5Px44d5S4fPHhQpQ4kO3fuzHU8IiIiIiIiIiIiIiKiwiQzMxPAh2IQIiKinAwNDQH83/tFYcF3tQLi4MGDiIyMlIs1b95c6/O0b98eRkZG2Zfj4uKwfft2pfY9deoUHj9+LBfr1KmTNtMjIiIiIiIiIiIiIiIiIiIiDbEYREtSU1PV3jciIgLjx4+Xizk4OMDPzy/X/VxdXbPb0shksjy3B4BixYph4MCBcrGff/4ZsbGxue6Xnp6Ob7/9Vi7WvHlzeHh45DknERERERERERERERERERER5R8Wg2jJ2LFjMXr0aDx//lyl/W7dugU/Pz+EhobKxWfOnAkTExNtppht2rRpcmO/fv0avXr1UrhcTEZGBoYNG4Y7d+7IxWfPnq2T/IiIiIiIiIiIiIiIiIiIiEh9RnlvQspIS0vDmjVrsGLFCjRq1AgdO3aEp6cnatasCUdHx+ztBEHA06dPcfXqVezYsQP79+8XrS3k7++PkSNH6izXcuXK4aeffsL06dOzY8eOHUP9+vUxbdo0tGnTBpaWlkhJScHZs2cxa9YsXLhwQW6MIUOGoF69ejrLkYiIiIiIiIiIiIiIiHRnxaqjWLH6qNbHHTW8NUaNaK31cYmISDUsBtEyQRBw/vx5nD9/PjtmaGgIGxsbZGVlISEhAVlZWQr3b9q0KQ4cOABDQ0Od5vnzzz/jzp072L17d3bszp076N69OwDA1tYW8fHxEARBtG/jxo2xbNkyneZHREREREREREREREREupOQmILXb2J0Mi4REekfi0HyQWZmJmJicn8ztbCwwC+//ILx48frvBAEAAwMDLB161YUK1YMf/75p+j6uLg4yf26du2K9evXw9zcXNcpEhERERERERERERERkY5YW5mjZAl7hddnZQl4+y5WLla8mB0MDGR5jktERPrHYhAtWbx4MVq3bo2jR4/iwoULePz4cZ77GBoaonbt2ujXrx/69esHJyenfMj0/xgbG2P58uXo3r07Zs+ejVOnTkl2AgEAb29vTJ48GZ07d87XHImIiIiIiIiIiIiIiEj7Ro3IfTmXyKh4VKk5Vi52+r9ZcHK00XVqRESkBSwG0RJ7e3v06tULvXr1AgDExMQgODgYz549w7t375CUlASZTAYbGxvY2tqiYsWKqFWrFiwsLNSe8+nTp1rJ3c/PD35+fnj79i0uXbqE0NBQJCUlwdzcHOXKlUO9evVQrlw5rcxFREREREREREREREREREREusViEB2xt7dHw4YN0bBhQ32norTixYujY8eO+k6DiIiIiIiIiIiIiIiIiIiINGCg7wSIiIiIiIiIiIiIiIiIiKhgWr9+PWQymdy/06dP6zutImfGjBmi21lbK0UUJXw8Ko+dQYiIiIiIiIiIiIiIiIiICjiZTKb0tgYGBrCxsYGdnR2KFSsGT09PeHt7o02bNihevLgOsySigoKdQYiIiIiIiIiIiIiIiIiIipCsrCzExsbi6dOnuHLlClasWIHBgwejXLly6Nu3L+7du6fvFIlIx1gMQkRERERERERERERERET0GUhLS8PWrVvh6emJ33//Xd/pEJEOcZkYIiIiIiIiIiIiIiIiIqJCyNraGgYG4vP/s7KykJCQoHC/1NRUjB8/HpGRkZg9e7YuUyQiPWFnECIiIiIiIiIiIiIiIiKiQigoKAixsbGif/Hx8UhPT0dISAiWLVsGNzc3yf3nzJmDrVu35nPWRJQfWAxCRERERERERERERERERFTEGBkZoXLlyhg9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nBxt9JQRkWJVq1ZFcHBw9mUzMzO8fPkSDg4OWpsjMzMToaGhePz4MV68eIH4+HgkJyfDwsICNjY2KFOmDGrVqoVSpUppbU5tyMrKwu3btxEaGorIyEhERUXByMgI1tbWKF26NKpUqYKKFSvCwED9PhLx8fG4cOECnj17hujoaBgYGMDe3h6VKlWCl5cXbGwK9+tGfrxP6OLYuJHGIxAREREREREREREREREREenBxYsX5QpBAKBr165aLQQBAENDQ7i5uRW6ojEDAwPUqVMHderU0dkcNjY2aNOmjc7GJ/VwmRgiIiIiIiIiIiIiIiIiIiqUVq5cKYoNHz5cD5kQFSwsBiEiIiIiIiIiIiIiIiIiokLn3bt32LVrl1ysevXqaNKkiZ4yIio4WAxCRERERERERERERERERESFzoIFC/D+/Xu52OjRo/WUDVHBwmIQIiIiIiIiIiIiIiIiIiIqVG7evIklS5bIxYoVK4YBAwboKSOigoXFIEREREREREREREREREREVCi8efMGy5YtQ4sWLZCeni533eTJk2FhYaGnzIgKFiN9J0BERERERERERERERJRfVqw6ihWrj2p93FHDW2PUiNZaH5dIV/J6LmRlCaKYX/OpMDCQ5TounwukbVu3bsXXX38NAEhNTRUtC/NR1apVs7cjIhaDEBERERERERERERHRZyQhMQWv38ToZFyiwkSd58Lbd7FKjUukTWlpaYiLi8t1GwsLC2zcuBGmpqb5lBVRwVegikHevn2Lhw8f4unTpwgPD0dCQgKSkpKQkZEBCwsLWFpaolixYnBxcUH58uXh7u4OQ0NDfadNRERERERERERERESFhLWVOUqWsFd4fVaWIDrgXbyYXZ7dEKytzLWRHlG+yeu5oMm4RPmpWLFi2LZtGzw9PfWdClGBotdikMePH+PIkSM4ffo0rl69ipcvX6q0v6mpKWrVqoV69eqhVatW8Pf3Z7UXEREREREREREREREpNGpE7ktYREbFo0rNsXKx0//NgpOjja5TI8pXeT0XiAoqQ0ND2Nvbo2rVqmjfvj2GDh0Ke3vtFzYRFXb5XgwSFhaGjRs3YuvWrXj8+HF2XBDE647l5f3797hy5QquXLmCP/74A2ZmZmjRogUGDBiA9u3bw9jYWJupExERERERERERERERERFRPho0aBAGDRqk7zSICp18KwbZ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+PWvf73OdQMGDIi//vWvOaGIefPmxTPPPLPF71KfvPjii3HUUUfFSy+9tFn3XX/99XHqqafm/LllMpm4+uqr890iAAAAAAAAAFADqY2Jufrqq2Pu3LkREVFUVBS33nprzliXLTFkyJB44IEH4u9//3skSRLXXHNNnH/++dGuXbuc64455pg45JBD4rnnnssee/HFF+Poo4+u0fOrvf766/H666+v99yrr766zrGbb755g7VOPvnkaNGiRV76ivhyZ5Ann3wynnzyyejatWuccMIJ8fWvfz169eoVnTp1iqKioux1n3zySYwaNSr+53/+J9577711al1++eWx33775a03AAAAAAAAAKDmUgmDVFVVxW233RaZTCYiIg444IDo2bNnXmpfcMEF8fe//z0ymUxUVFTEXXfdFRdffPE6151zzjnx3HPPZXsYM2ZMXp4f8eWYmiuvvHKTrz/33HM3eO7II4/MaxhkTZMmTcrZ2SOTycQ222wTJSUlsWDBgqiqqtrgvRdddFFcfvnlBekLAAAAAAAAANhyqYyJef3112P+/PnZ9RFHHJG32gcccEA0bdo0u97Q+JeDDjoo+3WSJDFz5sy89VBfJUkSixcvjvnz528wCNKuXbsYMWJEDB8+vJa7AwAAAAAAAAA2RSphkPfffz8ivgwfRER06tQpb7WLioqiY8eO2frVz1rbdtttF61bt86uy8vL89ZDXdarV6+48cYbY8iQIdG5c+dNuqekpCT69+8ft956a3z22Wdx3HHHFbhLAAAAAAAAAGBLpTImZu7cublNFOe3jUaNGm3wWWtq3bp1NgSyaNGivD3/iiuuiCuuuCJv9b5KdaBmU2277bZx7rnnZkfTzJ8/Pz788MOYNm1azJo1K5YuXRpVVVXRsmXLKCsri5133jn69OkTTZo0KUT7AAAAAAAAAECepRIGWdsXX3yR13prjnzJZDIbvK60tDT7dUlJSV57qC9at24dAwYMSLsNAAAAAAAAACBPUhkTUz3GpTqo8dxzz+Wt9vjx42Px4sXZdYcOHTZ47Zq7gTRv3jxvPQAAAAAAAAAApCWVMMhOO+2U/TpJknjmmWdi2rRpeal96623Zr/OZDI5z1pTVVVVzJ49O7v+qtAIAAAAAAAAAEB9kUoYpH///lFWVpZdr1y5Ms4555xIkqRGdUePHh233HJLZDKZbK2jjjpqvdd+/PHHUVFRERFfhka6dOlSo2cDAAAAAAAAANQFqYRBiouLY/DgwZEkSTa48dRTT8X3v//9bEBjc7388svx7W9/OydQUlRUFCeccMJ6r3/11Vdz1j169Nii5wIAAAAAAAAA1CWphEEiIq644opo3rx5REQ2EHL//ffHXnvtFQ888EBUVlZuUp3JkyfHj3/84zjkkENiwYIFERHZkMm55567wTExjz76aPbaiC93KwEAAAAAAAAAqO8ySU1ns9TADTfcEBdddFFkMpmI+FcwI5PJRFlZWRx66KHRu3fv6NKlS7Rq1SoaN24cixcvjnnz5sW7774bY8aMibFjx2bvXbNOly5d4u23344WLVqs89x58+ZF586do6KiIpIkidLS0pg9e/Z6ryU906dPj86dO0dExLRp06JTp04pdwQAAAAAAAAA+VWIn40X17hCDVx44YUxa9as+N3vfheZTCYnzDF//vx48MEH48EHH/zKGmsGSKrXnTt3jmeffXaD4Y6bb745VqxYkV0feuihgiAAAAAAAAAAQIOQahgkIuI3v/lNtGvXLn7+85/HihUr1gmFbEz1tdXX9+/fP+6+++7o0qXLBu8577zz4t/+7d+y62222WbLXwAAAAAAAAAAoA4pSruBiIiLLroo3nrrrTjiiCMi4stQR/XYl419qq9t3759DBs2LF5++eWvDIJERGy77bax3XbbZT/NmzevhbcEAAAAAAAAACi81HcGqbbbbrvFk08+GRMnTow///nPMWrUqHj77bejsrJyg/d06NAh+vXrFyeddFIcf/zxUVJSUosdAwAAAAAAAADUPXUmDFKtW7du8fvf/z4iIioqKuLDDz+MefPmRXl5eVRUVESrVq2irKwsOnfuHJ07d065WwAAAAAAAACAuqXOhUHWVFpaGl/72tfSbgMAAAAAAAAAoN4oSrsBAAAAAAAAAADyRxgEAAAAAAAAAKABEQYBAAAAAAAAAGhAhEEAAAAAAAAAABoQYRAAAAAAAAAAgAZEGAQAAAAAAAAAoAERBgEAAAAAAAAAaECEQQAAAAAAAAAAGhBhEAAAAAAAAACABkQYBAAAAAAAAACgAREGAQAAAAAAAABoQIRBAAAAAAAAAAAaEGEQAAAAAAAAAIAGRBgEAAAAAAAAAKABEQYBAAAAAAAAAGhAhEEAAAAAAAAAABoQYRAA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CwAAm6qianVB669Yvaqg9QEANpUwCDmmTZsWr732Wnz22WexfPny2GabbaJr167Rv3//aNeuXdrtAQAA9VTLksaxQ5PmGzxflSQxo2JZzrGOpc2iKJPZaF0AANhUpUWNYkUBAyFNGvmxCwBQN/hbSQElSRKffvppjB07NsaNGxdjx46NN998M1asWLHOdWl75JFH4ve//32MGTNmveeLiori0EMPjV/84hdx0EEH1XJ3AABAfbexcS5zKpZH+3/emXPs7YNPiHalTQvdGgAAW5Hdt9k23l40r3D1m7cqWG0AgM0hDJJnS5Ysid/97ncxbty4GDduXCxYsCDtlr7S0qVL44wzzogHHnjgK6+rqqqKkSNHxsiRI+PCCy+Ma6+9NoqL/c8HAAAAAID6o8+2bQsaBumzrR22AYC6wU/z82zu3Lnx29/+Nu02Nsny5cvjqKOOihdffHGdc5lMJlq2bBkLFy5c59wNN9wQs2bNir/97W+R2ciWzQAAAAAAUFcc2b5z3Db1o4LVP6J9p4LVBgDYHEVpN0B6LrzwwnWCIAcccEA89dRTsXTp0liwYEEsWrQo7rvvvth7771zrrvvvvvid7/7XW22CwAAAAAANXJshy7RobRZQWp3KG0Wgzt0KUhtAIDNJQxSYM2bN48DDzwwLr744vjb3/4Wv/71r9NuKSIixo0bF7feemvOsdNPPz2ef/75OOKII6Jp0y/ncrdo0SKGDBkSY8aMicMOOyzn+l/96lcxffr0WusZAAAAAABqonFRoxjatUdBag/t2iNKihoVpDYAwOYyJibPmjVrFuecc07st99+sd9++0X37t2jUaN//eXvjjvuSK+5NVx22WU56x49esQtt9yS0+uamjdvHvfdd1907949Zs6cGRERFRUV8etf/zr+9Kc/FbxfAAAAAADIh6HdesR9X0yM8Qvn5q1mn1Zt4+JuPfNWDwCgpuwMkmft27ePm266Kc4888zo0aPHBsMVaXrzzTdj5MiROceuu+66KCkp+cr7ysrK4r/+679yjt12220xZ86cvPcIAAAAAACFUFLUKO7c55BoWdw4L/VaFTeOO3sPjOIiP3IBAOoOfzPZCj300EM561133TUGDhy4Sfd+97vfjRYtWmTXq1atiscffzyv/QEAAAAAQCHt1bJ1PNlvUI0DIa2KG8c/+g2K7i3K8tQZAEB+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33+sTJ+emzJq06ZNXuvXZ3vssUfOeuHChdnwzKaaPHnyRusCANQVu2+zbWHrN29V0PoAADQslVWr49Q3n6txEKTaolUr4wfjR0VlgXfEAwCgYTFeu+FLJQzSvn37iIjIZDIREfHRRx/ltf5LL72Us873GJr6rHv37usce+211zarxpgxY3LW22yzTXTq1KlGfQEAFEqfbdtu/KIa1W9X0PoAADQswye+u8WjYTZk/MK5MXziu3mtCQBAw2a8dsOXShhk9913z1m/8soreas9a9asePXVV7NBk+Li4thvv/3yVr++a9u2bfTo0SPn2Ob++a99/cCBA7N/3gAAdc2R7TsXtP4R7YViAQDYNCurVsfwSYUJbQyf9K7dQQAA2GTGazd8qYRBdtttt9hpp50iIiJJkhg7dmx8/PHHeak9fPjwWLnyyy0WM5lM7LffftG0adO81G4ojj322Jz1/fffv8n3Llu2LB5//PGvrAcAUJcc26FLdChtVpDaHUqbxeAOXQpSGwCAhueRmVNiZsWygtSeWbEsHp45pSC1AQBoeIzXbvhSCYNERBx55JGRJEl2R4lLLrmkxjVfffXVGD58eGQymUiSJCIEFdbnuOOOy1l/8sknMWrUqE269957741FixZl18XFxfHtb387r/0BAORT46JGMbRrj41fuAWGdu0RJQVO0AMA0HA8NXtaQev/c/b0gtYHAKDhMF674UstDHLxxRdHo0ZffuM8SZJ47LHH4tprr93ieuPGjYvjjz8+Kisrs8datWoV55xzTo17rcsymUzO5/TTT9/oPb17945DDz0059hFF12U82e3PgsWLIjLLrss59jpp58e7du33+y+AQBq09BuPaJ3q/z+46ZPq7Zxcbeeea0JAEDD9saCuQWuP6eg9QEAaDiM1274UguD7LrrrnHaaadldwdJkiQuueSSuPDCC2Pp0qWbXKe8vDyuuOKKOOigg2LWrFnZWplMJi688MJo0aJFAd+i/vrNb36Ts3733Xfj7LPPjtWr1z9XdOnSpXHSSSfFzJkzs8dKS0vjP//zPwvaJwBAPpQUNYo79zkkWhY3zku9VsWN487eA6O4KLW/TgMAUA99tGRBYesvXVjQ+gAANBzGazd8xWk+/Oqrr44XXnghJk2alA1x/M///E/cddddcdJJJ8WAAQNiyZIl2ZEvEREjR46MefPmxWeffRYvvvhivPjii7Fs2bKckTOZTCb69u0bv/jFL1J5r9dffz1ef/319Z579dVX1zl28803b7DWySefXJBAS9++feOMM86I22+/PXvsjjvuiE8//TR++ctfxkEHHRRNmjSJJUuWxJNPPhm/+tWv4r333supcdlll0XnzoVNjAEA5MteLVvHk/0GxaAxT8aiVSu3uE6r4sbxj36DonuLsjx2BwDA1qCiav2/iJUvK1avKmh9AAAajurx2pdOeC3vtY3XrhtSDYO0bt06nnjiiejfv38sWLAgGwhZuHBh/PnPf44///nPOdcnSRJHHnnkOsciIhsESZIkOnToEA888EAUF6fzeo8//nhceeWVm3z9ueeeu8FzRx55ZMF2N/njH/8YH3/8cbzyyivZYy+//HIcccQRkclkomXLlrFw4fp/m+CEE05YZ2QMAEBdN6B1h3j1wMHxg/GjYvzCzd+iu3ertnFX74GCIAAAbJHSokaxooCBkCaNUv12LwAA9czQbj3ivi8mbtH3SjfEeO26I/V9rXfbbbd46aWXYo899sju7lEdCqn+rGnN42teX32uR48e8eqrr8YOO+yQxuvUK82aNYunnnoqjj/++HXOVYdy1ue8886Le+65J4psiw4A1EPdW5TFmAMHx1V79t3kbRA7lDaLq/bsG2MOHCwIAgDAFtt9m20LW795q4LWBwCgYTFeu2GrE/8tdO/ePcaNGxfnnHNOlJSU5IQ8NvaJ+DK40KhRo/jhD38Yo0ePjp122inlN6o/ttlmm/j73/8eI0aMiP3333+D12UymTj00EPj+eefjz/+8Y9RUlJSi10CAORXSVGjuGTXXjH1sO/H/ft+M07eYZd1rtm7RVmcteMecf++34yph30/Ltm1l60NAQCokT7bti1w/XYFrQ8AQMNTPV67poEQ47Xrnkyy9tYbKfviiy9i2LBh8fe//z0+++yzjV7fvn37OOaYY+JnP/tZdO3atRY6bNimTp0aY8aMialTp8aKFSuiefPm0bVr1+jfv3+0b9++VnuZPn16dO7cOSIipk2bFp06darV5wMAW485Fcuj/T/vzDk2+4hTo11p05Q6gq2P/x8CsDV44IuJMeT1ZwpW//59vxknbt+tYPVha+HvpgBsjT5YXG68dooK8bPxOjdEcvvtt48//OEP8Yc//CGmTp0ar7zySkyfPj3m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fp3JZOKAAw7YpPtWrVq10V0+zj333Pjd734XM2bMiCRJ4sYbbxQGYatmnAsAAAAAAADA1qUojYeWl5dHRESSJBERsccee6z3uuqdQ6qtWLFio7WLiori2GOPzdaeMGFCTJ06tSbtAgAAAAAAAADUG6mEQRYsWJCzbtWq1Xqva968eTbUERGxdOnSTaq/995756zfeuutzeoPAAAAAAAAAKC+SiUM0rhx45z1hka/tGjRImc9ffr0Tarfrl27nPVnn322Gd0BAAAAAAAAANRfqYRBWrZsmbNevHjxeq8rKyvLWU+ZMmWT6i9fvjwi/jVmZkP1AQAAAAAAAAAamlTCIDvuuGNE/CusUV5evt7r9txzz5zrXn311U2q/8EHH0REZEfMNG3adMubBQAAAAAAAACoR1IJg+yxxx45648++mi91/Xo0SP7dZIk8fjjj29S/YceeigbIImIaNu27RZ0CQAAAAAAAABQ/6QSBtlpp51yRsBU7+SxtgMPPDBKSkqy608++STuvffer6x90003xccff5xzrFevXlveLAAAAAAAAABAPZJKGCTiy6BHkiSRJEm8/vrrUVFRsc41rVu3jsMPPzySJIlMJhNJksSPfvSjeOSRR9Zb8+abb45///d/z9kVpEOHDjk7jAAAAAAAAAAANGTFaT340EMPjUcffTQiIioqKuLFF1+Mww47bJ3rLrroonjiiSciIiKTycTixYvj+OOPj7322isOPPDAaN26dcydOzeeeeaZmDRpUk5wJJPJxAUXXFCr7wUAAAAAAAAAkKbUwiDHH398XHTRRdn1vffeu94wyKGHHhonnnhiPPDAA5HJZLJBj/feey/ef//97HVJkkREZHcFyWQysfvuu8eFF15Y2BcBAAAAAAAAAKhDUhsTs8MOO8SAAQOyo2Luv//+WLx48XqvvfXWW6Nv3745gY/qUEj1p/pYxJfBkPbt28eIESOiWbNmtfZOAAAAAAAAAABpSy0MEhHx0ksvRVVVVVRVVcXixYujRYsW672uRYsW8fTTT8eZZ54ZEbFOAGTNEEiSJHHQQQfF2LFjY4899qi1dwEAAAAAAAAAqAtSGxOzuVq0aBG33nprXHTRRXHffffFyJEjY9q0aTF37txo3rx5dOzYMQ488MAYMmRIDBw4MO12AQAAWMOwie/EsInvbPB81f/tBLmmrz3/YBT9X/h/Qy7u1jMu7tazxv0BAAAAQENSb8Ig1fbee+/Ye++949e//nXarQAAALCJFlWujM9XLN2se2ZULNukugAAAABArnoXBgEAAKD+aVnSOHZo0rwgdQEAAACAXMIgAAAAFJxxLgAAAABQe4RBAAAAALYSN/3pqbjplqfyXvfcs4+Mc390ZN7rAgAAAFtGGAQAAABgK7F4yfKYMbO8IHUBAACAukMYBAAAAGAr0WKbptGxQ9kGz1dVJTFr9oKcY9u13zaKijIbrQsAAADUHcIgAAAAAFuJc3/01eNc5s5bFHv2vCDn2PPP/DratmlZ6NYAAACAPCpKuwEAAAAAAAAAAPJHGAQAAAAAAAAAoAERBgEAAAAAAAAAaECEQQAAAAAAAAAAGhBhEAAAAAAAAACABkQYBAAAAAAAAACgAREGAQAAAAAAAABoQIRBAAAAAAAAAAAaEGEQAAAAAAAAAIAGRBgEAAAAAAAAAKABEQYBAAAAAAAAAGhAitNuYGtRVVUVb7zxRrz77rsxe/bsSJIk2rRpE927d4++fftGSUlJ2i0CAAAAAAAAAA2AMEiBLVmyJK655pq4+eabY/bs2eu9plWrVnH66afHZZddFu3atauVvrp06RKfffZZjWrcfvvtcfrpp+enIQAAAAAAAAAgL1IbE/Pf//3fsWjRorQeXytef/312GuvveJXv/rVBoMgERELFy6M66+/PvbYY4946qmnarFDAAAAAAAAAKChSS0M8u///u+xww47xNlnnx3jx49Pq42Cee211+KQQw6JqVOnrnOutLQ0mjZtus7x+fPnx9FHHx2PPvpobbQIAAAAAAAAADRAqY6JWbZsWfzlL3+Jv/zlL7HvvvvGj3/84zjppJOiSZMmabZVY3PmzInjjjsulixZkj1WXFwc559/fpx77rmxyy67RCaTialTp8Zf/vKXGDZsWCxdujQiIlatWhUnn3xyvPHGG7HbbrvVWs//9V//FW3atNmse/r371+gbgAAAAAAAACALZVqGCQiIkmSiIgYN25cnHnmmXHxxRfHaaedFj/60Y9i9913T7m7LXPFFVfEjBkzsuvS0tJ48MEH49vf/nbOdTvttFP86le/im9961sxaNCgKC8vj4iIJUuWxMUXXxyPP/54rfV88sknR5cuXWrteQAAAAAAAABAYaQ2JqZaJpOJTCYTEV8GQ8rLy+P666+P7t27x6GHHhp///vfY/Xq1Sl3uemmTJkSt956a86xK6+8cp0gyJr69u0b//M//5Nz7IknnohXX321ID0CAAAAAAAAAA1XamGQESNGxGGHHRYRX4ZAqkMhmUwmkiSJJEni+eefjyFDhkTnzp3j8ssvj+nTp6fV7iYbPnx4rFy5Mrveeeed4z/+4z82et/3vve9OOCAA3KOXXXVVXnvDwAAAAAAAABo2FILgwwePDieeuqp+Pjjj+M//uM/ok2bNtkQyNqhkJkzZ8Z//dd/xc477xyDBw+Of/7zn2m1vVEPP/xwzvqss86K4uJNm8Zz9tln56yffvrpWLZsWb5aAwAAAAAAAAC2AqmPienWrVtcc801MX369LjzzjtjwIAB64RCqoMhq1evjsceeyyOOuqo7H1z585N+xWy3nzzzZg6dWrOsZNOOmmT7//Od76TExxZvnx5PP3003nrDwAAAAAAAABo+FIPg1Rr3LhxnHLKKfHyyy/H22+/Heecc05ss802G9wtZPLkyfGzn/0sOnfuHD/4wQ/ilVdeSfsVYtSoUTnr7bbbLnbZZZdNvr9Zs2bRq1evnGPPPvtsPloDAAAAAAAAALYSdSYMsqYePXrEjTfeGF988UXceOON8bWvfW2Du4VUVFTEPffcEwcddFD07NkzbrrppliyZEkqfX/wwQc56/3333+za/Tr1y9nPWHChBr1BAAAAAAAAABsXepkGKRa8+bN45xzzok333wzRo8eHaecckqUlpZGkiQREevsFvLee+/F+eefH9tvv32ce+658fbbb9dqvx9++GHOumvXrptdY+171q5ZSFOmTIknn3wy7rzzzrjrrrviH//4R7zxxhtRWVlZaz0AAAAAAAAAADVTnHYDm6pfv37Rr1+/uO666+K2226LW265JT799NOI+DIUEhHZUMiSJUvilltuiVtuuSX69u0bP/7xj2PIkCHRuHHjgvb48ccf56x33HHHza7RuXPnnPXnn38eS5cujebNm9eot43Zd999Y968ees917Rp0+jfv3+cddZZMWTIkCgurjf/swEAAAAAAACArU6d3hlkfVq3bh0/+clP4uOPP45//vOfMXjw4GjUqNF6R8gkSRKvvfZanHbaabH99tvHpZdeGlOnTi1Yb+Xl5TnrDh06bHaNjh07brRuIWwoCBIRsXz58hg1alScfPLJseuuu8Zzzz1X8H4AAAAAAAAAgC1T78IgazrssMNixIgR8dlnn8V3vvOd7PiYiHVHyMyfPz/+8Ic/RLdu3eK73/1ufPTRR3ntZfny5bF69eqcY82aNdvsOk2bNl3n2JIlS7a4r3ybMmVKfPOb34yrr7467VYAAAAAAAAAgPWo1/M+Kisr4/7774+bb745Ro8enQ1/VI+NiYicr5MkidWrV8cDDzwQI0aMiHPPPTd+//vfrzeAsbmWLl26zrEmTZpsdp319bK+2vnQqFGj+PrXvx6DBg2KPn36xJ577hllZWVRUlIS8+fPjw8//DCee+65+POf/xwzZszI3ldVVRWXXnpptGnTJs4666wtfv706dO/8vyazwQAAAAAAAAANk29DINMmjQp/vSnP8Xtt9+eHW+y5piY6nVERElJSVRWVkZE5JxbtWpV/PGPf4xRo0bFyJEjt2iky5qWL1++zrHGjRtvdp3S0tJNql1Tl1xySRx77LGxww47rPd8hw4dokOHDnHwwQfHZZddFr/85S/jmmuuydl95ZxzzokDDjggdt999y3qoXPnzlt0HwAAAAAAAACwYfVmTEySJPHII4/EkUceGbvttlv84Q9/iLlz52bDCWsGPYqLi+O73/1uvPzyyzF//vy4+eabo3fv3tmRMWuOkHn//ffjmGOOiaqqqhr1t75dQFauXLnZdSoqKjapdk39+Mc/3mAQZG2NGzeOq666Km644Yac46tWrYrLLrss770BAAAAAAAAAFuuzodBZsyYEb/61a9ip512iuOPPz5GjhwZVVVV64Q6kiSJjh07xpVXXhlTp06Ne+65JwYMGBDNmzePs88+O15//fV4+eWXY9CgQesESN5444249957a9TnNttss86xFStWbHad9e0Csr7aaTj//PPj+OOPzzk2YsSImDVr1hbVmzZt2ld+xo4dm4+2AQAAAAAAAGCrUmfHxDz77LNx0003xWOPPRarVq3KGU+y9iiYAw88MBtUaNSo0QZrDhgwIJ544ol47LHH4pRTToklS5Zkz913333x/e9/f4v7bdq0aTRq1ChWr16dPbZs2bLNrlOXwyAREZdffnmMGDEiu06SJJ5++un4wQ9+sNm1OnXqlM/WAAAAAAAAAICoYzuDlJeXx7Bhw2L33XePww8/PB566KGorKzM2QWkeieQpk2bxg9/+MN4++2344UXXogTTzzxK4Mgazr66KPjmmuuydZNkiTGjx9f4/633XbbnPXMmTM3u8aMGTM2WjdNPXv2jB133DHnmB08AAAAAAAAAKDuqBNhkDFjxsTpp58enTp1ip/+9KfxySefZEe/rD0Kplu3bjFs2LD4/PPP409/+lP06NFji5555plnRklJSXY9d+7cGr/HbrvtlrOeOnXqZteYNm1aznr77bevUzuDRER07949Zz179uyUOgEAAAAAAAAA1pbamJilS5fG3XffHTfddFO88847EfGvsS/VY2CqjxUVFcWgQYPi/PPPjyOPPDIvzy8uLo4dd9wxJk2aFBERK1eurHHNPfbYI1599dXsurr25pg8efI6Neua1q1b56zLy8tT6gQAAAAAAAAAWFtqYZCOHTvG0qVLswGQiH+FQKqPlZWVxZlnnhk//vGPY+edd857D/necWPtHTO2ZHzKmDFjctZ77rlnjXoqhAULFuSsW7VqlU4jAAAAAAAAAMA6UguDLFmyJDsCplp1CKRXr15x3nnnxcknnxxNmjQpaB9rhlFqauDAgTnrWbNmxaeffhq77LLLJt2/bNmyeOutt3KOHXrooflqL28++eSTnHX79u1T6gQAAAAAAAAAWFtqYZA1JUkSJSUl8Z3vfCfOO++8+PrXv14rzz3nnHNi5syZeavXu3fv6Ny5c0ybNi177L777ovLLrtsk+4fMWJEVFZWZtdNmjSJww8/PG/95cOnn366ThikZ8+eKXUDAAAAAAAAAKwt1TBIkiTRsWPH+NGPfhQ/+tGPYrvttqvV5//oRz/Ke83BgwfHf//3f2fXf/nLX+LSSy+N4uKN/1HfcsstOevDDjssmjdvnvcea+I3v/nNOseOPPLIFDoBAAAAAAAAANanKK0HH3jggXHvvffGZ599Fv/5n/9Z60GQQhk6dGiUlJRk15MnT45rr712o/fde++98dJLL+Ucu/TSSzd6X/WonerP6aef/pXX12Qszr333ht//etfc44dfPDBsdNOO21xTQAAAAAAAAAgv1ILg7zwwgsxZMiQTdoxoz7Zeeed46yzzso5dsUVV8QTTzyxwXvGjh0b5513Xs6xQYMGFWRczosvvhhHHXXUOsGTjbn++uvj1FNPzQmTZDKZuPrqq/PdIgAAAAAAAABQA6mFQRqyK6+8Mjp06JBdr1ixIgYPHhxD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/1nkvBtuuEGdO3c2jb388suW5ydJ69ev108//WQae/PNNxUZGVnovPLly2v8+PGmsY8//lgnTpywPEcAAAAAAAAAAAAAAOAZmkEs9t1335m2R48erYiICJfm3n777abtH3/8Uenp6ValZvftt9+aths2bKiePXu6NPf6669XbGysfTsnJ0dz5syxND8AAAAAAAAAAAAAAOA5mkEstH79eu3fv980dt1117k8/5prrjE1jpw7d04//vijZfmdN2vWLNP2sGHDXJ5bpkwZDRw4sNB4AAAAAAAAAAAAAADAf2gGsdDChQtN21WqVFGDBg1cnl+6dGm1atXKNPbLL79YkZrdyZMntXHjRtPYZZdd5laMTp06mbbzP28AAAAAAAAAAAAAAOA/NINYaMuWLabt9u3bux2jY8eOpu2tW7d6lVN+zuJ16NDBrRj5c0xJSdHBgwe9ygsAAAAAAAAAAAAAAFiDZhALbdu2zbRdr149t2Pkn5M/prfyx4uPj1eFChXciuHseVmdJwAAAAAAAAAAAAAA8AzNIBbasWOHabtWrVpux6hZs6Zp+9ChQ0pLS/MqrwtZkWP58uVVpkwZ09j27du9ygsAAAAAAAAAAAAAAFiDZhALnTlzxrSdmJjodoyqVasWGdcbp0+fNm17kqPkmKeVOQIAAAAAAAAAAAAAAM9F+DuBUHHu3Dnl5uaaxkqXLu12nFKlSjmMpaamepxXUbE8yVFyzNPKHJ256qqrFB0dbUms66+/Xg888ECh+7z11lv68ssvLTneeb///nuhjx8/flxXX321pce8//77dcMNNxS6z5NPPqmFCxdadszKlStr9uzZhe6zadMm3X777ZYdU5LGjx+vXr16FbrPbbfdpj///NOyYzZr1kwfffRRofv88ssveuqppyw7piR9+OGHat68eaH7XHXVVTpx4oRlx+zZs6deeOGFQvf54osv9Pbbb1t2TEmaNWuWEhISCt3n0ksvtfSYnCPMOEd4jnOEGecI73CO+B/OEd7hHGHGOcJznCPMQukckdioQaH7cI7wHOcIM84RnmMdYcY5wjucI/6Hc4R3OEeYcY7wHOcIM84RnuMcYcY5wnPFdY7IzMz0ar4zNINYxNmtXGJiYtyO46wZxMrbxOSP5UmOkmOenuR48ODBQh8/cuSI/d/r1693O35BXDnB7tu3TytWrLDsmK7I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ZIi++eYb+1ipUqX0/vvvu33cYMG6FEWhFksGajG4UaeeY23qG6F5vRPAC8OGDdPkyZPt23PnztXo0aPdipGSkqLPPvvM5f0XLVqkjIwMp4+1bdvW4R5jwe7o0aPq1auXGjZsqEGDBunyyy9Xq1atlJCQIOnvv8o5ceKEfvnlF33xxRf6/vvvTfPr16/v1vf3QseOHdP69evt2w0aNNAll1zi+ZOBT1CHxWPNmjVas2aN08d+//13h7HCFo833XSTYmNjXToudRgaqFPPTJkyxbQdHR2tG264wfLjUGehw5taMwxD8+bN07x581SvXj1de+21uuyyy9SqVSvVqFFDYWFh9v127typhQsX6t1339Wff/7pEGvcuHFq166dNU8qwLA2RVGow+LB2hTeoE49w9oU7rDi/wHHjh2rPXv2qH///urfv7/atWunhg0b2ussPT1d69at06xZs/Thhx8qOTnZPjcsLExTp05VgwYNrHlCAYh1KVxBLRYP1qbwBnXqGdamPmIAMMnJyTESExMNSYYko3Tp0kZ6erpbMf766y/7fG+/xo0b59Hxnn32WQ+/A763fv16p881KirKqFixohEREVHg9+Piiy829u/f7/Gx33vvvaD5PpVk1GHxGDdunGXfo7/++svl41KHoYE6dV9WVpZRqVIl0/Gvu+46nxyLOgsd3tTaokWLCqwZm81mxMbGGhUqVDDCwsIKra8HH3zQrZz9XWvuYm2KolCHxYO1KbxBnbqPtSncZcX/A7Zs2dLhfR8WFmaUK1fOKFOmTIH1FRkZaXz++edu5+zvOnMX61K4glosHqxN4Q3q1H2sTX2H28QA+YSHh5supZeenq4ffvjBjxkVbcuWLaZtm82mIUOG+Ckbz2VlZenUqVPKyclxeMxms+nWW2/VqlWrVLNmTY+PMWPGDPu/w8LCNHLkSI9jwXeow9BGHYYG6tR9c+bM0cmTJ01jo0aN8smxqLPQ4ataMwxDKSkpOn36tPLy8pzuU7lyZc2cOVNvvPGGW7H9XWtWYW2K86jD0EYdhgbq1H2sTeEuX9VZXl6ezp49q7S0NKePN23aVL///rtHfxns7zqzCutSXIhaDG3UYmigTt3H2tR3aAYBnLj33nsVHh5u3540aZIfsyla/vuNXXvttWrWrJl/knFB3bp1NXbsWLVr104REYXfraps2bIaPny4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sWTJEre+b4U1gyxdutStPEqVKmXMmjXLreN7+rqdPHnSuOSSS7x6La6++mrjzJkzbuVrGAU3GRw8eNC49NJL3crhiSeecPv43rDy3FetWjWHWJ999plpn0B8nVasWGHUqlWryOM6c8MNNxgREREeP5eLL77Yo2a3gpoAkpKSjP79+7t8/Pj4eOOXX35xiL9ly5ZCG5jyfzVo0MCj5q/z9u7dawwZMsSj7+GQIUOKfD8UZzPIRx99ZFStWtXt+FWqVDFmzJjh1vetoPfB0aNHja5duxZ5TGfNIPv27XNpbmFfjz76qFvPwxO5ubkO66O7777bo1g0g5j95z//ccj52muv9Tjeb7/95hCvXr16DmtDVzir5e3bt3ucGwAAAIJL8VwvFAAAAACKyZYtW3Ty5EmP56enp+vee+/VXXfdZUk+L774ou655x5lZma6POett97Sk08+ad/OysrSoEGD9N5777kcIycnR6NGjdKsWbPcyjcUPP/887r++ut16NAht+du3rxZvXv31hdffOF1HnPmzNHll1/uVh7nzp3TNddco/nz53t9/KKkpKRo/fr1XsWYNWuW2rdvr4MHD3qdz549e9ShQwf9/vvvbs178cUX9dRTT3l9fH9ISkpyGCtXrpxpO9Bep6VLl6p79+7av3+/R/OXL1/ucOsDd2zdulUdO3bUzz//7HGM81JSUtSjRw/98MMPLs9JSkrSwIED9ccff9jH/vjjD3Xp0kV//vmny3F27dql7t27O30PFGXFihVq3769Zs6c6fZcSZo5c6Y6duyoXbt2eTTfKtnZ2frHP/6h2267TUeOHHF7/rFjxzRs2DA9//zzXuVx9OhRderUSUuXLnV77t69e9W5c2eP5ha31atXO6yPunfv7p9kQsxNN93kcCur2bNn69SpUx7Fmzx5ssPYrbfeKpvN5nasHj16OIzNmzfPo7wAAAAQfILjZqEAAAAA4KHatWvrkksuUZMmTVSjRg3FxsaqVKlSSk1N1eHDh/XHH39owYIFDh/Ivf/++2revLnuvvtuj4/93XffmZo6qlSpogEDBqh169aqVKmSUlJStGHDBn311Vc6duyYae6ECRM0aNAgtW/fXvfcc4/pF/cXXXSRBgwYoIYNG6pcuXI6ffq0li1bpq+//trUdJKXl6e77rpL3bt3d+se877UoEEDnT17VtLfH8Dlf94tW7YsMkaFChUKfOz555/X2LFjHcYjIiLUo0cPXX755apevbpycnJ04MABzZ07VytWrJBhGPZ9s7KydNNNNyk8PFzDhg1z8ZmZ/fHHH3r88ceVlZUlSSpVqpR69eqlrl27KjExURERETpw4IB+/PFH/fLLL6a5OTk5+sc//qHNmzcX6+tWtmxZtWvXThdffLEaNmyo+Ph4xcbGKisrS2fOnNGWLVu0aNEibd261TRv586duu6667RkyRJFRHj2a4aUlBT169fP3jhjs9nUqVMnXX755apVq5bKli2rEydO6LffftO3336rjIwM0/wJEyZo4MCB6tChg2dP3g/27duntLQ0h/HKlSsXOs+fr9PRo0c1ZMgQ0/e/ffv2uuKKK1S7dm3FxsbqyJEj2rJli2bMmFFkvPDwcLVu3VpNmzbVRRddpIoVKyouLk6GYSg5OVk7d+7UihUr9NtvvykvL88+LzU1Vddff73Wr1+vmjVrevRcJGnkyJFat26dfbtNmzbq16+f6tatq7Jly+ro0aNauHChvv/+e9Px09PTdfPNN2vdunU6efKkBgwYYP/QNzIyUj169FDPnj1VrVo1RUREaO/evZo1a5ZWrlxpOv6ePXv0+OOP67///a/LOS9evFj9+vVzqIGwsDB16dJFnTp1Ut26dVWuXDmdO3dOBw8e1JIlS/TLL78oNzfXvv/27dt15ZVXas2aNYqLi3M4ToUKFezn46ysLIf3U82aNQs9F0t/n+8LkpeXp0GDBmnu3LkOj1WrVk29evXSJZdcokqVKikmJkanT5/W+vXrNW/ePFMjkmEYGjt2rCpVquRRE2deXp6GDRumPXv22Mfq1aun/v3766KLLlKlSpV06tQp/fXXX/rmm28c5t966606cOCAw3irVq3UvXt3NWrUSOXKlVNkZKRSUlJ05swZbdu2TRs3btSaNWtMr4mvLVmyxGGsbdu2xXb8UFa+fHkNHjzY1EialZWlzz77TPfff79bsdLT0zV9+nTTWHh4uEaNGuVRbrVr11blypV14sQJ+9jixYv1wAMPeBQPAAAAQcbPVyYBAAAAEKQC9TYx48aNM5o3b268+eabxo4dO1yak5GRYbz99ttGXFyc6ZjR0dHGwYMHXYrh7DLc528NEx4ebjz//PPGuXPnnM5NSkpyern/K664wvjmm2/s25UrVza++uqrAnPYuXOn0ahRI4c4L774osfPwerbxFxo3Lhxll4KftmyZUZ4eLhDzM6dOxd6SfTly5cbF110kcO8cuXKGfv27SvyuM7erzExMfZ/jxgxwjh8+HCh8ytUqOAQ46WXXnLpeXv6/f/rr7+McuXKGffee6+xePFiIysry6Xj/fbbb0bbtm0djvnqq6+6NN8wHG8DcOH3q0OHDsbatWsLzbt169YOMfr06ePy8b1h1bnv9ddfd4gTFRVlpKamOhwvUF6nC+urRYsWxvLlywucW9D5rmHDhsaQIUOMmTNnGmfPnnUpj7179xo33HCDQz79+/d3+bnkvz3Ihbfuqlu3rvHTTz8VOHfNmjVGlSpVHI7/+eefGwMHDrRvX3755YX+3Pn4448dzlFhYWHGgQMHXHoOR44ccZrHLbfcUuS5ateuXUafPn0c5rpyKwtn73lXbtdVmLFjxzrErFGjhvHVV18ZOTk5Bc7Lzs42PvroI6Ns2bIOtVPYeeO8/O+DC1+PihUrGlOnTi3wVhx5eXlGRkaGffvXX391eA716tUzli1b5tL34PTp08Znn31mdO3a1XjsscdcmuONa6+91pRrbGysR7cdMQxuE+PMzz//7JB3q1at3I4zZcoUhzj9+vXzKrfLL7/cFK969epexQMAAEDwCI7VNAAAAICAE6jNIK5+uOjMhg0bHBpCHn/8cZfmOvtA/vwHfTNnzixyflZWltGsWTPTXJvNZlSqVMmQZFStWtWl5pZdu3aZPuSUZDRq1Mjj5xAszSB5eXlG48aNnX5YnJmZWeT8U6dOOXz/JRkDBgwocq6z9+v5r+eff96l/H/99VfDZrOZ5jZo0MCluZ5+/zMzM4309HSXjpHfuXPnjL59+5qOWbNmTSM7O9ul+QV9vwYMGFBgE8GFTp065fCheFhYmEvNO96y4tx34sQJIzEx0SFOz549HfYNxNfpsssuM5KSkjzKyZtz9DPPPONwjty2bZtLc/M3AZz/uvjii40jR44UOf+3335zqNGEhAT7v2+44QaXvq/jx493yOGFF15w6Tn069fPNC88PNz47LPPXJprGH+fJ2+55RaH469cubLQeVY3gyxfvtwICwszxbv00kvdem/88ccfDj+vXfnAvKD3QZUqVYzNmze79TwefvhhU4zIyEhj586dbsU4Ly0tzaN57qhTp44p344dO3oci2YQR3l5eUbdunUdcl+3bp1bcZy9R7/++muvchszZoxDzMKaVAEAABA6wgQAAAAAFlmzZo1atWrl9dc//vEPj3Pw5rYaLVq00IsvvmgamzRpksfxJOmxxx7T4MGDi9wvMjLS4fYmhmHo5MmTkqRPP/1UDRs2LDJO/fr1dcstt5jGduzYod27d7uRdfD54YcftH37dtNYrVq1NH36dEVFRRU5v0KFCpo9e7ZKlSpVZFxXDRkyRE899ZRL+3bu3FlDhw41je3atcunr1tUVJTD83VVTEyMPvnkE5UuXdo+dv62N56qU6eOpk2bppiYmCL3rVChgsaNG2cay8vL008//eTx8YvLsWPHdNVVV+no0aMOj912220OY4H2OsXHx2v69OlOby3i6nxPjR07Vu3atbNvG4bh1Tk6Ojpa06dPV2JiYpH7durUSf369TONHT9+XJLUuHFjTZw40aXb7/zzn/9UuXLlTGMX3gasIKtXr3bY76WXXtKNN95Y5NzzbDabPvjgA1188cWm8QkTJrgcwwrjx4833XanWrVqmjt3rlvvjZYtWzrcXmfevHnasGGDRzlNnDhRTZo0cWvOhbeWkaTu3bsXemucwlxYo76QlZWlffv2mcZq167t02OWNDabzWH9JUkff/yxyzF2796tpUuXmsYqV66sq666yqvcnL3WO3bs8ComAAAAggPNIAAAAAAsk5aWpg0bNnj95c/GheHDh8tms9m3jx8/7vEvzMuVK6cnnnjC5f0HDBig6Ohoh/HevXurV69eLse59tprHcbWrVvn8vxg9M477ziM/fvf/1aZMmVcjlG3bl09+uijpjHDMPTuu++6nU9YWJheeeUVt+YMHz7cYWzt2rVuH7u4JCQkqG/fvqaxZcuWeRxv3Lhxbn0YfP311ys8PNw0Fsjfrz179mjChAlq0aKFfv/9d4fH27Vrp+uuu87y41r9Oj300EOqXr26t2l5xGazacSIEaYxb57LiBEj1Lx5c5f3v+aaa5yOjx071uUP82NiYjRgwADT2IYNG2QYRqHzXn75ZdN2gwYN9NBDD7l0zAtFRkY6/FyaN2+eMjMz3Y7liT///FNz5841jb344osODTKuuPHGGx2aJL/77ju34/To0cPhNXFFSkqKabtixYpuxygu+/btc3iP+auOQ9moUaMUFmb+dfvnn3/ucn1NnjzZ4XUaMWKE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qJKTk5WVleVQK+PGjfND5iVLIL1O7t5WJb+XX37ZaSNI9erVdffdd2vatGn6/fffdeDAAZ09e1YZGRkOz2XRokVe5RCMrL5yhr8E4vPw9j0tSQ8//LD+/PNP3XTTTYqJiSl035ycHC1btkz33XefateurX/961/FcrsOZz/XvGkAcvZ9s6K5xFlOwXgFk6ZNm6pDhw6msZ07d+rXX391ur+zW8TceuutluXj7PvqzToJAAAAwYMrgwAAAAAIGY899pjDX1b27dtXH3/8sapWrepynOL4C2lYx9lfznrz4ZqzuVb9dW6g+OGHH/Tzzz+bxhISEvTpp5/qiiuucDkOteJbofQ6HT9+XC+99JJpLCIiQq+++qruvfdelz+UD4TnUtycXdVh69atuuiii/yQjeecPY/rrrtOX375pR+ysVbjxo01bdo0vfvuu/rhhx+0aNEiLVu2TNu3b5dhGE7npKen69///rdmz56tH3/80aeNqM5uh+PuFa8u5OzqW6mpqR7HKyyGp7fL87fRo0dr5cqVprGPP/5YXbp0MY1t3LhR69atM401atTIYT9vOHutrbjtFwAAAAIfVwYBAAAAEBLS0tL0/fffm8Zat26t2bNnu9UIIgXmXy+jYM4+KDp79qzH8ZzNrVChgsfxAtEXX3xh2g4PD9f333/vVoOB5N2HiShaKL1Os2fPVnp6umns5Zdf1oMPPujW1RkC4bkUN2e3EgnG70OoPI/CxMfH68Ybb9RHH32krVu36tSpU5ozZ44effRRNW/e3OmcHTt2qH///srKyvJZXs4aTQ4ePOhxPKt/7hYWI1ibQa6//nqHq2/MmDHDoeFl0qRJDnOtvCqI5Py15ip4AAAAJQPNIAAAAABCwtKlSx2uCvL4448rMjLSrTgHDhxQdna2lanBxypXruwwtnXrVo/jbdmyxWHM2YeYweynn34ybfft21ft27d3O86ePXusSglOhNLrlP+5lC9fXvfdd5/bcQLhuRS3KlWqOIzt27fPD5l4p3LlyrLZbKaxYHwe7ihfvrz69++vCRMmaOPGjdq+fbvuuusuh1ufbN682WlTgFUqVqyouLg405g3zSDOfiZu27bN43jnOfvZHaw/f2NjYzV06FDTWFpamr766iv7dlZWlj777DPTPhEREbr55pstzeXQoUMOY3Xr1rX0GAAAAAhMNIMAAAAACAkHDhxwGPPkEtu///67FemgGLVu3dphbM2aNR7HW716tWnbZrM5PUawyszM1PHjx01jntRKbm6uVq1aZVVayCfUXqf85+gOHTq43awnlcxzdIcOHRzGli5d6odMvBMTE6OWLVuaxnbs2KFjx475KaPi16hRI/33v//V1KlTHR775ptvfHrsFi1amLa3b9/ucSxnPxM3btzocbzz/vzzT4exNm3aeB3XX0aPHu0wNnnyZPu/Z8+erVOnTpke79evnxITEy3NI3+jTnR0dNDdZgoAAACeoRkEAAAAQEg4efKkw5gnt/aYPn26FenABc5uDZGbm+t2nNatWysmJsY09t1333kU69ixY/r1119NY40bNw6p28Tk/+BJ8qxW5s6d63C5e1gn1F6n/OdoT57LyZMntWjRIqtSCho9evRwOF/OmTOn2K5iZdW5WpJ69+7tMDZz5kyPYgWzG2+8Ua1atTKNWdFMUZh27dqZtvft26fk5GSPYl122WUOY/PmzZNhGB7FO2/OnDkuHStYdO7cWY0bNzaNLVu2TDt37pQkffzxxw5znDWQeGvDhg2m7ZYtW3rUjAcAAIDgQzMIAAAAgJCQ/77skvMGkcLs3r1bs2bNsiolFCE2NtZhzJMPrSMjI9WjRw/T2NGjR/Xdd9+5HevDDz9UTk6OaeyKK65wO04gs6JWJOn111+3Ih0UINRep/zPx5Pn8u677yojI8OqlIJGXFycunfvbho7ePCgPv3002I5vlXnakm6+uqrHcb+/e9/O5x3S4L8V2ZISkry6fE6duzoMOZpA0qbNm2c3nbGm2atXbt2OVz5Jzw8XF27dvU4ZiC49dZbHcY+/vhjHT58WD/++KNpvEqVKurfv7+lx8/IyNCOHTtMY86uNgQAAIDQRDMIAAAAgJBQtWpVh7H8v2QvTF5enm699VaP/9oZ7itfvrzD2J49ezyKdc899ziMPfzww0pPT3c5xr59+zRhwgTTmM1m07333utRToEqPj5epUuXNo25UyuSNHHiRC1evNjCrJBfqL1O+c/Ry5cvV1pamsvzN2/erJdeesnqtILGU0895TD28MMPe3zOdEdsbKzD1UE8Pe5ll13m0NiyZ88e/fOf//Q0vaB15MgR03blypV9erxevXopLMz8q+D8V8JyVXR0tG677TaH8X/9618er6Meeughh7FrrrlG1apV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", + "text/plain": [ + "
                                                            " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 7), dpi=200)\n", + "\n", + "layer_labels = [(int(key.split(\":\")[0]), int(key.split(\":\")[1])) for key in bf_energies.keys()]\n", + "plot_labels = [str(item) for item in layer_labels]\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " sim_physical_energy_diff,\n", + " yerr=sim_physical_uncertainties.values(),\n", + " ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " color=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Physical\",\n", + ")\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " sim_logical_energy_diff,\n", + " yerr=sim_logical_uncertainties.values(),\n", + " color=(0, 177 / 255.0, 152 / 255.0),\n", + " ecolor=(0, 177 / 255.0, 152 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Logical\",\n", + ")\n", + "\n", + "ax.set_xlabel(\"Hamiltonian Parameters (U, V)\", fontsize=18)\n", + "ax.set_ylabel(\"Energy above true ground state (in eV)\", fontsize=18)\n", + "ax.set_title(\"CUDA-Q AIM Circuits Simulation (lower is better)\", fontsize=20)\n", + "ax.legend(loc=\"upper right\", fontsize=18.5)\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "\n", + "ax.axhline(y=0, color=\"black\", linestyle=\"--\", linewidth=2)\n", + "plt.ylim(\n", + " top=max(sim_physical_energy_diff) + max(sim_physical_uncertainties.values()) + 0.2, bottom=-0.2\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Running logical AIM on Infleqtion's hardware " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The entire workflow we've seen thus far can be seamlessly executed on real quantum hardware as well. CUDA-Q has integration with Infleqtion's gate-based neutral atom quantum computer, [Sqale](https://arxiv.org/html/2408.08288v2), allowing execution of CUDA-Q kernels on neutral-atom hardware via Infleqtion’s cross-platform Superstaq compiler API that performs low-level compilation and optimization under the hood. Indeed, the AIM research results seen in [our paper](https://arxiv.org/abs/2412.07670) were obtained via this complete end-to-end workflow.\n", + "\n", + "To do so, users can obtain a Superstaq API key from [superstaq.infleqtion.com](https://superstaq.infleqtion.com/) to gain access to Infleqtion's neutral-atom simulator, with [pre-registration](https://www.infleqtion.com/sqale-preregistration) open for access to Infleqtion’s neutral atom QPU." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a tutorial, let us reproduce the workflow we've run so far but on Infleqtion's QPU. We begin with the same GPU-enhanced VQE to generate the AIM circuits:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "\n", + "if cudaq.num_available_gpus() == 0:\n", + " cudaq.set_target(\"qpp-cpu\", option=\"fp64\")\n", + "else:\n", + " cudaq.set_target(\"nvidia\", option=\"fp64\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computed optimal angles=[1.5846845738799267, 1.5707961678256028] for U=1, V=-9\n", + "Computed optimal angles=[4.588033710930825, 4.712388365176642] for U=1, V=-1\n", + "Computed optimal angles=[-1.588651490745171, 1.5707962742876598] for U=1, V=7\n", + "Computed optimal angles=[1.64012940802256, 1.5707963354922125] for U=5, V=-9\n", + "Computed optimal angles=[2.1293956916868737, 1.5707963294715355] for U=5, V=-1\n", + "Computed optimal angles=[-1.6598458659836037, 1.570796331040382] for U=5, V=7\n", + "Computed optimal angles=[1.695151467539617, 1.5707960973500679] for U=9, V=-9\n", + "Computed optimal angles=[2.4149519241823376, 1.5707928509325972] for U=9, V=-1\n", + "Computed optimal angles=[-1.7301462945564499, 1.570796044872433] for U=9, V=7\n", + "\n", + "Finished building optimized circuits!\n" + ] + } + ], + "source": [ + "device_circuit_dict = generate_circuit_set(\n", + " ignore_meas_id=True\n", + ") # Setting `ignore_meas_id=True` drops the noisy-identity gate from earlier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now, we change backends! Before selecting an Infleqtion machine in CUDA-Q, we must first set our Superstaq API key, like so:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# os.environ['SUPERSTAQ_API_KEY'] = \"api_key\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we declare the type of execution we would like on Infleqtion's machine based on the keyword options specified:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "cudaq.reset_target()\n", + "\n", + "# Set the following to run on Infleqtion's Sqale QPU:\n", + "cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\")\n", + "\n", + "# Set the following to run an ideal dry-run on Infleqtion's Sqale QPU:\n", + "# cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\", method=\"dry-run\")\n", + "\n", + "# Set the following to run a device-realistic noisy simulation of Infleqtion's Sqale QPU:\n", + "# cudaq.set_target(\"infleqtion\", machine=\"cq_sqale_qpu\", method=\"noise-sim\")\n", + "\n", + "# Set the following to run a local, ideal emulation:\n", + "# cudaq.set_target(\"infleqtion\", emulate=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With that, we're all set! That simple change instructs our AIM circuits to execute on Infleqtion's QPU (or simulator). Due to the general queue wait time of running on hardware, we optionally recommend enabling the `run_async=True` flag to asynchronously sample the circuits. This will allow the cell to be executed and not wait synchronously until all the jobs are complete, allowing other classical code to be run in the meantime. When using `run_async`, an optional directory to store the job information can be specified with `folder_path` (this will be important to later retrieve the job results from the same directory)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Posting circuits associated with layer=('1:-9')\n", + "Posting circuits associated with layer=('1:-1')\n", + "Posting circuits associated with layer=('1:7')\n", + "Posting circuits associated with layer=('5:-9')\n", + "Posting circuits associated with layer=('5:-1')\n", + "Posting circuits associated with layer=('5:7')\n", + "Posting circuits associated with layer=('9:-9')\n", + "Posting circuits associated with layer=('9:-1')\n", + "Posting circuits associated with layer=('9:7')\n", + "\n", + "All circuits submitted for async sampling!\n" + ] + } + ], + "source": [ + "submit_aim_circuits(\n", + " device_circuit_dict, folder_path=\"hardware_aim_future_results\", shots_count=1000, run_async=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the above cell execution, all the circuits will post to execute on QPU. We can then return at a later time to retrieve the job results with the cell below:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Retrieving all circuits counts associated with layer=('1:-9')\n", + "Retrieving all circuits counts associated with layer=('1:-1')\n", + "Retrieving all circuits counts associated with layer=('1:7')\n", + "Retrieving all circuits counts associated with layer=('5:-9')\n", + "Retrieving all circuits counts associated with layer=('5:-1')\n", + "Retrieving all circuits counts associated with layer=('5:7')\n", + "Retrieving all circuits counts associated with layer=('9:-9')\n", + "Retrieving all circuits counts associated with layer=('9:-1')\n", + "Retrieving all circuits counts associated with layer=('9:7')\n", + "\n", + "Obtained all circuit samples!\n" + ] + } + ], + "source": [ + "aim_device_data = _get_async_results(circuit_layers, folder_path=\"hardware_aim_future_results\")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "physical_energies, physical_uncertainties = aim_physical_energies(\n", + " data_ordering, aim_device_data[\"physical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "logical_energies, logical_uncertainties = aim_logical_energies(\n", + " data_ordering, aim_device_data[\"logical\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Layer=(1, -9) has brute-force energy of: -18.251736027394713\n", + "Physical circuit of layer=(1, -9) got an energy of: -17.626499999999997\n", + "Logical circuit of layer=(1, -9) got an energy of: -17.69666562801761\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, -1) has brute-force energy of: -2.265564437074638\n", + "Physical circuit of layer=(1, -1) got an energy of: -2.1415\n", + "Logical circuit of layer=(1, -1) got an energy of: -2.2032104443266585\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(1, 7) has brute-force energy of: -14.252231964940428\n", + "Physical circuit of layer=(1, 7) got an energy of: -12.9955\n", + "Logical circuit of layer=(1, 7) got an energy of: -13.76919450035401\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -9) has brute-force energy of: -19.293350575766127\n", + "Physical circuit of layer=(5, -9) got an energy of: -18.331\n", + "Logical circuit of layer=(5, -9) got an energy of: -18.85730052910377\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, -1) has brute-force energy of: -3.608495283014149\n", + "Physical circuit of layer=(5, -1) got an energy of: -3.476\n", + "Logical circuit of layer=(5, -1) got an energy of: -3.5425689231532203\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(5, 7) has brute-force energy of: -15.305692796870582\n", + "Physical circuit of layer=(5, 7) got an energy of: -14.043500000000002\n", + "Logical circuit of layer=(5, 7) got an energy of: -14.795918428433312\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -9) has brute-force energy of: -20.39007993367173\n", + "Physical circuit of layer=(9, -9) got an energy of: -19.4715\n", + "Logical circuit of layer=(9, -9) got an energy of: -19.96524696701215\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, -1) has brute-force energy of: -5.260398644698076\n", + "Physical circuit of layer=(9, -1) got an energy of: -4.973\n", + "Logical circuit of layer=(9, -1) got an energy of: -5.207315773582224\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n", + "Layer=(9, 7) has brute-force energy of: -16.429650912487233\n", + "Physical circuit of layer=(9, 7) got an energy of: -15.182\n", + "Logical circuit of layer=(9, 7) got an energy of: -16.241375689575516\n", + "------------------------------------------------------------------------\n", + "Logical circuit achieved the lower energy!\n", + "------------------------------------------------------------------------ \n", + "\n" + ] + } + ], + "source": [ + "physical_energy_diff, logical_energy_diff = _get_energy_diff(\n", + " bf_energies, physical_energies, logical_energies\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before, we use the same metric of comparing against the true ground state energies; however, this time, both the physical and logical circuits are fully exposed to real hardware noise. Yet, we expect the use of logical qubits afforded to us by the `[[4,2,2]]` code to achieve energies closer to the true ground state than the bare physical circuits (up to a certain error threshold). And indeed they do! Visually, we can plot the energy deviations of both the physical and logical circuits from the cell above and observe that the logical circuits are able to outperform the physical circuits by obtaining much lower energies, demonstrating the power of error detection and the beginning possibilities of fault-tolerant quantum computation: " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACIMAAAVkCAYAAABNJ02+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdd3yN5/8/8NfJHrKQECKJGdTW2JGgqKqt9mxLKa0WbT9GUaVao0W1arQRmxpFbamYsYKYQURIgkRk73X//vBLvk7u+5ycmXMSr+fjcR6P5Dr3dV3vs+75vq9LJgiCACIiIiIiIiIiIiIiIiIiIiIqF0wMHQARERERERERERERERERERER6Q6TQYiIiIiIiIiIiIiIiIiIiIjKESaDEBEREREREREREREREREREZUjTAYhIiIiIiIiIiIiIiIiIiIiKkeYDEJERERERERERERERERERERUjjAZhIiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicoTJIERERERERERERERERERERETlCJNBiIiIiIiIiIiIiIiIiIiIiMoRJoMQERERERERERERERERERERlSNMBiEiIiIiIiIiIiIiIiIiIiIqR5gMQkRERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROcJkECIiIiIiIiIiIiIiIiIiIqJyhMkgREREREREREREREREREREROUIk0GIiIiIiIiIiIiIiIiIiIiIyhEmgxARERERERERERERERERERGVI0wGISIiIiJ6Q2VmZmLjxo348MMP0aRJE1StWhVWVlaQyWRyj759+8rVi4yMFC3j6elpkNdAys2bN0/0Wc2bN8/QYRGVS35+fqLfW1BQkKHDIiJ643h6eorWx5GRkYYOi5RYtGiR3OdVp04d5ObmlliPxyVUFryp+4hcF5Oxu3fvHszNzeW+o2fPnjV0WEQ6Z2boAIiISD0RERF4+PAhnjx5gpSUFGRkZMDCwgKOjo5wcnJClSpV0LRpU9jb2xs6VCKl0tLScPv2bURERODFixdIT0+HIAiwtbWFs7MzateujYYNG8LOzs7QoRKVS6tXr8a3336Lly9fGjoUIiIiIiJ6Q0VFRWHhwoVyZT/8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qBG++uorLF++HHPmzEF2drbcMmFhYejatSuCg4NRoUIFXb4MnZGa/qT451u4nLEngzRr1gzh4eFIS0srKvP399c6GaT4e+Th4QFBECSTgEg7165dE5X5+fmVfiBERERkFNQ9diIi0oWgoCCEhITIlY0bNw4mJpzVnoiISl+9evXg6+uLU6dOFZWtXbsWc+bMMdpzzkSq4t4VEZGB5eXloU+fPpKJIK6urjhz5gx++eUXjYYkk8lk6N27Ny5cuICAgABUrFhRFyGXOyYmJmjXrh1+//13PHr0CJ988onkSBXJycno3r27wtFbNLF7927RqCRVq1bFN998I1pWlRFEDE0QBAwZMgQPHz4UPVe5cmWcPn0as2fPLjER5HUWFhb4+uuvce7cOckpYW7duoUxY8ZoE7beREVF4cSJE6Ly5cuXi8oOHjyIFy9elEJUmrO1tcUHH3wgV3bw4EHExcVp3Obt27dFUwmNHj1a8jdI2ouPjxeVubm5GSASIiIiIiJ6U/38889y/5uZmeHDDz80UDRERETA+PHj5f5PTk7Gn3/+aaBoiHSHySBERAa2YMECXLhwQVTu5uaGs2fPom3btlr3IZPJMGrUKISGhqJDhw5at1eeOTs7448//sD+/fsls34TExPxwQcfIC8vTyf9SSV4DB8+HGPHjhVdDA8NDcXVq1d10q++/Pbbbzh+/Lio3NHRESdPntTqzsOWLVsiKCgITk5Ooud2796NzZs3a9y2vgQEBKCgoECurGXLlhg/fjzq1KkjV56bm4tNmzaVZngaGTt2rNz/eXl5Wr33xUcFkclkRpvcUx4kJyeLyqytrQ0QCRERERERvYkiIiLw77//ypX16NHDqKd/JSKi8m/AgAFwcHCQK1u5ciUEQTBQRES6wWQQIiIDevjwIX744QdRuampKXbv3o1atWrptD83NzcEBgZi6NChOm23PHr//fdx6NAhWFpaip4LCQnB6tWrte7j8ePH+O+//0Tlo0ePhru7Ozp16iR6zphHB4mPj8fMmTMln9uwYQMaNWqkdR8NGjTAxo0bJZ/78ssvkZqaqnUfuiIIAjZs2CAqHz16NABg1KhRoueM+fMt5OPjI0pk0TTu3NxcUSKJn58fatasqXF8pFxOTo6hQyAiIiIiojdYQECA6MLawIEDDRQNERHRK5aWlnj//fflyiIiInDmzBkD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8o8//lhvfSr6rezevVtvfapqx44dyMjIkCurWLGiaN7JgQMHiobsTUpKwj///KPvELVWfDqXxMREteLeuHEj8vLylLZZnt27dw+tWrXC0aNH1aqXnZ2NyZMn44cfftBTZKVv3bp1aNmyJU6ePKlR/ejoaIwYMQJfffWVaOotVT148ACtW7fGkSNH1KqXmZmJL774AlOmTNGo37Lk77//hre3N86ePatR/RcvXmD06NEYM2aM5BR5mlq1ahV69eqFZ8+eqVUvPDwcPj4+uHHjhs5iKY/i4uLw559/IjExUat2Hj9+jH79+uG7777TUWSvREZGwtvbGwcPHtSqnXPnzqFVq1YICQlRq15iYiKGDh2KZcuWadSvnZ0dvL295cqSk5Nx5coVldsIDAzU6LniTp48iYKCArmyTp06lTj9xMaNG3Hr1i2V+5GSnZ2NFStWwM/PD8+fP9eqrdcJgoAPP/wQ06dPR2ZmplZtHThwAE2aNJE8hlNFQkICvvjiCwwfPlyn68CyplGjRvjtt99E5cePH8fChQvVauvKlSuYPn26qLxnz5746quvVGrDWD7X06dPo3Hjxvjjjz9E+8fqePnyJR4/fqxxfZKXk5ODESNG4MMPP8TLly81auP06dN4++23FR4vayI9PR3du3fHzz//LFpvl2TDhg3o27evVt8zbR0+fFhU5ufnV/qBFBMdHY327dtjyZIlGv2eCwoKsG7dOrz99tu4e/euSnV8fHxEU+qdPn1arc+n+NTChfLy8nD69GmV25HaZ+jcubPK9YODg9GkSROsW7cO+fn5KtcrlJGRgfnz56NHjx5ISUlRu76U7OxsvP/++1i8eLFBv/PaevbsGXx8fODv76/x8W6h/Px8o3gvbt++jXbt2uHixYtq1UtJScGYMWPwzTffaNW/sWz/yxpjOHdTnK6OB4vr1KmTqOzQoUM67YOoNHGiayIiA3j27BmuX78uKvfz8yszczm+SWQyGfr27Yvly5fLlefn5+P06dPo37+/Wu0lJydLHnBIJX74+fnBw8ND7qReQUEBAgICMHPmTLX61Zfc3FzJExCenp5o37693vpt3749PD09ERkZKVd+/PhxFBQUlMp8oopIJfsMHToUFhYWcmUVKlRA//79sWnTJlH9IUOG6DVGbfXt2xdOTk5yFwj9/f0xePBgler7+/vL/V+/fn20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Lfrf1NQU4eHhWo+EoGtZWVmIiopCSkoKAMDW1hY1atTQy5335VVKSgqePn2KjIwMCIJQtD51dnbmMYOGEhMT8fLlS6SlpSE/P7/oONnZ2ZnbBy0Zw/a/LDLkuRtd2LJli2j6yn379qF3794GiohId5gMQkREREZp69atGDFihOgOnAoVKuC///5TONw5EZGhvKnJIERERERE6oqPj0etWrWQmppaVDZp0iSsWrXKgFEREdGbRhAENG3aFDdv3iwqa926NS5cuGDAqIh0h2lsREREZJSGDRuGJUuWiMrT0tLw3nvv4d69ewaIioiIiIiIiIi0VblyZXz55ZdyZX/99ZfCKUWIiIj04eDBg3KJIACwcOFCA0VDpHtMBiEiIiKjNW3aNNHJIeDVHUTdunVDdHS0AaIiIiIiIiIiIm1NmzYNVapUKfo/MzMTy5YtM2BERET0pime+NGtWzd06dLFQNEQ6R6TQYiIiMioLVu2DEOGDBGVP3nyBN27d0dCQoIBoiIiIiIiIiIibdjb2+Onn36SK1u5ciViYmIMFBEREb1J9uzZIzcdjLm5OVauXGnAiIh0j8kgREREZNRkMhkCAgLQuXNn0XN37txBz549kZGRYYDIiIiIiIiIiEgbo0aNQvv27Yv+z8zMxNy5cw0YERERvQny8vIwY8YMubKpU6fCy8vLQBER6YeZoQMgIiIiKomFhQX27t2L8ePHIykpSfT8unXrMGXKlNIPjIiIiIiIiIg0JpPJsG7dOuzYsaOozMzMDLm5uTA3NzdgZEREVJ49efIEQ4cOLfpfJpNh+vTpBoyISD9kgiAIhg6CiIiIiIiorBszZgwCAgLkyvz9/TFmzBjDBERERERERERERERvLE4TQ0RERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROSITBEEwdBBEREREREREREREREREREREpBscGYSIiIiIiIiIiIiIiIiIiIioHGEyCBEREREREREREREREREREVE5YmboAIiMSVZWFm7evAkAcHZ2hpkZfyJERERERERERERERERERKQ/eXl5ePHiBQCgcePGsLKy0rpNXukmes3NmzfRqlUrQ4dBRERERERERERERERERERvoEuXLsHb21vrdjhNDBEREREREREREREREREREVE5wpFBiF7j7Oxc9PelS5fg6upqwGiIiIiIiIiIiIiIiIiIiKi8e/bsWdEMFq9fs9YGk0GIXmNm9n8/CVdXV7i5uRkwGiIiIiIiIiIiIiIiIiIiepO8fs1aG5wmhoiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicoTJIERERERERERERERERERERETlCJNBiIiIiIiIiIiIiIiIiIiIiMoRJoMQERERERERERERERERERERlSNMBiEiIiIiIiIiIiIiIiIiIiIqR5gMQkRERERERERERERERERERFSOMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERERERERERERERERERFROcJkECIiIiIiIiIiIiIiIiIiIqJyhMkgREREREREREREREREREREROUIk0GIiIiIiIiIiIiIiIiIiIiIyhEmgxARERERERERERERERERERGVI0wGISIiIiIiIiIiIiIiIiIiIipHmAxCREREREREREREREREREREVI4wGYSIiIiIiIiIiIiIiIiIiIioHGEyCBEREREREREREREREREREVE5wmQQIiIiIiIiIiIiIiIiIiIionKEySBERERERERERERERERERERE5QiTQYiIiIiIiIiIiIiIiIiIiIjKETNDB0BE8goKCpCWlobU1FTk5uaioKAA+fn5hg6LiIh0yNTUFKamprC0tISDgwOsrKwgk8kMHRYREREREREREREREZUTTAYhMgKCICA1NRWpqalIS0tDQUGBoUMiIiI9ysvLAwBkZGQgMTERFhYWcHBwgKOjI8zMuHtGRERERERERERERETa4dUGIgMTBAHPnj1DcnKy5PMymQympqalHBUREelTfn4+BEEo+j8nJwcvXrxAUlISPDw8YG5ubsDoiIiIiIiIiIiIiIiorGMyCJEBSSWCmJqaws7ODnZ2drCxsYGJiYkBIyQiIn3Jz89HamoqkpOTkZGRAQDIzc1FVFQUPDw8mAhIREREREREREREREQaYzIIkYFIJYK4urrCwcEBMpnMgJEREVFpMDU1haOjIxwdHZGTk4MnT54gNzcX2dnZiIqKgru7OxMCiYiIiIiIiIiIiIhII7zCQGQghXeDF6pevTocHR2ZCEJE9AaysLCAu7t70WggmZmZSExMNHBURERERERERERERERUVjEZhMhAUlNTi/52dXWFvb29AaMhIiJDs7CwgJubW9H/aWlpBoyGiIiIiIiIiIiIiIjKMiaDEBlAQUFB0UU+U1NTODg4GDgiIiIyBjY2NrCwsAAAZGRkID8/38ARERERERERERERERFRWcRkECIDSEtLQ0FBAQDAzs6OU8MQEVEROzu7or85OggREREREREREREREWmCySBEBvD6FDGvX/QjIiKqUKFC0d9MBiEiIiIiIiIiIiIiIk0wGYTIAHJzc4v+trGxMWAkRERkbKytrYv+fn17QUREREREREREREREpComgxAZQOEUMTKZDCYm/BkSEdH/kclkRdOHFW4viIiIiIiIiIiIiIiI1MGr0EQGkJ+fDwAwNTU1cCRERGSMCrcPhdsLIiIiIiIiIiIiIiIidTAZhIiIiIiIiIiIiIiIiIiIiKgcYTIIERERERERERERERERERERUTnCZBAiIiIiIiIiIiIiIiIiIiKicsTM0AEQ0Ztj9ZojWL32iM7bnTj+XUz85F2dt0tEREREREREREREREREVBYxGYSISk1qWiaePU/US7tERERERERERERERERERPQKk0GIqNTYVbCGa1Unhc8XFAiIjUuSK6vi4ggTE1mJ7RIRERERERERERERERER0StMBiGiUjPxE+XTucS/TEGDJp/JlQWd+B6VK9nrOzQiIiIiIiIiIiIiIiIionLDxNABEBEREREREREREREREREREZHuMBmEiIiIiIiIiIiIiIiIiIiIqBxhMggRERmdDRs2QCaTyT2CgoIMHVa5M2/ePNH7HBkZaeiwjA6/j0REREREREREREREVNaYGToAIiIyXjKZTOVlTUxMYG9vD0dHR7i4uKBly5Zo1aoVevTogSpVqugxSiIiIiIiIiIiIiIiIiJ6HUcGISIinSgoKEBSUhIiIyNx6dIlrF69GmPHjoW7uzuGDx+O27dvGzpEIiIiIiIiIiIiIiIiojcCk0GIiEivcnJysHXrVrRs2RLLly83dDhERERERERERERERERE5R6niSEiIrXY2dnBxEScS1hQUIDU1FSF9bKzs/Hll18iPj4eCxYs0GeIRERERERERERERERERG80jgxCRERquXHjBpKSkkSPlJQU5ObmIiwsDKtWrULdunUl6y9cuBBbt24t5aiJiIiIiIiIiIiIiIiI3hxMBiEiIp0xMzODl5cXJk2ahLt372Lq1KmSy33zzTfIzs4u5eiouHnz5kEQBLmHp6enocMiIiIiIiIiIiIiIiIiLTEZhIiI9MLU1BTLli3D+PHjRc9FR0djw4YNpR8UERERERERERERERER0RuAySBERKRXy5YtQ8WKFUXl//77rwGiISIiIiIiIiIiIiIiIir/mAxCRAaXk5OHfQcuYdbcLaLn+n3wI6ZM+xP7DlxCTk6eAaIjbVWoUAEjR44UlZ86dQr5+fkGiIiIiIiIiIiIiIiIiIiofDMzdABE9ObKzc3DH+uOYvXao3jxIllymbB7MQi7F4Ot20/DxcUBE8Z1x4Rx3WFuztVXWeLn54cVK1bIlaWmpiIuLg6urq5atR0WFoarV6/i6dOnyMnJQeXKleHq6ooOHTrAyclJq7aNRUpKCm7evIkHDx4gOTkZqampMDc3h42NDSpVqgRPT0/UqVMHLi4uhg61yP3793Hv3j3Ex8cjPj4eeXl5sLe3h6urKxo2bIi6devC1NRUqz6ysrKK+nnx4gVSUlIgk8lQsWJFVKpUCY0bN0bdunV19IqIiIiIiIiIiIiIiIjKDl5NJSKDCLsXjUlT1uLGzccq14mLS8b8hTvxz/6L+G3FeNT3ctNjhKRL7u7ukuXx8fEaJYPk5ORgzZo1WLlyJcLDwyWXMTU1RYcOHTB//nx07NhRpXbff/99HDx4UK4sNDQUTZo0UTvG1w0dOhTbt2+XKztz5gw6dOigsE52djY2bNiATZs24fz58xAEocR+PDw80K5dO/Tt2xc9e/aEra2t0uXnzZuH7777Tq7s0aNH8PT0LLEvKZcuXcLq1atx4sQJREdHK13W3t4enTt3Rt++ffHBBx/AxsamxPYFQcDZs2dx8OBBBAUFISQkBHl5ykcMqlKlCt577z1Mnz4dDRs2VOv1EBERERERERERERERlVWcJoaISt2lyw/wXp8FaiWCvO7Gzcd4r88CXLr8QMeRkb7Y29tLlqempqrd1t27d9GiRQt8/vnnChNBACA/Px+nTp2Cr68vJk+ejIKCghLbnjhxoqhs7dq1asf4uvj4eOzdu1eurGHDhkoTQc6cOYNGjRphwoQJOHfunEqJIADw+PFjbNu2DYMHD8bkyZO1ilsdt27dwnvvvYfWrVtjw4YNJSaCAK9GO/nnn38wZswYVKtWDc+fP1e6/NatW+Hu7o6OHTvip59+wsWLF0tMBAGA2NhY+Pv7o1GjRhgzZgwyMjJUfl1ERERERERERERERERlFZNBiKhUhd2LxpCRy5CamqlVO6mpmRgychnu3Y/RUWSkT8nJ0tMAOTg4qNXOlStX0LZtW9y+fVuter/99hvGjRtX4nI9evSAh4eHXNmWLVuQman59zUgIADZ2dlyZePHj1e4/OHDh9GtWzeliS6qUDWBRFu7d+9GmzZtcPjwYY3bSE5ORlZWltJlLl26pFKSiSKCICAgIADt27dHbGysxu0QERERERERERERERGVBZwmhohKTW5uHiZNWat1Ikih1NRMfPr5Ghw5MAfm5lydGbNHjx5JlleuXFnlNqKiojB16lS5xBJPT0907twZbm5usLW1RVxcHM6ePYtLly6JkiH++usv9O7dG3369FHYh4mJCT755BPMnDmzqCwpKQk7duzAmDFjVI71devWrZP738rKCqNGjZJc9sWLFxgxYoRkYkT16tXRvn171K5dG/b29jA1NUVKSgpevnyJO3fu4MaNG0hMTNQoRk39/vvvmDx5smTiiampKby9vdGyZUs4OzvD2toaSUlJiImJwZUrVxAWFqbSaC2KmJiYoFatWmjUqBFq1aoFe3t72NraIj09HXFxcQgNDZUcPeT69esYPnw4jh07BhMT5sQSEREREREREREREVH5xKunRFRq/lh3VOOpYRS5cfMx/lh3FJ992lOn7ZJunTx5UlTm6OgIZ2dnldv48ssv8fLlSwBA48aNsXTpUnTr1k1y2eDgYIwYMQIRERFy5dOmTUPv3r0hk8kU9vPRRx9h7ty5yM3NLSpbu3atRskgp06dwr179+TKBg4cCCcnJ8nlly1bhoSEBLmyOnXq4LffflP4WgsJgoDLly/jwIED+Ouvv9SOVV2nT5/GlClTRIkgNjY2+OKLLzB16lRUqlRJYf24uDjs2bMH/v7+uHTpkkp9mpqaolevXujfvz/ee+89pe0X9vHbb79h8eLFcgk2gYGBWLlyJb744guV+iUiIiIiIiIiIiIiIipreEssEZWKnJw8/LHuqF7a/mPdUeTm5pW8IBlESkoKNm/eLCr38/NTa2SGwkSQ9957D8HBwUqTI9q2bYtTp06hYsWKcuUPHz5EUFCQ0n5cXFzQv39/ubLg4GDcunVL5VgLrV27VlT2ySefKFx+165dcv87Ozvj7NmzJSaCAIBMJkOrVq3w/fff4/Hjx/jmm2/UjldVSUlJGDRokGjUDXd3d1y5cgULFy4sMVHDxcUFEyZMwMWLFxEYGAhHR0ely/fr1w8RERHYu3cvRo4cWWL7hX189913OHv2rOi78PPPP4viJyIiIiIiIiIiIiIiKi+YDEJEpeLw0auIi0sueUENxMUl49CRq3ppm7Q3efJkpKSkiMp79eqldlteXl7YuXMnbG1tS1zWzc0N8+fPF5Xv3bu3xLoTJ04UlUkldiiTkJCA3bt3y5U1bNgQHTp0kFw+JycHDx8+lCsbO3YsqlSpola/AGBmZoYGDRqoXU9Vq1atQmxsrFxZxYoVcfbsWY367dy5c4nJIL6+vnB3d1e7bQBo2bKlaLqeqKgoHDhwQKP2iIiIiIiIiIiIiIiIjB2TQYioVPwXdFOv7Z88pd/2SX3Z2dn45JNPsGnTJtFznp6eGDlypNptrly5UqVEkEIjRoyAlZWVXFlISEiJ9Xx9fdGwYUO5ss2bN8tNNVKSgIAAZGdny5WNGzdO4fLx8fGistq1a6vcX2nJyMjAihUrROVr1qxBjRo1DBCRavr37486derIlUlNX0RERERERERERERERFQeMBmEiEpF6I3IMt0+laygoAAJCQm4fPkyFi1ahDp16kiOpiGTybBs2TKYm5ur1X79+vVVmi7ldQ4ODmjWrJlc2Y0bN1SqO2HCBLn/ExMTsXPnTpX7Lj4ShZWVFUaNGqVw+QoVKojKHj16pHJ/peXo0aOixJUmTZpg4MCBBopIdb6+vnL/X7hwwUCREBERERERERERERER6ReTQYioVDyMeKbf9h8+12v79H9q1qwJmUwmepiamqJSpUpo1aoVZs6ciejoaMn6CxcuRP/+/dXut2vXrhrF+9Zbb8n9n5aWhpycnBLrjRo1CjY2NnJlxRM8FDl79izu3r0rVzZw4EBUrFhRYR17e3u4urrKla1Zswbh4eEq9VlagoKCRGXFE2eMVdWqVeX+v3PnjoEiISIiIiIiIiIiIiIi0i8mgxBRqcjOztNr+1nZuXptn7Rna2uLtWvXYsaMGRrVb9GihUb1nJycRGXJyckl1nNwcMDQoUPlyqSSPKRIjYgyfvz4Euv17t1b7v/ExES8/fbbWLhwIZ49029ClapOnz4tKuvUqVOpx5GYmIiAgABMmTIFnTt3Rq1ateDs7AwrKyvJZCWZTIaFCxfKtZGeno7cXK47iIiIiIiIiIiIiIio/GEyCBGVCktLM722b2Wp3pQjVHpsbW0xbtw4hIaGYty4cRq3U7lyZY37Ly4jI0OluhMnThSVSSV6vC4xMRG7du2SK2vQoAF8fHxK7O+bb74RxZucnIzZs2ejevXqaNOmDWbOnInDhw8jKSmp5BegBxEREXL/Ozg4wMvLq9T6v3PnDvr374+qVatizJgxWLlyJU6ePIlHjx4hPj4e2dnZarVnqPeRiIiIiIiIiIiIiIhIn/R7dZaI6P+rXcsVt+880V/7tauWvBDphJ2dHUxMxLmEJiYmsLOzg6OjI1xcXNCiRQu0atUK77zzDhwcHLTut0KFClq3UUgQBJWWa9myJby9vXH58uWiso0bN+LHH3+EpaWlZJ1NmzYhMzNTrkyVUUGAV1PwbN26FYMGDRIlNQiCgIsXL+LixYtYtGgRZDIZGjduDD8/P3Tt2hXdunWDhYWFSv1oKjc3FykpKXJlVatWhUwm02u/hebPn4/vv/8eeXm6G2lI1cQgIiIiIiIiIiIiIiKisoTJIERUKpo28dRrMkjTJp56a5vk3bhxA56enoYOo9RMnDhRLhkkISEBu3btwvDhwyWXX7dundz/VlZWGDVqlMr99e7dG+fPn8enn36KixcvKlxOEATcuHEDN27cwMqVK+Hk5ISRI0fim2++QbVq1VTuTx0JCQmiMkdHR730Vdy0adPw888/q7SsmZkZrKysYGpqKleelZUlmWRDRERERERERERERERU3nCaGCIqFZ39Guu1/U6++m2f3lxDhgwRJTwomirm/PnzuHXrllzZwIEDUbFiRbX6bNGiBS5cuIDjx49jxIgRKiVcJCYmYuXKlahduzZWrVqlVn/G7siRI5KJINbW1hg+fDjWrFmDixcvIjo6Gnl5ecjNzUVqaiqSkpLkHv/73/8MED0REREREREREREREVHp48ggRFQqenRvARcXB8TFJeu8bRcXB7z3bgudt0sEvEo4GD16NFasWFFUdvr0ady7dw9eXl5yy0oliag6RYyUd955B++88w4KCgpw/fp1nD59GmfPnsXZs2cRGxsrWScrKwufffYZYmNj8f3332vctxSppJakpCSd9iFl2rRporL+/ftj3bp1aiXapKen6zIsIiIiIiIiIiIiIiIio8WRQYioVFhYmGHCuO56aXvCuO4wN2duG+nPhAkTRGXFEz+Sk5Oxc+dOubIGDRrAx8dH6/5NTEzQokULfPHFF9i1axeeP3+OsLAw/Pzzz2jTpo1knQULFiA4OFjrvl9nbm4Oe3t7ubLY2Fi9TrVy+/Zt3LlzR66sbdu22Llzp9ojrkhNc0NERERERERERERERFQeMRmEiErNhHHd0aSxh07bbNrEExPHv6vTNomKq1+/Pjp16iRXtnHjRmRnZxf9v2nTJmRmZsoto82oICXx8vLCl19+ieDgYJw7dw61a9cWLbN06VKd91u8n6SkJNy/f1/n/RQKDAwUlX3zzTcwNTVVuy19xklERERERERERERERGRMmAxCRKXG3NwMv60YDzs7a520Z29vg99WjIeZmfoXhYnUNXHiRLn/4+PjsXfv3qL/161bJ/e8lZUVRo0aVSqxtWvXDkeOHIGFhYVc+YkTJ3TeV8eOHUVlJ0+e1Hk/hZ4+fSoqa9eundrtZGdn4/Lly7oIiYiIiIiIiIiIiIiIyOgxGYSISlV9Lzds3zRN64QQe3sbbNs4FV71qusoMiLl+vbti6pVq8qVFU4Vc/HiRdy4cUPuuQEDBqg9jYk26tSpgw4dOsiVpaSkICkpSaf9FB8hBQD++OMPnfbxOqmpXRwdHdVuZ+fOnXIjuRAREREREREREREREZVnTAYholLXyrsuDu//VuMpY5o09sChfbPRyruujiMjUszc3BwfffSRXFlQUBAePHhQlBTyuk8++aS0Qivi4uIiKsvJydFpH927dxf1ExoaKjdKii7Z2dmJyp49e6ZWG3l5eViyZImuQiIiIiIiIiIiIiIiIjJ6TAYhIoPwqlcdRw7MwZxZg+Di4qBSHRcXB8yZNQhHDszhiCBkEOPHj4eJyf9tOgVBwLJly7Bjxw655Ro0aAAfH5/SDg937tyR+9/c3BzOzs467cPKygpTpkwRlY8fPx4xMTE67QsAqlcX/9YPHDigVhvz5s3DzZs3dRUSERERERERERERERGR0WMyCBEZjLm5GT77tCeuX/oZ6/+YhAH92oqWaVDfDcOHdsT6Pybh+qWf8dmnPWFubmaAaIkAd3d39OzZU65szZo1SE9PlysbP3682m0fPHgQQ4cOxeXLlzWKbefOnaKpatq0aQOZTKZRe8pMmjQJrq6ucmXx8fHw8fHBvXv31G7v1KlTCqez8fPzE5UtWLBA5cSTn3/+GT/88IPaMREREREREREREREREZVlTAYhIoMzNzdDn16tsOC7YaLn9uz8BsuXfoQ+vVoxCYSMwsSJE5U+b2VlhVGjRqndbm5uLrZv345WrVrh7bffxo8//oj79++XWC81NRXff/89hg8fLnruww8/VDsOVTg4OGDHjh0wM5P/TT569AgtW7bEt99+i4SEBKVtvHz5EuvXr0fbtm3h5+enMBmkefPmqF+/vlzZ8+fP0bFjR5w6dUph++Hh4RgwYACmTZsGQRAAQJTAQkREREREREREREREVF7xyioREZEaunfvjpo1a+LRo0eSzw8YMAAVK1bUqo+QkBCEhIRgxowZqFy5Mpo3bw4vLy84OTnBwcEBOTk5ePHiBW7duoUzZ84gKytL1Iavry9Gjx6tVRzK+Pj4YPny5fjss8+Kki0AID09HQsWLMCiRYvQunVrtGjRAs7OzrC2tkZycjJiYmJw9epV3LlzB3l5eSX2I5PJsGDBAgwcOFCuPCIiAn5+fmjSpAl8fX1RrVo1FBQU4Pnz5zh//jyuXr0qF5ePjw98fX2xYMEC3b0JRERERERERERERERERorJIERERGowMTHB+PHjMWPGDMnnP/nkE532Fx8fj+PHj+P48eMq13n77bexc+dOvUwR87pJkybB2dkZY8aMQWZmptxz+fn5OH/+PM6fP691PwMGDMBnn32GX3/9VfTcjRs3RNPjFPfWW29h7969kvWJiIiIiIiIiIiIiIjKI04TQ0REpKYPP/wQFhYWovIGDRrAx8dHozYrV64MJycnreIyMzPD5MmTcfLkSbi4uGjVlqoGDRqE8+fPo1OnThq34ezsDBsbG6XLLF++HDNmzFA7waVPnz44d+4cKlWqpHF8REREREREREREREREZQ2TQYiIiNTk4uKCXr16icrHjRuncZsdOnTAixcvcOrUKcycORO+vr4lJkgUcnd3x/Tp03Hr1i38+uuvqFChgsZxaKJZs2b477//8N9//2HIkCGoXLlyiXUqVqyIQYMGYceOHYiOji4xecXExAQ//PADzp07h/fffx+mpqYKlzUzM8M777yDgwcP4p9//oGDg4Par4mIiIiIiIiIiIiIiKgskwmCIBg6CCJjER0djRo1agAAoqKi4Obmppd+Hjx4gLy8PJiZmaFu3bp66aMsin+ZggZNPpMru3vjV1SuZG+giIgUa9iwIe7evVv0v5WVFWJiYlCxYkWd9ZGfn4+IiAiEh4cjOjoaKSkpyMjIgI2NDezt7eHm5oamTZuiWrVqOutTFwoKChAaGoqIiAjEx8fj5cuXMDMzg52dHapXr44GDRqgdu3aMDHRPCc1JSUF586dw+PHj5GQkAATExM4OTmhTp068Pb2hr192V5vcDtBRERERERERERERPTm0Md1ajOtWyAiInrDnD9/Xi4RBAAGDBig00QQADA1NUXdunXLXDKAiYkJmjdvjubNm+utD3t7e/To0UNv7RMREREREREREREREZVlnCaGiIhITX/88YeobPz48QaIhIiIiIiIiIiIiIiIiEiMySBERERqiIuLw99//y1X1qhRI3Ts2NFAERERERERERERERERERHJYzIIERGRGpYsWYKsrCy5skmTJhkoGiIiIiIiIiIiIiIiIiIxJoMQERGp6Nq1a1ixYoVcmYuLC0aNGmWgiIiIiIiIiIiIiIiIiIjEmAxCRERUgufPn2PVqlXo2rUrcnNz5Z773//+BxsbGwNFRkRERERERERERERERCRmZugAiOjNsXrNEaxee0Th8wUFgqjM751vYWIiU9ruxPHvYuIn72odH1GhrVu34tNPPwUAZGdni6aFKdSwYcOi5YiIiIiIiIiIiIiIiIiMBZNBiKjUpKZl4tnzRLXqxMYlqdQukS7l5OQgOTlZ6TI2NjbYuHEjLC0tSykqIiIiIiIiIiIiIiIiItUYVTJIbGws7t+/j8jISERFRSE1NRXp6enIy8uDjY0NbG1t4eLiAg8PD9SsWRP169eHqampocMmIhXZVbCGa1UnvbRLVJpcXFywbds2tGzZ0tChEBEREREREREREREREYkYNBkkPDwchw8fRlBQEC5fvoyYmBi16ltaWqJp06Zo3bo1unfvjs6dO/MObSIjNvETTudCZZOpqSmcnJzQsGFD9OrVCx999BGcnHSf2ERERERERERERERERESkCzJBEITS7PDRo0fYuHEjtm7divDw8KJyTcOQyWRFf1tZWaFr164YNWoUevXqBXNzc63jpTdLdHQ0atSoAQCIioqCm5ubXvp58OAB8vLyYGZmhrp16+qlDyIiKru4nSAiIiIiIiIiIiIienPo4zp1qY0MsnfvXqxYsQJnzpwBIE7+eD2pQ12FbWVmZuLAgQM4cOAAnJycMHbsWHz++edFbxoRERERERERERERERERERFReWeiz8bz8vLwxx9/oG7duhg4cCDOnDkDQRAgCAJkMpnco7Bc3QcAyXYSEhLw888/o3bt2hg6dChu376tz5dKREREREREREREREREREREZBT0MjKIIAjYtGkTvvvuO0RGRoqSNgqXKeTs7IymTZuicePG8PDwgJubG1xdXWFjYwNra2uYmZkhMzMTmZmZSEhIQHR0NGJiYhAWFobQ0FDcv38feXl5Re293kdeXh527tyJXbt2YejQoZg3bx5q1aqlj5dNREREREREREREREREREREZHA6TwY5f/48Jk+ejNDQULkkEOD/EkCcnZ3Ro0cPdOrUCZ06dYK7u7tWfWZnZyM4OBgnT57EiRMncOHCBVHf+fn52LJlC3bu3ImpU6di9uzZsLGx0apfIiIiIiIiIiIiIiIiIiIiImMjE14fokNLo0aNwpYtWwCgaCqYwuYdHBwwdOhQfPDBB/D19YWJif5mqHn27Bn27NmDrVu3Ijg4GIB8QopMJoObmxs2b94MHx8fvcVBJUtOTsb58+cRHh6OlJQUWFpaonr16nj77bdRt27dUo8nOjoaNWrUAABERUXBzc1NL/08ePAAeXl5MDMzM8jrJCIi48btBBERERERERERERHRm0Mf16l1OjLI5s2bi5IugFeJF61bt8bEiRMxaNAgWFlZ6bI7hVxdXTFp0iRMmjQJt2/fxtq1a7FhwwakpqYWJahER0fj5MmTek0GEQQB4eHhuHTpEi5fvoxLly7h2rVryMrKEi1X2jw9PfH48WOt2vD398eYMWM0qhsaGor58+fjwIEDyM3NlVzmrbfewvTp0zF69Gi57xUREREREREREREREREREREppvNpYoBXyQ3du3fHjBkz0LFjR310obK33noLK1aswPz587Fq1SqsXLkSL1680Ft/aWlpWLRoES5fvozLly8jKSlJb32VVYsWLcKcOXOQl5endLnbt29j7NixCAgIwM6dO+Hs7FxKERIREREREREREREREREREZVdOp+rxcfHBxcuXMDhw4cNngjyOgcHB8yaNQuRkZH4/vvvYWdnp5d+4uPj8cMPP+D48eNMBJHw1VdfYebMmZKJIHZ2dpLTBwUFBcHX1xcvX74sjRCJiIiIiIiIiIiIiIiIiIjKNJ2ODPLvv//ivffe02WTOmdtbY1Zs2ZhwoQJiIiIMHQ4RmPBggWoVKmSWnXatm2r1vJbtmzB0qVL5co8PT0xa9YsDBw4EI6OjsjJycGlS5fw448/4uDBg0XL3b17F8OGDcORI0c4ZQwREREREREREREREREREZESOk0GMfZEkNdVqlRJ7eQHTdja2qJFixbw9vaGt7c3wsPD8e233+q9X3UNHz4cnp6eems/PT0dU6dOlStr3rw5jh49Kjf9i4WFBTp06IB///0Xs2bNwg8//FD03LFjx7B7924MHDhQb3ESERERERERERERERERERGVdTpNBiHAxsYGEyZMKEr+aNiwIUxNTYue37Bhg+GCM6AVK1YgLi6u6H8bGxvs2rVLLhGkuIULFyIkJARHjx4tKpszZw769+8vOZ0MERERERERERERERERERERMRlE51xcXLB69WpDh2FU8vLy8PPPP8uVTZs2DbVq1Sqx7qpVq1CvXj0IggDg1XQx+/fvR9++ffURKhERERERERERERERERERUZnH4RVI706fPo2XL18W/W9iYoJx48apVLdOnTro1KmTXNnevXt1Gh8REREREREREREREREREVF5opdkkHfffRe7du1Cbm6uPpqnMmbfvn1y/7dt2xY1atRQuf6QIUPk/j948CDy8/N1EhsREREREREREREREREREVF5o5dkkGPHjmHw4MGoVq0apk6dips3b+qjGyoj/vvvP7n/27dvr1b9du3ayf3/8uVLXL9+XduwiIiIiIiIiIiIiIiIiIiIyiW9ThPz8uVLrFixAs2aNUOrVq2wdu1apKam6rNLMjL5+fm4f/++XFnr1q3VaqNhw4awt7eXK7t7967WsREREREREREREREREREREZVHZvpsXCaTQRAEAMCVK1cQEhKCqVOnYsCAAfjwww/h6+urz+5JTZGRkbh79y5evHgBmUyGSpUqoUqVKmjSpAnMzc01ajMiIgI5OTlyZbVq1VKrDZlMBk9PT9y4caOoLCwsTKN4iIiIiIiIiIiIiIiIiIiIyju9JoMAry7kA4AgCBAEARn/j737Do+qWt8+fu8kEwghjRKCVINUpQuIdNQTBBFFUNQjRQSponKO8hNRRFQ8VlSkSVVUEAtKVQQEpRcFwSC9JoSSSnqy3z94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LY+JadCggWn7/PnzdqThdevXr9cVV1yhF154ocBGEOnPu2NMmTJFzZo106JFi0oxQyklJUUjRozQkCFDCmwEkf68s8nPP/+snj176pFHHlFWVpbHc77yyivq2LGj5s6dW2AjiCRt375dd999t/r06aOEhASP5wMAAAAAAAAAAAAAoCyxpRmkU6dOkuS828OBAwfsSMOr1qxZo969e+vw4cMur4WHh6t8+fIu+8+ePavBgwfru+++K40UdfHiRQ0cOFBz5sxxec3hcCgqKirfcW+//bZuv/12GYbh9pz/93//p6eeeirfZpJKlSopKMj1W3LZsmXq2bOnzpw54/Z8AAAAAAAAAAAAAACUNbY0g9StW1ddu3Z1NhMsXrzYjjS8JiEhQUOHDlVycrJzX0hIiB599FHt3r1bqampSklJUVxcnJ599llFREQ4j8vKytJtt92mPXv2eD3Phx9+WL/++qtp39VXX61FixYpJSVF58+fV2JiombPnq2WLVuajps9e7ZeeeUVt+abNWuW/vWvf5n2NWzYUB9++KHOnTunxMREXbx4Ub/99psGDRpkOm7nzp3661//6lEDCgAAAAAAAAAAAAAAZYktzSDSn3eIkCTDMLRp0yYtX77crlQsN2HCBJ04ccK5HR4ernnz5unNN9/UZZddpqCgIDkcDjVo0EAvvPCCfvnlF1WpUsV5fHJysh577DGv5rhu3Tp99NFHpn0jR47UsmXL1K9fP+edSypVqqQRI0Zo9erV6tu3r+n4F154QUePHi3WfCkpKS7n1K5dO61du1Z/+9vfVLlyZUlSWFiYrr76ai1YsEBPPfWU6fiffvpJ33zzjTunCQAAAAAAAAAAAABAmWNbM8jQoUN1/fXXO7fvv/9+nT9/3q50LBMXF+fSZPH888+bzjWvLl266N133zXt++GHH/T77797JUdJevrpp03brVq10rRp0xQcHJzv8REREZo9e7ZiYmKc+9LT0zVx4sRizTdlyhSdOnXKuV2hQgV9/fXXqlGjRoFjXnrpJfXr18+0b/z48crJySnWnAAAAAAAAAAAAAAAlEW2NYNI0syZM3XFFVfIMAzt3r1bAwYM0LFjx+xMqcTefPNNZWRkOLcbNWqkv//970WOu/XWW3X11Veb9r322muW5ydJmzZt0s8//2za99Zbbyk0NLTQcVWqVNGLL75o2vfxxx8rISGh0HFZWVmaPHmyad/f//53NW7cuMhc33nnHTkcDuf2zp079d133xU5DgAAAAAAAAAAAACAssrWZpDIyEgtX75cV199tQzD0Nq1a9W6dWtNnDjR9JgVf/Ltt9+atkeNGqWQkJBijb333ntN2z/99JNSU1OtSs1p3rx5pu2mTZuqT58+xRp7yy23qFKlSs7trKwsLViwoNAxv/76q86cOePcDgoK0ujRo4s1X5MmTdS7d2/Tvrz5AwAAAAAAAAAAAACA/ylel4IX3HPPPc5/N2jQQOvXr1d6errOnTunCRMmaMKECYqNjVXTpk1VtWrVIu9aURCHw6Hp06dblXahNm3apMOHD5v23XzzzcUef+ONN+qee+5RVlaWJOnixYv66aefNGTIECvT1Pz5803bI0aMKPbYiIgIDR48WF988YUp3t13313s+a688krVq1ev2HPecsstWrJkiXP7hx9+UHZ2doGPtAEAAAAAAAAAAAAAoCyzrRnk008/NT3+I5fD4ZBhGJKkffv2af/+/R7PYRhGqTaDXNqwIEk1a9ZUkyZNij2+QoUKatu2rdavX+/c98svv1jaDHL69Glt3brVtO+qq65yK0a3bt1MzSB5zzuvvK97Mt+lzpw5o82bN6tDhw5uxQEAAAAAAAAAAAAAoCyw9TEx0p8NG7nNH7kcDofzI/d1dz/ssGPHDtN2586d3Y7RtWtX0/bOnTtLlFNe+cXr0qWLWzHy5piUlKSjR4/me2x2drb27NlTovlatGihyMhI0z6rPy8AAAAAAAAAAAAAAAQK25tBcps+inrd3Q877Nq1y7TduHFjt2PkHZM3ZknljRcVFaWqVau6FSO/8yoozwMHDigjI6PI8YVxOBxq2LBhseYDAAAAAAAAAAAAAKCss+0xMfXr17etacNb8t4Bo379+m7HqFevnmn72LFjSklJUURERIlyy2VFjlWqVFFERIRSUlKc+3bv3q1rr722yPk8nbNevXqmx9vs3r3b7RgAAAAAAAAAAAAAAJQFtjWDxMXF2TW115w7d860HRMT43aMWrVq5RvXqmaQs2fPmrY9yVH6M899+/Y5t/Oee0HzhYaGun0nktz5LlXQfFb6y1/+ovDwcEti3XLLLXrkkUcKPWbKlCn68ssvLZkv1++//17o66dOndINN9xg6ZwPP/ywbr311kKPefrpp7Vk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+v3zn/+0MGN4E7Xn36i9wEVt2ovaClzUVulhzYlLUXv+jdoLXNSmvaitwGVVbaWlpWnJkiX69NNP9frrr+vVV1/VRx99pFWrVikzM9PirP0Ta05citrzb9Re4KI27VWma8sA4DMee+wxQ5IhyYiKijJOnz7t1vgzZ84YixYtMiZOnGgMHjzYiImJccbL/fjkk0+8k7wfyMzMND788EOjZcuWLp+XSz9atGhhTJ061cjKynJ7jilTpjjjhIWFGXv27PHCmcBq1J535eTkGHv27DFmzpxpPPLII8aVV15plCtXzuVzVBLUXmCiNs0++eSTQv//5cnHc889V+ic1FZg8qS2GjRoUOLvN3+qt5JgzYmCUHvexZoTnqI2zVhzwiol/Xlu/fr1xg033JDvtTz3IzIy0hg7dqxx7NgxL52F72LNiYJQe97FmhOeojbNWHOWHppBAB+xc+dOIzQ01HkhevHFF4s1btasWcatt95qxMbG+vUvG7xt586dRvPmzd36H0eHDh2MgwcPujVPenq66ZdC119/vXdOCJah9rwjKSnJeOqpp4y+ffsalStXLtbnqCSovcBDbbryxg9JEydOLHROaivweFpbgfxHLyux5kRBqD3vYM2JkqI2XbHmhBU8rS3D+PP74d577zUcDkexv8cqVqxofPHFF148I9/CmhMFofa8gzUnSoradMWas/TQDAL4iJtuusl5AYqMjDTOnz9frHE9e/YMiF82eNOKFSsKXKQFBQUZVapUMYKDg/N9vXbt2sbevXvdmu/tt982xVixYoWXzgxWoPa84+DBg24v1kqK2gss1KYrb/yQtG7duiLnpbYCi6e1Fch/9LIKa04UhtrzDtacKClq0xVrTljB09pKSUkp9Ge6SpUqGRUqVCjw9XfffdfLZ2Y/1pwoDLXnHaw5UVLUpivWnKXHYRiGIQC22rRpkzp06KDccnziiSf02muvFWtsr169tHz58mLP9cknn2jkyJGepOmXjh8/rvbt2+vkyZOm/cOGDdPDDz+sq666SiEhIcrJydHGjRs1bdo0TZ8+XTk5Oc5jW7RoobVr1yoiIqJYc6ampqpBgwY6ffq0pD+/RkuXLrXupGAZas974uLi1KhRI7fGlHRJQu0FDmozf7t37y7R9/Q///lPnT9/3rndsmVLbdu2rchx1FbgKEltNWzYUIcOHXJuv/jii6pWrZpb8/fu3VuXX365W2P8BWtOFIba8x7WnCgJajN/rDlRUiWprTvuuEMzZ8407WvcuLGeffZZ/eUvf1HVqlUlSSdOnNA333yjF1980bT+CgoK0k8//aRrrrnGorPxLaw5URhqz3tYc6IkqM38seYsRXZ0oAAwu/HGG51daMHBwcbhw4eLPfbSrsCgoCCjefPmxp133mn8+9//NlavXu3SGeer7zzxlkGDBpnO3+FwGNOmTSt0zI8//ujy3LUJEya4Ne9TTz1lGv/rr7+W5DTgJdSe9+TtmI+IiDC6d+9uPPbYY8Z//vMfY+LEiZZ3zBsGtRcoqE3rbdy40eXc//WvfxV7PLUVGEpSW3nfAe3uLaYDHWtOFIba8x7WnCgJatN6rDlhGJ7X1pw5c1y+f6677jojJSWlwDGnT5822rdvbxrTtGlTIzMz06rT8SmsOVEYas97WHOiJKhN67HmdA/NIIDNDhw4YAQFBTkvOoMGDXJr/Isvvmi89tprxtKlS43ExESX18vqH70MwzA2bNjgcv5PPPFEscZ+8MEHpnGVKlUyTp06Vey59+/fb3qG27Bhwzw9DXgJteddJ0+eNMaMGWNMnz7d2Lp1q5GVlWV6Pb/bwFmB2vN/1KZ3PPzww6bzDgkJMeLj44s9ntryfyWtLf7oVTDWnCgMteddrDnhKWrTO1hzoiS11aZNG9P3T+PGjY3k5OQix504ccKoUqWKaez7779fktPwSaw5URhqz7tYc8JT1KZ3sOZ0D80ggM3GjRtnumjNmzfP0vhl9Y9ehmEY9913n+ncq1ataqSmphZ7fMuWLU3jn3nmGbfm79Onj3NsUFAQvxzyMdSevbz1Q5JhUHv+jtq0XkZGhlG9enXTeQ8ePNjtONSWfytpbfFHr4Kx5kRhqD17seZEQahN67HmhGF4Xlu///67y/V69uzZxZ73jTfeMI2tV6+ekZOT4+FZ+CbWnCgMtWcv1pwoCLVpPdac7gsSANtkZWXp888/d25XqlRJAwYMsDGjwLJkyRLT9q233qry5csXe/w999xj2v7666/dmn/48OHOf+fk5GjGjBlujYf3UHuBjdrzX9SmdyxYsMD5HMxcI0eOdDsOteW/qC3vYs2JglB7gY3a81/Upnew5kRJaivveqpy5coaOnRosee+++67FRT0vz91HDlyRGvXri32eH/AmhMFofYCG7Xnv6hN72DN6T6aQQAbLVq0yHTRGjRokMLDw23MKHCcO3dOe/fuNe3r3r27WzGuvvpq0/auXbu0c+fOYo8fOnSo6X+4M2fOdGt+eA+1F9ioPf9FbXrHp59+atquXr26Bg8e7HYcast/UVvew5oThaH2Ahu157+oTe9gzYmS1NaaNWtM2127dlVoaGix565WrZqaNWtm2jd37txij/d1rDlRGGovsFF7/ova9A7WnO6jGQSw0VdffWXa7t+/v02ZBJ6TJ0+67GvSpIlbMZo2beqy77///W+xx9esWVPt27d3bu/du1cbN250Kwd4B7UX2Kg9/0VtWi8hIUELFy407fvrX//q1g+Quagt/0VteQ9rThSG2gts1J7/ojatx5oTUslqK++ayt31lOS6pnJnPeXrWHOiMNReYKP2/Be1aT3WnJ6hGQSwiWEYWrx4sWlfr1697EkmAJ09e9ZlX1RUlFsxIiMjXfZt377drRh5v6Z5/0eF0kftlQ3Unv+hNr1j5syZyszMNO3z5NaJuagt/0NteRdrThSE2isbqD3/Q216B2tOlLS28q6p3F1P5Tdm165dysnJcTuOL2LNiYJQe2UDted/qE3vYM3pGZpBAJts3rxZp06dcm7Xr19fDRo0sDGjwJLf7bbS09PdipHf8e7cPlGSevToYdpetGiRW+NhPWqvbKD2/A+16R2fffaZabtNmzZq166dx/GoLf/jzdqKi4vTwoULNWPGDH3++ef68ccftWHDBpcfzAMZa04UhNorG6g9/0NtegdrTpS0tvKuqdxdT0lSWlqaaTs1NVWHDh1yO44vYs2JglB7ZQO153+oTe9gzemZELsTAMqq1atXm7bbtGljUyaBqWrVqi77EhIS3IqR3/G7d+92K0ber+v69euVlZWlkBAuv3ah9soGas//UJvW27Rpk7Zs2WLaV5JueYna8kfeqq2OHTvqzJkz+b5Wvnx5XXnllRo1apRGjBgR0N8frDlREGqvbKD2/A+1aT3WnJBKXlt511TurqcKGrN79241atTI7Vi+hjUnCkLtlQ3Unv+hNq3HmtNz3BkEsMn69etN261atbIpk8BUq1YthYWFmfZt2LDBrRj5PR8sv9syFqZ+/fqqXLmyczstLU3btm1zKwasRe2VDdSe/6E2rffpp5+atkNDQ3XbbbeVKCa15X+8VVsF/cFL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as//UJslw5oTBbHr57msrCyNHDlSx44dc+675pprdNtttxVrvK/Uljex5gxs1F7ZQO35H2qzZFhzWotmEMAmDofD5cKybNkye5IJYPHx8VqyZEmxj//ll1/Uu3dvnTx50rmvb9++uuOOOzyaP+//TAYOHOhRHFiH2isbqD3/Q216btOmTS6d7HfffbdX5qK2/E9Ja+vXX3/VwIED9dtvv7k175QpU3TnnXea/mjmcDj0+uuvuxXHX7DmRF7UXtlA7fkfatNzrDlRGKt+nvvuu++UlJRUrGPj4+M1bNgwffPNN8595cuX19SpU92e11+w5kRe1F7ZQO35H2rTc6w5rRd49zoB/MiIESP0ySefOLd//PFHjRo1yq0YSUlJmjVrVrGPX7p0qdLS0vJ9rWPHji7PMvN38fHxuuaaa9S0aVMNGTJE1157rdq2bavo6GhJf76rJyEhQb/88ov+85//6PvvvzeNj42Ndevze6mTJ09q06ZNzu0mTZqoXbt2np8MLEPtlY7169dr/fr1+b72+++/u+wrbGF62223qVKlSsWal9rzX9SmZz799FPTdnh4uG699VbL56G2/FdJasswDC1cuFALFy5U48aNddNNN+mqq65S27ZtVbduXQUFBTmP27t3r5YsWaJ3331Xf/zxh0us5557Tp06dbLmpHwMa07kh9orHaw54S5q0zOsOVEUK36eGz9+vA4cOKBBgwZp0KBB6tSpk5o2beqsrdTUVG3cuFHz58/XtGnTlJiY6BwbFBSkGTNmqEmTJtackA9izYn8UHulgzUn3EVteoY1pxcYAGyTlZVlxMTEGJIMSUaFChWM1NRUt2IcPHjQOb6kH88995xH8z3//PMefga8b9OmTfmea1hYmFGtWjUjJCSkwM9H8+bNjcOHD3s89/vvv+83n6eyhtorHc8995xln6ODBw8We15qz39Rm+7LyMgwqlevbpr/5ptv9spc1Jb/KkltLV26tMAacTgcRqVKlYyqVasaQUFBhdbTo48+6lbOdteWu1hzIj/UXulgzQl3UZvuY82J4rDi57k2bdq4fK8HBQUZlStXNiIiIgqsqdDQUOOLL75wO2e7a8tdrDmRH2qvdLDmhLuoTfex5vQOHhMD2Cg4ONh0W77U1FT98MMPNmZUtB07dpi2HQ6Hhg0bZlM2nsvIyNCZM2eUlZXl8prD4dA9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RnJystufr8K+D3JycoxZs2YZXbt2LfD/GZde2/OaO3eucf311xuhoaHF+vzUrl3bGD58uDFz5kzjwoULbp+LJ26//XZTDi1atPAoToMGDUr0/53CuHMt8RVt27Yt9rW8uJo1a+YSc8mSJW7HufPOO00xmjRpUqK8AAAAYA/fXxUDAAAACCi+2gwye/Zso3r16h7/8apChQrGO++843bOhf1B/t133zXCw8OLncMjjzxi5OTkmOKnp6cb999/f7FjhISEGDNmzLDsHKwaV1rNIF9++aVRp04dt2NfccUVxvLly936vBXWDPLrr7+6lUf58uWN+fPnuzW/p1+306dPG+3atSvR1+KGG24wzp0751a+hlFwk8HRo0eNK6+80q0cnnrqKbfnLwkrr321a9d2iTVr1izTMb74dVq9erVRv379IufNz6233mqEhIR4fC7Nmzf3qNmtoCaACxcuGIMGDSr2/FFRUcYvv/ziEn/Hjh2FNjDl/WjSpIlHzV+54uLijGHDhnn0ORw2bFiR3w+l2Qzy4YcfGrVq1XI7fs2aNY05c+a49Xkr6PsgPj7e6NGjR5Fz5tcMcujQoWKNLezjySefdOs8PJGdne2yPnrggQc8ikUziNm///1vl5xvuukmj+OtXLnSJV7jxo1d1obFkV8t79692+PcAAAAYI/Sue8nAAAAAPi4HTt26PTp0x6PT01N1YMPPqj777/fknxefvlljR07Vunp6cUeM2XKFD399NPO7YyMDA0ZMkTvv/9+sWNkZWVp5MiRmj9/vlv5BoKJEyfqlltu0bFjx9weu337dvXt21f/+c9/SpzHggULdO2117qVx8WLF3XjjTdq0aJFJZ6/KElJSdq0aVOJYsyfP1+dO3fW0aNHS5zPgQMH1KVLF/3+++9ujXv55Zf1zDPPlHh+O1y4cMFlX+XKlU3bvvZ1+vXXX9WrVy8dPnzYo/GrVq1yefSBO3bu3KmuXbvqv//9r8cxciUlJal379764Ycfij3mwoULGjx4sDZv3uzct3nzZnXv3l1//PFHsePs27dPvXr1yvd7oCirV69W586dNXfuXLfHStLcuXPVtWtX7du3z6PxVsnMzNTf/vY3jR49WidOnHB7/MmTJzVixAhNnDixRHnEx8erW7du+vXXX90eGxcXp6uvvtqjsaVt3bp1LuujXr162ZNMgLnttttcHmX13Xff6cyZMx7F++STT1z23XPPPXI4HG7H6t27t8u+hQsXepQXAAAA7OMfD/0EAAAAgFLWoEEDtWvXTi1atFDdunVVqVIllS9fXsnJyTp+/Lg2b96sxYsXu/xBburUqWrVqpUeeOABj+f+9ttvTU0dNWvW1PXXX6/27durevXqSkpK0pYtW/TVV1/p5MmTprGvvvqqhgwZos6dO2vs2LGmX9w3a9ZM119/vZo2barKlSvr7NmzWrFihb7++mtT00lOTo7uv/9+9erVy61nzHtTkyZNdP78eUl//gEu73m3adOmyBhVq1Yt8LWJEydq/PjxLvtDQkLUu3dvXXvttapTp46ysrJ05MgR/fjjj1q9erUMw3Aem5GRodtuu03BwcEaMWJEMc/MbPPmzfrnP/+pjIwMSVL58uV1zTXXqEePHoqJiVFISIiOHDmin376Sb/88otpbFZWlv72t79p+/btpfp1q1ixojp16qTmzZuradOmioqKUqVKlZSRkaFz585px44dWrp0qXbu3Gkat3fvXt18881avny5QkI8+/VEUlKSBgwY4GyccTgc6tatm6699lrVr19fFStWVEJCglauXKl58+YpLS3NNP7VV1/V4MGD1aVLF89O3gaHDh1SSkqKy/4aNWoUOs7Or1N8fLyGDRtm+vx37txZ1113nRo0aKBKlSrpxIkT2rFjh+bMmVNkvODgYLVv315XXHGFmjVrpmrVqikyMlKGYSgxMVF79+7V6tWrtXLlSuXk5DjHJScn65ZbbtGmTZtUr149j85Fku68805t3LjRud2hQwcNGDBAjRo1UsWKFRUfH68lS5bo+++/N82fmpqqu+66Sxs3btTp06d1/fXXO//oGxoaqt69e6tPnz6qXbu2QkJCFBcXp/nz52vNmjWm+Q8cOKB//vOfeu+994qd87JlyzRgwACXGggKClL37t3VrVs3NWrUSJUrV9bFixd19OhRLV++XL/88ouys7Odx+/evVsDBw7U+vXrFRkZ6TJP1apVndfjjIwMl++nevXqFXotlv683hckJydHQ4YM0Y8//ujyWu3atXXNNdeoXbt2ql69usqVK6ezZ89q06ZNWrhwoakRyTAMjR8/XtWrV/eoiTMnJ0cjRozQgQMHnPsaN26sQYMGqVmzZqpevbrOnDmjgwcP6ptvvnEZf8899+jIkSMu+9u2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pdatW1vOWRgMHjzYFJszZ46OHz+uH3/80RCvWLGiunbt6tH+L126pAMHDhhijmYbAgAAQOFGMQgAAACA21pISIgplvM/2XOTlZWlwYMHW/62M1wXGBhoiv3++++Wcj3//POm2MiRI3XhwgWncyQlJWny5MmGmM1m0wsvvGBpTIWVv7+/SpcubYi5cq1I0qxZs7R27VoPjgo5FbfjlPMevWnTJmVkZDjdfs+ePZo0aZKnh1VkjBkzxhQbOXKk5XumK/z8/Eyzg1jtt2XLlqbClt9//12vvPKK1eEVWX/99Zdhu3z58nnaX/v27VWihPG/kHPOhOUsHx8fDRs2zBR/9dVXLf8d9fLLL5tijz76qCpVqmQpX2ExYMAA0/Xz2Wefac6cOab36qmnnnI4E487Nm/ebCq2evDBBz3aBwAAAPIexSAAAAAAbmutWrUyxSZMmODUFOhZWVl6+umntW7durwYGm6ifv36plhMTIylXF26dDF9y/rw4cPq27evU984T0tL00MPPWQqHunevbvuvfdeS2MqzCIiIgzba9eudfq9X7Fihf7v//4vL4aFHIrTccp5jz5//rzeeustp9oePnxYPXr00OXLl/NiaEVCmzZtTEuspKWlqVOnTtq3b5+lnJcuXdInn3xyy9ljSpQoobp16xpiK1euVFZWlqV+J0yYIJvNZohNnz5d48aNs7zMyO7duzVgwAClpaVZam/FK6+8or1791pqGxcXZyrEaNiwoSeGdVPlypUzzQjhzkwew4cPNy01EhcXp2effdblc+Ptt9/WsmXLTPGRI0e6lKdt27ay2WyGn7lz57qUw9OCg4NNs30cP35cEydONL3W0Swi7sp5jH19fdWuXTuP9wMAAIC8RTEIAAAAgNtaSEiI6cHpoUOH9OCDDyopKemm7RISEtSpUyfNmjVLklSyZEnTt/GRN+677z7TNPOTJk3S3LlzdfHiRZdy2Ww2zZ49W15eXob40qVL1bFjRx06dOimbbdu3aqIiAjt3LnTEA8ICNAHH3zg0jiKiscff9wU6927t5YsWXLTNhcvXtTbb7+thx56KPv45Dx+8KzidJweffRR06wE7777rt54441cC7a+/PJLPfDAA9kzURSGfSkoc+fONc2ScPDgQd1///2aNGmSU8uM2O12bdq0SSNGjFD16tX1zDPPODXLR4sWLQzbCQkJ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", + "text/plain": [ + "
                                                            " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 7), dpi=200)\n", + "\n", + "plt.errorbar(\n", + " plot_labels,\n", + " physical_energy_diff,\n", + " yerr=physical_uncertainties.values(),\n", + " ecolor=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " color=(20 / 255.0, 26 / 255.0, 94 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Physical\",\n", + ")\n", + "plt.errorbar(\n", + " plot_labels,\n", + " logical_energy_diff,\n", + " yerr=logical_uncertainties.values(),\n", + " color=(0, 177 / 255.0, 152 / 255.0),\n", + " ecolor=(0, 177 / 255.0, 152 / 255.0),\n", + " capsize=4,\n", + " elinewidth=1.5,\n", + " fmt=\"o\",\n", + " markersize=8,\n", + " markeredgewidth=1,\n", + " label=\"Logical\",\n", + ")\n", + "\n", + "ax.set_xlabel(\"Hamiltonian Parameters (U, V)\", fontsize=18)\n", + "ax.set_ylabel(\"Energy above true ground state (in eV)\", fontsize=18)\n", + "ax.set_title(\"CUDA-Q AIM Infleqtion Hardware Execution (lower is better)\", fontsize=20)\n", + "ax.legend(loc=\"upper left\", fontsize=18.5)\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "\n", + "ax.axhline(y=0, color=\"black\", linestyle=\"--\", linewidth=2)\n", + "plt.ylim(top=max(physical_energy_diff) + max(physical_uncertainties.values()) + 0.2, bottom=-0.2)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pr-2458/applications/python/qaoa.html b/pr-2458/applications/python/qaoa.html index 21af2719cf..ab8eb8c8a6 100644 --- a/pr-2458/applications/python/qaoa.html +++ b/pr-2458/applications/python/qaoa.html @@ -131,6 +131,12 @@
                                                          • Measurements
                                                        • +
                                                        • Photonic Operations +
                                                        • Measuring Kernels @@ -152,6 +158,12 @@
                                                      • +
                                                      • Executing Photonic Kernels +
                                                      • Computing Expectation Values @@ -184,6 +196,7 @@
                                                      • Using Quantum Hardware Providers
                                                      • Divisive Clustering With Coresets Using CUDA-Q
                                                      • @@ -325,6 +347,10 @@
                                                      • Stim (CPU)
                                                    • +
                                                    • Photonics Simulators +
                                                    • Fermioniq
                                                    • Default Simulator
                                                    @@ -336,48 +362,54 @@
                                                  • Submission from Python
                                                • -
                                                • IonQ
                                                    -
                                                  • Setting Credentials
                                                  • +
                                                  • Infleqtion
                                                  • -
                                                  • Anyon Technologies/Anyon Computing
                                                      -
                                                    • Setting Credentials
                                                    • +
                                                    • IonQ
                                                    • -
                                                    • IQM
                                                    • -
                                                    • IonQ
                                                        -
                                                      • Setting Credentials
                                                      • +
                                                      • Infleqtion
                                                      • -
                                                      • Anyon Technologies/Anyon Computing
                                                          -
                                                        • Setting Credentials
                                                        • +
                                                        • IonQ
                                                        • -
                                                        • IQM
                                                        • -
                                                        • IonQ
                                                            -
                                                          • Setting Credentials
                                                          • +
                                                          • Infleqtion
                                                          • -
                                                          • Anyon Technologies/Anyon Computing
                                                              -
                                                            • Setting Credentials
                                                            • +
                                                            • IonQ
                                                            • -
                                                            • IQM
                                                            • -
                                                            • IonQ
                                                                -
                                                              • Setting Credentials
                                                              • +
                                                              • Infleqtion
                                                              • -
                                                              • Anyon Technologies/Anyon Computing
                                                                  -
                                                                • Setting Credentials
                                                                • +
                                                                • IonQ
                                                                • -
                                                                • IQM
                                                                • -
                                                                • IonQ
                                                                    -
                                                                  • Setting Credentials
                                                                  • +
                                                                  • Infleqtion
                                                                  • -
                                                                  • Anyon Technologies/Anyon Computing
                                                                  • -
                                                                  • IonQ
                                                                      -
                                                                    • Setting Credentials
                                                                    • +
                                                                    • Infleqtion
                                                                    • -
                                                                    • Anyon Technologies/Anyon Computing
                                                                        -
                                                                      • Setting Credentials
                                                                      • +
                                                                      • IonQ
                                                                      • -
                                                                      • IQM
                                                                      • -
                                                                      • IonQ
                                                                          -
                                                                        • Setting Credentials
                                                                        • +
                                                                        • Infleqtion
                                                                        • -
                                                                        • Anyon Technologies/Anyon Computing
                                                                            -
                                                                          • Setting Credentials
                                                                          • +
                                                                          • IonQ
                                                                          • -
                                                                          • IQM
                                                                          • -
                                                                          • IonQ
                                                                              -
                                                                            • Setting Credentials
                                                                            • +
                                                                            • Infleqtion
                                                                            • -
                                                                            • Anyon Technologies/Anyon Computing
                                                                                -
                                                                              • Setting Credentials
                                                                              • +
                                                                              • IonQ
                                                                              • -
                                                                              • IQM
                                                                              • -
                                                                              • IonQ
                                                                                  -
                                                                                • Setting Credentials
                                                                                • +
                                                                                • Infleqtion
                                                                                • -
                                                                                • Anyon Technologies/Anyon Computing
                                                                                • -
                                                                                • IonQ
                                                                                    -
                                                                                  • Setting Credentials
                                                                                  • +
                                                                                  • Infleqtion
                                                                                  • -
                                                                                  • Anyon Technologies/Anyon Computing
                                                                                  • -
                                                                                  • IonQ
                                                                                      -
                                                                                    • Setting Credentials
                                                                                    • +
                                                                                    • Infleqtion
                                                                                    • -
                                                                                    • Anyon Technologies/Anyon Computing
                                                                                    • -
                                                                                    • IonQ
                                                                                        -
                                                                                      • Setting Credentials
                                                                                      • +
                                                                                      • Infleqtion
                                                                                      • -
                                                                                      • Anyon Technologies/Anyon Computing
                                                                                      • -
                                                                                      • IonQ
                                                                                          -
                                                                                        • Setting Credentials
                                                                                        • +
                                                                                        • Infleqtion
                                                                                        • -
                                                                                        • Anyon Technologies/Anyon Computing
                                                                                            -
                                                                                          • Setting Credentials
                                                                                          • +
                                                                                          • IonQ
                                                                                          • -
                                                                                          • IQM
                                                                                          • -
                                                                                          • IonQ
                                                                                              -
                                                                                            • Setting Credentials
                                                                                            • +
                                                                                            • Infleqtion
                                                                                            • -
                                                                                            • Anyon Technologies/Anyon Computing
                                                                                                -
                                                                                              • Setting Credentials
                                                                                              • +
                                                                                              • IonQ
                                                                                              • -
                                                                                              • IQM
                                                                                              • -
                                                                                              • IonQ
                                                                                                  -
                                                                                                • Setting Credentials
                                                                                                • +
                                                                                                • Infleqtion
                                                                                                • -
                                                                                                • Anyon Technologies/Anyon Computing
                                                                                                    -
                                                                                                  • Setting Credentials
                                                                                                  • +
                                                                                                  • IonQ
                                                                                                  • -
                                                                                                  • IQM
                                                                                                  • -
                                                                                                  • IonQ
                                                                                                      -
                                                                                                    • Setting Credentials
                                                                                                    • +
                                                                                                    • Infleqtion
                                                                                                    • -
                                                                                                    • Anyon Technologies/Anyon Computing
                                                                                                        -
                                                                                                      • Setting Credentials
                                                                                                      • +
                                                                                                      • IonQ
                                                                                                      • -
                                                                                                      • IQM
                                                                                                      • -
                                                                                                      • IonQ
                                                                                                          -
                                                                                                        • Setting Credentials
                                                                                                        • +
                                                                                                        • Infleqtion
                                                                                                        • -
                                                                                                        • Anyon Technologies/Anyon Computing
                                                                                                            -
                                                                                                          • Setting Credentials
                                                                                                          • +
                                                                                                          • IonQ
                                                                                                          • -
                                                                                                          • IQM
                                                                                                          • -
                                                                                                          • IonQ
                                                                                                              -
                                                                                                            • Setting Credentials
                                                                                                            • +
                                                                                                            • Infleqtion
                                                                                                            • -
                                                                                                            • Anyon Technologies/Anyon Computing
                                                                                                                -
                                                                                                              • Setting Credentials
                                                                                                              • +
                                                                                                              • IonQ
                                                                                                              • -
                                                                                                              • IQM
                                                                                                              • -
                                                                                                              • IonQ
                                                                                                                  -
                                                                                                                • Setting Credentials
                                                                                                                • +
                                                                                                                • Infleqtion
                                                                                                                • -
                                                                                                                • Anyon Technologies/Anyon Computing
                                                                                                                    -
                                                                                                                  • Setting Credentials
                                                                                                                  • +
                                                                                                                  • IonQ
                                                                                                                  • -
                                                                                                                  • IQM
                                                                                                                      -
                                                                                                                    • Setting Credentials
                                                                                                                    • +
                                                                                                                    • Anyon Technologies/Anyon Computing
                                                                                                                    • -
                                                                                                                    • OQC
                                                                                                                        +
                                                                                                                      • IQM
                                                                                                                      • -
                                                                                                                      • ORCA Computing
                                                                                                                          +
                                                                                                                        • OQC
                                                                                                                        • -
                                                                                                                        • Quantinuum
                                                                                                                            -
                                                                                                                          • Setting Credentials
                                                                                                                          • +
                                                                                                                          • ORCA Computing
                                                                                                                          • -
                                                                                                                          • QuEra Computing
                                                                                                                          • NVIDIA Quantum Cloud
                                                                                                                          • Installation
                                                                                                                          • Backends
                                                                                                                          • Installation
                                                                                                                              @@ -825,7 +863,7 @@

                                                                                                                              CUDA-Q
                                                                                                                              -

                                                                                                                              © Copyright 2024, NVIDIA Corporation & Affiliates.

                                                                                                                              +

                                                                                                                              © Copyright 2025, NVIDIA Corporation & Affiliates.

                                                                                                                              Built with
                                                                                                                              Sphinx using a diff --git a/pr-2458/notebook_validation.py b/pr-2458/notebook_validation.py index e0d464af93..83e2a86a9f 100644 --- a/pr-2458/notebook_validation.py +++ b/pr-2458/notebook_validation.py @@ -1,5 +1,5 @@ # ============================================================================ # -# Copyright (c) 2022 - 2024 NVIDIA Corporation & Affiliates. # +# Copyright (c) 2022 - 2025 NVIDIA Corporation & Affiliates. # # All rights reserved. # # # # This source code and the accompanying materials are made available under # diff --git a/pr-2458/objects.inv b/pr-2458/objects.inv index 6823443cfcbce502114f4218b4f0ea49b750e6b6..0191e59f08611ccdbe33758a7128a1ee3720201d 100644 GIT binary patch delta 51361 zcmV)IK)k<#g#-PT1CWY;>vG&UmM;4LJOv}PBX;-nq+2PaWGiEON7z!jN+Vz7l&WU- znKQwlNJwIdNm9I|CI6UbKe+G$k|2r8VoI)=j_7iV0KWCDg*&hSxVh&%T5cRKv*#FD zbIXbSzXwiumpgYT{W}h@@s~IE*(TVtPcJXGi=+Q#&Hf*kBwH?jKR7A+vUP8-{7oJ> zS(JRc{EdRSfs>{(XkU&f)WN<8YSomqMw=)@>($k@u9*4T4vtWUxjqMCFizTOo^G!) zCqrri&i7Y^jFSpMgt}Z_xlZ6D*CbnM{-RBcX`o9daW(*wR!_*yGd~JXqcB5HnO=q* zw_ye(^vJx;LzjGiGZHHxa`ELVJ5IC25AR+lDf-j@fowISEtg?~qI7}Sh4FSyPTPp- zeUzp4t0e2-n(k-0hdw)TN*Qj@<_0BZ)D9c4!vxaj&?TRtgr8K1<8s$1&4Ua~?KuZJ zDE!9B-23wkB@V6lQ1TZ|+(8Pi6aMOiUVy&dq$t@UFcQaqZR9~3=qW~SM(O_U1UVp$ zHu4~i+dRt?1Y8^rc+^4h_fCp`dp`N-1nJlCGjh@@DOkNcoR0_^B2&nNQ98)!n{1knTJQToL zxyBq8ofBDq*dTx4x*R1wg6pH+b+HGjL~#b&KAcpD!*aJM37q&e+Qd1YA&{Xpm=O;4 zMd&hgfSbz02J9e#1l{>5?&3%d1st(7U`Gf(Bhe^af*r04dzy_sdQRW1H)u0WoNFTL;MI^XttUMn-YN7Pw ziv{Y;d)qR*B<9DbQ66ULnNPu;QRS z*^`HniSVU^Myz#Runi|-0pd?*VcwZMm52Yyaod8FK%h@@Hx>^$=Te@O# z&T(2vvci8jnFDMzV}emkCMi+!4=|%SSBjOgqA*F5p-)G{Bo{p-(4#hq#?phjRlpeW zt2CMuTs{p{I9$@x(WtdnUt zylz$Q6XbZU+*4_HiO7R}5u`}&mwfXr$3yVcNW%jjNhF4~0;f*w-1vc?m78nY`pt!y z9m#&WqD%3}Gg5EA#u139Jn4*N%sHTcj*!5?sQ0YFHp?g;2@i<4Sx2WsxZL8B!O0+Wi)EQ`zbAUv_jsH=P;q??id56Z#`mv(H^hhL z=TH#Oe4WsXHdhFFS12N2Ij4p#FEH-HlV^FK`A%>H1t4c13n>SXP^Wuc77rf zdfD}W7^gwjkh^@eGD4r!xzRZIh$0MRI}Hb$e#(fus(gktb$VBVto$BytWVe#qodG( ztUQjRB;y@sKjKPu(iJ=v8v_#`r9kH!P~z ze#Q94>C*VCj#IB4w`N4 zMOX5>60J{~A8t{S!U%g?fc45suQKm<Qx%PJm zYkJ!kkT_OO{tj(dB`yEsKOxlgpNeDgoz;pdMXoPY^u!&1ahMFk$ch?+3zyM71saMk z(t#0pisvdIQjRE6!>Z#JrfEQ&RDqb_8B3C#1Lm~~naZO>$193|cL{00-uPXI5LNKE z9hkO=m3OD*&2>_x<`8?FE|eF{-U&P{hNSdL)~Oo;;X*<;s*K2V%NNY2pIY;fATB>WWY!CnR!#mr(cf!)$PPyGU>c!(_k~^n=>_p=re|>A;{D4R40mqgy zy&X_e&YiwnMpMEe@wnZ##iYcnh&P$?sRIEJrwtzU*|&io8|D7|xDCTea3do5Nr(K~ zB5fDV-Z)v}Kk2buG(mdN$=`v#qj6i#f}rtP+?CeRO{ZA3#CFsjp9H-SvCH}XmJFwD zQcO%)3NlZBd1OAdC3nFQ*rw*taDVMna@>ehlZoqp!N>%Zi#d7Hz9-oF~^T(@yVe?O58MFyj>-M)@%jb?c@V&!I z#t>#3Zm>p~jEjbWIz72jM@i6zT8w9N5~vAF6iwMg4VD-YTi?uXh3`b!D(w;enwp?y3w%F6&15xX_1 zLGMa`Ip-glcjkhIU9vys^Ut5o*X6owqjA)$(agnTwrq+FI%ddXdMe!T zzuD7N##Uv?ZZ0>fSH}#aAH5;PAX5rKr98fSIsDh?X2rf#r^c?b!;KT4x36|$KUce_ zyDon1TJUyM;BsmI5#6L9Wpc-vM4i5G{kxxkllxt{!=HmbI|*+W$2aU7CpGMm zPXvgPg6r|?zx<1FYcJw~ha`<WTARxd5E+pT*T?)q+6q zg@3)C9~PcStb;v^*Xsp6INuPvTvmtaHTKG27&KzNEEWArKA;#pbgw+wC5LCt%j6G# zaZ0Y)yTg;nG}9Ty5*?}s+A5gUnIl8Lif>x1As7G^YX~Z4#TtTvX|dMlkT{-?LOm~{ zcV+5T7Z4BIf+*A;=~mE36owz-auV26C&n_~7C_C5O}rKRo14UX&0zdL?`3$kX}%>- zQ`k{FL4-#uBsDVXwJ%f)n~ykOnIx!2y}^c*QNGl$O9K+xOLp=o3t0?YHVfL z)#;ZjEr5&0yU&D|AP=4cKx@IfsID(X^{2D(t12YB8K~Sw$#*C5AlK4=x{$J>0oT&H z;Dc*vLN0JCQC)cOIo>PMKy7X}Kpb=}?S(V|U50wuas?B5iFV0nC#0tt;nJ>^Fb$67v%8VvkklID5eHrq=#dw+(s%e_E z7vySe<>^+_c3WB|T9Dd*O(whqdGH*VV5MiO>iSYte>xk#szS1xfl5s1pbRB;dhg$6 zrb}r@Ej%fqaEoYd@q;U9T^3-APi-FHGrCv7U2P86M;UU-Z1>zj9nW@8A9Ahl#R@(6 zs@Mx^@)MV(r$2%Df4-Ioc=4vqTXqEc3V2D3)?SdM#@G^$tr}B*h=Jse$ZplROtn@t zap`;k+K|O{k_991hU%qQnpt+T1+ATxjcHbcCO7=fX~S9_eraWb3i%==e?rB|p!()|>Zyvn@akqejm9H{t_jsX?`PlcQF z5!8AJ!?Y_UKlT1H^j5%1n(LB2f{?-*a1!1jZk(YkyC7gg#r)9;f(WdHA2Ya>_zn8q z$i9#&$kWJfvIM&`o`W3qdC-wvmPF?Bkcl(4BAQOebb@?d zE^qxL&0fECC#Lz@OgmY1+C-l5+S=rqJt@gavN}b$`g^ax8cogf)fpF}A|+0qn!S#G z*uYrzU@w<{xV&f2`cDTo#T-$z#;~?2johRk#rkUnO>u7vxB-D(ODYY8xK*j9=(c^y z)pEEb&X4`j&wMAqW97sS{4_hCU$0gZ(UYTw3t98a3$x)W>^l|~#V>85^(!PLS*VxG zYx5=7=?nLA>4#rq!+GqKMT-!O^XwB=OLsuMV}nLf6Pt5wW=@mWae*7QF!EFG?O5fP zhT25-YruYUl+S#6GK~WLT>3>LpIsM8O?L5ZHH4$1;kj^Zgp9>ssIZd$$Dq76E^N zz;byPL^p>1IAG?Oo{gGqg2;V6rkR+GoMjT^_8g_wlDHh zbZ(N!@mwd(Oggob3WYUJ#mm_KE@aiMaIZLSI%v`et7K^NpS0VxAf`W)(^YKWSGXMd$?q;8EFn{wDHtx7+6&!b*s{Twdbd$9Hk3 zPP&`xXPwDkL(crDh1e(9@jRRKevibJ6l61;r*SYB;!_`z*1Gwm{8WFqv3Wt!UYqf( zjuC#1&G%t7H@sV1YBbfyC;Vm@y8Y4WT(=x1^i_`jLDueaF7-PIYDNuiyD-9lx+bFAk0eI|+ zyLCUyJ!E_MCpKhb35LjKu7O4j4vu=o43Z;DgSUYnPr+$^+(sXy;-NSSoW%d(ker{y zNC#pWgS6s%2Y;E&M(?`#gLLxnA&kC?^N51g9-*>`cSf8h097mKfu z(M^hyt(O1TSzLel$Gk0I8g28U_-H36%>&#Tb#KhW^Zl!s9P1++2aX@2gdA*J&|BaD zD2f=iX>rYEhhKRa^v+2U!<1j5m|&-`h@3hTql^7^Uee6iPG9Jz=Lb{%cED4I)UUdu z(_Q53q~xHoby|`-j9@Ne-g!F%LVFj*a%V)Lis#%=o6_KB(z&d4vuH#MpQ?cDe zt(ux2RAri+rw%E@yS{f`7|r*jDSM1f zIbOOh7mR-mt|gd+9x1D)*8zYM^YV?sb+}Em1pyN*8CJs3Q;e&W(>eENrvH4-;jTP6 zy-lb{@sKmalm*t*F4L4&Empo~yAis*^<9&f$~sgQP28b86SS=$3|h^tSHCOxnz*!@ z7FlZA>pv5kYnPm~%_ituUnNiU3bPlzLbDZj%2ZroZ>Y&iobPt$w-lFM?WiCDHw0uIW=f)_5WS>WWc)#HxH)t4c0{tbb}h zwpn4lD}Svn{PkLFy+I0i?B{RHUJ-*NgMZm(mqNg?O3-8O#L%n~1;a{N+vZO&rKd&SsUbRm0N`Q`vUQO1# zYOUnefE_Nqn%sHaYRT&XIF@=fdGm^Ol2;=B6ZSSxqptr^NUNCj9D7ps{1`sp^q8PK zHQaNXqs#xUwuTo3v?XJ?{DijU{gt~lQ|S|L0_j476(uXTM=%tJ!yYd zKjgGPcYbK3#u0_+>fr{+Nz9NbL>KusiS#`b7&3(zvJ03DF?+BK9@oVD$u26W_m!-+ z6!Z7FWaJq=3dO2M`zfdbIPhI$mhlvV&ypcMNL+zBdWAtpa^@u2jzw?DJ@ECBbJYzw z0y5vPL3sQ$c0!;|wCrGxC}>;AM7@9Ln9wgflgFHIZ6fD3DxB1mM?A-Em;nhzmtl9k zp^YTY=NxRKzIWwEcu0mNZhf6=s(J|=@VLVaQ23am9K9!_*=r|#0Az98#%{E)>-h=u zvtB(RHz(4l_*Y34|9)2rI{&!cHeLxECyKjZGykRC69$+ry+Db0A>PK;&R&1Jq3=-k zDZ0DL669@Hho>t%u+y zMl(w+n#er^s+Z%VV3ny_0s|8zXcJ|~cAeO{@dH2eQ3_aq4i0-{^i67HIZ{iWdxp1M zO~e;?DJHt0{NTxc6zA^VzDYo2HMbLoF(a5cdz)XPt^ z>QB(AQ4@K1xEi)AxLJR`Ab2AZ$qY&B-pXF7?@G*J$x*m=LND4}A>>`5404^I1uZ-G zYbC=a93k*|sV=z$rPD0!ESku}nMUIpEUS#LsMl3gtWu?#Y%Rfr9KA*sa?gT;9nP$Y z3d}*HxR5o~w^7RekY#^EeEmek0P;$o-8H=`{Db2@pwNTdvS?#BuM1aUCFmg_)}W0D zPPN$Ef|j0*w$hOcv$wvBCTJFnC{ECZ9yA)M%PL~Ec|fj5LQm3NPP1uka|Noa(-EGg zFPMTea2Ih>_YapBjVu18h%A@g2L=E}_S&SNmyRn;{sr{`(R6>1d^N>nN0vz*$5E1{ zwi|_>Ph>lReT#>WdVYreEBz;flH{AWA(W}sF2TuXPWoVbKIsH+a=n|X`pF*mi)oJO zZhWnKHjZe@hN7OI8F)X{&OijH4Gie%I<>eU3YXh~^R`a=K1R5RxaPtwXi z1_bH5c9-D&-qu}N<__NSQu#L9K)tFB-L16s#SuG(x(iVQm!u+{5#@m>oi_=9 ztn|gGO_V4R1`Y2ne=;D=Q2d(NMX!<_assWhk0c>qM9>{sReaXLdRHbE;4PPH`U@q< ztLnde2U%IJk}+R20VQNEm)EBE^~;FYyb`tX@Je}`S?jv$^~HQqeCT@~M(~Eol!SIH z{>&MAd8Su5*jtqoupVI_hI8kB92Ww44Yz(8QN++ zKdM}i)~y#&gz~9>YWoEvWv3QnGDf?tE%Dt=R~TUzdeU4_amVhcJgrhCmbP$PTfl8u zCY#u8Lw5GEf7`-3o3tjv2pE~L&*#j+)uxN47o9J|bZ}wvvnv`MvIfD?ONv>o`Jpjz zh8{{$;yZ!CQ#|eG7Uvvh|CNq1jPM`rXPXQyW=u}&mB^lYO<#%Zaf_c^?siZX9s;F? zZh`vB!u809!!0LZBRwYRDYmyxVE+J8?4$xzsq9svf9aYeZDRV5kY4oEbpClwJuV<- z0;Wf9+t}c_tsgo8REvGUgElwv8_nYDq6yA(xh#L3ho0{m-c7w@Bkz>_1nj43kfyi$ zu9$;Rzjsm_Z4o`^Z*qTPi|SDeccsl}qQSf|!wGt*qZY7oKJKQcGNHMN$cg(Tx^YaN zduN6}Ic>nefAZx{+aGTfrKyR;f{5!ihy(({hhyG-?Ud|<^BX9>B}JQ@w@<+`f6>Gp zn7bz^N<0L$!uqy=gBghyVB|S14?RJ)Qxox=f2zxcrQ6+sf*7_m_oNgyW_ChHx+&fX z8{UhrZKu@>XWT2xIqx+aYbz(6bW7+o+Qd1zF7+vf9gR<6uPOFyp_+)Da5E*BPRb54 zi__Ox8uj<>#6zN!dSh&$*1~NRvIATyy)xYroN5H2Oec%%jRUqTcg*0_2~0SM*WmPD ze^YcSXZwv3X?jf$cmE9@Efx~_Yj9QqVGvjGs0vQ#?Syvc?n4zz9<_kPhge#XAnsd~ z6wI!;#sX|S0&xAbTwq0Et|IPWUxYLwXt}(N4-YDFY_-E!=z@SsNIqUnAo+N~OJ>)x zYPrx=ce!@pOt0lAU<5u}hWHoK0^BsQf75v5;1=yk>$GZtG(X^xM5d~)6T-zFX(Qkn`n|D8vKrz=GS{5eVFRzrYF#xwVm1lxP`*craVDQse@K0o zY<6Yhc`7m4zqQ3HAF@~HaEG!pCv(;)Cb!OphI^4EfrGgaS6DuanAf?^$+J!|IN;&> zR@ zdz(*mK3Cq*Lf%uKT%I?zg!M)F$DpL;atqRItJ)A!uD2^mQa1gYaqh*^lAv^xl{hmm zndh>S!17H}qOof1);kG7|1fSEsiT0DD19p`ie&2=rZzlgFg4zx*eQu zkuhL#-Rb&vPr`VmN}mG1zG6@es`(C^k6kngjC3;49EPXv(9+fy^Mm3y9sH~>cCYbZ zMTZwg*3u92ka{a1kF2ksH*L_ez>aKyr7mK}PtGr137cw9tU+hhaqxIqc39|+Ys_oP zsBOQD(FfS4g#WYP9HCK?#QvI5dr&gm_25$eSOxA$#R^UHEkse=N3iZiWOA|3^Q} zPV2o1pv~D40{;axB5Zl+RQIc^dL6J!)K@L2<&t;<`C0Di-|0(%PAZ&czu>P1M3SdZ zQa`;izBJx|Lu#h?e7{EOddSxV1}X4%NC6CCK+4F2fJq;|kOElDRtRl=$%ectbe~yo zOS4gUD;(0f@6&G#f3{a3z$GrKvdNw+z%F1>OczZ!L1vZ_G8Cp!Vl42eh1Vmo=`Uv> z@34W^BaLw}6}4YO^^Aqv63JML{ClqbnvE#~je7lZWB=>|Gmr--K&Eq)=*Tl@wRe z_<0Ej%8i~C0gsEZYK@hL<`0$6IS@Kp47ZOy9&3NTylU4t#bq1{G=J9xTGdjnsY+i^ z1|jQU(Fa%A%!;4M>8(6K)_w~&e$MXkpt*u((Psave@y!3eYr+)=4@g=ygR*jLUKzv zh7>bxBaTA7v28MdvTaHe;nbcAX!;zwt8El)QE>`ahglos4W6>-)A@RnqQsa_1I3Kc z6+KO8$cG0pq(e%lDVrKYo6HA4`xyAKL6L4En3d#H)<%D3OZ^&T8UUCJHj9sYUkExF zEzJ@Tf20jI(Z&gE+>9D9ATq3WSzK-yxuIH;mEZXDz5R6i2wT_J7be z-JqBXfy_#)X_MP%ZMoa^Y+58zV@_{w$*qz0bjWNjU<~GmWSbFrJ{dKoY;Qpaw0NEe zCv~#oFrrH8#K}{G0>-B|Zh0DD#S0bMIA4o(e*$f-N`N=GeX-f~{}?Jx$O1(6tc`}- z7bCPUWa#>t9?93xtWIs#3UD}%=h;pWuw4S%t;>=rC=e7q`^KR3YMAk;t~sD9ZWJ_T z@`moxnZximyn>?HKLGGZ?vcHAJ*YVIH$~^CpM972PKpf2i){?E+IRU}xBALVinMQ> zf8;JFD-U&Rq|Mj~txoJC5jJ1xNth&Hf|RY;C%D85hsU zD5itrJ}}KOaeE22dL6?ym`!v*tDB)AK~waYlY2QZSGu=k3`(jc0Jr7~4aRW%e?9HS zV6CgaHOImYNWdCqu$*?~-XpplrPDxHn_QQb10W1cHRI4&j$!w^=r1*0m8*$b3E$NI z;ab_z#7GT5^qXCpymr&o$H1)(+YyDpFtJ7L*r<=ex$)|Ql%7jE2-moWL0TgzmXh@9 zZsNyf7phUW3ZSOXuf8rMUl6VQf5wUOPuc{U9T%he^Nv@V~i5p4%v{_grH-ivhg=bZ_FaAYPu0Xs*8Xp z#Ps0Tn^XMX#0k#)+gp^N(ADY}2jJ*RS*}@chj7i7w1$vPR*7odk5Tg7e@Q$j!*<|+ z4BN$pGHe$a#<0{+58;ve)xCe4nOU`o1!U3|D3m>0urS6ff9aT!Jk@8^j@7RGcI`T+ zs!P2Ht-*jLF8;A^azF4;BG~GgjX}2dh{X6_wRAkNWuhpmMrg@=Bny1Z4MVunEGdUe zS_;?@U?a0{0zY|UlmFU*e}9v{u_@UzTo#av3nh(YCwZ9p8#L||DXB>xjvlFgPe@rh z9Rz(MJ-g*9Oqvk-RK!cdDoh#(21G=Dk4ii^04*AQ9*>eFTFJF2^td@nGH9mOA~51r zCrLz%qD9E4&YD+OvG13p_(o!V@!h2}75PDoN>FQZ3PDe~lzS`#9toBg>)- zp+%+Ny+(HU(FV|>Vboce_Y;Gw+p;VK76d zGA)r(D;<(NhOi9D4XhR@lj~v`lIxpsD>G{W8Pe*`U6lz{5L#3s)*7P(7l^MP{_m&v z%1pWlrbK=zG&)16A**AX0Vq>ypFVv2<;sK*12CoW1(8YqXXJP$TsRa{Le-PKCLIdr z&;#f?D@X+5CX?hQDSvf*=Kp!8yVVx4(YogHRFT?flP9W9vgF=|Z5q8f&Cl>i#?PMd zj9S|VK??XymOL|Ocm0!7B0*VXyLtRLL)!Fz#7Jr4l6HW+ic8)_Rgk97C zVwQUp#H2$$XAQA=JtyY??%2-{c+!1d{b_`n7G7Zj_b}P1XPL0Z?i~)R5Nv@M?w@t> ziXPIA%gIQp=|a(k4x;ZUv2UV0^x!}@&XdiaAR|Q;47U6NWYq*c=02`Zb~U*I0yf#_ z?4spy446Z`lPN6-G`ND_2A-k@v}M3ng*G~LooM4jRgN|;d@X590IDu+SlD{gS_#mT z9VjCL1tyb1C?$VwD&Qop^CqRcd|C=VCg@K098YUKR3Tw|T~j_Oc@o>uGq|>vc4DJd zullk;{q*c*M4LXfsFUsHMvVRNjc=0p$t3Z!N#Y-xi8E~VG|=~q=kJNsL)bp5r~EsK zLcSzvW~G_844fO{i@?&BQLWR+LzWl0^ezF~Ycx{sxj27()(Gzh6GiUB_t34A2bmqk zshA-jfinG;J7Jb@EVdFwx;G)xp5y&N?uVG+sxotl8wufz?6Z>l3Tp~G%wfP}N*dQm(6L!n(EDC4Ev9@v0o`j#d&lWE7?7gxc*-tWZo~+GN zPx@z>^v~AjxhMS(ne;z;Z5I>Yrddi|6vl!0*z~tefA>L0WDVQpY8f-KCzm_J=`V{= zu7aY_FEzJC|*qp)~#u5blFVOqWt z=Fb%IyuNUtLpB>4OGJR?H`J#CwYeAYbw8eJa zr%pxmSkus7>VH-)RTqk0ZOJQO^;xK)zbtr27~An>m@^gHwITU3#VNU30a;ZGU&+LW zn;4srxSb`)%Uy)#8MYev|Ki3EaUWF8VzsT;7O|RNW5VSBiw{)9$5MoTQW%{VMA-=x zT@adYVsC>q{$j}Wy|$EMgDHatJ^N%lvmuv;C)22g2N?Tg z?C_b%Fi2~xc4vq;q57R+m4+FHF_g@4Qte#LkE*>ww#oro$YtaV6??Vx6Pf_3Y^W(T zR!U6JCX>1=4u5wpJ8for)rqdD>fMki$*Ly@F|92oC`)o`DHJ0ez-g?ugPJ(3tU+Zo z0oJzWEjwVji~2YqO13^qK}>6lDN2--S}G+;18^Fv?V>&oDr-_74S;2=$*s*U$VG&7 z=9*@Sk7s%v!|AWNa!a99412wkis@?6T}stUuBiVp^MBVt^TWb%hb_yJMX2IKL@xqO zr?E>Re$^6BR+*aO)$9cT3uMQgS`EZT&=&C=TD$0@wP;#-`f-s_t6w>AzQr8S{)HXSgy7*t({JCHT_Sj%Z+inpG={8EdjUHYZa{} zQ_3h@?UEi)Kj(4}Us;g1q@Yb1~4`eyKN62V|_U47Q!$ z*kI8}Yohisdl{uYKAS}SLe{DyOTi2h7%Ju{n}4-;?8r-$=xf`7>K4~-6cw&j>vV!! zC)RLuTTyNL4RluZyRDz4l}bs;2XYM}u~GR04*>CKaDH6hy+UrlNi%^B& zPk&A^2EE~-%aRL|qxDcUCv$p=!rqXZF6RgQOS+A1`a_nhMHq47;X=8|iFAmkWr&MW z){PDLCTrr7!-aCw4(SlDQSx5_8>P%Xq6P467TNa^F2~y#=f_)@UAyb!9*$m1!W=QU zjMLAiro7em5_2!*o#P&g%45zEoRSt0j(>z{Y)(!7cfIOIPW35Uz~)%+zw2c>0$V96 z8Qnmi%KzpujhzropUU-x!j9_Gims?ntphn=V5CD$gg^;-x1wls-TLS|5LW^6>*Uy$I0H786d*D_lG?jJwyRSBZsetvZc|c_nmrr`qqfxq=GJGKO^+=?pq%9E) zNzFjb#O>iAS+9YclW@8Xid~VVnDHqJ5S*I5THfL&HfTYK^lC>L=UVdQeD51x`boGT zSF0ZE`{W%H*Uy5;jp9-pPf?wcCx7Pw-|&@Re<`G$7t%gO?$`K3p^ayOpiFHP7I?&> z?$kgm@Q6jVz!CKfci=|2NpQl9w9#k_V2}#&3L~zzmUK)#1;{dRah-}+_@1XAdJy1s z0bDqKr-SN<6KH95aNs&2{^fgk+!5v*NX01j?*;akd?TY-tWjA${Q|{7Gq4-;1HmIkhfh4PVHHu7UoOWQ}V@)MamUY*kE4cmh=>s+JBLAGpqK ze91c3im1yTqRwF|Lv@Y@YxDDA`1!;9d_8^vbnXYTxgP-JegKpE!Eo*ey15@iTQ`=q zZVX`E7{q68mLcky9r&71rL+yAL<7nr14bkbpxFC5>{eMfuY=yXVWH(+k zA78m;3%8|Ddhg=7InV^wnQAdzSy|OZ_2~rYTABMpdvel?*qNaW#MD%vT~82%4(%em zvQ#4LY0|gH(QX*b_B&K|DB2ZUyzc>ssAo8c93RSHmHaIH+%hM9(56-RrCno;4lO=R zffjc;t9~WtK)Ut15q~Jptl=Abc!x4=dL5(=M?nk)qK`RBoEs-akFoaf@!(s&N*wZr z&$r9p+IiaylxNo3K-*^}SH~Cc%P3--^FT~}1?t=Ap%kbQ#}wdVYAev%h=m%H3~!W< z4LB52!zs@V)oOQHG?5Ls(NgX6y0RcZz$}vN(jsdJi>#-$$bWVc)wfDIZgrJ;OI%B% zI0e$8gd3q>N7Lnf66fi?edD+fsLE0h4Qk+34Xm0#S1a6kPSe~vSBfpHD1ok4Fm1zd zrPr>_Fxv)g%%Pow!MF-)G!N&@J%kGnb1_0m-vWcKdi}Ci>%J+z1%RP#4(c+$agsao zsPVvx3kjId*?)}A*72r7&sbw>ruEIF9|53MiLsDIIxVw4(8`4^}qkd#F4K12xrW`y(TkPhAs@cESfB+nF&GRexWH*5Ai{~DSlg%?OBNb7=mqG_$@sxN8R6D)43639~Ac$N9uXKUDl2=od!dS5flO8lD zf5Pg!mD5S3;TgL1TATgQRn;9G1|#chvhY3IjnM6_@6wlkpp&Sa|GXmK{IA`SB?ge|1)i zGKZMf7Tykx;Q?5~o7Nm$^R`37aE+7&iUw({=}L-vxd1H%yU25s9G)mY$sIT_ep}-z zkXvhpow&3xAkDFzO!=*{s#|@<*a^*vGL{{>RLn_nB7F^^D(P57RHa_+a7= zb5y*6O>nLSJ}{kd1&Xc5FtsVRe{eb!+u;fn$)0)QgkH3TRYeDX zlLvGilipu;Ou85K2SzGVR}~z6=<4{I!gaX!MAPSe5+}&@Q~c-RHaEgLl=Q*TA@qS)MP3U71)yk;kyW9{>MEsYG#h5MkBS%0e%s;le-w|&WnZ^} zADdoX&;e?b>_$*vS@qa%6lUltoA0v@(qzfxxayuyo1mff)=I11ofpy%F`geF{M6HVsy;xV()VV5046^|81VjC$_j3pDt1*|It z>NP=?P==3fqRhc%(M|L@BwG!BmV0R9#3`IYHSTAOJFZbHzL84N z7A1ibL+4S6E1OBJ_(m%6OZ1Sr#4o$cNE7eY5 zq7~Gju*;G|77i07QWzx6hbf9M6MnCHW3MxcMC z&|ew!xN6-bM!L1Xpa=7%VFBs(m(@l8>ac3^>GU^Wj8WC4f33y<$EnItBoy7?KT zQMf@)TFp7&GMGv_8m+`zFM=&tN0(5PKon^43VwsR8-jQ&m3EDVm8q0w6 zQF2Of%}z)AccbUXvDWuJgiO?wlXXnRzxH`*TlNiNC(SGZrs zxXuG<4b*;{e}@lY^gRUAu>>4dsETO79*p%UTNReY13q>fIN5EKZ02)%JDbf0Rk}`C z!>}C>tg+}u`ruC9_${DeSQ&j9(M|Lr@5+aG0`70gb(e4oHE<;~YQ;BF=?-N4W&w2*3VCsTH-tfEmvun2r|F@EtU zsA5fI8O7Quj1*%%TGhr)Qc#;R)Cy{UT649h=&cyCN`KW!VWQX(DfMoiBq+>mGHZv^ ztPL%pe_A(*k#14QJc)@TF*eyGg%t}~Qz2Ja$Q4rSU564IX`Z%n^HDR;TI=}EA&AT zqK2bM{ID(OukY>>$DE#c0V@C|z&KwjFC(@cbe(*uZ;Bw&m6oX}!9-7VO{&Vki)e64!wt`V}J$6Ya)O zAW9b!8tb;YM86TFQ-0;u8jT@Ol(=}=f6mtN1M-TWeHZ8YJ+}a>(_;(cDA0x5)s)!7 zG~2O!#|oGRbJMax-h~liwb=^eD9{xw25Hk3EW>o@isC5HEv6C7 zr^L{@0;~>QQ57J>`+kT4L|Fw?ZiNtofO40jt-yHB-IT*BwSlYB z!JNAfhk3UOZq4b7r9iqdzBD|ncrb5_40{eJ_QjGXeNa!UA=3F7{ExZfRj1NeR)?q78V&I6v{qtWH{@t$>?LXx!2e~WyQmyPpa zzV8HqedlENt=C+zX&VoTdb%x1TT0{hUvJfX;?ryISE;6kQQmJU?@yw<-=gm;DKAK^ zsJtKgS#gWBAIGkVhBeg6zr1v<@hJLSw?IUJK*Qq@tnk_6L)lM8Gx{JgK zA51t>01>ewK#9$}TR$|;f7}X0#EJ`4Vs>(qM2_b=DcjdCcmI5Snl&P;&c$w-Z%M~A zQlM_m0d=U`UkNq1$ZDF9WpPrtQj=0rqlk(LAF4#opnniF`U)*M9xUTlD@Ak^YtZcA z;V;2i6*wK^bi&mr&i%Ar_%`8)f$G(25y@r*HI~I&eP-UaltuC4f8IBtcdaOfB2l*G zUM$WvJZL)CyvAGNkd*sjcD%5ulVANuW0VtX-;=@=Vw{QvyoR?-=StYiEpaOe9QdwZxup`SF8p}|B;*Sb(@P^VPV5bA8ZF(XpG6wf~WwfNdTt}m;=|fyD zI&Iv^FSv1!RY+pak|tRny^Zn#XaJWc;ll zx41A+r$`e`Dq!vkkBxO<6q$Zx)Jw`hS<<`qxzihal z9XFk|LZ%6;AA+mFRO^hg{3E7>JraJsf??R2uD${*ClA~4Fi0dE!#`R9Gk+*VhstOm zh0P?EudI$fb~SXQvqcp7dpCX(bph&J+E|= z^=%^Urx=*1q%gx?23JxMnzi zk!xu%*1iX3XeS*v#g7W;CZ%O(=y*Yb64>uA^$R|f53Xz#(&mS-)bPvw3J0xfYO}|J zK{eGq{|%Ogqs*u*;J;ktPfr_;C9u-Q_49Er*9?UmJAYhL-wuH`9yYSrs>$#H&-7Z> zaR2=(>gYQQPS5aVFWi7-r|^JxYGN8`(t!KpcBcqiS)d>Lvvd=X-njYGkndGPNey%0 zKqgf8U!Z1Eu|&0W!m=-Abpm1MJPDlP_4e;V9d20l`ziUY>!B0SuALaD(s5Z-;gnN? zW*s|Akyt%P2`wV2l%G>S6~HQigfg~N(n}if)pJBqr?6CON*4K-CJI{`W#|a!q*U_u zJ*CIwQh)wcDd{%W>lw3u%X7IM5CmT^@n>fEs5=JWKfnF<)o~x0%*&8Q>>q*n`ezYEnZw zTAai5p6hei9wnpxGCh^@PC1 zjG5r-4WdWEK`aQC0NjQxJbgv5WOR=-3t4i{+Vv=~W#chM3-B-td`@=^NOkaGikW9$ zO;}>6L97bAuYgjt<4y~EVT^L;bk6^84>L6XoW$WR4?1Rn=hsZ8aI&(nTHA_^ZPiSE1F^$$3j zq7UUP``8lccv-yCO})}eIt!_QrW1?wWL|he{*%!#042gyptR4?1jg8m^BSl24^u3s zp`zbIihQ^09=lU2NlO&B%JHgF>E(=)%t!}O27bTHjuj%F_|kDZV98#I2VvtGgO_){NHY7={fS(T~^HU92{ z;9v+wn;Fisf;ZCcgLvXq-_8Hd zc`VzMWg%EKLQt97&&n=Ym#F>DTLtxjthuyl1u8(EMb;BBX`3h-XEiL!OreSw{>0j6 z$2Y@psBr&^jD24HI$`$qoq^Hd$^y^sjL*(k!;CD?8E(BncfX1gdJ}0WF-QoX59ri+ z9HJL1%VA}lH=h?(%VDn`WohR+m*CIx)YSjWn#ReW2}dg-pV=hlVt8Ss4O+K62XbSj z0K_lr?-kWmnQR_7ymW5}Wj+wivd|vmLNr-l3jZbD*US}$2#WmD;NAVh%o2@-{BBs8k=t8W&0;d$$;n1*K3h3 z@5AmBXE*v-yj>R;@;p9%auntl!)PXSKr-rX08+p88qz#g55n71xM0#Kak8%nOqQAz zUpo57^q;~ujD7a2E`wWWux7*wzFQI_OOsWkl|If%0i8Poryt4Wk)Z2>4MEz;HZd0M zyk64?3nbLx`QuA-eS~!k6PzZrc)i`b@!UfP4tJ=#J;JY$C(GPfwKEoRuQl~$!0unv zlm4~nnG!jR61e!NxTAqDK;lNpLiF*tygNkOX-=LkiZH#S{pVOC7>V(jKyU>d>u)NX&tz41Hm0FMbl9~)~MjI-aJnO3CKShUJ=-h$4+q@f9^e?!+pq&Ak2O!FgiC$TWsVC{R%~Q72Ye zTaBO)e!X*{&OkSGXB$J+rwR5}!^Lyx@jHq@6-$FTYh|c7f_ZINzfEnj13uc=P%=~? zPfa#GLN8dfN0`Xu3FIrq@WRw!Gj~$(80PLDCh^Q+#{8*x!5~D^Qv>3)YA^Zg-;Pu! z!g$|e$~cr~kIN(?@f$lq%$vXD1@Lw5$V}@`mO4+CB}mz^Z%$Ni#&cAozbbrJM311G zIa0iPB0M5hNDkZ`_n1%@0e(2v7jqy$AvnTxMVF>R2}S~s@8Cc77cThpuc5?x+nlu$ zd;v)?c~m*_g951so0=sS>sU&4PkdnI3wzNO6aCvt;>7HeqOzpYUuY076`ufy8S1v2 zwIFovCuqQ!_O{Cv-KMWype+IH* z{}uKY3m1aGkg>`C6c0EP$vH$3;{MwyJd_s&E~UsB7(khb1VN7?Ni!77p%;_witMJ_ z$CUFy+XrwDxWR~Z_QcEigi%!u5Xk)b7j+7-)D8W|PSf#mbHDv{fI)7=!q`+8eYh@s zmQx(cImQ5E*#lsmSH>WNJ4iFgKC8$V3+rmRu`Cf?i(rqk2n7-26Hk_Sq9!>a_Jf5T zNGqc|>TR&$sH?}hMdazSgR9|se63<<3wRv7CVdFDNj32IovDpyet`006YXT1Ssnb; z!atW`Hr@~=0hN0;+r4MF98fHPZ}b@4hO=3@ADGSSfB>>vakGo9rct>0f`7l#PQW$K z^Yef|LzPnJpdU&oHIp>QEMblO^Qeq^M|8<_oF=XYxz%I(RqDjZGiKp+|{nc~L(r>Z^WgANiE9`znlm)Tg zYkEA}d6<}P%WpYR^=R)DRe5Y$Yiaq`RC`eskfR?d3?aJ-alGQ!jy`jw7Jfd1yrLWm zZG8vR{(S~?_8%&)SId8S!1lagbfVz*{tj$KK+tE`A_IQ9CLZ)I;e89Ny-14?7p`_l z#*mEQ;`EG!dYAiz|G_l&S7{5pqnCeO8FY`LWV&zwUs(wuYEoVL>35qd*7oapWyTwE zw9a&=oM%Usu$1NWQlFVoX*V6?mw$`>SED-UE3zK-PZ|GG*v&effH0vfpCIc znLp?x-p-xk1()OkMorTud4Fu$gS{m_G5h*oCh$xzV1a1SLzIjU=LheHanASE z&GN^jL%|w6IpkbD=eSp&pgnvxHC!Mwnu1K6G2y{kg;R=Y$?Xy+)EmvOVUK`4V#1h>N>M!{APQ$ zNpQqX^^lX_eTv$d(76J-b9lxJBZ()4 zHJs+FdRmr3&1Uvzvxif{tK>_$cIb_GE#L;i1TcIJnV0VV8(Ys{-zZ?15J_ceTg2rJ z%qpv3^DL`G{*sb`g|YNCN-sdi9}da@HW(>qp}!qz27pB(BRx7D*Hx`^dI)RMoHaL5z7zsi zuXrw1=qOyq!+f=SzP2aC^g#NgcOWZgq6L&Ke}um!Qon-+R4lB?FDXB*N3~dhLKY-f ziy7|02zMaD*Au0%u+FVG=8tslo*V+WWGEAAaW`F9FrDO^)kswjCQSU!;r|F@0mzpX z>pOL@!eyl&y?4Wy%xk|%&mTP4V{tC~o+~FJ3rhhBaf3WtCv{=Y4+ID|R$Qwi2^s|# zJ_`CNTs!Ck-jUhNf$*SKzS&+AGXHV0kZ%PBC5oN*AxWG~pzZ%)?3@yEc6AXyV9nXp zGDy?|Wmt!9?JNTIEv%8gic9fegrG57>@>3wXDmZRf||6xnDpIps-#N>b4eYJ6{|P? zB5g`&09u|X z&C$Iqk3ALBBRX`6a6$LSD`D#KH@Q!Zz8A_Y_Ec04`=I;_{&>mNk6$FMydC@&OoI!-RpK(gEiok#ye}m2aA&N`KP{<&_A)vR(vCK0=E>Urp8#TlI|7`x9 z+1xP1X1@5;KK+{Osa^3`!-z8#b0PA;Yq?L0y5W^*7u_&7Gc&w^=5tI}P?C9y-5>og zB6`XF#(d-;OF^Nek=Q9wDM?bBs>HNl{v(@wRWGkJ5m?^HK=v=5vFDy79f#v_GPjJf zU?(;B>Z_b*IqV3G^LvAx1O`I?K$tNoMUfUYO;4Xdyx7lZCs>xC>A$jLN2~mEA~fP3 z(WxYKazV))_oJgEdTPB7)s486i-`3d@feDlWltgZ4$_>S$h1VtP5!Gr;bhh#3n*Cd zEQr^D@Zxu{Xv*){5jg@$Hk17w)$&y7Is6>n^HP+LtX8MdZ$kPfrjyuYvuikL-I)ib zun)Cy+IHAQ3U=G^ZgC`&Rz?g3Hr5m`;`J<(gsbDbrmNz}hnOPcr1?hNED+p|lBS^Y z$sGg*YJj>Rlv@CSrX+6O^&D!KHF)JYg|Gndl((3J3 z*zZkfpLlhqEnN=1f~9CmOsN8r<%YxM(&4*$X>GDU$Xl_l!UD!H226#iSdZjge6#jI z{g`8$Tu%lQ`!>aqYZHjn6^YzJ7&qnDG+o;N`p;EO_?vh`d zC~B!7p`jN37jEVe?a0BRE$ZIO5^`V%t3iS7${3^Mmc+4}GdF+3y8F+Y;@*&^}GyS&5Yu}<5Cs_%;Z z?v%o1fX_MDMIsnr4V^)Pkw;EfiihQwJN7_vW0X1gX*Kw%EJo6{PCmA1f@AQ|eF*lR ztB6sjT=FFN*G!m&BL^rbVxA}oRl^p8xzOQorSO{2xA>^&wZn=2X&OBaG0O(iJM4|Y zKJ{_W!!iS%LAUFB;UX3w2HWV;MiG@M1hB$wveATO`|W_!^U4-GSTR2*Eu6CLjWV*_ zQuujUq6HQSAR4E(&uQb|C>#rvT?m(Me&661a}Z8@&`J!oUiQ3_RlkIB_SCrF*!bYl zyC2MZn#tSZ*|8OcmjFhv?b`)YI2rWmlJ{Wyj^#Gxn!+hJJe4l^kX*HWx965*9B_x!u z88i!Wr8p{&amemYi%k+8`7(nS1ISnR%qb(Ao}1EBSTbJBM1=2~%5N1I&iJ5Mq|N%C zDMc*3aqN)1PV|z9QnGVLkH~NPhm?Y!Dxt7+CC*Lh2jCEH^|18=N*!K?FcQ`L=B0s? zEw%K6f{eliFZ$rVbyI9*vpLN96d|<6uJboM#tJD8<<~6YB=g-xg1N8JHXaeO^mcX6 zhk-3{8a;c0Ldazx9YaL-FJ}>W?jMr&0;*|h9cZBsl6K5wvje@@1Ga-Y3^ChaP8ukc z_WU~b0>I}IizN-h_ovSbKk#uFrK9k4H_E|4|fx^38sH8nZY`>$hDv7Wm!z+opkWc zL~puU3n3DUj<$>HR4Pl3#E5vpMpq0ipd?fx%XU{>m{xe$S;HHnw|D>E6 zdI8(S^r@Wj{*uO>?HBMLG0q8GejK2J4zP8I6jnRF;osb3GVk+T-(>FX^H`2}9PIOq zj=ttlTtd=a2Gw!DYm$RMey7ky%69|60a^byFT^v#!V_UL>1v$6S7q=CbIFpFq;Zu0 zrqkCJ%vbSIjb_gs#;?79eC6%~bHVWiqG_#5>YQZS?~Ne-8IzEZ>ng4X(* zX;ZNNo37b2p7zudJ5Uf2P|-uNmPck^aVnCceIgb9?Q-Nej*wQlA0#D(r!MAz!ndI5 z-g04Z2T}Zo@YdDOZmk}wfKMy{lXgEivd%GZWl{UT{}0eBLY%l)PS^r(>H!fOR}ZO@ zYtOmFnRA{MRIyc>UxfiEl?>A38s%%I3l%`1I!om!4hT3iw*MOu8DSE%b`*rxvI#4z zKg(}vra@-?PD8?u0QVF8sV{?0VW%+)%RoH$WHA_n@n;&6DMNw#KmjL_V4LNQgVYR@ z4Tz_zv`orD`4a=7;HjQM#u57PuFzPgZQ$3XtTN}ujJkdwz+d@UU+969P*R;~A2J*3 zSO(zo;CnUEo?%~j9ld49spgZs#SY9Nu8+C8-EVeM{$L@Dor^hCZ$HZ=tdC37TKTk^ zm!u-9Io%baRA^SxEz2^DMP8h)wW8Wzyg&9ZUmXzl|M6~eAflg2(p+YttN$YTFwMEo zi;U;Gb6P_L#6e7KW~>fIybeTV^`GCO z;zQ`5Z9Aau9DK})`{wN5}&{cXHXt0|zD z28UNB5i-KYbeX3o5aEv^2K%tp*6($Jg(SgjZe!Y9v~>;kTxH=pjmIO()0h~Zh@Q)CvST+XaLf)be8OK)e{ z*1lyRFP73W9S_|$vExYUnoVJk=BDCEZ!lzQS`RO&SrW|Toecq2p=Bq=OtG72daA~C zO0LYUnjii3dz9o1>~l`LllPPB)Y&NOvTuCd`-hx&*1L{p;|8RQyf0jX{O&(hh_R8s zDT=?%QPxh8)0M#qmRrAs(d^EDE#*V+o-`M7)Zi)!WvaDueXW6}7+2Vd_kN~XS zYT8rOnz${{=GN@}SrwCOrXO_L-SFd{adP`^Gq7>`>+v&&Vr=jO<;^s&o3V;LVqW=M;wmoHOp9u5FFQLH z$r=YaJJjd#C0Hww;~&*b*|=6*Veu)CtaOqE&?IuD+#(S6ZHj1*;%c%idOGy=WS> zHp%FdvV)KcBfu5h%o~66b1D~xh zu^=_n{ULYMGT_`WE14gKZ*YV(Ym~AEBEzWdjeAKW6}Y6d>*WgAzBZzMO)QROt@l5N zX9iRz3ghD|RLNPX0Bx_T4YvN8&@4o98mT~`FVOr}LGrZPKfnBUtA>2cOum@E9Lt}2 z5DBqtC=t1Dq<>$0Lq)%%J0ZCI2Sd?Eir-=C)8l`3%X147aXZ3&RFKMdh^yi>B9%p> z4=2lqB1y(-%zoziKZ$=cCO-|W^grrkol@^NVGy^bHDIj;NEJs?Gh@YFU5z#6E9&^B z8geT;@itZJMl*eAIQJ8#N>VE=v@=<>ot$i$wT1Vy5~LR|H2V+J`X0{)>ErR(ZpF^c1h%+F$|Cu?i?DbZ~s_co4yDWQ!xzom{>flt>ICO)}9 zH~(-F$&fWA7aCr7Xhu<7&}Mlt#R6?&R-#E9Fo1ujmTm@7DvXhHnjJfLo>ihj9XF}< zc+HNZ*7*e>3c2LF)Zqe#MNu+;jVyK92r7av1rbR0W*E6IhfwV6ZXEXX<3$FFEt1Nv!MfLOHzuf}ezz137m-0}&BIXX`KuI1Rf0J@I zPMdv(TYZIwaHdP&1=FRQAQS2wPR@8DX_?!^0 z@e8wze+R@-FQtoOPYgOk`t}?BW zhTk%CjWelyye2(9uS2Kzd_7<8ITJT|0g$ATBqknkvEXXs^|nN7Z+U%%GF$njl4WZ@ zrv6C34f$4_GOC5iw1W@zm?}3>Ok3do`^8xnd?5wFtwU7iaowa9LP7(W`tF=w0T#t3XW#Gw1 zc{51dHt*NwulY6_1s2A8mltUrjfAMPyu>TY)8s!Cw9xi#_KB_!e<4BVKq@g$MxKIUDXU#7sT#%1 zlm+%-z{JgX)R^_T=FV?<7;50veSsfC`R@ahM^^~d;;VHH#|fNPn7k?d@Y2&pBF-T; zrj2e>!$oA|KkjytT0|OuhD=SXOO_G3iujp2{VQP=4#=2>;VPplH;|UO%oB3IP7p3U z?-vcynv@tQKGYAq2<~NEhwtc-AHY3lFUd$~ChtZ8R49*s|FWOq&N=n$rv*ebD)Sfs zwrj6X!96ZZr&Pk#Q5V!eW!M%m^A(6v))N~tp93nE%{U7hRIXF^ ztmKTh%E$N{-X|HOZ!`Tzk86CfVG}qYCN$0Pxy+2cysaY0YPa~lexO0(kd2nrU!%_MPibgQ3doDW09xS} z4PKfIlOl1181$*m{yKQ3CzGUt^X5>kG;`77|2*TB5Bio#*Y6~=LN{-!dnJs1dLE*xtsCSmBLs0*eXOUtWJ4r`YO zS_IUdgj<{1@m6}R0vgiO`&jfWO+8r7e!Zz+%_p>~ihQ{-EGOJ|Ok{2i%Vk<;H~N#E z#)5y+CaCg7OBK|V2_8#`R&1Fgq9pi&YZ-Z0-6W*dFPk6bl{josJveF)$+H5)Ow5Hf zirQxd1dPeY;|b?_a#Vs}RJ4`i`{dKX$8SbbqeGp#!st})0SF-wjb9cN0a0oRf5#)b zSqv4*zWC5BmHue!oI);|Y9!3xrnNiYS#}JGPk)u>x{HccH!Az9?L*k8GauoUW~)(A znO5WH{dHvnIdNJb%bOr=7*P0*VX4ecnY)Z@hex2QuBw&ldD)XVsO|3cuiyUQCJ80MpJE1F24QF*K)oBDf>vCw}s%0RYKg4_?F!S1;u2UudXlw+gQM~_Ol)9U|n zW3Wf^1A;A+O=S4LM*?I#6frT`-=Z*kU>Cg~eb%rG`dbFxm9{D+*G7>Wv4<&%)QySF zrAPAS@0}=W?>0KeP1=)&hmY*kb9GdTRZ;6(3@0e_)Ra-fM9g&r$qK+yQrFo_E@#>y zN+dH|;)h%MgJAqof7JZ!?uc#=+;~j~_gAYu0sNU%%1mQ;n?QAA*XWc_bdTOA?_%YR zfoZ00$#59(Bd__|M^wKlJ=NPz(JW}gm*!=#M$9@OIWkhdc z>+eargQ2+}x>1HSTMm+46l7Z{XmX+l^EqH#v^By+E>8Jm%vKkvU@17~q`4d`Ks%bc z!phM8nElRUv8y*=n=bpz8XLdhWK?SX46DEiv&!8mykV58%%CL1I%yhHlx%_)a-dF) zT=-iqN`^*DKD8y^`F*1VLWK0)s|Fu!knxxVKeJwM8|)YMPZ8H2c=+RToQCl$njAGm^W|2xjlluH4 zgC}Q}fGkwV&6{##v@4GTpcSDz(RuC|C`S^IQPVYmfCs8@jIZ+s)xB-RuJ^}2P!#hv14=R=+v&<$p^+b}P?r&W@>1m{aTv4s@jU^oXcipqjuLd)13)Ej>WHsY zXKLi1CSrvxnP|ZQXogctL$%Kc|Ai`X|4oRL%$EI@O$=ko*3Xcc?N!nUZKpK&OL0mt2{Y*)RWD9|PWbklj|D*yh-7RQ6+nzJZtEf%Z6TJV z58|&|W|FbMI8#NISU3fpOpTe>iCxFP5-oFO_l_^miYXA<5$l$j%4J5u+r>2H{OhRm z9c@yjy!01z;Qc@rW~WZNyP|AhngZXH*=HH{y~N`(($hnUB8y$doWc%Uq{n4Y@bmP@ z@sgCnnvoEnadj_ztnWi89U-4RM>P#NH1Zy%@d+$(kvVRL^>aK>Q%KqS>4Yr%dq(FT z-4Ze^z7+gLPsz191H7e!#2A#;J5MTWS3e%V&~@&qK9qpSuIeLhjeFqx?AZd0GA)=K z3t5@xt!EsrIUSJYj5;b-l}U$uxhhV7L@1U@;5^hUvD~82PaDN#^E43{G0bYU7$J;< zE-}%iAHRZGD3X$JjT#~@;2RU=uoEYGc*n%uXo}B_5oRY7_VNn2^`DT?W%Ca=wAb}Trtw;PzY(PV#%stRHVk;p^by^A=i&&Sm0Bx!q zT>6BE3ZZbP?Zh#zK6g-We@5{ju$9Z>;TYTJmKjj{&3afF50VnpgJGmH^!wXr641aq zjcDK7^%=95kll(EqnSObsPqt{DMTAfu^T-LHFWLxWI0NC-}kLP@pJHH^iy^%jds|M z*xdK?85JOirJ2#5IahSXry$}21ttE$B#it^Ol5SUlK31vHw7~$7>xMk>%Mi{2KR93 z3mRThkcWSqrnYvlBipR(xR$i^Jp8;WO~fbTtND6m)x6S&rD7%Nt?mcoKiMu$4J{+b zOz*U8$;to=jnMlbCuqdx7QsMFt-%VaQ|*SL$ZLQQ_NcU9wcEM0@#w1D{F9&d!T7oq z$wO=>|8FE_rM7xgWF8MFS-v46+xffizJZ?rzUpqrY{fxIQy0>&#lMRq=Ibqjrlh#p={}5~KYMBWa z#8K)7-LS#byq4Oa*T_4gb3FG>&yV&){BDic zp0B#xa&o8u71hI!Y6aIChj=E+>P)Jiy?23b(7DWfV49&u5AU)mWB&2u9SXnk_KJ#j zuR;WBMW>?i348HPCC$6oz6xPX-c=E=AA`>IkbFx-|GL!8TL&>s3j{q#S@R!P`3JC& zPr}Y+)p~ci7WXQ&8#~`keWJKXxfg zKi*nf1QpSrE$@rrq8BD@D@4BPa(BX;WGb%pID8Nj`E77UdLuBY40V+0JSvG`h#l4* zZD=S^PHWq2MkZd~QupJuQwLmsmmgR{8cMtQvn!0l3m>FAZ)kuM+*CTa$ByV`9aUn- zeo~4zyUTy4%wsa(lWgfR7TH_9c(>Ga-BWo?$12mxe{IP>V2&|%gZf4Dchdib0S7BL9r+?_UVKE!Ex!xD)Z9A9pBwDH@c ztto$W3G`nAuFnR=8M?F)6X>hw$?zvi?yDbd{$TKz$`M@U&(5#&BXHI_aT2s=-_M|q z6zfIH{>r#FGuriIRC82vX#hMpvBj0t>s^AW2I3kVI&-Y=ChvEsNO0KCl@3+o8(MR4Hwx^vYn{ChLJl~FpluAL{J=JK? zC7%qJey>8m@hZ@0+WJ&bqDpBOn|4?1J71gQ9k$MafOHP>U&yH7J_24rmB2ZFP^DKr zqSK!LeyMsU`2w`+ZV(W_3v-$3GL8jV9QCq}BzYK>l}@!Jj`?9y4{P53J^SEpumyc< z0)kq1K(DyB=_0l?i#>U5u;-h`7mj2-wWNL1^>cLo->hBgS(YiRX5GQo`<+{w0|XcTWqti>1i|5!M&a@4H&O&)H>Wed8r1NDdq)GDs*B<&yOtb}w1wu$VXmI~+0@v_SN z5Wq~f1;^q5@Qw-v(glRHzkkr#m(Q0Qu$y<;IfS=TZEOi^D_rs{*0$Kiv!NFoHzLNu z{0b+sIU2|~=Qou3AnRIM@Kv)&T5Gls&6Lnjy=k+e%s))vS>Kih*b+9nqn10n_@72e z(kcDKs>QISO1!OiCl#NoJ(*rB-I;R1Sg9WIjf=bh+83faZG(!SiKz2dlSX_`79(WJfc(VO4O<)?|4^X+H!oj`_8_W2vbf=dM5^#+Yb!?#}Z1au2Ny2di~ zOv87q@($n+NJTiTiq5()jIekPG{4-YJx1>oqJ5rQIp`Fu-F6x~rkb7_Xykh*e^x+M>et4nD@b#3p-i$i2iR)Ic*<>~vVq!`? zC@WUB?L0duSDu1+=_X=NMf;f=V)B-I7m}@h(};lQ!I#-p2zYPKX&>YMW?IxGt5b{z z>M6BDNOqW~|20xFI^PdTLj~!!on=0>=AwcGGm5#u-!Ng5C|{9De`3#dTJ3a!L@D`lVT0s5qCPHc5Fr<%y?G)3jHOqlt@le92E~Hr?vVe;WO! zXk+jiOP3klzZqm5FjUY2pD4;Bm%97-<|;v}g1)w?3SiZA_}6WH!_mE&Ny$f>teryw zm)~E6&zLliljITD=IIDCHgq~+>pFpHZ|H-u#8=^DzwyT~di2I^I-)P}TxXx?=fayX zo;%wyouTepC4N^|cEqb>xzcfD>U;hJvz_J<Zbd-LVlwSXM|)4f!fNN0qtCP(e!7ZG*p@J6;8mP3)`e+gTReAapTFC%(mCzz#o{p z@RfRb<4P7mtrMCDh3Hn+2~7ewT)rRrzmt&;%+jU`=rX7Oa_)DnpZ}Em9rXL2*c3Ck zRaT#mYm^_)ISs$-*-7dwuBnnLQh_DG14Z>=gu_6zBzYtv@_t^ba`emxg<%t{X|Vix&zw1h@_OA2 zQgB4BxQAh~_#mb0EA4B#L1;1~f+XHH4Pu?R_?RaUw$!s5ev(H%tNGKFPPr)ZES3m<7rad%7`#kCMrE2_orhBUE$*EWkDUIWMiJCRK z@mLVkFp-E})-NDnZL5KiH}k#SjXS>6O?044lj>Aqplauex>{3o22UUM=o{;B(7sde z3wJdS?RKZx#v7at>^?GSPZ>s!`(}q559)zig39r(b4R9aWqiIDjBN`5XOi32=Qs<+ z`|G-}nTExJ*fw!=@Tz+pUA6jO*}LKGDWdBZvAy@slL^2TRT6a4!QC-9Bj_We+#dek z1bcCvqj|5eD>GMYFHKWM&)<63`;R_uh)@|?oK2Em`a}{oDew-H*L}F%YE%CMdr>Qb zouzV;9-HB5^QPG;*y1GZd}mEQSn^FL`>E7R8`GF&luxB<&`!JX8?69uMR)dPQpJxq zyjk~p4|$;a<(BK{Du>Voee=`%BX>=>aAl;b0>-lEPG8;(zc8l5(paQ$M$MAY<75!Y z9cEkA+vp+UlmY*Gj5+eeVKRdix;a0Ztk(#=t`3Z4t-U%X%ruEP$liA9ob3cm=p;c@ zZokj2p-pDJo~H`HHu^s_`4`b&B7Bz5`!RNL1`bo+{&;=f$(8o<>1P7hZM2;hDcvxr z$&LH|pq}{pm__H{s*myl>iyhw#M==VhN4uN`HFt*GG})DTuQf4@{aok?gYgLNhnLi zL*;|*MSP2nEmfcjE33U>Sb;Fl|151-mVW?G<07Z^6U<_)I|b` zw?0Be$f%yRBecKLWz#klH0oF_Yn!pt*1Op!IV%1H6ltTj7rHfWw{OTN&!cL@xi83> zIa6xF)ZzvdDvlh9AndmcH^;2dC}e$dg!(%27ha=#>^(%E=qIe`b4K?HrUO5=(KZkiH3|n`BVGi!!rzIZ_@1>li|1NR8CCcuP!8Fd(D(kNu-v4wO7-BI`xr+Vcmw>G1UcY^-ih?hv)6#slboKsz zYpetEIa`h)y(T|dcTKxwrNBKE?}3>zwh&5AVi@#8Lov_6f}`_`slalxpEyhMN#vCyk#bZ_<}`hyCM*G?fMhI56h&krLaS>kEQrN*>ulJZ^kB@ zj?Dwp&KtcjQ0CDpy{g2}(+FKD**tIgHALrkJVE%+pM@Ck%hJks> z_AOjCIIC18&NC)g`M~p1NB8#+UYvH$i{b{$e}AfVpJ0zUW#)Qobg0h$%)2>J;#-z% zB8;rJKH*FLlb5h9>6r07=xdIzE7H5Lz)DaA7G{n}bG@bo+?oZCw=FM^=!6fe3VcU6BJF}nu;15!=Asd`}C?HoZYs($mflo@XgmDta{dbHd_9X+V1v@p|{+2ufd|AL7F9Ut=*mwY2zo+{F}+HED`L8hdhQ?h4lD)QXDE>&l$Uu zG@oUfy`ps3+xfdlA`R(%O|@%CswCVVcy@JEFGm0^L$j`*F)O_p-(CMVD`z^R@|b=0 zC4W`SD)i#KGC??Q_>HY|%e*a84Og%lUxl`eS*o|nSkRT9a(LNT#-!4tUfxP-a>eUIs&O@XF?*{uN7NQM=A|DE;M;%O zY4Iv|n2a>%#N$iL80ue+3amfjPOpmQPw>Cx9vbF0LjRS@X}1(rA6Dx1vw>To`CfT4>P2Pp)cR= zp*#0lPA7?M{Dw;1v-v78@$G0c0N;ChTu43cxoi|atLHl{9L}h4f*^aJ`=ljEI5`a15tNyiLMUoM=RC}o0lh!&fezYO9a-BNK2R#%!WgdH4ms1=PrG(Z1NaPPf*h-W=s zvO3$}$5pTp%2oO%95mBPEA!mo=Mc+>pt#{4cYtAY!gom3n5?VNHpp@UWix)ea~P;_ zN(JZNVT+GO!&Y(X)SNc)$Ju2}ecGNCdUbocV$t|yd28X=T|}1^a14!|80D!EOi9_5 z*4Hu=fHdjApuRdxc3;m4!hRp`Uja+bWccGdEK;$ypc`>PUeb0R%{?rlR>_7Sd)xn3 z5+Z6RFcU?|d>U~&ezrQXt8e!BWaR9>xq3B=vqk_ZoaE=j-Cws}-Wzn^`;mQe{C@yj zK%~Ed;~G^TysDo6pa1p0*B5_=%Q1!f`q4kH#|-W>oZP)?h;_#F)ZE=q%HI8H{_ck| z`1}FIeYtYsFCXyRNiz*4rQZV8ZB$Bujiy0#SNji`-I2x)5fP+Ki$q#m)P55 zfT6to4o2|(liPf_|KVzrhs9$Unj08i4sdRe@E@%@V{cxu)`+Bs~Xo*cmIT{S@! zulGqG&SpKzv!C;)lU)%*(f0MtEoghYs3FSJ%yn;1|1Ij=c{8vm_r0QqK6v>adTpA< z)jNL$Shr}}?%MjQZtH)W8tvUaTf1i01!r}^Gfn<9U(Y|KhX8{H7{PGBVYy1{CL&w! zfH+^bo)zm7V7WCVX8$N1ga%@FHu8+E)CW>6*rB&s#mzdguzdyBcesjI>{ESp1at+n zO=s+0j_`#Cuw9oZcAZ^(-OxYvCBE)+hetQ1awePaT5f9(Hno4RYurCd_p>fml#g-j(CHJyxpIS=6il;JldDHIa@r7?wQcVGFvqRFYr{GgJ78SPdHX-!y(;S5PYrNUowUcfu<4?r z?4n(4$bIgSNDudW{XC$P7TYHfCR}^~S;7=(4pV@vQh9&0HKhBiI^es8Xi*U@+`7CL z-xB@q0_p(9t0w>QOO;{bmtRn(p3|z_6rJWXR;ss3U4a+-YwG*os-#|tc~$a|kH2;K z7~HPo7694U4w**r{aOu~bu(n*-jF$zlIuI+NIbDW+7a9??p7nXXhv|cH-d|51Q*Q+ z{?nDiXTN`%$A^!L#YGdaQ?$}!e=8rf%zT%&;2So%sV>6ZSHIh@wy3JtNw0={mjiz8 zDt_92ulOk%ey(A+k)-~PsY-RjB)4Ps@JsEMX^Pq39#~_*rylhCT?q2h6B#SM9q#Vh zyZhCi(7w{`-0VLA)W=~n1e>bwSK#TyDp}twEz*DL{pV&~z8#dK_|Mw*2$K`vR0$lR)t%Ebz>X?ZW9`KPL)qgMe30AnvSoQ#Y5z;F zmyds+(rUJsf}&h|e20XF@ptbUq|Hr&dWaD+VU-516y31G)RB5emVQ(R&!UM3U4=<=kGCZW7)<3^66vx zOV`W!{pvn=)1nu3iQ?xSdaE?P+MyT!^7GrT{?c`T{(bi5xD6dDyY1+18<0xZP5SqN z{Z*%81FN?7@X8#Lvvav9NAyLV!VL`Sda3g$JLL~8cJ2BdVvlS?(^>H5Xv{Y!`)_}4 zPV-$~y#DrRc())w9B>4MPmJWI_`qg%7C`X`)qK4!gV=+{Ky$hrQ%!9At6SMw_S|8V zr}!I;HZ4GR-}6l z8vxRNuny*+F6f}P->5dtKocE#<~#F9R$5T2v9h4&H_` zSiyA+PuVSX>iF^!)~s_Q<&S^ulrCz~xzKWqlkFh3d`Z5PvM!pQ|o*m`V3r_kNK!&2hhfRMA(`?A`W1x4+K8cB*KX7kb_uyZ1=@UB6FX-xhwTV%JpphB0nU zsVN^yy?;@$456_T<9WHqTwO#iulrR8O`7u6iro5YX79s?<+9y3s#mu#+RJQ_h8VGf z8*}%v2C5Pe)%gSgs3?J6_OWq8>oC~wD$TZS|4rGVig>Xj{_=ki?l#V=Z@(j7ZDqDa zXB~N)ut_Cq(Mnu>Vy2b2Y883?=LqK#t&$BmfQvFQ;$}Jce8-qJmmozAf;+KoE~F#) zp0gc;T6FO7X3z6yyd#~aY|!pgl~0Qnzh*_rAV{)xGm;z?V(*EpRh$=)i6a1 z(=Oc4zB~;K4$B-xaZ?35J*dS1(GBGaf z*PNq&KR=AP*$I6(TRv~_Ld~E%dJQLcuMZ=AcA_K}-|v4Y9>x0XMpN9CJIndrk<+U< z?H(cRa@IX7I)sx;`+dVXy0CY5?N@$q@l$n?^s+d$Wox-=?s&qdigP>#@^58^w@)CN zW&DwUD>Vpa|D09gf02p%PT}%;^dlzjUX7S=j@Z1ze51wJ)nth`vj1L^EM7Jw@%`-U z9c1;sNf3XyzRdI9twJ1_BW@NRv%7bv5Ul zGlP%y>v4*Uf$Z++{=K4G{7}<{@mkY8E;MTj&6+}&o6uY?+TGiotv}53W+#8wG@wbu zjoPK6TD(K5#WyY0rpT-kN1w;LHAa8#Smt37299~f1%WS1BDlzh5`a$r zmo3?I!36d=sg$Ez?2XlHxT$ocTNE!!LdCn1&`%Bd>gnv=*`rf?T(y_b2P>0nSZ=SX z?@)>grKnL#QwULt8s!Qt=U496w7DwCU-3nGVYBh!(3ppH-}oDs@uqq!v38$xn4 zJX+3TR&-*tK%}NwDJ^osFsoVH9ElRqFcZ9*7L7*ZjH5got)w$KBqK?J=S(=6y`L71 zF&Uf+ia~3F@Xqt(bB;7J&Lj(RVzj`d7dC$i%Y$KAIieJa#0l!MN={9U<^eAe8WZ7? z!&f6V^CY+ko)I;5+oBE3aVe9NgeA*7<2$DR=ih_>@ zGD+>UXo6`&xyJ~v4E``w2x;NJiIYSuCzGRPFE!)bBpHpRI%jNSbW8_LCLRHjb54JP zu}OFu1a=^gKwGC6lvj3QnUsz?1^=NWB%M=o&RPQU8MFqW6k=L5C0OLjCuIcHjKYvs z*s+;-M-2%R_oOn$Ss!zBg6FJ^_rieI@(EP3vw7;ar3C$#9Px>XBos|j!5E;D5CQ{y z;t`;gx6!~5_spvlBf&7=Hjuz6!#RIvVl+@81{6moTEORW473VH8BdwR;EQ2mG#?pd z&=Q^kcLwHC7ZsqnERB$1;t^nI21z6#TN@qD-_~nr7_kHfJBfN?G?pb3L~@63%tEjRbTDN;gy4T1Q=pWy ziz17Otst0kzyL}vO2L$YDVrokq|`9nVc4aK=KzIZ#@hS?yWMFbhnJ z7A@FxoJh(Nh=w9O2%-qsT?FPHnAE35%ULihjfJ7@G>k9ngh7>}z&)}$-XbMm<6WBN zV*U}Gg4?`+?^nT1<)YkN8?6CwlYohB3Qp4P0G?}#xgD&N_la140Y0bZnadPiM3_Va z(I8l40szak2}W`oBS?)E7R*vAwdXW~P^Ad~RANyZ^k9jHuJOS~uu4I{2N&t>-#`Zn zlY^3A#1qZHF;NQai3Gl-7vRv|K9UW$DUl?=J76&o3D!%NV4)dsE5SOueV};`$}<=b z4jluZ7>pqXb9e%OKY^PF*8A-M!cwUyj5HYqgPsTfm`7<{z(t1;Zw3f9$Lzr@&ym3- z5CoWBK^R9UjyFSY28iGqf}H~%y<^lRT(w|?aWL*87zzA#09+anTxH9HRUAeG1I1)P zpDG3pz2G+kWC2Z}Fla5%)C%0_WW0buz`zmI>86pq{c7cZZZ|UCZr!ixXZN^GlMumK z99$(4g0x^J!Y~RMq=Y#Y!ONBkjJm0Cm~cJ_4WlyQYLC%WM=orF(UUl_Vk#WY66b^| z>R~d8Hc1l_nA{{==dFxCrJTIb2AkjOJI&e?GW64S;!Y3O) z;5S+Wwiq~f+GekDl!CLK89encs;0s*#84Yx`e87CfH`r?2oxL^OVGffli@hfGMr{y($>%t%>sOX54{;+B6O4Wn$f| z+~mf8xv+!dxntl7fk7Ul1#6Z=k44TvpJIQ~JQd#AX-TzoUMFptPE-*x*}MQwiPSKJv;lcw!3IN^ z1wSqZ>1^V+v}bRVyh)CD6TS6vyBd=n>X^p6gt-tf?kMK*n{d~Bx@I0`lLVU-W*cyS zeWd_%hl^x50pkr69QQni%<`WK=D3PcOUpHPlzA{H6w%axY7~Y!7R8^-jY!l-qlFeQ zvrtM2x6*40mIl}Xp5I~*{PkJyv3y-Ld~>bq1^d{?-i2O zS{e(gkb;O}vf{+(q+m8jTtTN4pfHuN$Sh{F+Xz_kj7flLVFn94d!%rOm< z*iC0?PJksM3D~++QWjZGio*ZmE)fybf-OHO7z#s1H(o^}v(!|Cn5dvcLJtcytp>?K zstC@!Bt$@8S``_|+8gCuP(1sI!8Ea&83G2d!Q&VahB*ffLIoH)H@V(_F+DFI-KxHy zJjL`E)5gso*Z8waO<1Q?#gvPG5ZQ7S(Zv8xjtVfIU<@(h91|)Lj(Y%7{c*@iv6K@b zHZmrC4wg&YkH(WLA_u3ZLC)LFc9o{2h5OGo2jZw?4rV2qa7Tv9Of^_q3D>J8hJ%^H zW#=^R%XmkLWzN8-F`yuS0=sP&?i5_g(Kv;t`M@%l#u38=m*5=d#6d#bG;q~jwugs0 zk1+f=ksWG6(&e5wd>e1@3^H^nRaPd&gSJMa4=!&pgqx%E6OcfQouptQXe`Q{j(9vY zQSgz3m%)O67N$X=;0owSjHICS1H+wg9n%|?(Gn-GN}D1w1TIObA6ND(Ln*rT6o2o(J>o`M?}DcqcG|~4%%!0Ak40Amon~(+C=n&_R*Hw&&r%p)4(z!6$D;pPs^m1f^FBBlm|8bOnBRunZ9YuqSc!oxXw>!Yf;kc)e@R+Qewq>?FW#>|e z&}kxzOcQD z43iv}F~O(flY;q_vViFw54mJ+Q=m)<3j@u<^kW==>%3M2%!SIFneVkp3jzX(sp4O z2QaivVA60C${kkEEXmP0vH+>)$#SEGFp5V7vp%@zQ(^@?nhhS4 z!-M+STFPOH2TMM9&bSbh%3Fx_u*&=n4-Y3J!(K@S?N)6)!Rbl!J@UEP+wUVj@fhhp~W?;ELZAa^esvaHTAz3M~-{s?Hf7G7VsA zB^qzK=W>9ggi|g`)YV>z5E8d|BqAt(u#useX*wk5u}zX$30{nV`A;w&HHCqS_ZIV%NHC-V0s6_}6#+?t#Q-lRDeCP_!7L7uyfH~f z@M>uSpHo^U@usEW9>y0}6MmYjOv&$C>sc(jV9b;3@!aStv;oH3C>F& zP(s@@b0(-W8nizXL|70k20pCLB7h&3CIzF65l;!224KKxNrlVWWGi(5{V#92ynGA> zE&-T_@D;Qao^zEmhR?8IHF8VTP5%E$Ft9(A2ahXxNh0T7N8_T0=F)i6^mz&_M+qLe zV$KOlDPCd--qVFmD&(RIKyy^lnc zGshM7B*6;;jgau9v7Z1TdKimkytOC3in6yOfI~qz_!=~SIBFftKhaZV0+>}1Jnx&%Mb`)l?`jjpNCLVf1qo&aOSlRW zEu%M$>>5F90j?$iyM-7TC8ybBuxOYtxHfT<0&}Ht@9>B16g9sCn+3QA{m?@ z{Ni?EI7&!l;61v30B$}ZAfiSv4B8^JG3pP1V?x82kOE^*aWK27P6iyWGCXhQQ^SF4 z4?0&91A3fs6$}wnnCz7X$I|Di;S?Sswmf?cT_{7KK59cW;BuyJx-)+g4r3Y+>Qlf& zz1jzisEM~D48hC2Q%fe}S}=;Q(cr8w%ilEjst^2 zPY>rX;F7Z7f_i5$nyW2c8OGtyo6h!}f`blIoG=Zl#j!+`NF>snF*<1yplqgw!`an& zra)f?NwedB88=QzRFZ;+L#Kud+DcH=ju}I8&`~F=c@6@Xj_gfq;V0pewk9x(!38n) zDkx5a4hvYpDtkM%sHluVQY;$R3WFRcX~6dKiU>zNnS7XQ9*mJ*DHV41C1?I zcEL|Qn``iI!6Zx3GZ25tf-@21QX8<@2>2`$!&wD?c0J=F1cE+H0z)tog69~Zl}Sx4 znbxYnKpA_G4FlFcSfW(IhszWrWXCiyTp6nnEEI5Om;n<#Cks;$&)IST)8Evhf(P>O zcne0vqhS2OLa1YGB~~V@e56y`D!A#I5_s&|Y6)ILVqhuJ927S`Os}HxlwoAdMlP)|7)yjQ zTokp?kvW*Dl~`0ED9oH8h$j>VgTsvq!Z`~Htk0=cbf(I}90$T8(HL_cCLwUbLohmH zFW&?g=bKyWmjTIf4N8G2>WtP*fW05V)zAiiRIR?zYxE;Lj_VHl1KOk~0TDXKlwhLgxL_uv@SwU$qA*_s(5%z61dTEQJ*Dt&4;T_A zvFu$k1Uw`V0x}IqkO`xDWCP>S;4Ni;1D*;v3@PLrqX_RnG)ctZbweAe$Wg=y{sB04 z!aJB8{4|5nu*ks#q8M#Z25`XxC=&@ok}%BpHBCzl*a;w99OMaCGBj9qFhb$uV0JGx z5s1aEN}ztD2qsD&lgC6BlzS6{6KWC=kR>$fDuo!nJeBsQOST_B&C_qU)-TU*a4`8?;Ms%42kJ_J_aID#aT^o2)So+Y~1N_6e04EEFhv4P!HUF!Bvmi3JA#pTPqK%`hoe z0>6cmsEL#o!@6fnb(BWpu`hFfQ#{BcEJ|rGmV!eDmIe>Fau8u$!BiS^;)YI&6@>Ce z!9)XgM>0&%q(Ps8HR6>A8)r%^rlt2RV_G6mOCY>>wMHdf#>;m%#U?(+@_2Uw+Q9=x z2g7)13e6qP3FeLSlVZVa%>^`oWUx!XX2y6-1cbtdX!K2<-w_r}Nm@~Vn?M87h;~or z#LH+E7;>luCdI;J02&&Ww2MJvOjif3RKg|^*iEr;kFkOSElv%FVyDqyh^vTavvU%7 z%|A?uB`CNtAtk{)Q^H^*IR#UEQdVOIq)Eq@U|^nrlR~0Nc-epnfxFP)PD_z*i(7n* z1ycYFUP2gtt86fkb;MYI0Sb&)bJJPRBP@yQL>gnr(ZD0dOBc>4aApO}mN25H#M096 zXtH&Z3Y#VLUQn24%wRACN9>eXhTugZg9}wW1e!4<4#iAk3D-Q>r0p`&gBgRfh{ogw z5_D7qZ(D*_lR!~TDjT5UaVrwUfm<-0z|{b`6yP=~FmY~6>UxZSr75_Xm^j3F#heJi z3d6wpKO;&BlQ7a2*#9tkgJ&*+zXpI9ktt59H}DPur{H9uv!=>3&H+6e%Bj$| z#nL{)vRV?xC16PA4c9KO{CU<+W7Y+g4JgG)u>!-D z?WhHZab+VIaoH+==v0vS9Ob0C*MlMyj2Q`TJZ0J|Jj@zh;@U~C!=yF<5SKCXaw8WM zZ#FjKIY5kq9Kpbv)IJPc3Le0ov0!Nk7|)JMaE}x^L;SXw%g0z*M9CP;i$s~sxCLWT zNv*+-14Cz8y%9y0&fp<9sRSr{O~BA#fP(AXIZkTZz}G2%uSrP~rAW}9K65a0oUlx) zq$bt#(PM50ZY>yZ%HpCWG|K86NS0LIbc*m8D{z)TQKgKl*x(N`hjHaWQ<;G7?UY!U ze}Tf3EWxs2xPR*eAqIn08bYm`)OWz0Fy{p$86%8qW6=zTsl}QUO`Nt5QRE4DTX@i$ zgDwOplB{xn5hMg&++=S&&le95%jXG5l*ymGV+2G>3k!N6f+wn!^Qcq>NVS>ZU6kT@-XEFg2l# zN?DZ*rh$Tw>jE_v?68SYG7b&HpdB(;PE^bpZy95M@;?!7GfH+SEG4jm@vIkdI)Tk4 zKuiM*V7+ojg`Ef`hY-2Z%p@U!u7;1!yd^<7j>`tqpn$EdS&T9ViV1Y^X4INzqQIw;;N!3CywNa%=(PrCGf&l)3^qLR z80I8PG(ExphflA$2fLm{Hw_9XaD&1HHU>D6GJ`4rkq&qO8tkZ>PKb3;eALk!pbHws z!z3)3kVY!+qeTaK8WauwA;Xi&kp+y~0g6C>fw!Z)@F3#1Eq!)SV206P5HVh6YRn3g z2H{0{CP2yLiFynSbKFz|se-{7bOJL8^9C6iiI6f)H1-Y2UX;fc5@;D3Lox<)et~L( zG0CSw!L#BRPL&e$KEXT041?eyMh;3KP4x9m7Px(jw|!K=rBpCfR8Y7<@9`AMR4875 z6GIZ1p({yV}I&)JljIB~-!Gdh)>9I44X2+W9y&auJE1$cM>v`Z4V1sm>vqJVHo z0uwWpLR07{P|X4)TZ5~WZ##e3K}nQ@+X&7}h?G#Fln1>T72c%w$*ZYQBoQ!2vXnui zF^bDF1pG+wk2wfJm`KJz;d>GZcz6=8C8-FX1aD(<5C-^@O@$KSTT{%Kf=5MQ(zlWZ ztGzd#-?%W{LBYd7Tt~bB%u{54nRsYNWCFugC_a&f0rwqLBj#IWFcvYWnJxplXbL8V zxhaH07bRH}eFBqTgWZZr%q=cQvuwcXBe!`LH|Dcj*QwlyWg1*|f_KR=Pjn98q=3yu zB8&}kn{ z3V3voKxY}48ZfstaRk3Q4PgohFgCm?Loa}SMXd_z0+fZzmMeGD71#zsGhChxK2h+g zJlMV9L&-=*bb`VE@hKpGKq-KvYEZ2(RXBsTmCq_UG)WwrqN5D%C4w)_@K(2GU|EAj z;w;OcO9=^X0to9cfjNut0g`|j2oK!x2-Xd^@RCjOEu6HD;R$+%caS|N5<~AwjVA}RhI0HR3#pre!kG7Z?qs0Rh;N0qe%#$SwSABV!0wQ3H zR`8J(;~>5gR4pS)!RNX!H+T2ER{%b1MALa*lsJH9+ z;{9Lei%ojJDoOwKaqd@cHBalN@@sgx$}T{`nNOSFQd-RXd{LH}Va~SsV~Vri=9>>Q zH)}$hZ)Th2@-cjH^TqlLECj^;{BgedTs*H5hQ8bsEs>Ld9KmOLeEe&48~1=Y7}DyY ze%A2yW(7bWxAXOUlMrLENMTcKmc^>fZrn%paT(lWL$7RhL-b`u2HUz>LVK!A$+N#L z*P9mN(>g3;Dn89!vDqF+%@_*xDt$_iOH4jnbzTkiV@VPk1oB$M^qdwkEdq4YxQ;uI z`?`9DxX^`vMM-k@Wlge#{aAqf6nV9LDyqEBSALapmg7r(l&vRoJDR*?irg8~pRG5|mxL|k_x!hI{;7&R@Hj}-lM1RMInBLKi z9xp!=rx^7*sPbwMSQ~gYjNxsrYw0Eqey+mxeP(%rFQ~kY!GrAOl=b!eChkBGRB)JU z7!$36olP=c^H-6Fv5OTux*3B$NL;%2JY^2U&uBbWCIt=f?XKbXVY|UZj+Gc^1`3jb zngn-K3fz#+$#~o-vKnOhMt|~N25|T+I0Kk>6wO5~HBla%Kx?4|H<2+JBh64&)~+2S)O%k{b8|iw)TOY4t^1x!b-(S=3DU=O+sAB3@1~Ie^XzZ2+_k(EH7`ZO%WZ7FPk6cN$bV%V$Q6icQPuvYp)&xp z4iNs)c`gtcj79R z-c?nre|n&vKP)%P1^6_hhQwj5b7SL8U2cf<9nw58TACuGhs{ZTPmG_2-@bu#Q=3K) zt<#*38)HXY+^EKI^`l z;k!YcUB|}`bqK~Yco_59Z_8DzO!@Tt^KtM7{j!)r;b7vE#Pv+?LzfmklFT!5f=3bu-SgeH)w2%;CkGhH~)^DR)?Jip<&~v$Dw8Mr=OJSAVg97JyUU>Gvxc|FNX@2B~#~W!8Dz z>GLB7VJPDQg~R;2O_=$M^UK*vdjqT-(Yunvq3_?L@t48#zBJ+VGjjJ0&?&yI=-}^J z^?L*-%Ux4Cg>GVM*E>b0cZPP_r}=v8T0^tv8|@XWzRSG+y40pEK$AEYL zqkkk)?BUL;hohMJxbIwdxe=O=%zEKN+xFYmE zE#`}ue&4UyJgr3FHU5N>n}>&L>%Ur}O5Dc-5JV(dNV6Zp7C z>M+<7hWF7#GL~p&ISV`}XU8>fC!n?3>d0ng$5ch`YwK!{_O9$*{kpA^AJfOuD}Ns{ zcs{sQ{LQUWm#uO^x2VWAI|=8Pfe-igmy1m~{Wo-)CFLjRg)7&rOA0N)iH4IfElwwz=-uJ^r`dNuzkc=l#q8U+Z+@D+so#A8Um>lZT}b7w z;wXi&Ulosl#k6trLlGTKTEY~DSzw+k z=~9_dHCqFg$H>b$`;>Fycz;9Ai;UsmjN@DeuEF+WG3b$D3zpAm@$@_kAQ#KUeDhQJ_ZMeY$S$h z?}-9&E+_>vcjO(91KL_Sa5f~S)bcJ8Cu4-+PKb_4F+<%gv@zrZVGOiJOajQK04+$# zfQ@d985!~88BF4$JLO(CL4TKi$72rZdHqFa^1U!C*Cy584n2C=LM(fDHq-QWNgbI;X3+fGqd6pW~fsGg(N`GlKGUj>}Ilnq~7$XNi zHZyGq2NyO)>oBUf6wXQz-H~)*dYJ5suF_+2>$JBD+C1xetFs^Khi#3vqoGbxV9P{NBI?l)l>r?Lm|myE3ykZJ7~F+}~rr-hcm6UtVZ7O@5jEOH9wJ1Qb&I zw^@@+*OezEpO&9e#Jeu_7;dls{N=VQ6xEH4hJ|9sK(U8kl=ygSr&bIt{_LO?gBnq5 zlU*aO@4eb%_+^T2Xb!{elfHqs#=igm@zb_E-0*F8NtyrTk6UTQNxp4;glYf6&vKvs|vnz0s_nRx1s(4Be`nv zSZ3?Linji^E`0ytKkH+upjEMf<=4i;C#8ZakAjV32q;!3RErM9@|;Uc@teQ>-?Qpw z@_(BH(06r_3rw#-)35${y;FswnJg(3>z%@zeN#UAKmY50uXk#$pN$Xc@o|Y~!XD$S zz;l4u?ZCq0se`_kc`C^jCAp#^Rv@wZxbNReuz%EG?<%k_5v=UVeop5bTpk2nJ$wED z&eJTdVUQ2h75hxKl!}s4(V_IZ1$k3~e1Fxx>Su0u#``wbnmO!U-L} z0jTuix{q$#+AdCSBlmQ4)5fOu5acHpK7h~j@C0_v#9~Bja%lPf)(WTb41?w}vZM{}>q?i~xsQF<{(o7i z#)ixYmZ~-X!{ccECHLj^HCQ^}I)gFyeOuxJ)O`mPhSt8ZTpmRlU@IT+bGQ4ufT^Og zmaAh;-|wMyVJ`96jI(*$#)JME#bGn1{`{Xh}}N_cK_tg)9B(0{rUg!4=G& zrt`9X@uGV1Q}g09Tix~CzK_>k(%rSbIa<+IWoLGrTsyvqwlg=H`h(!tpMMvd4{1HW zD3@))dXaSNi{^sNyXI9t!u`5aXCJq>nfu6h9V*3+%5Z)*pPw&#fn}lnuZSrFdnn#t zH}&j*?z;2L#hK+aW}I*S>m!~mTK`|yVFQ7pA~4${`uB=x4=e3G;$}&EJ&J)wdOOwI z`@-#`0r0!8I~KXBdGTxCH-9?|`*bftR$xu#V!!gBRs5slm?vJ>gR}c$eTvNe-m~5g z>m1}fsMHGs-TG@P;@mx^usP55Ua@w-{hDU4sz-fP@89D>hiG|$UuEE%aY%_QiYgrpLFn&=(TQgH4jMpH47tnjqG zvKfO`YL~qhQY+($H`Ag4aU+ZtmIQ|hXQd=mOYTWbAS-_2?`ETM8orqF4n7+(lExH> zwLWAot({mV9f7X}bWlB&?GX(^vh^2pq_G> z8pj1FXo5NKEMO}<@WgIGs}>V~{IFg8TH%e(-hDu@3RwBlJ-ae8($Ni#TdAQ&z-Wk! z85N+rVU)0-n12uO6bL}PAR)0Zd3}Wal51NF;Wk8uGb}Aey zDA&nkueipz$;t%AC65ejE-pqUnCih{SqA2fr@%el z`tw9nsS^ChLeE)|G*MIGD3_SEQoDdD<(#D$!4j-0o{Uz+O@;%6tst0Q6ccevOwlTX z4b=FognvwIG8`8%-6O_04O!FVcu1OqUU5-aW8G9ZK?k&zGMG|1Crk>T!19)w66d{k zleH%iDdB?{$H1h9(PT9yZjl5g12BE*O*qZPkn-C4kqjDH8{u06+2Yf{bi+p3;>etz6r{HYgbj^FMbpnlPLae`8F zocf6R0oOxbv)H4PaggnI~0OWK+j5E~KfX~CY9 zHh=V9)eq0nYg({Je{jfFY(ZOdC}MRt5JRy(?Jf+a##0!sS^jk%Yw@`Wd$`2Vb}%DWkJ@;;V;I1iMVDAn zJ=zg_Q4;^Li&s5rW9^=0wbm$Y{|{1*`wZ5qrFnRyC5L~bT@;BC@SRGp+n?tlmVb+n zV~At%*UQD*^8`OWjiCpnU%&nKEVbpwFoGJE{{HRD^VINy{53LH-i_T={QifRF9yic z?q1&rs7|G~?av+v(3e*=sk)uEtNC{O6;L|csKuxHOPp3l__{vcRfSt<_cbvT_bFoc z+4T!vOY#m&e*NO@Nh;;!iKjAQCVyQIq}S9b$~xaR6kxJl_hWp-@^1Zk5k9PzizWOq zZ00`!jiib$sl&M+@!kSQvlm^wvlc+fXcYxv7wsDRejsCY0EKpkx~w|*TMnI-cX$J5 z0)4x6mvB38c(=C{8f9GUD7JJ=X2_1Vdr`GeDMSKyqV=Y!DY|Q^She&;c=dUgIEWtxGLqs9*s`ghL_Fr?~!&Z z?tR?Up{{mKxN4!IHiUL$j(<#{ah+6Wq`0zsj`LZ(s_6~sk~SFLD9l~0ubW>z7;S`t z*@55Pw(de>LT|fD`qCJS4YMpGhNSoi5 zt6#6>r(SKVsdPE2w7U?f4Lw)?b4m$xULP#Jth;Vqr`T@UWq*Cvr97m%TX0!- z7AsC-Z0C=$zG8Ns-%g>5YYg36-lqDz+^%MMzFKb@l=@ifd6+T)@nPkeOPzPgY+TiD6eXs z@RHi>Z1SX&5Or0&*Wk*vx*xi8hP|R7c3c0L z)*qJ3)`vVLGzaA>$@y{rVJ~Hv!2S09`!YfVnAxAw$}iWcYky`ew;OOjdzt}K2d(&Z ziif+FY07*?&qSZ zI{^0?tea{Z?UQ@lUTA;QVd3^ZOuZ=c)vmo@0yl9tTI>g_c;-X!KY5nD+1~p4+4?qk2 z+_dWZ+{cBh&t1jLX%<=9)!{cysmq|37xOPMF<@E055Iq*`XYaL-;#AN?3u;u%YX;V z*u5a97ql;9>@98gA)Hy{zKF2D+}(?CapC(i*nlPQJ{I~H!!N@3EsOWVUR)p_fIVcX zypM~rM7u8AZZ7R>jj?Q%#o86ycDrdubgW`Ix?yr!k9CVRG5kAMNP0@&pTEO$3FB_B zY9C;!-yfRjH0OVtu~)9UT-#LL-LUJcS+Cf(c&D%YUBtfIBh$I_H;O0lbslgb17qr} zFSdQJbhiia*ug)V7Xy&)-6uDHERXzb-0FSW3~Bu_`dv$=Xvn;13IA9<8N$u(jK+Rn zjOJ%|Mq@|l${sq*0eGdQbC%Tu`ooN!Jyr&oJ8g!)(@}pAE|;!D$hIqzl+XbfJt_MJ zLf$={&Dl2q{<+KVb@;oLStK#K1CBCsmMg4R_Qft_OPzhQCU%r@vs|uSU&G&e_I^74 z*2Vji{H@CjN=N)PA!7&0=yBow`_Mb@=ERpet~^{)&j1e>)Dz&l+sPfKui|2NQMvK_ zkkYlC((r$EStc&=vo8n(KmYyiXz9%i91N9%5wb~TNV4iK^uv60O7ITL)GN)P&D#{< zFvB-14X=MVOZ@(~!#ed^$9#3Vi6@coYARK_51`VlQ390_OtruIn%w?s!p=2y_D=1d zD1W~re<}-4Kh9nIXWg{Rz)z3!)x)z}ulril7OH<2Z7?ohs+Mw>zqL6KajeWA(+XzY z_4+)}eK@FIvl^P}EjMRdz0c2GMX*|Y27=9JZ3q@6!K;{FeEJAT`F-|2 zmzyopZ%13PXGyhDA?mEq>RSJLwcdcZW2ZRMW$mIg-y#lX`cnFK~7!y45Ik1<>v6 zV^4q6p^s_v&mdw6Z1@l0cg)c+JnyIVvi*qpvI`(pASsMsS(EyE+LW>Wj#0kYKk6Ud z#ytd>_tL64@P904J%t;;w38wsua=;&LDECI3|1|J&zb|g;X;0^a~xDl;l&=Aaxr}N z|Fw2)yK%xm^jDC!ZxKJRZxt)0D&aJPf`2m{*j67-~}KLLhyYzZ2}X7wtG< zJFX&Og5>~~6WA3`3nK_eokeE}x^>qRgrm-)Q%118!^$^tA%Wm9He>VW+)nMh@=1T@ z2oL7J6#G&&5#Y|qNvO8yNTO#TQ_bv-pnV+m@LW18dVmJn!Sv7@>j?c z8j~dyQwU&MdSCP$qzfOQ}0g^sP0)1WJ!SiH~kQ!%I^-XkRZYpmMJkO+#GRd8!XJr zDTFPZzPBk`s{r8;5X=$FD+U;+cY61qWRCJVz0+Cd-R%!{fH`ClB=Fkj^W4Z$i|LMppUp0S3bA?Kyg|++_HIv}|(%G!LrTp*XOFP#2Lph3$_D9q2-TJ5XV0#4l?k7AxBhD`7-R4--Qt*IH=%gLTr>{g3`wOUrv_Hx7C{#wR#KQQ9! zu*8V5SJJqsHel?SFe6%vnurCSP#bW=1=ZESf1%5c7%|w1HU)x$QyT*o2 z7lu@ExwOlQKQUxBcG9IjZSPAEwizdTi%q4mF~<`n>Jn;v!4NbThM~q1I;)NO4-PJ> EWscS3FaQ7m delta 48991 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
                                                                                                                              +(;gJnMsgm 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

                                                                                                                              xCgfeAg*nfoyW{1&S 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 b*w$$5iynoRmmZDAmS~Ia)BOJcryy!>p~qh8 diff --git a/pr-2458/py-modindex.html b/pr-2458/py-modindex.html index b4a0789fe0..ab17b43916 100644 --- a/pr-2458/py-modindex.html +++ b/pr-2458/py-modindex.html @@ -132,6 +132,12 @@

                                                                                                                            • Measurements
                                                                                                                          • +
                                                                                                                          • Photonic Operations +
                                                                                                                          • Measuring Kernels @@ -153,6 +159,12 @@
                                                                                                                        • +
                                                                                                                        • Executing Photonic Kernels +
                                                                                                                        • Computing Expectation Values @@ -185,6 +197,7 @@
                                                                                                                        • Using Quantum Hardware Providers
                                                                                                                        • Divisive Clustering With Coresets Using CUDA-Q
                                                                                                                        • @@ -326,6 +348,10 @@
                                                                                                                        • Stim (CPU)
                                                                                                                      • +
                                                                                                                      • Photonics Simulators +
                                                                                                                      • Fermioniq
                                                                                                                      • Default Simulator
                                                                                                                      @@ -337,48 +363,54 @@
                                                                                                                    • Submission from Python
                                                                                                                  • -
                                                                                                                  • IonQ
                                                                                                                      -
                                                                                                                    • Setting Credentials
                                                                                                                    • +
                                                                                                                    • Infleqtion
                                                                                                                    • -
                                                                                                                    • Anyon Technologies/Anyon Computing
                                                                                                                        -
                                                                                                                      • Setting Credentials
                                                                                                                      • +
                                                                                                                      • IonQ
                                                                                                                      • -
                                                                                                                      • IQM
                                                                                                                      • -
                                                                                                                      • IonQ
                                                                                                                          -
                                                                                                                        • Setting Credentials
                                                                                                                        • +
                                                                                                                        • Infleqtion
                                                                                                                        • -
                                                                                                                        • Anyon Technologies/Anyon Computing
                                                                                                                            -
                                                                                                                          • Setting Credentials
                                                                                                                          • +
                                                                                                                          • IonQ
                                                                                                                          • -
                                                                                                                          • IQM
                                                                                                                              -
                                                                                                                            • Setting Credentials
                                                                                                                            • +
                                                                                                                            • Anyon Technologies/Anyon Computing
                                                                                                                            • -
                                                                                                                            • OQC
                                                                                                                                +
                                                                                                                              • IQM
                                                                                                                              • -
                                                                                                                              • ORCA Computing
                                                                                                                                  +
                                                                                                                                • OQC
                                                                                                                                • -
                                                                                                                                • Quantinuum
                                                                                                                                • -
                                                                                                                                • IonQ
                                                                                                                                    -
                                                                                                                                  • Setting Credentials
                                                                                                                                  • +
                                                                                                                                  • Infleqtion
                                                                                                                                  • -
                                                                                                                                  • Anyon Technologies/Anyon Computing
                                                                                                                                      -
                                                                                                                                    • Setting Credentials
                                                                                                                                    • +
                                                                                                                                    • IonQ
                                                                                                                                    • -
                                                                                                                                    • IQM
                                                                                                                                        -
                                                                                                                                      • Setting Credentials
                                                                                                                                      • +
                                                                                                                                      • Anyon Technologies/Anyon Computing
                                                                                                                                      • -
                                                                                                                                      • OQC
                                                                                                                                          +
                                                                                                                                        • IQM
                                                                                                                                        • -
                                                                                                                                        • ORCA Computing
                                                                                                                                            +
                                                                                                                                          • OQC
                                                                                                                                          • -
                                                                                                                                          • Quantinuum
                                                                                                                                              -
                                                                                                                                            • Setting Credentials
                                                                                                                                            • +
                                                                                                                                            • ORCA Computing
                                                                                                                                            • -
                                                                                                                                            • QuEra Computing
                                                                                                                                            • NVIDIA Quantum Cloud
                                                                                                                                            • Installation
                                                                                                                                                @@ -613,6 +646,7 @@
                                                                                                                                              • spin.y()
                                                                                                                                              • spin.z()
                                                                                                                                              • CuDensityMatState
                                                                                                                                              • +
                                                                                                                                              • InitialState
                                                                                                                                              • to_cupy_array()
                                                                                                                                              • SampleResult
                                                                                                                                              • AsyncSampleResult
                                                                                                                                              • @@ -723,7 +757,7 @@
                                                                                                                                                -

                                                                                                                                                © Copyright 2024, NVIDIA Corporation & Affiliates.

                                                                                                                                                +

                                                                                                                                                © Copyright 2025, NVIDIA Corporation & Affiliates.

                                                                                                                                                Built with Sphinx using a diff --git a/pr-2458/searchindex.js b/pr-2458/searchindex.js index a785546a58..2e2ffa5f33 100644 --- a/pr-2458/searchindex.js +++ b/pr-2458/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api/api", "api/default_ops", "api/languages/cpp_api", "api/languages/python_api", "applications/python/afqmc", "applications/python/bernstein_vazirani", "applications/python/cost_minimization", "applications/python/deutschs_algorithm", "applications/python/digitized_counterdiabatic_qaoa", "applications/python/divisive_clustering_coresets", "applications/python/hadamard_test", "applications/python/hybrid_qnns", "applications/python/krylov", "applications/python/qaoa", "applications/python/quantum_fourier_transform", "applications/python/quantum_teleportation", "applications/python/quantum_volume", "applications/python/readout_error_mitigation", "applications/python/shors", "applications/python/trotter", "applications/python/unitary_compilation_diffusion_models", "applications/python/vqe", "applications/python/vqe_advanced", "examples/python/executing_kernels", "examples/python/measuring_kernels", "examples/python/noisy_simulations", "examples/python/operators", "examples/python/optimizers_gradients", "examples/python/performance_optimizations", "examples/python/visualization", "index", "releases", "specification/cudaq", "specification/cudaq/algorithmic_primitives", "specification/cudaq/control_flow", "specification/cudaq/dynamic_kernels", "specification/cudaq/examples", "specification/cudaq/kernels", "specification/cudaq/machine_model", "specification/cudaq/namespace", "specification/cudaq/operations", "specification/cudaq/operators", "specification/cudaq/patterns", "specification/cudaq/platform", "specification/cudaq/synthesis", "specification/cudaq/types", "specification/index", "specification/quake-dialect", "using/applications", "using/backends/backends", "using/backends/dynamics", "using/backends/hardware", "using/backends/nvqc", "using/backends/platform", "using/backends/simulators", "using/basics/basics", "using/basics/build_kernel", "using/basics/kernel_intro", "using/basics/run_kernel", "using/basics/troubleshooting", "using/examples/building_kernels", "using/examples/examples", "using/examples/expectation_values", "using/examples/hardware_providers", "using/examples/introduction", "using/examples/multi_control", "using/examples/multi_gpu_workflows", "using/examples/quantum_operations", "using/extending/cudaq_ir", "using/extending/extending", "using/extending/mlir_pass", "using/extending/nvqir_simulator", "using/install/data_center_install", "using/install/install", "using/install/local_installation", "using/integration/cmake_app", "using/integration/cuda_gpu", "using/integration/integration", "using/integration/libraries", "using/quick_start", "versions"], "filenames": ["api/api.rst", "api/default_ops.rst", "api/languages/cpp_api.rst", "api/languages/python_api.rst", "applications/python/afqmc.ipynb", "applications/python/bernstein_vazirani.ipynb", "applications/python/cost_minimization.ipynb", "applications/python/deutschs_algorithm.ipynb", "applications/python/digitized_counterdiabatic_qaoa.ipynb", "applications/python/divisive_clustering_coresets.ipynb", "applications/python/hadamard_test.ipynb", "applications/python/hybrid_qnns.ipynb", "applications/python/krylov.ipynb", "applications/python/qaoa.ipynb", "applications/python/quantum_fourier_transform.ipynb", "applications/python/quantum_teleportation.ipynb", "applications/python/quantum_volume.ipynb", "applications/python/readout_error_mitigation.ipynb", "applications/python/shors.ipynb", "applications/python/trotter.ipynb", "applications/python/unitary_compilation_diffusion_models.ipynb", "applications/python/vqe.ipynb", "applications/python/vqe_advanced.ipynb", "examples/python/executing_kernels.ipynb", "examples/python/measuring_kernels.ipynb", "examples/python/noisy_simulations.ipynb", "examples/python/operators.ipynb", "examples/python/optimizers_gradients.ipynb", "examples/python/performance_optimizations.ipynb", "examples/python/visualization.ipynb", "index.rst", "releases.rst", "specification/cudaq.rst", "specification/cudaq/algorithmic_primitives.rst", "specification/cudaq/control_flow.rst", "specification/cudaq/dynamic_kernels.rst", "specification/cudaq/examples.rst", "specification/cudaq/kernels.rst", "specification/cudaq/machine_model.rst", "specification/cudaq/namespace.rst", "specification/cudaq/operations.rst", "specification/cudaq/operators.rst", "specification/cudaq/patterns.rst", "specification/cudaq/platform.rst", "specification/cudaq/synthesis.rst", "specification/cudaq/types.rst", "specification/index.rst", "specification/quake-dialect.md", "using/applications.rst", "using/backends/backends.rst", "using/backends/dynamics.rst", "using/backends/hardware.rst", "using/backends/nvqc.rst", "using/backends/platform.rst", "using/backends/simulators.rst", "using/basics/basics.rst", "using/basics/build_kernel.rst", "using/basics/kernel_intro.rst", "using/basics/run_kernel.rst", "using/basics/troubleshooting.rst", "using/examples/building_kernels.rst", "using/examples/examples.rst", "using/examples/expectation_values.rst", "using/examples/hardware_providers.rst", "using/examples/introduction.rst", "using/examples/multi_control.rst", "using/examples/multi_gpu_workflows.rst", "using/examples/quantum_operations.rst", "using/extending/cudaq_ir.rst", "using/extending/extending.rst", "using/extending/mlir_pass.rst", "using/extending/nvqir_simulator.rst", "using/install/data_center_install.rst", "using/install/install.rst", "using/install/local_installation.rst", "using/integration/cmake_app.rst", "using/integration/cuda_gpu.rst", "using/integration/integration.rst", "using/integration/libraries.rst", "using/quick_start.rst", "versions.rst"], "titles": ["Code documentation", "Quantum Operations", "CUDA-Q C++ API", "CUDA-Q Python API", "Quantum Enhanced Auxiliary Field Quantum Monte Carlo", "Bernstein-Vazirani Algorithm", "Cost Minimization", "Deutsch\u2019s Algorithm", "Molecular docking via DC-QAOA", "Divisive Clustering With Coresets Using CUDA-Q", "Using the Hadamard Test to Determine Quantum Krylov Subspace Decomposition Matrix Elements", "Hybrid Quantum Neural Networks", "Multi-reference Quantum Krylov Algorithm - \\(H_2\\) Molecule", "Max-Cut with QAOA", "Quantum Fourier Transform", "Quantum Teleporation", "Quantum Volume", "Readout Error Mitigation", "Factoring Integers With Shor\u2019s Algorithm", "Computing Magnetization With The Suzuki-Trotter Approximation", "Compiling Unitaries Using Diffusion Models", "Variational Quantum Eigensolver", "VQE with gradients, active spaces, and gate fusion", "Executing Quantum Circuits", "Measurements", "Noisy Simulation", "Operators", "Optimizers and Gradients", "Optimizing Performance", "Visualization", "CUDA-Q", "CUDA-Q Releases", "Language Specification", "12. Quantum Algorithmic Primitives", "8. Control Flow", "9. Just-in-Time Kernel Creation", "13. Example Programs", "6. Quantum Kernels", "1. Machine Model", "2. Namespace and Standard", "5. Quantum Intrinsic Operations", "4. Quantum Operators", "10. Common Quantum Programming Patterns", "11. Quantum Platform", "7. Sub-circuit Synthesis", "3. Quantum Types", "Specifications", "Quake Dialect", "CUDA-Q Applications", "CUDA-Q Backends", "CUDA-Q Dynamics", "CUDA-Q Hardware Backends", "NVIDIA Quantum Cloud", "Multi-Processor Platforms", "CUDA-Q Simulation Backends", "CUDA-Q Basics", "Building your first CUDA-Q Program", "What is a CUDA-Q kernel?", "Running your first CUDA-Q Program", "Troubleshooting", "Building Kernels", "CUDA-Q by Example", "Computing Expectation Values", "Using Quantum Hardware Providers", "Introduction", "Multi-control Synthesis", "Multi-GPU Workflows", "Quantum Computing 101", "Working with the CUDA-Q IR", "Extending CUDA-Q", "Create your own CUDA-Q Compiler Pass", "Extending CUDA-Q with a new Simulator", "Installation from Source", "Installation Guide", "Local Installation", "CUDA-Q and CMake", "Using CUDA and CUDA-Q in a Project", "Integration with other Software Tools", "Integrating with Third-Party Libraries", "Quick Start", "CUDA-Q Versions"], "terms": {"c": [0, 1, 3, 4, 9, 12, 13, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 50, 52, 53, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 74, 75, 76, 79, 80], "python": [0, 1, 2, 9, 22, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 44, 45, 48, 50, 52, 53, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 71, 78, 79, 80], "quantum": [0, 3, 8, 13, 17, 19, 20, 22, 24, 25, 26, 27, 29, 30, 31, 32, 34, 35, 38, 44, 46, 47, 49, 50, 51, 54, 56, 57, 58, 60, 61, 62, 64, 66, 68, 71, 72, 74, 75, 76, 78, 79, 80], "oper": [0, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 42, 44, 45, 46, 47, 51, 52, 54, 56, 58, 60, 61, 62, 63, 64, 65, 67, 68, 70, 71, 72, 74, 79], "cuda": [1, 6, 7, 10, 11, 12, 13, 14, 16, 19, 23, 25, 28, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 52, 53, 59, 60, 62, 63, 64, 65, 66, 67, 77], "q": [1, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 23, 24, 25, 26, 28, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 52, 53, 59, 60, 62, 63, 64, 65, 66, 67, 77], "provid": [1, 2, 3, 4, 8, 9, 10, 12, 14, 17, 18, 19, 20, 21, 25, 26, 27, 30, 32, 33, 35, 38, 40, 41, 43, 44, 45, 47, 50, 51, 52, 53, 54, 57, 61, 62, 64, 65, 68, 70, 71, 72, 74, 75, 78], "default": [1, 2, 3, 19, 22, 23, 24, 29, 33, 37, 40, 45, 50, 51, 52, 53, 58, 63, 64, 68, 71, 72, 74, 76, 78, 79], "set": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 20, 22, 23, 28, 29, 30, 33, 35, 37, 40, 47, 50, 52, 53, 54, 56, 58, 63, 72, 74, 78, 79], "These": [1, 2, 8, 12, 13, 16, 18, 20, 22, 25, 27, 32, 37, 40, 44, 45, 47, 49, 52, 53, 54, 68, 72, 74], "can": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 47, 49, 50, 51, 52, 53, 54, 56, 57, 58, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80], "us": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 24, 25, 26, 27, 29, 30, 31, 33, 34, 35, 36, 37, 40, 41, 43, 44, 47, 50, 51, 52, 53, 54, 56, 57, 58, 60, 61, 62, 64, 66, 67, 68, 70, 71, 72, 75, 78, 79, 80], "kernel": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 36, 38, 40, 41, 42, 43, 44, 45, 46, 51, 52, 54, 55, 56, 58, 61, 62, 63, 64, 65, 66, 67, 68, 76, 78, 79, 80], "librari": [1, 2, 8, 11, 18, 21, 29, 30, 31, 32, 36, 37, 39, 44, 45, 50, 54, 62, 68, 70, 71, 74, 76, 77, 80], "sinc": [1, 2, 4, 5, 7, 13, 14, 15, 17, 18, 20, 23, 45, 49, 53, 54, 57, 62, 63, 66, 68, 74, 75, 78], "intrins": [1, 37, 44, 45, 47], "nativ": [1, 32, 38, 40, 41, 75], "support": [1, 2, 3, 4, 7, 17, 23, 29, 30, 31, 32, 37, 38, 40, 42, 45, 50, 51, 57, 58, 63, 64, 67, 70, 78, 79, 80], "specif": [1, 2, 3, 9, 12, 20, 24, 30, 33, 37, 39, 40, 41, 42, 45, 47, 50, 51, 52, 53, 54, 57, 58, 60, 64, 67, 68, 71, 72, 74, 76, 78], "target": [1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 22, 23, 25, 28, 29, 31, 33, 40, 43, 47, 50, 51, 52, 53, 54, 58, 60, 62, 63, 65, 67, 68, 70, 71, 72, 74, 79, 80], "depend": [1, 3, 7, 9, 12, 13, 15, 18, 19, 20, 24, 28, 30, 33, 38, 47, 52, 53, 54, 78, 79], "backend": [1, 2, 5, 6, 8, 9, 10, 16, 22, 27, 28, 30, 31, 33, 50, 53, 58, 63, 66, 68, 71, 72, 74, 78, 79, 80], "architectur": [1, 2, 11, 30, 32, 38, 47, 51, 53, 63, 66, 67, 71, 72, 74, 79], "nvq": [1, 33, 36, 51, 52, 53, 54, 58, 62, 63, 64, 65, 68, 71, 74, 75, 76, 78, 79], "compil": [1, 2, 3, 9, 30, 32, 33, 36, 37, 38, 42, 44, 45, 51, 52, 53, 54, 58, 62, 63, 64, 65, 68, 71, 72, 74, 75, 76, 79], "automat": [1, 3, 22, 38, 51, 53, 54, 63, 72, 74, 78], "decompos": [1, 4, 16, 20], "appropri": [1, 2, 7, 8, 9, 14, 15, 32, 40, 53, 60, 72, 74], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 58, 60, 62, 63, 64, 66, 67, 68, 70, 71, 72, 74, 76, 78, 79, 80], "section": [1, 7, 8, 10, 14, 18, 20, 22, 26, 28, 35, 53, 54, 60, 72, 74, 78, 79], "list": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 26, 27, 29, 31, 33, 37, 49, 50, 51, 52, 54, 60, 63, 66, 67, 72, 74, 78, 79, 80], "implement": [1, 2, 3, 4, 7, 10, 12, 13, 14, 15, 16, 18, 19, 20, 25, 32, 33, 38, 39, 40, 42, 44, 45, 47, 51, 54, 63, 64, 68, 70, 71, 72, 74, 78], "transform": [1, 4, 7, 11, 12, 20, 22, 30, 32, 36, 68, 70], "state": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 29, 31, 33, 37, 38, 40, 45, 47, 50, 51, 52, 56, 58, 60, 62, 63, 64, 66, 71, 72, 78, 79, 80], "ar": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 44, 45, 46, 47, 50, 51, 52, 53, 54, 57, 58, 60, 61, 62, 63, 64, 66, 67, 68, 71, 72, 74, 76, 78, 79, 80], "templat": [1, 2, 21, 33, 35, 36, 37, 40, 44, 45, 64, 68, 70, 71, 76, 78], "argument": [1, 2, 3, 7, 9, 13, 15, 17, 23, 24, 29, 33, 35, 37, 44, 45, 50, 51, 56, 58, 62, 65, 66, 68, 71, 74, 78], "allow": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 15, 19, 20, 22, 23, 27, 31, 33, 35, 37, 38, 50, 54, 56, 57, 58, 65, 66, 67, 68, 70, 74, 75, 80], "invok": [1, 2, 3, 33, 35, 37, 42, 51, 54, 64, 68, 78], "version": [1, 3, 4, 5, 7, 11, 13, 14, 18, 20, 23, 30, 31, 33, 42, 49, 50, 51, 52, 53, 54, 58, 68, 71, 72, 74, 75, 78, 79], "see": [1, 2, 3, 5, 6, 7, 8, 9, 14, 15, 16, 18, 20, 22, 28, 29, 31, 33, 35, 37, 45, 47, 49, 50, 51, 52, 53, 54, 56, 58, 64, 66, 67, 68, 70, 72, 74, 75, 76, 78, 79, 80], "addition": [1, 18, 31, 74, 80], "overload": [1, 3, 33, 40, 41, 45, 47], "broadcast": [1, 2, 3, 12, 13, 40], "singl": [1, 2, 3, 4, 5, 9, 12, 14, 15, 16, 19, 21, 22, 28, 29, 33, 36, 37, 38, 40, 45, 50, 51, 52, 53, 58, 60, 62, 63, 64, 66, 67, 68, 78], "across": [1, 2, 3, 7, 10, 20, 22, 31, 40, 52, 53, 54, 63, 72, 74, 80], "vector": [1, 2, 3, 4, 6, 9, 10, 11, 12, 15, 16, 20, 29, 33, 35, 36, 37, 40, 43, 45, 47, 51, 52, 53, 60, 63, 64, 65, 66, 71, 72], "For": [1, 2, 3, 4, 5, 7, 9, 10, 13, 14, 16, 17, 18, 20, 26, 29, 31, 33, 35, 40, 47, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 63, 65, 66, 67, 71, 72, 74, 76, 78, 79, 80], "exampl": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 40, 46, 47, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 64, 66, 67, 70, 71, 72, 74, 75, 76, 78, 79, 80], "cudaq": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 34, 35, 36, 37, 39, 42, 43, 44, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 75, 78, 79], "qvector": [1, 2, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 33, 36, 37, 40, 44, 52, 53, 56, 58, 60, 62, 63, 65, 66, 67, 68, 78, 79], "flip": [1, 2, 3, 6, 16, 17, 25, 67], "each": [1, 2, 3, 5, 7, 8, 9, 12, 13, 14, 15, 16, 17, 19, 20, 22, 23, 27, 29, 31, 33, 35, 38, 43, 47, 50, 51, 52, 53, 54, 58, 63, 66, 67, 68, 72, 74, 78, 79, 80], "thi": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 36, 37, 38, 39, 40, 42, 45, 47, 50, 51, 52, 53, 54, 56, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 70, 72, 74, 75, 76, 78, 79], "pauli": [1, 2, 3, 8, 9, 10, 12, 13, 15, 19, 23, 33, 41, 50, 58, 67], "matrix": [1, 2, 3, 4, 13, 15, 16, 19, 20, 23, 25, 29, 30, 31, 49, 50, 52, 60, 67, 71, 80], "It": [1, 2, 4, 7, 9, 14, 15, 16, 17, 19, 22, 30, 31, 33, 40, 45, 47, 50, 53, 58, 60, 63, 67, 68, 71, 74, 76, 79, 80], "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 45, 47, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 75, 76, 78, 79, 80], "also": [1, 2, 3, 7, 9, 14, 17, 18, 20, 21, 23, 25, 27, 29, 31, 33, 37, 41, 50, 51, 52, 53, 54, 56, 57, 58, 60, 63, 66, 67, 68, 70, 71, 72, 74, 76, 79, 80], "known": [1, 2, 18, 20, 22, 37, 64, 68], "NOT": [1, 33, 40, 67], "gate": [1, 2, 3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 29, 30, 31, 40, 44, 45, 47, 51, 54, 56, 60, 64, 65, 71, 80], "appli": [1, 2, 3, 5, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 33, 36, 37, 40, 44, 47, 52, 53, 56, 60, 63, 64, 65, 67, 68, 71], "0": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33, 35, 36, 37, 40, 41, 42, 43, 45, 47, 49, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 64, 65, 66, 67, 68, 71, 72, 74, 76, 78, 79, 80], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 50, 51, 52, 53, 54, 56, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 71, 72, 74, 78, 79, 80], "rotat": [1, 3, 9, 10, 13, 14, 17, 18, 25, 29, 40, 41, 56, 62, 71], "\u03c0": 1, "about": [1, 2, 3, 7, 9, 17, 18, 19, 20, 21, 29, 31, 33, 47, 50, 51, 52, 53, 54, 57, 58, 63, 66, 72, 74, 76, 77, 78, 79, 80], "axi": [1, 11, 20, 21, 29], "enabl": [1, 2, 3, 5, 9, 14, 23, 32, 33, 35, 37, 38, 40, 42, 43, 44, 45, 49, 50, 51, 53, 54, 57, 58, 62, 63, 66, 68, 71, 72, 74, 78, 79], "one": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 29, 31, 33, 35, 36, 38, 40, 43, 47, 50, 51, 52, 53, 54, 59, 60, 62, 63, 65, 66, 67, 68, 70, 71, 72, 74, 78, 79, 80], "superposit": [1, 5, 7, 13, 29, 33, 36, 45, 53, 56, 58, 67], "comput": [1, 2, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 22, 23, 25, 27, 29, 30, 32, 33, 35, 36, 37, 43, 45, 47, 52, 53, 54, 57, 58, 61, 66, 71, 72, 76, 78, 79], "basi": [1, 2, 3, 4, 10, 12, 14, 17, 20, 22, 23, 24, 25, 45, 52, 53, 67], "sqrt": [1, 3, 5, 7, 10, 12, 14, 15, 17, 25, 29, 36, 50, 63, 67, 79], "2": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 50, 51, 52, 53, 54, 58, 60, 62, 63, 65, 66, 67, 68, 72, 74, 76, 78, 79, 80], "an": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 37, 38, 40, 41, 43, 44, 45, 47, 48, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 74, 76, 79, 80], "arbitrari": [1, 2, 3, 20, 50, 51, 65, 78], "\u03bb": 1, "exp": [1, 2, 12, 18, 36, 41, 50], "i\u03bb": 1, "math": [1, 4, 7, 18, 52], "pi": [1, 8, 9, 11, 13, 14, 16, 18, 19, 21, 22, 27, 29, 36, 37, 42, 44, 50, 51, 52, 63], "std": [1, 2, 3, 33, 35, 36, 37, 40, 41, 43, 44, 45, 52, 53, 58, 63, 64, 66, 70, 71, 76, 78], "number": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23, 26, 27, 29, 33, 36, 41, 43, 45, 47, 50, 51, 52, 53, 54, 56, 58, 62, 63, 64, 65, 66, 67, 68, 71, 74, 79], "\u03b8": 1, "co": [1, 14, 19, 29, 50], "isin": 1, "sin": [1, 14, 29], "its": [1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 25, 31, 32, 33, 43, 45, 47, 48, 52, 53, 54, 58, 60, 63, 64, 67, 68, 71, 72, 74, 78, 79, 80], "4": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 51, 52, 53, 54, 60, 63, 66, 68, 72, 74, 78, 80], "i\u03c0": 1, "two": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 22, 25, 27, 29, 38, 47, 50, 51, 53, 54, 58, 60, 62, 63, 65, 67, 74, 78], "qubit_1": [1, 7, 13, 60], "qubit_2": [1, 15], "univers": [1, 2, 9, 15, 20, 52, 67], "three": [1, 10, 17, 18, 20, 22, 38, 51, 52, 62], "paramet": [1, 2, 3, 6, 8, 9, 11, 12, 13, 16, 18, 20, 21, 23, 33, 37, 40, 45, 50, 51, 52, 54, 56, 60, 62, 63, 64, 66, 71, 72], "euler": [1, 50], "angl": [1, 2, 3, 6, 10, 14, 17, 18, 27, 29, 36, 37, 40, 53, 56, 62, 63], "theta": [1, 8, 9, 10, 11, 13, 14, 21, 22, 25, 27, 29, 33, 35, 36, 52, 53, 60, 62], "phi": [1, 3, 4, 10, 33, 35, 51, 63, 68], "\u03c6": 1, "lambda": [1, 2, 8, 9, 12, 13, 17, 18, 19, 22, 27, 33, 36, 37, 42, 50, 63, 65, 66, 68], "i\u03c6": 1, "np": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 36, 37, 42, 44, 50, 51, 53, 54, 60, 63, 66, 72], "m_pi": [1, 36, 44, 63], "m_pi_2": [1, 36, 37, 52], "adj": [1, 40, 60], "method": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 17, 18, 19, 20, 21, 22, 26, 27, 33, 35, 40, 45, 50, 51, 53, 54, 58, 60, 64], "ani": [1, 2, 3, 9, 12, 13, 18, 19, 20, 22, 23, 25, 27, 29, 33, 37, 39, 40, 42, 44, 45, 50, 51, 52, 54, 56, 58, 59, 60, 63, 64, 65, 71, 72, 74, 78, 79], "alloc": [1, 2, 3, 6, 13, 20, 33, 35, 36, 37, 38, 45, 53, 54, 56, 58, 64, 65, 71], "now": [1, 4, 5, 7, 9, 10, 13, 14, 15, 18, 20, 21, 22, 31, 47, 58, 63, 64, 65, 66, 74, 79, 80], "again": [1, 5, 22, 23, 33, 47, 74, 76], "initi": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 15, 18, 19, 21, 22, 27, 33, 50, 51, 53, 60, 63, 66, 67, 72, 74], "ctrl": [1, 2, 5, 7, 13, 16, 18, 23, 27, 29, 33, 35, 36, 40, 52, 53, 56, 60, 62, 63, 64, 65, 67, 68, 74, 79], "condit": [1, 2, 14, 15, 20, 25, 33, 34, 35, 37, 38, 54, 57, 67, 68], "more": [1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 17, 18, 20, 22, 26, 29, 31, 35, 38, 40, 41, 47, 51, 52, 53, 54, 57, 58, 60, 63, 66, 67, 72, 74, 76, 78, 79, 80], "wikipedia": [1, 50], "entri": [1, 3, 12, 33, 37, 53, 60, 63, 68, 74, 78], "ctrl_1": 1, "ctrl_2": 1, "00": [1, 4, 9, 15, 23, 25, 27, 58, 66, 67, 78, 79], "11": [1, 3, 4, 9, 11, 15, 16, 17, 19, 20, 22, 23, 25, 27, 29, 33, 58, 66, 67, 68, 72, 74, 78, 79], "onli": [1, 2, 3, 5, 9, 15, 17, 18, 20, 22, 23, 24, 29, 33, 37, 38, 42, 45, 47, 50, 51, 52, 53, 57, 63, 67, 68, 70, 72, 74, 78, 79], "both": [1, 3, 4, 5, 7, 11, 18, 38, 47, 51, 53, 54, 67, 72, 74, 76], "000": [1, 14, 15, 17, 18, 52, 58], "111": [1, 9, 14, 15, 17, 18], "follow": [1, 2, 3, 4, 5, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 26, 27, 29, 31, 33, 35, 37, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 56, 58, 59, 60, 62, 63, 64, 68, 70, 71, 72, 74, 75, 76, 78, 79, 80], "common": [1, 3, 9, 10, 17, 18, 20, 21, 22, 33, 37, 40, 41, 68, 72], "convent": [1, 8, 11, 13, 23], "all": [1, 2, 3, 9, 15, 16, 17, 18, 19, 20, 22, 23, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 42, 43, 45, 47, 51, 52, 53, 54, 58, 60, 62, 63, 66, 67, 68, 72, 74, 75, 76, 78, 79, 80], "howev": [1, 4, 9, 14, 15, 17, 20, 22, 23, 47, 50, 51, 53, 78], "behavior": [1, 2, 3, 9, 22, 54], "chang": [1, 2, 5, 9, 14, 18, 28, 31, 33, 37, 50, 58, 74, 79, 80], "instead": [1, 2, 4, 9, 25, 39, 42, 53, 54, 58, 72, 74, 78], "when": [1, 2, 3, 9, 12, 13, 17, 18, 20, 33, 38, 45, 47, 52, 53, 54, 58, 62, 63, 64, 68, 71, 72, 74, 78, 79], "negat": [1, 2, 3, 40, 44, 45], "polar": [1, 40, 44, 54], "syntax": [1, 9, 31, 32, 37, 38, 40, 42, 51, 60, 63, 76, 80], "preced": [1, 40, 51], "01": [1, 4, 7, 15, 20, 25, 27, 67], "10": [1, 4, 7, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 22, 25, 27, 29, 33, 36, 37, 54, 58, 60, 63, 64, 66, 67, 68, 72, 74, 76], "notat": [1, 15, 67], "context": [1, 2, 11, 38, 53, 54, 71], "valid": [1, 2, 3, 30, 37, 51, 54, 60, 63, 72, 74, 78], "either": [1, 7, 11, 13, 18, 38, 51, 53, 54, 63, 67, 72, 74, 79], "similarli": [1, 7, 22, 53, 59, 67], "condition": 1, "respect": [1, 2, 3, 4, 8, 13, 18, 22, 27, 33, 50, 51, 53, 58, 62, 66, 67, 72, 74, 79], "e": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 26, 29, 32, 33, 34, 36, 37, 38, 39, 40, 41, 47, 50, 51, 52, 53, 54, 63, 68, 71, 72, 74, 78, 79], "project": [1, 54, 71, 72, 74, 75, 78], "onto": [1, 67], "eigenvector": [1, 2, 10, 12], "non": [1, 2, 3, 8, 10, 12, 17, 18, 33, 37, 38, 45, 53, 54, 58, 62, 64], "linear": [1, 5, 9, 11, 12, 14, 21, 25, 52, 58, 63, 67], "avail": [1, 2, 3, 8, 9, 10, 20, 22, 27, 30, 31, 32, 33, 37, 38, 40, 43, 44, 45, 46, 49, 51, 52, 53, 54, 57, 58, 60, 61, 62, 63, 68, 72, 74, 79, 80], "first": [1, 2, 3, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 27, 29, 30, 33, 45, 51, 52, 53, 54, 55, 60, 62, 63, 64, 65, 68, 74, 79], "api": [1, 23, 26, 29, 30, 33, 35, 39, 40, 43, 45, 50, 51, 52, 53, 54, 58, 60, 64, 71, 72, 74, 76, 78], "regist": [1, 2, 3, 5, 10, 14, 18, 21, 24, 33, 36, 38, 45, 51, 53, 60, 63, 64, 65, 68, 71], "outsid": [1, 9, 74, 78], "Then": [1, 17, 20, 24, 51, 63, 70, 71], "within": [1, 2, 3, 21, 33, 37, 39, 41, 45, 51, 53, 54, 57, 58, 60, 63, 64, 67, 70, 72, 74, 75, 76, 78, 79], "like": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 18, 20, 21, 22, 23, 27, 28, 31, 33, 37, 45, 51, 53, 58, 60, 63, 64, 66, 67, 68, 72, 74, 75, 78, 79, 80], "built": [1, 2, 4, 6, 9, 12, 14, 22, 23, 25, 31, 51, 54, 57, 58, 72, 78, 79, 80], "abov": [1, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 22, 23, 33, 35, 40, 50, 51, 52, 53, 54, 58, 60, 62, 63, 65, 67, 68, 71, 72, 74, 76, 78, 79], "level": [1, 2, 3, 22, 28, 31, 32, 33, 38, 40, 50, 52, 53, 54, 68, 71, 75, 80], "register_oper": [1, 60], "accept": [1, 2, 3, 22, 23, 56, 72, 74, 79], "identifi": [1, 2, 3, 4, 13, 18, 20, 72, 74], "string": [1, 2, 3, 5, 18, 26, 29, 33, 35, 36, 43, 50, 54, 58, 64, 68, 74, 78], "numpi": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 36, 50, 60, 63, 66, 72], "arrai": [1, 2, 3, 4, 7, 10, 12, 14, 15, 16, 17, 20, 23, 25, 27, 45, 47, 50, 51, 53, 54, 60, 63, 64, 66, 68], "complex": [1, 2, 3, 4, 8, 12, 15, 19, 25, 41, 47, 50, 53, 58, 60, 66, 67, 78], "A": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19, 21, 27, 28, 29, 33, 36, 37, 40, 47, 50, 51, 58, 60, 63, 65, 66, 67, 70, 71, 72, 74], "1d": [1, 2], "interpret": [1, 8, 57, 63, 72], "row": [1, 2, 3, 29, 60], "major": [1, 72], "import": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 36, 41, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 64, 66, 67, 68, 72, 78, 79], "custom_h": 1, "custom_x": [1, 60], "def": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 33, 36, 37, 42, 44, 50, 52, 53, 56, 58, 60, 62, 63, 64, 65, 66, 67, 74, 79], "bell": [1, 15, 33, 78], "sampl": [1, 2, 3, 5, 7, 8, 9, 13, 16, 17, 18, 20, 25, 35, 51, 52, 53, 54, 55, 57, 60, 63, 64, 65, 66, 67, 71, 74, 78, 79], "dump": [1, 2, 3, 25, 33, 36, 52, 53, 58, 63, 64, 66, 78, 79], "macro": [1, 71], "cudaq_register_oper": 1, "uniqu": [1, 2, 3, 9, 13, 17, 20, 33, 38, 40, 45, 53, 76], "name": [1, 2, 3, 9, 13, 15, 18, 33, 35, 40, 43, 49, 50, 51, 52, 53, 54, 62, 66, 67, 68, 71, 72, 74, 75, 78, 79], "represent": [1, 2, 3, 14, 15, 20, 23, 29, 33, 37, 47, 50, 54, 68, 70, 71], "includ": [1, 2, 3, 4, 12, 13, 16, 22, 31, 33, 36, 45, 50, 52, 56, 57, 58, 60, 62, 63, 64, 65, 68, 70, 71, 72, 74, 76, 78, 79, 80], "m_sqrt1_2": 1, "__qpu__": [1, 2, 33, 36, 37, 44, 52, 53, 56, 58, 62, 63, 64, 65, 68, 78, 79], "void": [1, 2, 3, 33, 35, 36, 37, 40, 41, 43, 44, 45, 56, 58, 63, 65, 68, 70, 71, 76, 78, 79], "bell_pair": [1, 2, 3], "r": [1, 4, 17, 18, 40, 45, 51, 52, 53, 54, 62, 63, 68, 74], "int": [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 25, 33, 36, 37, 44, 45, 50, 52, 53, 56, 58, 60, 62, 63, 64, 65, 66, 68, 71, 72, 76, 78, 79], "main": [1, 4, 5, 9, 18, 20, 31, 33, 36, 47, 52, 58, 62, 63, 64, 65, 68, 72, 74, 76, 78, 79, 80], "auto": [1, 2, 33, 35, 36, 37, 41, 44, 45, 52, 53, 54, 56, 58, 62, 63, 64, 65, 68, 70, 78, 79], "count": [1, 2, 3, 5, 8, 9, 10, 12, 13, 17, 18, 23, 33, 35, 36, 45, 51, 52, 53, 54, 58, 63, 64, 65, 66, 68, 71], "bit": [1, 2, 3, 4, 5, 7, 15, 16, 17, 18, 23, 25, 33, 36, 38, 45, 47, 53, 54, 63, 64, 65, 67, 71], "printf": [1, 33, 36, 45, 53, 62, 64, 65, 72], "n": [1, 2, 4, 5, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 20, 22, 33, 35, 36, 37, 40, 41, 44, 52, 53, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 76, 79], "data": [1, 2, 8, 11, 12, 13, 14, 21, 30, 33, 37, 39, 41, 47, 53, 54, 62, 64, 65, 68, 71, 73, 74, 76, 78], "multi": [1, 4, 14, 15, 23, 29, 30, 31, 32, 35, 38, 40, 44, 49, 50, 51, 52, 58, 60, 61, 62, 67, 71, 72, 78, 79, 80], "msb": 1, "order": [1, 2, 3, 4, 9, 12, 13, 15, 29, 33, 41, 50, 51, 54, 58, 62], "big": [1, 8, 16, 23], "endian": [1, 16, 23], "show": [1, 8, 9, 11, 13, 14, 15, 17, 20, 21, 22, 29, 50, 53, 60, 62, 63, 72, 74], "differ": [1, 2, 3, 7, 9, 10, 11, 12, 14, 15, 17, 18, 22, 23, 27, 29, 47, 51, 52, 53, 57, 58, 63, 66, 72, 74, 76, 79], "test": [1, 9, 11, 12, 16, 17, 18, 22, 30, 35, 66, 72, 74], "cnot": [1, 5, 9, 40, 56, 60, 67, 78], "my_cnot": 1, "print": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 27, 29, 33, 36, 45, 50, 52, 53, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 78, 79], "500": [1, 22, 67, 79], "exact": [1, 9, 10, 16, 20, 54], "random": [1, 2, 3, 4, 5, 8, 9, 13, 15, 16, 17, 18, 20, 21, 22, 27, 29, 53, 54, 66], "construct": [1, 2, 8, 9, 10, 12, 16, 17, 19, 22, 27, 29, 30, 33, 34, 35, 37, 45, 47, 50, 53, 56, 57, 58, 60, 61, 64, 68], "second": [1, 2, 3, 4, 7, 8, 9, 12, 13, 17, 19, 45, 50, 52, 54, 58, 60, 63], "1j": [1, 12], "xy": [1, 29], "kron": [1, 17], "my_xi": 1, "custom_xy_test": 1, "undo": 1, "prior": [1, 54, 63, 67, 72, 74, 79], "1000": [1, 3, 9, 11, 16, 17, 20, 23, 25, 33, 51, 58, 64, 66, 67, 79], "mycnot": 1, "myxi": 1, "hardwar": [1, 9, 14, 18, 20, 23, 30, 31, 49, 54, 58, 61, 78, 80], "synthes": [1, 3, 20, 40, 44, 68], "current": [1, 2, 3, 9, 29, 31, 33, 43, 51, 53, 54, 71, 74, 78, 80], "orca": [1, 2, 49], "which": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 25, 27, 29, 31, 33, 35, 38, 41, 45, 47, 50, 51, 53, 54, 60, 62, 63, 64, 66, 67, 68, 71, 72, 74, 75, 78, 80], "doe": [1, 2, 3, 7, 9, 14, 15, 20, 29, 31, 33, 37, 45, 50, 52, 53, 72, 74, 76, 78, 79, 80], "increment": [1, 2, 66], "qumod": 1, "up": [1, 2, 3, 7, 9, 13, 14, 16, 20, 29, 35, 41, 50, 51, 54, 57, 62, 63, 66, 68, 71, 74], "maximum": [1, 3, 8, 9, 20, 54], "valu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 22, 23, 27, 29, 30, 33, 35, 37, 41, 45, 47, 50, 52, 53, 54, 58, 61, 63, 66, 67, 68, 72, 78, 79], "repres": [1, 2, 3, 4, 7, 8, 9, 13, 14, 15, 20, 25, 29, 33, 47, 50, 51, 54, 63, 67, 68], "If": [1, 2, 3, 5, 7, 9, 11, 14, 15, 16, 17, 18, 19, 23, 24, 29, 33, 47, 50, 51, 52, 54, 58, 63, 66, 67, 72, 74, 78, 79], "where": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 28, 29, 32, 38, 40, 41, 45, 47, 50, 51, 54, 58, 60, 63, 66, 67, 71, 72, 74, 76, 79], "alreadi": [1, 2, 3, 18, 29, 72, 74, 79], "ha": [1, 2, 3, 4, 5, 7, 9, 13, 15, 16, 17, 18, 20, 23, 25, 27, 33, 40, 47, 51, 52, 54, 57, 58, 63, 66, 67, 72, 74, 78], "effect": [1, 20, 47, 54, 58, 66, 67, 79], "u": [1, 2, 5, 6, 7, 8, 9, 12, 13, 14, 15, 18, 20, 21, 23, 29, 36, 37, 41, 42, 50, 51, 56, 57, 58, 63, 65, 66, 67, 68], "rangl": [1, 4, 14, 17, 18, 20, 33, 79], "3": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 31, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54, 58, 60, 63, 65, 66, 68, 71, 72, 74, 75, 79, 80], "cdot": [1, 5, 9, 12, 18], "d": [1, 2, 3, 9, 12, 15, 36, 37, 38, 45, 51, 63, 72, 74], "reduc": [1, 2, 10, 17, 18, 54], "minimum": [1, 13, 21, 52], "vacuum": [1, 63], "phase": [1, 2, 3, 5, 12, 14, 20, 40, 51, 63], "shifter": [1, 63], "add": [1, 2, 3, 9, 12, 13, 21, 25, 29, 31, 42, 50, 54, 63, 64, 68, 70, 71, 72, 74, 80], "a_1": [1, 17, 18], "creation": [1, 2, 4, 9, 32, 46, 50, 71], "dagger": [1, 4, 10, 12, 20, 25, 42, 50, 67], "shift": [1, 11, 52, 74], "p": [1, 4, 8, 9, 10, 17, 25, 72, 74], "left": [1, 2, 4, 5, 7, 10, 12, 13, 14, 15, 23, 63, 71, 74], "right": [1, 4, 10, 13, 14], "17": [1, 9, 15, 16, 17, 20, 29, 60, 68, 76], "beam": [1, 51, 63], "splitter": [1, 51, 63], "act": [1, 2, 3, 6, 7, 9, 13, 26, 47, 50, 67], "togeth": [1, 17, 30, 54, 68, 79], "parameter": [1, 2, 3, 8, 9, 10, 13, 19, 21, 22, 33, 35, 37, 40, 50, 52, 57, 60, 62, 64, 66], "relat": [1, 2, 9, 13, 18, 20, 68], "reflect": [1, 36, 54], "a_2": [1, 18], "b": [1, 9, 22, 27, 33, 60, 63], "_": [1, 4, 7, 11, 17, 18, 20, 29, 50], "rang": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27, 29, 31, 36, 37, 44, 45, 50, 52, 53, 56, 60, 66, 74, 79, 80], "34": [1, 9, 17], "return": [1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 27, 29, 33, 35, 36, 37, 40, 45, 47, 50, 52, 53, 54, 58, 62, 63, 64, 66, 68, 70, 71, 72, 76, 78], "result": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 27, 28, 33, 34, 35, 36, 38, 47, 50, 51, 52, 53, 54, 58, 60, 62, 63, 64, 65, 66, 67, 68, 71, 74, 78, 79], "input": [1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 14, 15, 20, 22, 26, 27, 33, 35, 36, 37, 44, 45, 53, 58, 60, 62, 63, 66], "class": [2, 3, 4, 9, 11, 20, 33, 35, 37, 41, 43, 45, 53, 54, 70, 71], "spin_op": [2, 8, 26, 33, 36, 40, 52, 53, 58, 62], "gener": [2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 17, 18, 21, 23, 26, 29, 33, 35, 36, 37, 38, 40, 41, 44, 46, 51, 52, 54, 57, 62, 63, 64, 65, 67, 68, 70, 74, 78], "sum": [2, 3, 4, 11, 12, 13, 16, 17, 20, 26, 41, 45, 63, 67], "tensor": [2, 3, 11, 17, 26, 31, 41, 52, 53, 71, 80], "product": [2, 3, 5, 17, 26, 30, 31, 41, 52, 79, 80], "expos": [2, 3, 9, 33, 35, 41, 43, 47, 53, 71], "typic": [2, 20, 33, 45, 52, 56, 57, 62, 68, 75, 76], "algebra": [2, 41, 62, 67], "programm": [2, 3, 33, 34, 35, 37, 38, 40, 42, 43, 45, 51, 53, 64], "defin": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 45, 50, 52, 53, 54, 56, 57, 58, 60, 62, 63, 64, 65, 67, 68, 71, 72, 74, 76, 78], "primit": [2, 13, 32, 35, 38, 41, 45, 46, 53, 57, 78], "them": [2, 3, 8, 9, 10, 15, 17, 20, 29, 31, 47, 50, 56, 67, 68, 72, 74, 76, 78, 79, 80], "compos": [2, 3, 11, 13, 20, 37, 38, 51, 63, 68], "larger": [2, 3, 9, 10, 13, 20, 52, 54], "thereof": [2, 38, 41], "public": [2, 9, 33, 35, 41, 43, 45, 53, 70, 71, 74], "type": [2, 4, 5, 6, 7, 9, 13, 14, 17, 19, 26, 32, 33, 35, 37, 38, 40, 41, 46, 50, 51, 53, 54, 56, 60, 62, 64, 67, 68, 71, 74, 78], "spin_op_term": 2, "bool": [2, 3, 33, 37, 40, 41, 43, 53, 71, 78], "we": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 23, 25, 29, 31, 33, 36, 40, 42, 47, 50, 51, 53, 54, 56, 57, 58, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 75, 76, 78, 79, 80], "term": [2, 3, 4, 5, 8, 12, 13, 15, 18, 19, 22, 23, 33, 40, 50, 51, 53, 58, 62, 74], "binari": [2, 3, 5, 9, 11, 13, 14, 18, 23, 31, 51, 72, 76, 79, 80], "symplect": 2, "form": [2, 3, 9, 20, 22, 23, 29, 31, 33, 40, 45, 47, 50, 54, 68, 80], "size": [2, 3, 5, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 33, 35, 36, 37, 38, 45, 52, 53, 54, 63, 64, 66, 74, 78], "nqubit": [2, 35, 36, 71], "element": [2, 3, 4, 14, 17, 18, 20, 27, 30, 33, 45, 53, 67], "x": [2, 3, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 33, 35, 36, 37, 40, 41, 42, 44, 50, 51, 52, 53, 54, 56, 58, 60, 62, 63, 64, 65, 67, 68, 72, 74, 76, 79], "next": [2, 4, 5, 8, 9, 10, 12, 16, 18, 19, 20, 22, 27, 29, 47, 63, 64, 68, 72], "z": [2, 3, 6, 8, 9, 11, 12, 13, 15, 19, 20, 21, 23, 24, 25, 26, 27, 29, 33, 36, 40, 41, 50, 52, 53, 58, 62, 64, 66, 72], "y": [2, 3, 5, 7, 8, 9, 11, 12, 14, 17, 18, 19, 23, 24, 26, 27, 29, 33, 36, 40, 41, 50, 52, 53, 58, 62, 64, 72, 74, 76, 79], "site": [2, 3, 8, 63, 79], "csr_spmatrix": 2, "tupl": [2, 3, 9, 27, 33, 37, 63], "doubl": [2, 3, 21, 22, 33, 35, 36, 37, 40, 41, 44, 52, 53, 54, 58, 62, 63, 71, 72, 74], "size_t": [2, 33, 35, 37, 41, 43, 45, 53, 63, 64, 71, 76, 78], "typedef": 2, "zero": [2, 3, 5, 6, 10, 11, 12, 17, 18, 20, 38, 50, 53, 58, 67], "spars": 2, "function": [2, 3, 5, 6, 7, 8, 11, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 29, 31, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 50, 51, 52, 53, 54, 56, 57, 58, 62, 64, 66, 68, 71, 76, 78, 80], "pair": [2, 3, 8, 12, 13, 15, 16, 37, 43, 47, 74], "const": [2, 33, 35, 36, 37, 40, 41, 43, 45, 52, 63, 70, 71, 76, 78], "termdata": 2, "constructor": [2, 3], "take": [2, 3, 4, 5, 7, 9, 12, 13, 14, 16, 17, 19, 22, 27, 28, 31, 33, 35, 36, 37, 40, 41, 42, 43, 44, 45, 47, 51, 54, 57, 58, 60, 62, 63, 64, 65, 66, 68, 72, 74, 79, 80], "coeffici": [2, 3, 8, 12, 19, 26, 50, 67], "constant": [2, 7, 19, 45, 47, 68], "id": [2, 3, 33, 43, 45, 51, 53, 54, 72, 74], "coeff": 2, "qubit": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 33, 35, 36, 37, 38, 41, 43, 44, 47, 50, 51, 52, 53, 54, 56, 57, 58, 60, 62, 63, 64, 65, 66, 67, 68, 71, 74, 79], "unordered_map": [2, 33], "_term": 2, "full": [2, 3, 4, 18, 28, 31, 52, 53, 54, 66, 67, 68, 70, 72, 74, 75, 80], "composit": [2, 50], "spin": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 19, 22, 23, 25, 27, 33, 36, 41, 47, 50, 52, 53, 58, 62, 63, 66, 68], "op": [2, 3, 12, 19, 47, 62, 68], "map": [2, 3, 5, 8, 9, 17, 20, 22, 25, 33, 45, 50, 68, 74], "individu": [2, 3, 38, 45, 53, 60], "bsf": 2, "from": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 25, 26, 27, 29, 31, 33, 34, 36, 37, 38, 41, 45, 47, 50, 52, 53, 54, 57, 58, 60, 62, 63, 66, 68, 71, 74, 75, 76, 79, 80], "creat": [2, 3, 5, 8, 9, 13, 14, 15, 17, 18, 20, 21, 25, 29, 30, 33, 35, 41, 44, 50, 51, 52, 53, 57, 58, 63, 64, 66, 68, 69, 71, 72, 74, 75, 76, 78, 79], "ident": [2, 12, 13, 17, 18, 20, 47, 50, 62], "numqubit": [2, 36], "given": [2, 3, 4, 7, 8, 9, 10, 13, 17, 18, 19, 20, 22, 23, 33, 45, 50, 51, 53, 54, 58, 62, 71], "o": [2, 9, 10, 14, 22, 36, 51, 52, 53, 54, 62, 63, 64, 65, 68, 72, 74, 76, 78, 79], "copi": [2, 15, 20, 29, 45, 47, 72, 74], "data_rep": 2, "serial": [2, 3, 12], "encod": [2, 3, 5, 9, 13, 18, 20, 33, 41, 53, 64, 67, 71], "via": [2, 3, 4, 5, 7, 11, 15, 20, 23, 25, 30, 32, 33, 35, 38, 40, 42, 44, 45, 47, 50, 51, 53, 54, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72], "real": [2, 8, 10, 12, 14, 16, 19, 20, 29, 57], "imaginari": [2, 4, 12], "part": [2, 3, 4, 12, 16, 18, 22, 33, 45, 68, 70, 72, 74], "append": [2, 3, 6, 8, 10, 11, 12, 16, 17, 18, 19, 20, 21, 22, 27, 29, 37, 51, 53, 54, 60, 63, 66], "larg": [2, 4, 5, 12, 17, 22, 28, 40, 53, 54, 57, 67], "end": [2, 3, 4, 7, 10, 14, 15, 16, 17, 19, 20, 23, 25, 29, 33, 45, 51, 53, 54, 58, 60, 63, 67, 72, 74], "total": [2, 3, 4, 8, 9, 11, 12, 14, 20, 22, 52, 53, 54, 58, 63, 66, 74], "destructor": 2, "iter": [2, 3, 4, 9, 12, 18, 20, 22, 23, 26, 27, 33, 45], "begin": [2, 3, 4, 7, 9, 10, 12, 14, 15, 17, 18, 20, 21, 23, 25, 29, 33, 45, 56, 63, 64, 67], "start": [2, 3, 4, 6, 14, 15, 18, 20, 23, 30, 31, 40, 45, 51, 53, 58, 60, 63, 68, 70, 76, 80], "equal": [2, 10, 20, 23, 29, 47, 53, 54, 58, 67], "v": [2, 3, 4, 8, 10, 12, 13, 18, 33, 36, 37, 42, 47, 52, 66, 68, 72], "noexcept": [2, 40], "subtract": 2, "multipli": [2, 12, 18], "true": [2, 3, 4, 5, 9, 11, 12, 15, 16, 17, 18, 20, 22, 27, 33, 37, 50, 51, 66, 72, 74, 79], "here": [2, 3, 4, 5, 7, 8, 9, 10, 12, 14, 17, 18, 20, 21, 22, 23, 25, 26, 30, 31, 33, 35, 36, 37, 40, 42, 50, 51, 52, 53, 60, 62, 63, 64, 65, 68, 70, 72, 74, 78, 79, 80], "consid": [2, 4, 5, 7, 9, 16, 17, 18, 19, 20, 36, 38, 47, 52, 53, 68, 74], "num_qubit": [2, 3, 19, 41, 52], "num_term": [2, 41], "get_coeffici": [2, 8, 12, 19, 41], "get": [2, 3, 10, 12, 14, 16, 17, 18, 20, 22, 25, 27, 29, 31, 33, 35, 36, 45, 51, 52, 53, 58, 62, 63, 66, 71, 72, 76, 79, 80], "throw": [2, 29], "except": [2, 3, 9, 12, 20, 29, 78], "get_raw_data": 2, "is_ident": [2, 41], "standard": [2, 3, 10, 20, 22, 27, 32, 33, 34, 35, 37, 40, 46, 53, 56, 57, 68, 70, 72, 74, 76, 78], "out": [2, 3, 7, 8, 9, 11, 12, 13, 14, 15, 18, 20, 22, 25, 27, 31, 33, 38, 45, 47, 53, 54, 58, 59, 60, 62, 63, 71, 74, 75, 78, 80], "to_str": [2, 8, 12, 19, 58], "printcoeffici": 2, "getdatarepresent": 2, "getdatatupl": 2, "fulli": [2, 3, 9, 11, 20, 31, 32, 51, 53, 64, 68, 72, 74, 78, 80], "distribute_term": 2, "numchunk": 2, "distribut": [2, 10, 16, 17, 20, 22, 23, 25, 31, 38, 52, 54, 58, 62, 64, 72, 78, 79, 80], "chunk": [2, 38], "for_each_term": [2, 8, 12, 19, 41], "give": [2, 13, 14, 17, 23, 31, 33, 48, 53, 54, 72, 74, 80], "functor": 2, "reduct": 2, "captur": [2, 13, 18, 22, 29, 31, 37, 50, 60, 80], "variabl": [2, 9, 12, 13, 15, 18, 22, 28, 31, 37, 38, 50, 51, 52, 53, 59, 63, 66, 72, 74, 79, 80], "for_each_pauli": [2, 41], "thrown": [2, 78], "than": [2, 3, 12, 13, 14, 15, 16, 18, 19, 22, 23, 24, 29, 40, 47, 52, 54, 58, 60, 67, 72, 74, 78], "user": [2, 3, 4, 5, 8, 9, 17, 20, 28, 31, 33, 35, 36, 38, 39, 42, 45, 50, 51, 52, 53, 54, 63, 66, 68, 71, 72, 74, 80], "should": [2, 3, 14, 18, 19, 22, 32, 33, 38, 40, 41, 43, 45, 51, 53, 54, 58, 71, 72, 74, 78, 79], "pass": [2, 3, 8, 9, 11, 12, 16, 19, 22, 29, 30, 33, 37, 38, 41, 45, 51, 53, 54, 60, 63, 65, 68, 69, 74, 78], "index": [2, 3, 5, 9, 11, 12, 16, 41, 43, 45, 47, 50, 53, 54, 71], "complex_matrix": 2, "to_matrix": [2, 10, 12, 50], "dens": 2, "to_sparse_matrix": 2, "col": 2, "static": [2, 3, 33, 40, 45, 50, 68, 72, 78], "nterm": 2, "unsign": 2, "seed": [2, 3, 4, 8, 9, 13, 17, 20, 21, 22, 29, 54, 66], "random_devic": 2, "specifi": [2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 22, 23, 24, 26, 27, 29, 33, 36, 37, 38, 40, 41, 42, 43, 45, 50, 51, 52, 53, 54, 58, 60, 63, 64, 66, 68, 71, 72, 74], "overrid": [2, 33, 54, 70, 72], "repeat": [2, 16, 17, 18, 22, 33], "from_word": 2, "pauliword": 2, "word": [2, 3, 8, 12, 18, 19], "g": [2, 3, 9, 13, 18, 19, 20, 26, 32, 33, 34, 37, 38, 39, 40, 41, 47, 50, 51, 52, 53, 54, 63, 68, 71, 72, 74, 75, 78, 79], "xyx": 2, "3rd": 2, "typenam": [2, 33, 35, 36, 37, 40, 44, 45, 76, 78], "qualifiedspinop": 2, "struct": [2, 33, 35, 36, 37, 40, 44, 52, 53, 62, 63, 64, 65, 68, 70, 78], "constexpr": [2, 35, 45, 52], "dyn": [2, 45], "qudit": [2, 34, 38, 40], "system": [2, 3, 4, 9, 12, 15, 19, 21, 22, 23, 28, 33, 38, 43, 45, 47, 50, 51, 53, 54, 57, 58, 62, 63, 66, 67, 70, 72, 75, 76, 78, 79], "inlin": [2, 33, 68], "new": [2, 3, 4, 7, 8, 9, 12, 14, 20, 30, 31, 33, 35, 47, 57, 68, 69, 72, 74, 78, 79, 80], "enable_if_t": 2, "qreg": [2, 3, 12, 13, 52], "contain": [2, 3, 4, 9, 10, 13, 17, 20, 30, 31, 33, 38, 40, 43, 47, 52, 54, 57, 58, 62, 63, 68, 71, 72, 78, 79, 80], "dynam": [2, 30, 35, 37, 38, 45, 51, 56, 57, 68, 78], "time": [2, 3, 4, 9, 10, 12, 13, 14, 16, 17, 18, 19, 22, 23, 24, 25, 29, 30, 32, 33, 36, 38, 45, 46, 51, 52, 53, 54, 58, 63, 64, 66, 67, 68, 72, 74, 79], "By": [2, 9, 10, 22, 28, 33, 40, 50, 51, 52, 53, 54, 58, 63, 76], "value_typ": 2, "indic": [2, 3, 4, 8, 20, 37, 40, 41, 45, 50, 71], "underli": [2, 3, 9, 22, 33, 43, 45, 51, 53, 71], "interfac": [2, 3, 45, 54, 71, 72, 74, 76], "idx": [2, 3, 11, 18, 20, 45, 50, 53], "qspan": 2, "front": [2, 36, 44, 45, 65], "back": [2, 20, 36, 45, 47, 53, 63, 64, 74], "last": [2, 17, 18, 20, 36, 45, 53, 60, 62], "slice": [2, 3, 45], "clear": [2, 3, 15, 33, 45, 71], "destroi": [2, 45], "postcondit": [2, 45], "own": [2, 3, 9, 17, 25, 38, 43, 45, 54, 68, 71, 72, 74, 78], "semant": [2, 3, 32, 37, 38, 39, 42, 44, 45, 47, 68], "held": 2, "explicit": [2, 10, 33, 44, 50, 54, 63, 78], "determin": [2, 4, 5, 7, 8, 9, 16, 19, 22, 30, 54, 58], "check": [2, 9, 18, 20, 31, 51, 52, 63, 67, 72, 74, 79, 80], "norm": [2, 17], "pre": [2, 3, 20, 31, 33, 51, 54, 63, 65, 72, 78, 80], "exist": [2, 3, 8, 15, 20, 29, 31, 32, 33, 38, 39, 58, 70, 72, 74, 78, 79, 80], "could": [2, 9, 10, 12, 18, 22, 29, 52, 56, 67, 72], "from_data": [2, 3, 50], "retriev": [2, 3, 23, 33, 50, 53, 63], "get_stat": [2, 3, 10, 14, 15, 16, 19, 20, 23, 29, 53, 60], "delet": [2, 45, 51, 74, 78], "cannot": [2, 3, 14, 29, 36, 37, 45, 47, 67, 74], "move": [2, 11, 45, 70, 72, 74, 79], "assign": [2, 9, 13, 43, 53, 54, 72], "qview": [2, 5, 10, 12, 14, 18, 36, 37, 44], "observe_result": [2, 3, 12, 33, 62], "encapsul": [2, 11, 33, 45, 53, 78], "observ": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 17, 19, 21, 22, 25, 27, 36, 50, 51, 53, 54, 55, 57, 62, 64, 65, 66, 67, 71, 79], "call": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 18, 20, 21, 22, 23, 25, 27, 29, 35, 36, 37, 40, 44, 50, 53, 54, 57, 58, 60, 63, 64, 65, 66, 67, 68, 71, 72, 74, 76], "measur": [2, 3, 5, 7, 9, 10, 11, 12, 14, 15, 17, 22, 23, 25, 30, 33, 34, 36, 37, 38, 40, 47, 50, 51, 53, 54, 56, 57, 58, 61, 63, 64, 68, 71, 79], "execut": [2, 4, 9, 14, 20, 29, 30, 31, 32, 33, 35, 37, 38, 43, 44, 50, 51, 53, 54, 57, 58, 59, 61, 62, 63, 64, 66, 68, 71, 74, 75, 76, 78, 79, 80], "ansatz": [2, 4, 6, 9, 13, 21, 22, 33, 36, 52, 53, 62], "circuit": [2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 27, 32, 33, 37, 38, 41, 42, 46, 47, 51, 52, 53, 54, 57, 58, 60, 62, 63, 68, 70], "global": [2, 3, 9, 13, 20, 33, 37, 52, 58, 63, 72], "expect": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 17, 19, 20, 21, 22, 23, 25, 27, 30, 33, 50, 52, 53, 54, 58, 61, 66, 72, 74, 78, 79], "h": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 27, 29, 33, 35, 36, 40, 41, 42, 44, 45, 47, 50, 51, 52, 53, 56, 58, 60, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 74, 76, 78, 79], "precomput": 2, "psi": [2, 6, 7, 10, 12, 15, 23, 29, 33, 36, 58, 67], "sample_result": [2, 3, 18, 23, 33, 63, 78], "wa": [2, 3, 4, 7, 9, 12, 20, 33, 53, 64, 68, 72, 75, 79], "shot": [2, 3, 8, 9, 10, 16, 17, 18, 23, 33, 36, 51, 54, 58, 63, 64, 67, 71], "base": [2, 3, 8, 9, 11, 14, 17, 18, 20, 22, 26, 31, 32, 33, 35, 39, 40, 45, 50, 52, 53, 54, 58, 66, 68, 71, 72, 74, 76, 80], "raw_data": [2, 9, 33], "raw": [2, 3, 9], "convers": [2, 33], "simpli": [2, 29, 67, 74, 79], "ignor": [2, 9, 18, 54], "fine": [2, 33, 64, 65, 67], "grain": [2, 33, 64, 65], "explicitli": [2, 9, 10, 47, 51, 54, 68, 76, 78], "request": [2, 3, 33, 51, 52, 53, 54, 63, 74], "oppos": [2, 78], "observe_data": 2, "spinoptyp": [2, 33], "sub": [2, 3, 32, 33, 36, 37, 45, 46, 50, 74], "id_coeffici": [2, 33], "executioncontext": 2, "abstract": [2, 3, 26, 32, 33, 35, 40, 41, 43, 45, 53, 57], "how": [2, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 26, 27, 29, 31, 33, 35, 40, 50, 52, 53, 54, 57, 58, 60, 61, 63, 64, 65, 66, 68, 71, 72, 74, 75, 78, 79, 80], "shots_": 2, "member": [2, 3, 13, 37], "basic": [2, 6, 30, 52, 60, 74, 79], "option": [2, 3, 4, 7, 9, 12, 16, 17, 21, 22, 23, 27, 28, 33, 35, 40, 43, 50, 51, 52, 53, 58, 62, 63, 65, 66, 71, 72, 74], "invoc": [2, 3, 35, 37, 43, 45, 53, 54, 71], "expectationvalu": 2, "nullopt": 2, "optimization_result": [2, 33], "optresult": 2, "optim": [2, 4, 6, 8, 9, 11, 12, 13, 17, 18, 22, 30, 31, 32, 42, 45, 47, 50, 52, 54, 61, 68, 70, 72, 74, 80], "hasconditionalsonmeasureresult": 2, "fals": [2, 3, 4, 8, 9, 12, 15, 16, 18, 19, 20, 72, 74], "being": [2, 3, 5, 6, 15, 25, 32, 33, 47, 54, 63, 78], "statement": [2, 7, 24, 33, 34, 57], "noise_model": [2, 3, 16, 17, 25], "noisemodel": [2, 3, 16, 17, 25], "nullptr": 2, "canhandleobserv": 2, "flag": [2, 37, 50, 51, 53, 54, 63, 68, 70, 74, 78], "handl": [2, 3, 9, 19, 51, 52, 53, 54, 63, 71, 74, 78], "task": [2, 5, 9, 20, 23, 29, 33, 41, 53, 54, 58, 68, 71], "under": [2, 3, 17, 20, 50, 51, 70, 71, 72, 74, 78], "asyncexec": 2, "occur": [2, 3, 9, 12, 17, 24, 33, 38, 63, 67, 74], "asynchron": [2, 3, 10, 12, 23, 33, 43, 53, 58, 63, 66], "detail": [2, 3, 4, 8, 10, 13, 16, 31, 32, 38, 50, 51, 52, 54, 71, 72, 74, 79, 80], "futur": [2, 3, 33, 49, 51, 53, 54, 63, 72, 74], "futureresult": 2, "store": [2, 3, 4, 12, 15, 19, 38, 45, 53, 58, 63, 66, 67, 68], "async_result": [2, 63], "asyncresult": [2, 66], "async_sample_result": [2, 33, 53], "so": [2, 5, 8, 9, 10, 12, 13, 15, 16, 17, 18, 20, 22, 27, 29, 33, 50, 51, 53, 54, 64, 67, 68, 70, 71, 72, 74, 78, 79], "boundari": [2, 11], "unique_ptr": 2, "simulationst": 2, "pointer": [2, 3, 78], "simul": [2, 4, 6, 8, 10, 12, 16, 17, 18, 22, 23, 27, 28, 29, 30, 31, 32, 33, 49, 50, 51, 55, 57, 58, 61, 63, 64, 66, 68, 69, 72, 79, 80], "amplitudemap": 2, "amplitud": [2, 3, 5, 14, 16, 20, 50, 51, 53, 60, 63, 66, 67], "overlapcomputest": 2, "overlap": [2, 3, 12, 53], "overlapresult": 2, "trace": [2, 3, 15, 20, 25, 52], "kerneltrac": 2, "run": [2, 3, 5, 7, 8, 9, 11, 12, 16, 17, 22, 23, 30, 32, 33, 36, 50, 51, 52, 53, 54, 55, 57, 62, 63, 64, 65, 66, 68, 71, 72, 74, 75, 78, 79], "tracer": 2, "persist": [2, 33, 38, 52, 74], "resourc": [2, 4, 18, 22, 27, 43, 52, 53, 54, 58, 72, 74], "kernelnam": [2, 3], "batchiter": 2, "batch": [2, 27, 38], "observe_n": 2, "sample_n": 2, "totaliter": 2, "registernam": [2, 33], "mid": [2, 3, 54], "mode": [2, 3, 9, 23, 36, 38, 50, 51, 63, 68, 72], "keep": [2, 5, 17, 33, 54], "track": [2, 33, 67], "reorderidx": 2, "inform": [2, 3, 5, 7, 9, 12, 15, 18, 20, 22, 26, 31, 33, 38, 40, 43, 45, 51, 52, 53, 54, 58, 63, 66, 67, 68, 72, 74, 76, 77, 79, 80], "reorder": 2, "after": [2, 3, 4, 7, 9, 15, 29, 33, 51, 58, 60, 63, 68, 72, 74], "empti": [2, 3, 12, 35, 41, 54, 63, 74], "mean": [2, 3, 5, 14, 15, 16, 20, 22, 40, 47, 54, 63, 66, 74, 79], "char": [2, 36, 53, 58, 72, 78, 79], "invocationresultbuff": 2, "buffer": [2, 53, 78], "note": [2, 3, 9, 10, 13, 15, 17, 18, 19, 20, 23, 29, 36, 38, 47, 51, 52, 53, 58, 60, 63, 67, 68, 72, 74, 78], "need": [2, 3, 4, 5, 9, 13, 14, 17, 18, 22, 23, 25, 29, 47, 50, 51, 52, 53, 54, 58, 62, 63, 66, 71, 72, 74, 75, 78], "abl": [2, 9, 23, 33, 51, 52, 53, 58, 74, 78, 79], "job": [2, 13, 33, 51, 52, 53, 63, 74], "qpu": [2, 3, 10, 12, 22, 23, 27, 30, 31, 32, 33, 38, 43, 51, 53, 54, 57, 58, 62, 63, 66, 71, 78, 79, 80], "extra": [2, 11, 12, 40, 47, 51], "configur": [2, 8, 9, 21, 43, 51, 52, 53, 54, 63, 66, 68, 71, 72, 74, 75, 78, 79], "later": [2, 7, 9, 12, 15, 16, 33, 37, 53, 63, 72, 74], "server": [2, 51, 53, 63, 74], "file": [2, 4, 9, 33, 40, 51, 52, 53, 58, 59, 63, 66, 68, 70, 71, 72, 74, 75, 76, 78, 79], "read": [2, 3, 13, 18, 60, 63], "wrap": [2, 33, 35, 47, 50], "t": [2, 3, 4, 7, 8, 10, 14, 19, 20, 29, 31, 33, 36, 37, 40, 41, 50, 52, 54, 60, 63, 64, 67, 72, 74, 80], "case": [2, 3, 7, 8, 9, 12, 13, 14, 15, 16, 17, 22, 24, 25, 27, 33, 47, 50, 56, 60, 62, 72, 76, 78], "must": [2, 3, 16, 17, 18, 22, 23, 32, 33, 37, 39, 42, 45, 47, 50, 51, 54, 63, 67, 70, 71, 72, 74, 78, 79], "some": [2, 4, 8, 9, 11, 14, 15, 16, 18, 19, 22, 24, 28, 31, 33, 47, 52, 53, 54, 67, 68, 70, 71, 72, 74, 75, 78, 79, 80], "point": [2, 3, 9, 14, 29, 33, 37, 40, 53, 54, 68, 71, 72, 74], "same": [2, 3, 7, 9, 12, 13, 14, 15, 16, 17, 20, 22, 27, 29, 33, 47, 51, 53, 58, 63, 65, 66, 68, 71, 72, 74, 78], "runtim": [2, 9, 32, 33, 35, 38, 51, 52, 53, 54, 62, 68, 71, 74, 76], "_job": 2, "qpunamein": 2, "config": [2, 4, 54, 71, 72, 74, 79], "info": [2, 20, 52, 54, 59, 68], "requir": [2, 3, 4, 7, 8, 9, 10, 11, 14, 15, 18, 20, 22, 27, 29, 33, 37, 39, 40, 42, 44, 45, 47, 50, 51, 52, 53, 54, 63, 66, 67, 72, 75, 79], "date": 2, "even": [2, 7, 9, 13, 16, 18, 23, 31, 54, 72, 74, 78, 80], "face": [2, 20, 39], "itself": [2, 44, 47, 53, 72, 74], "collect": [2, 3, 4, 8, 12, 15, 58], "pertin": [2, 33, 39, 44, 45], "remot": [2, 3, 33, 38, 49, 52, 54, 59, 66], "rest": [2, 3, 5, 15, 16, 32, 51, 53, 54, 63, 72, 74, 78], "wait": [2, 3, 9, 23, 52, 53, 58, 63], "until": [2, 3, 9, 16, 20, 23, 58, 63], "readi": [2, 18, 21, 63, 74], "executionresult": 2, "correspond": [2, 3, 4, 6, 8, 9, 10, 12, 13, 19, 20, 22, 26, 27, 33, 51, 63, 64, 72, 74, 76], "well": [2, 3, 5, 10, 12, 17, 18, 19, 26, 31, 33, 36, 38, 50, 54, 71, 74, 75, 78, 80], "integ": [2, 3, 12, 13, 16, 23, 30, 37, 43, 53, 54, 58, 60, 66], "1st": [2, 15, 25], "bitstr": [2, 3, 5, 9, 13, 16, 33], "m": [2, 4, 8, 9, 10, 12, 17, 29, 36, 41, 53, 54, 63, 66, 68, 72, 74, 78, 79], "tripl": [2, 68], "long": [2, 23, 33, 36, 58, 72, 74, 78, 79], "length": [2, 5, 17, 63], "deseri": [2, 3], "discuss": [2, 9, 15, 27, 70], "brief": [2, 71], "countsdictionari": [2, 33], "assum": [2, 3, 8, 9, 13, 15, 16, 17, 18, 38, 40, 45, 50, 53, 54, 58, 63, 71, 72, 74, 76], "expval": [2, 33], "other": [2, 3, 4, 8, 9, 12, 13, 14, 15, 17, 18, 19, 21, 22, 23, 25, 29, 30, 32, 35, 37, 40, 45, 47, 50, 51, 52, 53, 54, 56, 57, 58, 63, 72, 74, 78, 79], "appendresult": 2, "globalregisternam": [2, 33], "classic": [2, 4, 7, 8, 9, 11, 12, 13, 14, 15, 21, 22, 32, 34, 37, 38, 40, 41, 45, 47, 53, 57, 58, 63, 67, 68, 71, 72, 75, 78], "sequentialdata": 2, "sequenti": [2, 3, 33, 52, 58], "collat": [2, 3], "": [2, 3, 4, 5, 9, 12, 13, 14, 15, 16, 17, 19, 20, 22, 23, 25, 27, 29, 30, 33, 40, 43, 47, 50, 51, 52, 53, 56, 57, 58, 62, 63, 64, 65, 66, 68, 70, 72, 74, 75, 76, 79], "holist": 2, "nullari": 2, "precomputedexp": 2, "__global__": [2, 3, 33, 52, 63, 76], "has_expect": 2, "string_view": [2, 33, 71], "anoth": [2, 5, 9, 15, 16, 18, 36, 37, 47, 54, 60, 63, 65, 72], "register_nam": [2, 3, 33], "tandem": [2, 66], "to_map": [2, 33], "regnam": 2, "merg": [2, 3, 68], "necessari": [2, 12, 18, 51, 53, 54, 63, 68, 72, 74, 78], "document": [2, 3, 22, 29, 30, 31, 32, 40, 49, 51, 52, 54, 70, 71, 72, 74, 78, 80], "exp_val_z": 2, "deprec": [2, 3, 22, 49, 53, 54], "probabl": [2, 3, 16, 17, 18, 25, 33, 58, 67, 78], "most_prob": [2, 3, 5, 8, 18, 36, 58, 67], "most": [2, 3, 8, 9, 13, 15, 18, 22, 23, 31, 33, 47, 52, 58, 60, 63, 68, 72, 74, 75, 78, 80], "ostream": [2, 78], "output": [2, 3, 4, 7, 11, 15, 18, 20, 29, 37, 50, 51, 55, 58, 68, 74, 78, 79], "stream": [2, 9, 38], "extract": [2, 3, 4, 7, 9, 10, 12, 15, 18, 26, 33, 35, 36, 45, 47, 58, 68, 72, 74], "unord": 2, "get_margin": [2, 33], "marginalindic": [2, 33], "margin": [2, 17], "those": [2, 18, 31, 33, 37, 47, 50, 53, 54, 68, 80], "subset": [2, 3, 9, 11, 20, 33, 37, 45, 47], "rvalu": 2, "refer": [2, 13, 15, 18, 22, 30, 33, 37, 38, 45, 47, 51, 52, 53, 54, 63, 72, 74], "newbitstr": 2, "oldbitstr": 2, "process": [2, 3, 9, 10, 14, 16, 20, 22, 23, 24, 32, 33, 38, 43, 51, 52, 53, 54, 57, 63, 66, 67, 68, 72, 78], "const_iter": 2, "cbegin": 2, "cend": 2, "has_even_par": 2, "pariti": [2, 50], "extens": [2, 29, 32, 33, 39, 45, 49, 71, 74, 76, 79], "concret": [2, 3, 13, 33, 58, 62], "describ": [2, 3, 5, 10, 12, 15, 17, 18, 25, 43, 45, 50, 51, 65, 67, 71, 72, 74, 78], "effici": [2, 9, 18, 20, 22, 28, 54], "manner": [2, 33, 53, 71], "client": [2, 33, 52, 72], "remain": [2, 3, 4, 44, 63, 72], "gpu": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16, 19, 20, 22, 23, 27, 30, 31, 32, 38, 50, 53, 55, 57, 61, 71, 72, 76, 78, 79, 80], "devic": [2, 3, 9, 11, 16, 17, 20, 22, 23, 25, 27, 33, 36, 37, 40, 44, 51, 52, 53, 54, 58, 63, 68, 71, 74], "cpu": [2, 4, 5, 9, 11, 13, 14, 15, 16, 17, 19, 20, 23, 25, 29, 30, 49, 52, 53, 57, 58, 66, 68, 72, 74, 78, 79], "memori": [2, 9, 11, 19, 20, 34, 37, 38, 45, 47, 52, 53, 54, 57, 66, 68, 74], "primari": [2, 3, 5, 8, 33, 45, 71], "goal": [2, 5, 9, 13, 18, 19, 22], "minim": [2, 8, 9, 13, 17, 20, 21, 22, 27, 29, 30, 72, 74, 79], "transfer": [2, 53, 54], "subclass": [2, 33, 71], "cusvstat": 2, "scalartyp": [2, 78], "remotesimulationst": 2, "nvqir": [2, 30, 68, 69, 71], "mpssimulationst": 2, "tensornetsimulationst": 2, "made": [2, 13, 18, 19, 58, 74], "extent": [2, 3, 54], "enum": [2, 4], "precis": [2, 3, 14, 21, 22, 52, 54, 60, 67], "enumer": [2, 3, 5, 17, 20, 36], "fp32": [2, 3, 22, 52, 53, 54], "fp64": [2, 3, 12, 21, 28, 49, 52, 53, 54], "simulation_precis": 2, "possibl": [2, 7, 8, 9, 15, 16, 17, 20, 29, 32, 47, 67, 74, 76, 78], "float": [2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22, 26, 27, 33, 36, 37, 40, 44, 52, 53, 54, 60, 62, 71], "tensorstatedata": 2, "dimens": [2, 3, 6, 8, 9, 12, 13, 15, 20, 27, 33, 50, 54], "state_data": 2, "variant": [2, 40], "custatevec": [2, 52, 53, 54, 71], "attempt": [2, 18, 78], "care": [2, 33, 78], "taken": [2, 9], "ensur": [2, 3, 12, 68, 70, 72, 74, 78], "comparison": [2, 7], "compat": [2, 3, 39, 54, 72], "registeredtyp": 2, "declar": [2, 33, 37, 38, 40, 68, 71, 76, 78], "themselv": [2, 51, 56], "plugin": [2, 31, 70, 72, 74, 80], "myinterfac": 2, "column": [2, 3, 29], "upon": [2, 6, 15, 23, 47, 58, 63, 67, 74], "destruct": 2, "rawdata": 2, "intern": [2, 3, 53], "modifi": [2, 36, 37, 40, 44, 47, 54, 74], "correct": [2, 5, 14, 15, 17, 20, 36, 57, 63, 72, 74], "j": [2, 3, 8, 9, 10, 12, 13, 14, 17, 18, 19, 20, 23, 36, 37, 41, 66, 72], "minimal_eigenvalu": [2, 3], "eigenvalu": [2, 3, 10, 12, 13, 54], "thei": [2, 3, 4, 6, 9, 12, 13, 15, 16, 18, 37, 45, 47, 57, 67, 72, 74], "set_zero": 2, "seen": [2, 7, 18, 20], "manag": [2, 4, 51, 52, 53, 72, 74], "instruct": [2, 18, 20, 31, 38, 40, 42, 47, 51, 52, 54, 63, 64, 68, 72, 74, 78, 79, 80], "control": [2, 3, 10, 12, 13, 14, 18, 30, 31, 32, 35, 36, 37, 38, 40, 42, 44, 45, 46, 47, 50, 51, 53, 54, 56, 57, 60, 61, 63, 64, 67, 68, 71, 74, 80], "flow": [2, 11, 32, 33, 37, 46, 54, 57, 68], "path": [2, 3, 29, 51, 68, 71, 72, 74], "thu": [2, 15, 50, 52, 53, 54, 67, 68], "might": [2, 4, 9, 12, 16, 20, 35, 40, 47, 49, 52, 53, 65], "produc": [2, 3, 4, 5, 8, 9, 10, 12, 13, 16, 18, 23, 27, 33, 36, 41, 42, 47, 56, 58, 64, 68, 71, 78], "elementtyp": 2, "is_integral_v": 2, "is_signed_v": 2, "exclus": [2, 7], "stop": [2, 58, 74], "step": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 22, 27, 36, 50, 63, 68, 72, 76, 79], "reach": [2, 16, 20, 66], "quantumkernel": [2, 33, 44], "arg": [2, 3, 9, 11, 14, 17, 33, 35, 40, 44, 50, 53, 58, 68, 74], "is_invocable_v": 2, "draw": [2, 3, 5, 6, 7, 9, 14, 17, 18, 20, 23, 25, 29, 58], "utf": [2, 3], "8": [2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 31, 33, 36, 37, 38, 49, 50, 51, 52, 53, 54, 63, 66, 68, 72, 74, 79, 80], "usag": [2, 3, 53, 66], "iostream": [2, 52, 56, 58, 63, 78], "mz": [2, 3, 5, 7, 10, 15, 17, 18, 23, 24, 33, 35, 36, 47, 51, 52, 53, 56, 58, 60, 63, 64, 65, 66, 67, 68, 78, 79], "cout": [2, 52, 58, 63, 78], "q0": [2, 3, 5, 6, 7, 9, 14, 16, 18, 20, 23, 25, 29, 47], "q1": [2, 3, 5, 7, 9, 14, 16, 18, 20, 23, 25, 29, 47], "ry": [2, 3, 6, 8, 9, 10, 11, 15, 27, 33, 36, 37, 40, 42, 52, 53, 60, 62], "59": [2, 3, 13, 33, 36, 53, 62], "callabl": [2, 3, 32, 33, 35, 36, 37, 56, 62, 64], "trivial": [2, 9, 16, 18, 33, 53, 62, 75], "signatur": [2, 3, 33, 35, 37, 65, 68], "evalu": [2, 3, 9, 12, 22, 27, 33, 52, 53, 54, 62], "without": [2, 3, 12, 20, 22, 33, 37, 44, 51, 54, 63, 72, 74, 78, 79], "regard": 2, "depth": [2, 9, 48], "etc": [2, 3, 37, 38, 50, 53, 54, 57, 63, 71, 72, 74, 79], "kraus_op": 2, "krau": [2, 3, 25], "initializer_list": 2, "initlist": 2, "adjoint": [2, 14, 18, 35, 36, 40, 44, 47, 60, 68], "flatten": [2, 20, 78], "nrow": [2, 11, 29], "ncol": [2, 29], "kraus_channel": 2, "channel": [2, 3, 15, 17, 25, 74], "action": [2, 4, 33, 36, 37, 74], "matric": [2, 3, 4, 12, 54], "amplitude_damping_channel": 2, "bit_flip_channel": 2, "depolarization_channel": [2, 25], "phase_flip_channel": 2, "inputlist": 2, "inop": 2, "lvalu": 2, "make": [2, 3, 7, 8, 14, 15, 22, 29, 33, 53, 54, 68, 71, 72, 74, 76, 79], "get_op": 2, "push_back": [2, 37], "noise_model_typ": 2, "noise_typ": 2, "unknown": [2, 15, 68, 74], "autom": [2, 71], "damp": 2, "error": [2, 9, 10, 16, 25, 29, 30, 40, 47, 51, 52, 54, 57, 63, 72, 74, 78], "depolar": [2, 3, 25], "densiti": [2, 3, 15, 16, 17, 25, 29, 49, 52, 54], "predicatefuncti": 2, "callback": [2, 3, 21, 22], "operand": [2, 3, 40, 53], "add_channel": [2, 3, 16, 17, 25], "quantumop": 2, "pred": [2, 68], "add_all_qubit_channel": [2, 3], "numcontrol": 2, "get_channel": [2, 3], "targetqubit": 2, "controlqubit": 2, "param": [2, 4, 13, 16, 36, 37, 40, 52, 66], "relev": [2, 4, 6, 9, 11, 17, 43, 54], "downstream": [2, 30, 71, 75, 77], "object": [2, 3, 4, 8, 9, 13, 17, 19, 23, 27, 29, 33, 47, 53, 58, 68], "logic": [2, 7, 43, 45, 53], "kernel_build": [2, 35], "kernel_builder_bas": 2, "kernelbuildertyp": 2, "mlir": [2, 3, 30, 53, 68, 69, 70, 72], "getargu": [2, 35, 70], "quakevalu": [2, 3, 35], "isargstdvec": 2, "otherwis": [2, 3, 7, 15, 16, 18, 54, 58], "getnumparam": [2, 35], "qalloc": [2, 3, 35, 51, 52, 53, 66], "qvec": [2, 47, 51], "veq": [2, 3, 47, 68], "blockargu": 2, "simplic": [2, 4, 16], "impli": [2, 3, 54], "goe": [2, 38], "scope": [2, 37, 38, 45, 68, 70], "befor": [2, 10, 13, 19, 29, 51, 59, 63, 72, 74], "mai": [2, 3, 7, 9, 12, 13, 17, 33, 35, 37, 38, 40, 44, 45, 50, 51, 52, 53, 54, 57, 58, 59, 63, 65, 72, 74, 76, 78, 79], "garbag": 2, "constantv": 2, "val": [2, 17], "swap": [2, 4, 8, 18, 20, 29, 36, 63], "mod": [2, 5, 18, 40], "is_same_v": 2, "perform": [2, 3, 4, 5, 7, 9, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22, 24, 30, 31, 33, 36, 50, 51, 53, 54, 58, 60, 61, 63, 65, 66, 67, 70, 71, 72, 74, 78, 79, 80], "fredkin": 2, "between": [2, 3, 5, 8, 9, 10, 13, 15, 16, 17, 18, 20, 21, 23, 29, 37, 47, 50, 52, 56, 57, 58, 63, 66, 74, 76], "meant": [2, 32], "thin": [2, 3], "wrapper": [2, 3, 53], "around": [2, 3, 4, 5, 7, 17, 19, 33, 79], "instanc": [2, 3, 9, 15, 20, 33, 35, 40, 45, 52, 53, 54, 57, 74], "quak": [2, 3, 13, 30, 46, 68, 70], "dialect": [2, 3, 68, 70], "arithmet": [2, 37, 38], "getvalu": 2, "actual": [2, 17, 20, 33, 58, 71], "implicitlocopbuild": 2, "arith": [2, 47, 68], "constantfloatop": 2, "canvalidatenumel": 2, "stdvectyp": 2, "do": [2, 3, 4, 9, 14, 15, 17, 18, 20, 31, 40, 42, 45, 47, 52, 53, 54, 56, 57, 60, 64, 67, 68, 72, 74, 75, 76, 79, 80], "loop": [2, 4, 5, 8, 9, 12, 13, 16, 19, 27, 34, 45, 56, 63, 66, 68], "know": [2, 4, 5, 15, 18, 29, 31, 47, 80], "bound": [2, 3, 8, 15, 17], "startidx": [2, 3], "subscript": [2, 3, 51, 52], "stdvec": [2, 47, 68], "constants": 2, "isstdvec": 2, "getrequiredel": 2, "veqtyp": 2, "divid": [2, 13, 18], "invers": [2, 14, 20, 36, 50], "friend": [2, 15], "write": [2, 3, 59, 63, 67, 70, 74, 76], "wai": [2, 3, 7, 12, 18, 22, 23, 27, 33, 44, 47, 50, 51, 58, 60, 72], "code": [2, 3, 5, 7, 8, 9, 10, 13, 14, 15, 18, 21, 22, 26, 27, 29, 32, 33, 35, 36, 37, 38, 41, 42, 44, 45, 47, 50, 51, 52, 53, 54, 58, 62, 63, 64, 66, 67, 68, 70, 71, 72, 75, 76, 78, 79], "mlircontext": 2, "ctx": [2, 11, 70], "f": [2, 5, 7, 9, 15, 17, 18, 19, 20, 27, 36, 37, 50, 72, 79], "high": [2, 17, 51, 66, 68, 78], "serv": [2, 3, 9, 37, 45, 52, 70, 72], "work": [2, 4, 8, 9, 10, 12, 14, 17, 18, 20, 22, 30, 33, 52, 53, 66, 69, 72, 74, 75, 78, 79], "subtyp": 2, "possibli": [2, 4, 37], "deleg": [2, 52, 71, 74], "third": [2, 30, 77], "parti": [2, 15, 30, 77], "immut": 2, "mutabl": [2, 33], "gradient": [2, 6, 11, 30, 52, 61], "df": [2, 17], "dx_i": 2, "scalar": [2, 3, 33], "queri": [2, 3, 5, 7, 33, 43, 53, 62], "whether": [2, 3, 18, 20, 72, 74], "strategi": [2, 33, 38, 44, 71], "thing": [2, 65], "max": [2, 9, 20, 30, 52, 54], "cobyla": [2, 3, 6, 9, 21, 22, 27, 33], "opt": [2, 37, 68, 70, 72, 74], "assert": [2, 5, 18, 20, 22, 36, 37], "requiresgradi": [2, 33], "algo": 2, "opt_val": [2, 52], "opt_param": [2, 33, 52], "dx": [2, 33], "virtual": [2, 4, 31, 33, 52, 53, 58, 62, 66, 71, 72, 80], "achiev": [2, 4, 13, 14, 18, 33, 51, 52, 65], "dim": [2, 3, 20, 52, 54], "optimizable_funct": [2, 33], "opt_funct": [2, 33, 52], "variat": [2, 4, 6, 9, 11, 12, 13, 22, 23, 27, 30, 33], "custom": [2, 3, 22, 25, 31, 33, 37, 50, 53, 54, 60, 64, 70, 72, 74, 77, 78, 80], "ptrtoown": 2, "conveni": [2, 14, 26, 41, 47, 72, 74], "jdx": 2, "tensoridx": 2, "get_tensor": 2, "just": [2, 7, 9, 13, 18, 23, 32, 46, 53, 58, 59, 64, 67, 68, 74], "rank": [2, 3, 53, 64, 66], "get_num_tensor": 2, "get_num_qubit": [2, 43], "get_precis": [2, 3], "is_on_gpu": [2, 3], "to_host": 2, "hostptr": 2, "numel": 2, "pure": [2, 25, 36, 37, 44], "basisst": 2, "host": [2, 34, 36, 37, 38, 41, 45, 52, 53, 54, 62, 78, 79], "leverag": [2, 3, 9, 12, 20, 33, 35, 37, 40, 44, 45, 54, 64, 68, 71, 75], "separ": [2, 9, 20, 54, 72, 74], "mapper": 2, "inherit": [2, 34, 38, 53], "updat": [2, 9, 22, 33, 51, 63, 72, 79], "protect": [2, 45, 71], "getexpectedvalu": 2, "central_differ": [2, 33], "forward_differ": 2, "parameter_shift": 2, "prescrib": 2, "kernelt": 2, "argsmapp": [2, 33], "setarg": 2, "save": [2, 3, 10, 11, 15, 16, 19, 27, 50, 52, 53, 58, 66, 68, 74, 76], "nvqc": [2, 49, 52], "setkernel": 2, "been": [2, 3, 15, 18, 20, 29, 51, 52, 57, 58, 63, 72, 74], "have": [2, 5, 7, 8, 9, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 28, 29, 31, 33, 47, 50, 52, 53, 54, 58, 63, 66, 67, 70, 72, 74, 75, 76, 78, 79, 80], "funcatx": [2, 3], "func": [2, 33, 47, 68, 70], "clone": [2, 11, 15, 45, 70, 72], "deriv": [2, 7, 9, 10, 18, 33, 67], "exp_h": [2, 33], "forward": [2, 11, 22, 27], "approxim": [2, 8, 9, 12, 13, 16, 22, 30, 54, 58], "registri": [2, 74], "unit": [2, 3, 23, 29, 32, 37, 38, 40, 43, 45, 51, 57, 67], "express": [2, 3, 15, 20, 27, 31, 33, 34, 35, 36, 38, 41, 50, 53, 57, 64, 65, 68, 78, 80], "certain": [2, 3, 8, 20, 24, 28, 45, 52, 53, 54, 71, 74], "connect": [2, 9, 11, 13, 31, 38, 43, 45, 47, 63, 72, 80], "queue": [2, 33, 52, 63], "enqueu": 2, "quantum_platform": [2, 3, 43, 53, 62, 68], "baseremoterestqpu": 2, "baseremotesimulatorqpu": 2, "orcaremoterestqpu": 2, "_qpuid": 2, "setid": 2, "thread": [2, 3, 38, 53, 54, 62, 63, 66, 71], "getexecutionthreadid": 2, "getnumqubit": 2, "getconnect": 2, "issimul": 2, "supportsconditionalfeedback": 2, "feedback": [2, 38, 57, 74], "remotecap": 2, "getremotecap": 2, "capabl": [2, 18, 19, 20, 52, 54, 66, 72, 74], "setshot": 2, "_nshot": 2, "noth": [2, 15], "wish": [2, 9, 52, 53, 62, 74], "isemul": 2, "local": [2, 3, 4, 7, 30, 51, 52, 53, 58, 63, 68, 72, 73, 75], "emul": [2, 3, 23, 51, 54, 63], "quantumtask": 2, "setexecutioncontext": 2, "resetexecutioncontext": 2, "reset": [2, 3, 33, 36, 38, 54, 71], "kernelthunkresulttyp": 2, "launchkernel": 2, "kernelthunktyp": 2, "kernelfunc": 2, "uint64_t": 2, "rawarg": 2, "launch": [2, 33, 53, 54, 74, 79], "pack": [2, 78], "launchserializedcodeexecut": 2, "serializedcodeexecutioncontext": 2, "serializecodeexecutionobject": 2, "onrandomseedset": 2, "notifi": 2, "let": [2, 5, 7, 10, 13, 14, 15, 17, 18, 20, 21, 25, 29, 40, 47, 50, 56, 57, 58, 62, 64, 65, 66, 67, 68, 74, 75, 76, 79], "fermioniqbaseqpu": 2, "querabaseqpu": 2, "basenvcfsimulatorqpu": 2, "submit": [2, 3, 51, 52, 54, 63, 74], "nvcf": 2, "servic": [2, 51, 52, 53, 63, 74], "interact": [2, 3, 4, 8, 43, 50, 74], "enough": [2, 5, 9], "moreov": [2, 15, 33, 38, 53, 57, 71], "synchron": [2, 37, 53, 63], "realiz": [2, 4, 19, 20, 67], "intend": [2, 32, 33, 35, 72, 76], "popul": [2, 3, 12], "platformqpu": 2, "qubitconnect": [2, 43], "fetch": [2, 9], "supports_task_distribut": 2, "multipl": [2, 3, 9, 10, 12, 17, 18, 22, 23, 27, 29, 31, 40, 50, 51, 53, 54, 57, 58, 63, 65, 67, 74, 80], "parallel": [2, 10, 12, 32, 38, 54, 58, 74, 79], "qpu_id": [2, 3, 10, 12, 22, 23, 27, 33, 43, 52, 53, 58, 66], "get_shot": 2, "getter": 2, "onc": [2, 4, 9, 12, 14, 17, 20, 23, 35, 50, 51, 52, 54, 57, 58, 63, 72, 74, 76, 79], "set_shot": 2, "clear_shot": 2, "remov": [2, 9, 20, 47, 49, 52, 53, 54, 74], "numshot": 2, "setter": 2, "set_exec_ctx": 2, "get_exec_ctx": 2, "reset_exec_ctx": 2, "num_qpu": [2, 3, 10, 22, 27, 43, 52, 53, 62], "is_simul": [2, 43], "supports_conditional_feedback": 2, "get_current_qpu": [2, 43], "set_current_qpu": [2, 43], "device_id": [2, 43], "is_remot": [2, 3, 43], "qpuid": [2, 43, 53], "is_emul": [2, 3, 43], "set_nois": [2, 3], "get_remote_cap": 2, "applic": [2, 4, 5, 7, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 26, 30, 33, 40, 44, 51, 54, 57, 58, 60, 61, 74, 75, 78, 79], "reset_nois": 2, "turn": [2, 11, 14, 52, 59, 71], "off": [2, 3, 9, 11, 12, 14, 18, 52, 53, 72], "enqueueasynctask": 2, "kernelexecutiontask": 2, "launchvq": 2, "kernelarg": 2, "n_param": 2, "vqe": [2, 3, 9, 13, 21, 27, 28, 30, 52, 60], "settargetbackend": 2, "resetlogstream": 2, "log": [2, 3, 31, 52, 72, 74, 80], "getlogstream": 2, "setlogstream": 2, "logstream": 2, "list_platform": 2, "structur": [2, 3, 4, 8, 9, 11, 13, 20, 22, 33, 35, 39, 41, 43, 45, 53, 54, 68, 70, 71, 76], "boolean": [2, 18, 35], "field": [2, 13, 30, 50, 51, 53], "initvalu": 2, "stateoverlap": 2, "serializedcodeexec": 2, "command": [2, 8, 9, 10, 12, 22, 23, 27, 28, 50, 51, 52, 53, 54, 58, 62, 63, 66, 71, 72, 74, 75, 76, 78, 79], "entir": [2, 5, 16, 24, 29, 47, 64, 71], "forth": [2, 53], "commun": [2, 15, 33, 51, 53, 54, 72], "isremotesimul": 2, "ir": [2, 30, 35, 59, 69, 70, 71], "synthesi": [2, 20, 30, 32, 35, 41, 45, 46, 61, 68], "ultim": [2, 68, 71], "what": [2, 3, 4, 8, 9, 10, 13, 15, 17, 18, 22, 29, 30, 31, 55, 66, 71, 78, 80], "ad": [2, 4, 17, 22, 31, 33, 51, 52, 60, 64, 68, 72, 74, 76, 79, 80], "promis": [2, 5, 12], "qubitedg": [2, 43], "thunk": 2, "num_available_gpu": [2, 3, 58, 66], "set_random_se": [2, 3, 8, 11, 13, 15, 17, 18, 54], "caller": [2, 37], "unset_nois": [2, 3], "dealloc": [2, 38, 45, 71], "mpi": [2, 31, 53, 54, 64, 66, 79, 80], "against": [2, 3, 31, 51, 72, 74, 76, 80], "argc": [2, 36, 58, 72, 79], "argv": [2, 36, 58, 72, 79], "program": [2, 10, 22, 23, 30, 32, 35, 37, 40, 45, 46, 51, 52, 53, 54, 55, 57, 63, 64, 66, 68, 72, 74, 76, 79], "is_initi": [2, 3, 64], "final": [2, 3, 4, 6, 9, 12, 15, 19, 22, 27, 50, 53, 62, 64, 66, 68, 71, 72], "num_rank": [2, 3, 66], "all_gath": [2, 3], "gather": [2, 3, 15, 23, 36, 58, 67], "fit": [2, 72], "come": [2, 4, 15, 38, 52, 63, 78], "all_reduc": 2, "binaryfunct": 2, "localvalu": 2, "rootrank": [2, 3], "input_st": [2, 3, 14, 20, 51, 63], "loop_length": [2, 3, 51, 63], "bs_angl": [2, 3, 51, 63], "n_sampl": [2, 3, 63], "10000": [2, 3, 13, 18, 51, 58, 63, 66], "ps_angl": [2, 3, 63], "sample_async": [2, 3, 10, 23, 33, 53, 58, 63], "make_kernel": [3, 35, 51, 52, 53, 66], "els": [3, 9, 11, 12, 16, 18, 20, 29, 35, 53, 54, 58, 63, 72, 76, 79], "int_valu": 3, "float_valu": 3, "pykernel": 3, "argtypelist": 3, "programmat": 3, "str": [3, 5, 8, 9, 12, 16, 17, 18, 19, 51, 53, 58, 63, 67, 78], "argument_count": 3, "alia": [3, 45], "pykerneldecor": 3, "verbos": [3, 4, 55, 68, 72, 75], "modul": [3, 4, 11, 50, 54, 58, 68, 72], "none": [3, 11, 15, 18, 20, 36, 37, 50, 54], "funcsrc": 3, "locat": [3, 51, 53, 72, 74, 78], "overrideglobalscopedvar": 3, "decor": [3, 9, 37, 56], "lower": [3, 22, 50, 68, 71], "ast": 3, "jit": [3, 9], "executionengin": 3, "__call__": 3, "__str__": 3, "extract_c_function_point": 3, "from_json": 3, "jstr": 3, "overridedict": 3, "convert": [3, 4, 9, 10, 12, 16, 18, 22, 26, 33, 50, 62, 68], "json": [3, 51, 53, 63, 74], "merge_kernel": 3, "othermod": 3, "moduleop": 3, "synthesize_callable_argu": 3, "funcnam": 3, "block": [3, 4, 8, 13, 18, 42, 60], "awai": [3, 15, 47], "funcop": [3, 70], "to_json": 3, "self": [3, 9, 11, 13, 72, 74], "reconstruct": 3, "elsewher": [3, 20], "type_to_str": 3, "clean": [3, 4, 20], "kwarg": [3, 9], "languag": [3, 20, 30, 31, 34, 37, 38, 39, 40, 45, 46, 53, 57, 64, 67, 68, 71, 75, 80], "attribut": [3, 37, 64, 68], "coprocessor": [3, 33, 37], "shots_count": [3, 7, 8, 9, 10, 16, 17, 18, 23, 25, 51, 58, 63, 64, 66], "over": [3, 5, 12, 15, 16, 22, 23, 25, 27, 33, 45, 51, 58, 63, 71, 74], "ndarrai": [3, 11, 15, 25, 29, 50], "leav": [3, 15, 25, 51, 63, 74], "doesn": 3, "firstfloat": 3, "secondfloat": 3, "kei": [3, 8, 10, 13, 14, 17, 18, 19, 20, 22, 28, 42, 50, 51, 52, 71, 74, 79], "nois": [3, 9, 16, 20, 25, 33, 43, 51, 54, 63], "model": [3, 9, 16, 19, 22, 25, 30, 32, 33, 35, 37, 40, 45, 46, 47, 50, 51, 53, 63, 68, 71, 74, 79], "dictionari": [3, 17, 33, 58, 64], "sampleresult": [3, 9, 58, 64, 71], "_mlir_lib": 3, "_quakedialect": 3, "cudaq_runtim": 3, "asyncsampleresult": [3, 63], "platform": [3, 22, 23, 30, 31, 32, 40, 46, 49, 50, 51, 52, 54, 58, 62, 66, 68, 71, 72, 74, 79, 80], "Will": [3, 42, 58], "whose": [3, 4, 11, 13, 18, 21, 33, 38, 50, 52, 53, 62, 67], "identif": 3, "spin_oper": [3, 13, 58], "spinoper": [3, 8, 9, 11, 12, 13, 19, 22, 58, 66], "everi": [3, 13, 16, 17, 19, 31, 52, 53, 57, 58, 63, 64, 72, 79, 80], "nest": [3, 12, 53], "hermitian": [3, 12], "calcul": [3, 5, 6, 7, 9, 11, 15, 18, 20, 23, 27, 52, 53, 58, 63, 66], "observeresult": [3, 58], "observe_async": [3, 12, 22, 23, 27, 33, 52, 66], "asyncobserveresult": 3, "arg0": [3, 68], "prepar": [3, 5, 9, 10, 11, 12, 14, 17, 19, 21, 23, 27, 60, 62, 64, 66], "select": [3, 8, 9, 11, 12, 16, 18, 19, 20, 21, 22, 28, 54, 58, 62, 74, 78], "get_state_async": [3, 53], "asyncstateresult": 3, "parameter_count": [3, 8, 9, 13, 21, 22, 66], "argument_mapp": [3, 13], "gradient_strategi": [3, 27], "arg1": 3, "format": [3, 11, 18, 20, 29, 33, 36, 45, 72], "ascii": [3, 29], "latex": [3, 29], "cx": [3, 9, 15, 17, 20, 35, 51, 52, 66, 79], "translat": [3, 15, 18, 20, 23, 33, 67, 68], "qir": [3, 68, 71], "adapt": [3, 13, 20, 31, 80], "openqasm2": 3, "openqasm": 3, "moduleid": [3, 68], "llvmdialectmodul": [3, 68], "source_filenam": [3, 68], "opaqu": [3, 45, 68], "__nvqpp__mlirgen__function_variable_qreg": 3, "_z13variable_qregv": 3, "local_unnamed_addr": [3, 68], "tail": [3, 68], "__quantum__rt__qubit_allocate_arrai": [3, 68], "i64": [3, 68], "__quantum__qis__mz": [3, 68], "9": [3, 4, 8, 9, 10, 11, 12, 16, 17, 19, 20, 22, 23, 27, 33, 37, 38, 63, 68, 72, 74], "7": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 27, 31, 33, 37, 38, 40, 45, 53, 63, 66, 68, 72, 74, 80], "__quantum__rt__qubit_release_arrai": [3, 68], "ret": [3, 68], "evolv": [3, 4, 15, 38, 50, 51, 67], "hamiltonian": [3, 6, 8, 9, 10, 11, 12, 13, 19, 21, 22, 23, 25, 27, 36, 50, 51, 52, 53, 54, 58, 62], "operatorsum": 3, "productoper": 3, "elementaryoper": [3, 50], "scalaroper": [3, 50, 63], "schedul": [3, 13, 20, 50, 51, 58, 63], "initial_st": [3, 50], "union": [3, 17], "sequenc": [3, 7, 13, 18, 20, 47, 50, 57], "collapse_oper": [3, 50], "store_intermediate_result": [3, 50], "integr": [3, 4, 22, 30, 32, 38, 45, 51, 53, 74, 75], "baseintegr": 3, "evolveresult": 3, "evolut": [3, 4, 15, 19, 29, 36, 38, 47, 50, 63, 71], "degre": [3, 8, 22, 28, 50], "freedom": [3, 8, 50], "keyword": 3, "access": [3, 4, 5, 7, 10, 12, 14, 19, 22, 23, 27, 31, 33, 38, 51, 52, 54, 64, 65, 66, 67, 71, 80], "properti": [3, 4, 7, 9, 18, 47], "influenc": [3, 28, 38], "dure": [3, 4, 6, 19, 20, 25, 33, 51, 54, 72, 74, 78], "evolve_async": [3, 51, 63], "asyncevolveresult": 3, "has_target": 3, "get_target": [3, 10, 22, 52, 53, 62, 79], "rais": [3, 12, 50], "set_target": [3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 25, 27, 29, 50, 51, 52, 53, 54, 58, 62, 63, 66, 71], "reset_target": 3, "initialize_cudaq": 3, "environ": [3, 4, 9, 22, 25, 28, 31, 51, 52, 53, 59, 63, 70, 72, 74, 79, 80], "detect": [3, 58, 66, 72, 74, 78], "simulationprecis": 3, "underyl": 3, "noindex": 3, "infrastructur": [3, 31, 53, 70, 72, 80], "descript": [3, 20, 50, 52, 54, 71, 72, 74], "featur": [3, 4, 9, 14, 28, 31, 37, 72, 74, 78, 79, 80], "activ": [3, 4, 8, 11, 30, 53, 54, 72, 74, 79], "consist": [3, 4, 9, 16, 18, 20, 22, 27, 50, 58, 60], "physic": [3, 4, 13, 15, 20, 22, 32, 38, 45, 47, 51, 53, 54, 63, 67], "0101": [3, 16], "1010": [3, 16], "consol": [3, 52, 59, 72], "cupi": [3, 50, 74], "gettensor": 3, "compris": [3, 50], "tensori": 3, "mlirvalu": 3, "As": [3, 13, 20, 32, 38, 39, 45, 50, 51, 53, 54, 56, 67, 70], "hold": [3, 12], "__add__": 3, "runtimeerror": [3, 9], "new_valu": 3, "5": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 21, 22, 23, 25, 27, 29, 31, 33, 35, 36, 37, 38, 40, 41, 44, 45, 50, 52, 53, 54, 60, 62, 63, 66, 68, 72, 74, 76, 80], "__radd__": 3, "__sub__": 3, "__rsub__": 3, "__neg__": 3, "__mul__": 3, "__rmul__": 3, "__getitem__": 3, "you": [3, 4, 5, 7, 8, 9, 10, 12, 14, 16, 17, 18, 19, 22, 28, 29, 30, 31, 33, 50, 51, 52, 54, 58, 60, 63, 64, 66, 68, 70, 71, 72, 74, 75, 76, 78, 79, 80], "complexmatrix": 3, "lowest": [3, 4, 20, 22], "num_column": 3, "num_row": 3, "to_numpi": 3, "get_valu": 3, "complexflo": [3, 50], "od": [3, 18], "master": 3, "equat": [3, 4, 5, 13, 14, 18, 20, 50], "solver": [3, 12, 50], "expectation_valu": [3, 6, 50, 62], "intermedi": [3, 15, 50, 68], "were": [3, 5, 9, 18, 22, 29, 50, 74], "final_expectation_valu": 3, "trigger": 3, "final_st": 3, "intermediate_st": 3, "elementari": 3, "operator_id": 3, "further": [3, 7, 8, 40, 47, 56, 58, 68, 71, 79], "simplifi": [3, 54], "classmethod": 3, "op_id": 3, "expected_dimens": 3, "dtype": [3, 10, 12, 17, 20, 25, 50, 60], "definit": [3, 14, 20, 33, 35, 37, 50, 60, 71], "instanti": [3, 29, 33, 38, 44, 45, 50, 52, 53, 78], "To": [3, 9, 13, 14, 17, 18, 20, 25, 33, 37, 40, 45, 50, 51, 52, 53, 54, 57, 58, 62, 63, 64, 68, 70, 71, 72, 74, 75, 76, 78, 79], "addit": [3, 7, 8, 9, 14, 18, 26, 33, 52, 56, 57, 66, 72, 78, 79], "canon": 3, "sort": [3, 8, 12, 18, 75], "neg": [3, 17, 29, 40, 54], "short": [3, 10, 47], "atomic_oper": 3, "rydberghamiltonian": [3, 51, 63], "atom_sit": [3, 51, 63], "delta_glob": [3, 51, 63], "atom_fil": 3, "delta_loc": 3, "quera": [3, 49], "aquila": [3, 51, 63], "machin": [3, 9, 13, 20, 32, 46, 51, 53, 63, 74], "ref": [3, 20, 47, 68], "http": [3, 4, 5, 9, 11, 13, 14, 18, 20, 22, 23, 50, 51, 53, 60, 63, 72, 74], "doc": [3, 9, 53, 63], "aw": [3, 51, 63, 72], "amazon": 3, "com": [3, 4, 5, 9, 11, 13, 14, 20, 23, 51, 54, 63, 72, 74], "braket": [3, 4, 12, 49], "latest": [3, 4, 5, 13, 14, 22, 31, 53, 60, 63, 72, 74, 80], "developerguid": [3, 63], "analog": [3, 51, 67], "html": [3, 22, 60, 63], "ah": [3, 63], "schema": 3, "__init__": [3, 4, 7, 9, 11], "consum": [3, 47, 78], "suppli": [3, 23, 51, 63], "coordin": [3, 29], "tweezer": 3, "trap": [3, 67], "atom": [3, 4, 21, 50, 51, 63, 67], "drive": [3, 4, 8, 38, 50], "omega": [3, 19, 50, 51, 63], "detun": [3, 63], "mark": [3, 9, 78], "occupi": [3, 22, 53], "fill": [3, 37, 63, 71], "factor": [3, 14, 17, 30], "magnitud": [3, 11, 20], "h_k": 3, "dimensionless": 3, "parameter_info": 3, "cudm_stat": 3, "cudensitymatst": 3, "to_cupy_arrai": 3, "termin": [3, 27, 66, 74], "At": [3, 4, 19, 72, 74], "directli": [3, 32, 33, 38, 45, 47, 54, 68, 74, 78, 79], "through": [3, 5, 7, 9, 11, 12, 15, 18, 19, 22, 25, 26, 33, 51, 56, 59, 60, 64, 71, 72, 74, 79], "c_if": [3, 35], "__iter__": 3, "__len__": 3, "equival": [3, 13, 50, 53, 54, 58, 60], "metadata": [3, 21, 68], "experi": [3, 9, 17, 28, 51, 63, 72, 74], "adher": [3, 11, 15, 37, 39, 45, 67, 71], "implicit": [3, 33, 45, 47, 50], "expectation_z": 3, "get_marginal_count": [3, 17], "marginal_indic": 3, "get_register_count": 3, "get_sequential_data": 3, "item": [3, 4, 11, 17, 18, 78], "frequent": 3, "proport": 3, "kick": [3, 53], "pattern": [3, 9, 20, 32, 33, 37, 46, 68, 70], "sub_term": 3, "favor": 3, "get_spin": 3, "accessor": [3, 53], "optimizationresult": 3, "gradientdesc": 3, "initial_paramet": [3, 6, 8, 9, 13], "lower_bound": 3, "max_iter": [3, 9], "requires_gradi": 3, "upper_bound": 3, "upper": 3, "neldermead": [3, 8, 13], "lbfg": [3, 33, 52], "centraldiffer": [3, 27], "parameter_vector": [3, 9, 13, 22, 27, 52], "loss": 3, "forwarddiffer": 3, "parametershift": 3, "krauschannel": [3, 25], "num_control": 3, "bitflipchannel": [3, 16, 17, 25], "decoher": [3, 25, 50], "Its": [3, 45, 54, 67, 68], "vice": 3, "versa": 3, "180": 3, "therebi": [3, 33, 53, 68], "k_0": [3, 25], "k_1": [3, 25], "therefor": [3, 4, 8, 12, 13, 14, 15, 18, 20, 22, 45, 68, 70], "phaseflipchannel": [3, 25], "untouch": 3, "depolarizationchannel": [3, 25], "mixtur": 3, "k_2": 3, "k_3": 3, "2x2": [3, 54], "decai": [3, 25], "And": [3, 13, 47], "behav": 3, "free": [3, 6, 9, 13, 20, 33, 35, 36, 37, 38, 40, 42, 44, 51, 52, 56, 64, 68, 71, 74], "75": [3, 9, 14], "uniform": [3, 8, 9, 13, 16, 17, 33, 36, 58, 66], "amplitudedampingchannel": [3, 25], "dissip": 3, "energi": [3, 4, 9, 10, 21, 22, 27, 33, 52, 62], "due": [3, 9, 21, 25, 29, 33, 51, 54, 58, 78], "ii": [3, 12, 13], "ground": [3, 4, 8, 9, 10, 21, 22, 50, 52, 63, 67], "krausoper": 3, "ki": [3, 12], "dag": [3, 29, 42], "col_count": 3, "row_count": 3, "scatter": [3, 9], "concaten": 3, "arg2": 3, "bin": [3, 16, 20, 51, 53, 63, 72, 74], "interferomet": [3, 51, 63], "tbi": [3, 4, 51, 63], "boson": [3, 50, 51, 63], "done": [4, 9, 12, 18, 22, 29, 45, 59, 72, 74], "collabor": 4, "team": [4, 9], "basf": 4, "In": [4, 5, 7, 8, 9, 12, 13, 15, 16, 17, 18, 20, 23, 24, 25, 27, 29, 33, 37, 47, 50, 51, 53, 54, 56, 58, 60, 62, 63, 64, 70, 71, 72, 78], "tutori": [4, 8, 9, 10, 12, 13, 16, 17, 19, 20, 22, 74], "hybrid": [4, 6, 22, 30, 51, 75, 79], "workflow": [4, 6, 8, 11, 30, 33, 50, 61, 68, 72, 75], "strongli": [4, 8, 72], "algorithm": [4, 6, 8, 9, 10, 13, 14, 19, 21, 22, 27, 30, 32, 35, 37, 46, 47, 52, 53, 54, 58, 60, 62, 65, 74], "eigensolv": [4, 22, 30], "preserv": [4, 15, 25], "propos": [4, 20], "anselmetti": 4, "et": [4, 13, 20], "al": [4, 13, 20], "2021": 4, "psi_t": 4, "estim": [4, 10, 12, 17, 18, 19, 21, 22, 27, 58], "packag": [4, 6, 7, 9, 11, 12, 17, 50, 72, 74, 78, 79], "instal": [4, 9, 11, 12, 17, 18, 20, 21, 29, 30, 31, 50, 51, 54, 68, 70, 71, 75, 76, 78, 80], "pip": [4, 9, 11, 12, 17, 18, 20, 21, 22, 29, 50, 53, 54, 72, 74, 79], "pyscf": [4, 12, 22], "6": [4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 31, 33, 36, 37, 38, 40, 41, 45, 51, 52, 53, 54, 62, 63, 68, 72, 74, 80], "openfermion": [4, 12, 22], "ipi": 4, "warn": [4, 7, 9, 22, 51], "39": [4, 6, 8, 15, 16, 17, 18, 22, 72, 74], "root": [4, 72, 74], "broken": 4, "permiss": [4, 72, 74], "conflict": [4, 72, 74, 79], "behaviour": 4, "render": [4, 29], "your": [4, 5, 8, 9, 22, 23, 29, 30, 33, 50, 51, 52, 53, 54, 55, 62, 63, 66, 71, 72, 74, 78], "unus": 4, "recommend": [4, 20, 33, 72, 74, 79], "pypa": 4, "io": [4, 22, 60, 74], "venv": 4, "want": [4, 9, 10, 13, 15, 17, 18, 20, 29, 47, 50, 52, 53, 68, 71, 72, 74, 76, 79], "suppress": 4, "matplotlib": [4, 6, 8, 9, 11, 17, 18, 21, 22, 29, 50], "pyplot": [4, 6, 8, 9, 11, 17, 18, 21, 22, 29, 50], "plt": [4, 6, 8, 9, 11, 17, 18, 20, 21, 22, 29, 50], "gto": 4, "scf": 4, "ao2mo": 4, "mcscf": 4, "afqmc_src": 4, "vqe_cudaq_qnp": 4, "get_cudaq_hamiltonian": 4, "utils_ipi": 4, "get_coeff_wf": 4, "gen_ipie_input_from_pyscf_chk": 4, "hamgener": 4, "qmc": 4, "trial_wavefunct": 4, "particle_hol": 4, "particlehol": 4, "analysi": [4, 8, 9, 47, 68], "extract_observ": 4, "nvidia": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 20, 21, 22, 23, 27, 28, 30, 31, 32, 38, 49, 50, 54, 58, 60, 62, 66, 71, 72, 74, 76, 79, 80], "recent": [4, 9, 18, 20], "tricki": 4, "manual": [4, 23, 51, 53, 72, 74], "sever": [4, 9, 64], "streamlin": [4, 30, 79], "update_opt": 4, "use_gpu": 4, "usr": [4, 7, 68, 72, 74, 78], "lib": [4, 7, 68, 70, 71, 72, 74, 75, 78, 79], "python3": [4, 7, 9, 50, 53, 54, 58, 59, 66, 72, 74, 79], "dist": [4, 7, 9, 17, 78], "qutip": [4, 7, 29], "py": [4, 7, 9, 28, 53, 54, 58, 59, 66, 74, 79], "66": [4, 7, 8, 9], "userwarn": [4, 7], "cython": [4, 7], "gt": [4, 7, 15, 20, 23, 27, 72, 74], "molecul": [4, 21, 22, 30], "build": [4, 6, 8, 9, 10, 12, 13, 16, 17, 21, 22, 27, 29, 30, 31, 35, 40, 41, 50, 55, 57, 58, 61, 62, 67, 70, 71, 74, 75, 76, 78, 80], "preliminari": [4, 18], "hartre": [4, 12, 21, 22], "fock": [4, 12, 21, 22, 50], "choos": [4, 16, 18, 25, 58, 63, 74], "chelat": 4, "agent": [4, 72], "substanc": 4, "industri": 4, "scale": [4, 5, 17, 18, 20, 40, 50, 54, 66, 67], "Their": [4, 72], "among": [4, 13, 53], "water": [4, 22], "soften": 4, "redox": 4, "oxid": 4, "bleach": 4, "soil": 4, "remedi": 4, "ligand": [4, 8], "catalyst": 4, "particular": [4, 5, 13, 16, 29, 31, 50, 51, 74, 78, 80], "focu": [4, 18, 20, 28], "fe": 4, "iii": 4, "nta": 4, "below": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 26, 27, 28, 29, 31, 33, 50, 51, 52, 53, 54, 58, 60, 63, 66, 68, 72, 74, 78, 79, 80], "fenta": 4, "geo_fenta": 4, "xyz": [4, 26], "cc": [4, 47, 68, 72], "pvtz": 4, "num_active_orbit": 4, "num_active_electron": 4, "o3": 4, "smaller": [4, 8, 9, 10, 12, 54], "less": [4, 9, 18, 72], "geo_o3": 4, "12": [4, 9, 11, 15, 16, 17, 20, 22, 27, 33, 52, 68, 72, 74, 79], "help": [4, 8, 12, 16, 17, 23, 24, 29, 59, 60, 74], "restric": 4, "open": [4, 53, 63, 68, 72, 74], "shell": [4, 29, 72, 74, 79], "hf": 4, "hartee_fock": 4, "rohf": 4, "chkfile": 4, "chk": 4, "224": [4, 17], "34048064812222": 4, "600": [4, 74], "orbit": [4, 22], "would": [4, 5, 7, 9, 12, 13, 14, 15, 16, 18, 22, 23, 28, 31, 47, 50, 66, 67, 72, 74, 76, 78, 80], "1200": 4, "143": 4, "electron": [4, 21, 22], "imposs": 4, "statevector": [4, 6, 14, 15, 23, 66, 67, 79], "space": [4, 5, 10, 12, 29, 30, 38, 45, 50, 53, 63], "fewer": [4, 8, 9, 18, 19, 22, 54], "contribut": [4, 22, 27, 31, 74, 80], "whole": 4, "post": [4, 20, 33, 51, 74], "casci": 4, "obtain": [4, 9, 12, 16, 17, 21, 22, 29, 31, 51, 52, 72, 80], "bodi": [4, 37], "t_": 4, "pq": 4, "v_": [4, 12], "prq": 4, "sum_": [4, 5, 8, 12, 13, 14, 19, 25, 41, 67], "hat": [4, 12, 79], "pqr": 4, "a_": 4, "tag": [4, 7, 14, 18, 72, 74], "jordan_wign": [4, 22], "generate_hamiltonian": 4, "fix_spin_": 4, "ss": 4, "h1": [4, 50, 51, 63], "shown": [4, 7, 10, 12, 15, 51, 53, 54], "energy_cor": 4, "get_h1eff": 4, "h2": [4, 12], "get_h2eff": 4, "h2_no_symmetri": 4, "restor": 4, "v_pqr": 4, "asarrai": 4, "transpos": [4, 12], "mol_ham": 4, "jw_hamiltonian": 4, "constant_term": 4, "guess": [4, 5, 12, 18], "n_vqe_lay": 4, "maxit": [4, 17, 21, 22, 27], "100": [4, 5, 9, 11, 15, 16, 17, 18, 19, 25, 36, 50, 51], "return_final_state_vec": 4, "n_qubit": [4, 15, 17, 36], "best": [4, 8, 9, 14, 20, 22, 72, 74], "optimized_energi": 4, "energy_optim": 4, "final_state_vector": 4, "state_vec": 4, "vqe_energi": 4, "callback_energi": 4, "num": [4, 10], "16": [4, 8, 9, 16, 17, 18, 20, 22, 23, 27, 29, 52, 60, 68], "18": [4, 9, 16, 17, 20, 29, 60, 68], "n_layer": 4, "3881035525103": 4, "numer": [4, 18, 30], "combin": [4, 5, 10, 12, 17, 18, 22, 26, 28, 30, 57, 58, 67, 77, 78], "walk": [4, 9, 22, 71, 72, 74], "accur": [4, 17, 54], "wide": [4, 13, 20, 47, 68, 78], "solid": 4, "summar": [4, 14, 74], "while": [4, 16, 18, 20, 22, 23, 31, 37, 57, 58, 60, 63, 68, 72, 74, 78, 80], "introduct": [4, 30, 46, 61, 76, 79], "found": [4, 8, 9, 10, 12, 18, 23, 29, 31, 33, 36, 40, 50, 51, 58, 60, 71, 72, 74, 76, 77, 79, 80], "quantiz": [4, 14], "_1": [4, 17], "_2": 4, "h_": [4, 12, 15], "frac": [4, 5, 7, 8, 10, 12, 13, 14, 17, 18, 19, 29, 50], "_r": 4, "fermion": 4, "annihil": [4, 50], "h_1": [4, 50], "h_2": [4, 21, 30], "omit": [4, 72], "propag": 4, "chosen": [4, 22, 54, 66, 72], "slater": [4, 12], "ket": [4, 5, 6, 7, 10, 12, 14, 15, 23, 29, 58, 67], "psi_": [4, 7, 12, 15], "toward": [4, 10], "psi_0": [4, 7, 15], "sim": 4, "lim_": 4, "infti": 4, "delta": [4, 51, 63], "tau": 4, "reli": [4, 20, 40, 68, 74, 76, 78], "squar": [4, 16, 17, 45, 67], "gamma": 4, "becom": [4, 5, 9, 17, 22, 54, 62, 74, 75], "v_0": [4, 13], "n_": 4, "nbsphinx": [4, 18], "l": [4, 9, 18, 22, 27, 33, 68, 76, 78], "choleski": 4, "decomposit": [4, 16, 30, 54], "pr": [4, 30], "ensembl": [4, 58], "walker": 4, "mathcal": [4, 12], "text": [4, 6, 7, 14, 17, 20, 23, 29], "loc": 4, "bra": [4, 6, 10, 23, 58], "mathrm": 4, "mix": [4, 25, 63], "wavefunct": [4, 22, 67], "checkpoint": 4, "ipie_hamiltonian": 4, "chol_cut": 4, "1e": [4, 12, 22, 27, 54, 63], "h1e": 4, "cholesky_vector": 4, "e0": 4, "num_basi": 4, "shape": [4, 11, 15, 20, 22, 27, 66], "num_chol": 4, "nelec": 4, "afqmc_hamiltonian": 4, "reshap": [4, 11, 15], "n_active_elec": 4, "num_dets_for_prop": 4, "len": [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 26, 27, 36, 45, 50, 53, 58, 63, 66, 79], "compute_trial_energi": 4, "half_rot": 4, "timestep": 4, "num_walk": 4, "num_block": 4, "afqmc_msd": 4, "num_steps_per_block": 4, "25": [4, 9, 11, 14, 17, 18, 19, 24, 36, 52, 53, 54, 58, 60, 66, 74], "005": 4, "stabilize_freq": 4, "96264512": 4, "pop_control_freq": 4, "estimator_filenam": 4, "h5": 4, "finalis": 4, "qmc_data": 4, "filenam": [4, 66], "weight": [4, 8, 9, 20], "weightfactor": 4, "hybridenergi": 4, "edenom": 4, "etot": 4, "e1bodi": 4, "e2bodi": 4, "0000000000000000e": 4, "02": [4, 72, 74], "2437583763935545e": 4, "04": [4, 72, 74], "2437583763935547e": 4, "7639365190228011e": 4, "5201781426292453e": 4, "2276634193515412e": 4, "4127560668989827e": 4, "03": [4, 9, 52], "1711742028818304e": 4, "2473358126540003e": 4, "9999999999999986e": 4, "2473358126540006e": 4, "7646854013277283e": 4, "5173495886737268e": 4, "0031922288872407e": 4, "8320523739865604e": 4, "1743088014788954e": 4, "2489226882493567e": 4, "0000000000000001e": 4, "2489226882493563e": 4, "7650504938463922e": 4, "5161278055970348e": 4, "9900990681040355e": 4, "0008400623205630e": 4, "1736864885170948e": 4, "2495677577437204e": 4, "9999999999999972e": 4, "2495677577437212e": 4, "7659644834889821e": 4, "5163967257452603e": 4, "0009188692360159e": 4, "0005173726372723e": 4, "1748969527283802e": 4, "2495531836556856e": 4, "2495531836556853e": 4, "7675907314082951e": 4, "5180375477526098e": 4, "9997269300807844e": 4, "0010618465796188e": 4, "1752703012577417e": 4, "2502732667629320e": 4, "2502732667629317e": 4, "7663343013337044e": 4, "5160610345707727e": 4, "0012131352337956e": 4, "0019003056579172e": 4, "1770170647504112e": 4, "2513369839216481e": 4, "2513369839216480e": 4, "7660812717909516e": 4, "5147442878693036e": 4, "9936984461419740e": 4, "9929966800671224e": 4, "1765353928750643e": 4, "2516138533920657e": 4, "2516138533920659e": 4, "7660292355465600e": 4, "5144153821544941e": 4, "9902337463172714e": 4, "9910800755312891e": 4, "1761532255317621e": 4, "2518524275281430e": 4, "2518524275281433e": 4, "7674246483479845e": 4, "5155722208198404e": 4, "0012943675389775e": 4, "0013880643723378e": 4, "1780913595074867e": 4, "2512465963277762e": 4, "7677999264623367e": 4, "5165533301345607e": 4, "9628730363609819e": 4, "9223106824565718e": 4, "1749814144939067e": 4, "2517668156221851e": 4, "2517668156221850e": 4, "7688306341863290e": 4, "5170638185641434e": 4, "plot": [4, 6, 8, 9, 11, 17, 19, 20, 21, 22, 50], "vqe_i": 4, "vqe_x": 4, "label": [4, 8, 9, 11, 17, 20, 68, 72, 79], "afqmc_i": 4, "afqmc_x": 4, "xlabel": [4, 6, 8, 9, 11, 20, 21, 22, 50], "ylabel": [4, 6, 8, 9, 11, 20, 21, 22, 50], "legend": [4, 9, 11, 50], "lt": [4, 9, 23, 27], "0x7fea847f35e0": 4, "__version__": [4, 5, 11, 13, 14, 20, 23], "github": [4, 5, 9, 11, 13, 14, 20, 22, 23, 31, 51, 54, 60, 72, 74, 79, 80], "176f1e7df8a58c2dc3d6b1b47bf7f63b4b8d3b63": [4, 5], "bv": 5, "demonstr": [5, 6, 7, 8, 10, 12, 14, 16, 18, 19, 20, 21, 26, 27, 32, 33, 35, 50, 53, 58, 65, 68], "exponenti": [5, 10, 12, 14, 17, 19, 41, 66], "speedup": [5, 19, 22, 52, 66], "suppos": [5, 7, 75], "oracl": [5, 36], "longrightarrow": [5, 7], "dot": [5, 10, 12, 13, 17], "secret": [5, 36, 74], "x_1s_1": 5, "x_2s_2": 5, "x_ns_n": 5, "our": [5, 6, 7, 9, 13, 15, 18, 20, 25, 29, 31, 47, 50, 51, 56, 58, 63, 64, 65, 66, 68, 72, 74, 75, 76, 79, 80], "find": [5, 7, 8, 9, 12, 13, 17, 20, 21, 22, 30, 51, 52, 53, 67, 68, 72, 74], "101": [5, 9, 14, 15, 17, 18, 36], "henc": [5, 14, 15, 23, 47, 50, 51, 53, 58, 66, 67, 72, 74, 78], "dont": [5, 23], "x_3s_3": 5, "strateg": 5, "st": 5, "001": [5, 11, 14, 15, 17, 18, 74], "nd": 5, "010": [5, 14, 15, 17, 18], "rd": 5, "rememb": [5, 7, 9, 23], "perspect": 5, "inner": [5, 15, 45, 53], "mechan": [5, 7, 15, 33, 35, 41, 45, 47, 50, 53, 59, 67, 70], "hidden": [5, 38], "why": [5, 14], "did": [5, 18, 72, 74], "011": [5, 15, 17, 18, 36], "s_3": 5, "isol": [5, 58], "s_2": 5, "difficult": [5, 8, 33], "speak": 5, "advantag": [5, 7, 19, 20, 22, 28, 74], "entangl": [5, 15, 25, 29, 38, 52, 56, 63], "problem": [5, 9, 10, 12, 13, 14, 21, 22, 47, 50, 57], "answer": [5, 7, 14], "black": [5, 7, 9], "box": [5, 7, 25, 78], "setup": [5, 8, 31, 50, 54, 63, 74, 80], "auxiliari": [5, 30], "kickback": 5, "hadamard": [5, 12, 14, 15, 18, 24, 30, 35, 40, 45, 47, 64, 67, 70], "sum_x": 5, "u_f": [5, 7], "oplu": 5, "neq": [5, 7, 8, 18], "chanc": [5, 16, 18, 78], "cell": [5, 8, 12, 15, 16, 22, 26, 29], "small": [5, 9, 10, 17, 18, 22, 54, 78], "increas": [5, 8, 10, 12, 19, 28, 31, 50, 54, 58, 66, 74, 79, 80], "30": [5, 9, 11, 15, 17, 20, 53, 66], "qpp": [5, 9, 11, 13, 14, 15, 20, 23, 49, 52, 54, 58, 66, 68, 71, 74, 79], "qubit_count": [5, 7, 11, 13, 14, 18, 21, 22, 23, 25, 53, 56, 58, 66, 79], "secret_str": 5, "whatev": 5, "prefer": [5, 72, 74], "insid": [5, 9, 53, 74], "auxiliary_qubit": 5, "verifi": [5, 14, 18, 24, 50, 67], "procedur": [5, 6, 8, 9, 12, 16, 20, 21, 22, 27], "bernstein_vazirani": [5, 74], "auxillari": [5, 9, 12, 16], "place": [5, 13, 15, 22, 23, 28, 53, 56, 58], "success": [5, 27, 63, 70], "join": [5, 17, 18], "q2": [5, 9, 14, 18, 20, 29], "q3": [5, 9, 18, 29], "q4": [5, 9, 18], "q5": [5, 18], "11010": [5, 13, 18], "involv": [6, 8, 18, 54, 66, 68, 78], "bloch": [6, 29], "rx": [6, 8, 9, 10, 11, 13, 15, 17, 29, 40, 44, 60, 66], "intial": 6, "cost_valu": [6, 8], "initial_cost_valu": 6, "suit": [6, 20, 74], "alogrithm": 6, "decreas": [6, 50], "x_valu": [6, 8], "y_valu": [6, 8], "epoch": [6, 8, 11, 21, 22], "balanc": 7, "regardless": [7, 12, 15, 78], "ouput": 7, "question": [7, 12], "solv": [7, 8, 12, 13, 14, 50, 57], "treat": [7, 53], "snippet": [7, 50, 52, 53, 62, 68, 74], "don": [7, 14, 31, 33, 52, 80], "elif": 7, "That": [7, 23, 33, 79], "twice": [7, 22], "claim": [7, 16], "evalul": 7, "go": [7, 9, 20, 29, 45, 53, 64, 72, 74], "symbol": [7, 72, 78], "OR": [7, 63], "rule": [7, 18, 22, 50], "modulo": [7, 18], "oplus5": 7, "8_": 7, "oplus4": 7, "9_": 7, "quick": [7, 15, 30, 51, 76], "yield": [7, 15, 23, 54, 67, 79], "align": [7, 14, 15, 68, 78], "remark": [7, 20], "becaus": [7, 17, 18, 20, 47, 54, 63, 72, 74, 79], "overlin": 7, "bar": [7, 13, 14, 17, 29], "top": [7, 9, 17, 18, 53, 60, 71, 75], "denot": [7, 14, 16, 37, 39], "prove": [7, 67], "shall": [7, 15, 67], "tfrac": [7, 15, 67], "summari": 7, "unchang": [7, 25, 68], "simultan": [7, 52], "exploit": [7, 54], "abil": [7, 16, 19, 20, 38, 68], "aim": [7, 9, 13, 18], "diagram": [7, 8, 13, 14, 15, 18, 51, 63], "psi_1": 7, "h_1h_0": 7, "psi_2": 7, "drop": 7, "figur": [7, 8, 9, 10, 11, 14, 15, 16, 18, 19, 20, 22, 28, 68], "pm": 7, "practic": [7, 9, 10, 12, 16, 17, 20, 22], "fx": 7, "qubit_0": [7, 13, 15, 60], "drug": 8, "often": [8, 18, 22, 33, 47, 60, 72, 74], "bind": [8, 32, 35, 37, 40, 72], "protein": [8, 20], "inhibit": 8, "therapeut": 8, "purpos": [8, 12, 18, 38, 47, 50, 74], "candid": 8, "extrem": [8, 33], "studi": [8, 15, 20], "guid": [8, 31, 51, 72, 74, 76, 79, 80], "search": [8, 18, 20, 72, 74], "predict": [8, 67], "usual": [8, 9, 72, 74, 78], "One": [8, 14, 18, 20, 22, 23, 33, 47, 51, 53, 54, 59, 62], "challeng": [8, 9, 18], "aris": [8, 20, 25], "mani": [8, 9, 14, 15, 16, 18, 20, 22, 23, 26, 27, 31, 40, 43, 53, 54, 58, 60, 66, 79, 80], "geometr": 8, "present": [8, 9, 13, 17, 20, 23, 27, 58, 72, 75], "orient": 8, "assess": 8, "good": [8, 12, 22], "solut": [8, 13, 18], "formul": [8, 47], "mathemat": [8, 15, 50, 67], "paper": [8, 9, 10, 12, 16, 18], "digit": [8, 11], "counteradiabat": 8, "understand": [8, 9, 12, 15, 17, 32, 74], "pleas": [8, 9, 12, 22, 29, 31, 52, 53, 54, 63, 66, 70, 72, 74, 79, 80], "maxcut": 8, "There": [8, 9, 15, 23, 26, 33, 35, 51, 52, 53, 60, 66, 74], "experiment": [8, 31, 74, 80], "pharmacor": 8, "chemic": [8, 21], "group": [8, 9, 45, 54], "govern": [8, 19], "wo": 8, "distanc": [8, 9, 15, 17, 21], "graph": [8, 9, 13], "lag": 8, "node": [8, 9, 12, 13, 32, 53, 66, 72], "edg": [8, 9, 13], "feesibli": 8, "coexist": 8, "cliqu": 8, "mutual": 8, "comment": [8, 13], "discret": [8, 20, 45], "natur": [8, 9, 15, 29, 51, 54, 67], "qubit_num": [8, 10, 22], "non_edg": 8, "6686": 8, "1453": 8, "penalti": [8, 9], "num_lay": 8, "expens": [8, 22, 54], "6886": 8, "1091": 8, "0770": 8, "w_i": 8, "sigma": [8, 12, 19, 50], "z_i": 8, "notin": 8, "z_j": [8, 19], "concern": [8, 67, 72], "vertic": [8, 13], "penal": 8, "hamiltonina": 8, "ham_cliqu": 8, "spin_ham": [8, 22], "wt": 8, "zip": [8, 12, 72], "strip": [8, 12, 19, 72], "term_coeffici": 8, "ham": [8, 10, 12, 19], "term_word": 8, "coef": [8, 12], "0j": [8, 10, 13, 58, 60], "iiziiz": 8, "ziizii": 8, "1657": 8, "iziiii": 8, "iziizi": 8, "42735": 8, "iiizii": 8, "2791499999999996": 8, "iiiiii": 8, "iiziii": 8, "iiiiiz": 8, "ziiiii": 8, "iiiizi": 8, "approach": [8, 9, 14, 17, 18, 33, 37, 54, 68], "inclus": [8, 22], "better": [8, 9, 13, 17, 20, 52, 54, 72], "layer": [8, 9, 11, 13, 16, 37], "hopefulli": 8, "offset": 8, "dc_qaoa": 8, "pauli_word": [8, 12, 19, 26, 53], "exp_pauli": [8, 12, 19, 26], "k": [8, 10, 12, 14, 18, 37], "nelder": 8, "mead": 8, "line": [8, 9, 10, 13, 18, 22, 28, 29, 51, 53, 54, 63, 68, 71, 72, 74], "13": [8, 9, 11, 13, 16, 17, 18, 20, 21, 22, 27, 29, 66, 68, 74], "21810696323572243": [8, 13], "20613464375211488": [8, 13], "2546877639814583": [8, 13], "3657985647468064": [8, 13], "37118004688049144": 8, "03656087558321203": 8, "08564174998504231": 8, "21639801853794682": 8, "11122286088634259": 8, "1743727097033635": 8, "36518146001762486": 8, "15829741539542244": 8, "3467434780387345": 8, "28043500852894776": 8, "09986021299050934": 8, "14125225086023052": 8, "19141728018199775": 8, "11970943368650361": 8, "3853063093646483": 8, "1112643868789806": 8, "3527177454825464": 8, "22156160012057186": 8, "1418496891385843": 8, "32811766468303116": 8, "367642000671186": 8, "34158180583996006": 8, "10196745745501312": 8, "29359239180502594": 8, "3858537615546677": 8, "19366130907065582": 8, "24570488114056754": 8, "3332307385378807": 8, "12287973244618389": 8, "007274514934614895": 8, "015799547372526146": 8, "3578070967202224": 8, "39268963055535144": 8, "19872246354138554": 8, "16668715544467982": 8, "13777293592446055": 8, "17514665212709513": 8, "15350249947988204": 8, "32872977428061945": 8, "20068831419712105": 8, "032919322131134854": 8, "19399909325771983": 8, "09477141125241506": 8, "08210460401106645": 8, "21392577760158515": 8, "3393568044538389": 8, "14615087942938465": 8, "03790339186006314": 8, "2843250892879255": 8, "3151384847055956": 8, "19983741137121905": 8, "27348611567665115": 8, "33457528180906904": 8, "14145414847455462": 8, "20604220093940323": 8, "05410235084309195": 8, "04447870918600966": 8, "3355714098595045": 8, "266806440171265": 8, "07436189654442632": 8, "2789176729721685": 8, "2427508182662484": 8, "cost": [8, 9, 11, 12, 13, 21, 22, 27, 30, 33, 52, 63], "optimal_expect": [8, 13], "optimal_paramet": [8, 9, 13, 52], "0057493966746804": 8, "0508763934174787": 8, "013930789730781493": 8, "5793211220774144": 8, "878009560684498": 8, "5277129177248182": 8, "4404810513078178": 8, "5755552245467919": 8, "14125558672355468": 8, "3724262117066903": 8, "1318978057007808": 8, "1228708513911436": 8, "932342804955409": 8, "8478237950658537": 8, "46345886313018125": 8, "5809397306340341": 8, "2408342488137229": 8, "11216088888484882": 8, "009704173265255175": 8, "4757346661223584": 8, "7281211610985926": 8, "06051951319169091": 8, "7794512146826196": 8, "09249435261907034": 8, "09998378319110682": 8, "255349350720572": 8, "2607038244228248": 8, "2060124032311757": 8, "13991934581192997": 8, "9874814082082164": 8, "1591291464755939": 8, "30815482837046393": 8, "9701804681517978": 8, "002609462845755913": 8, "43533533568363353": 8, "642630110681613": 8, "6137063363954748": 8, "7204687246344496": 8, "08390768435524378": 8, "5480630700433249": 8, "38905723227347905": 8, "6837811162838194": 8, "17239016898719284": 8, "1649341118754853": 8, "46771209183422724": 8, "008565327035838663": 8, "982230359328883": 8, "4232972687799105": 8, "22765896988428905": 8, "04207923928239914": 8, "36758378917672285": 8, "01825447063622079": 8, "059755059728027485": 8, "6849697218162497": 8, "2711684382411018": 8, "2904257415666667": 8, "16359529445017368": 8, "09168623367396612": 8, "5786087806926155": 8, "3476755367718726": 8, "1209273564533628": 8, "605136043801364": 8, "19128215816141694": 8, "16756583092588012": 8, "0715488214105267": 8, "5269641128095075": 8, "3029128369198704": 8, "reveal": 8, "bitst": 8, "ideal": [8, 16, 25, 52, 63], "partit": [8, 9, 13, 52, 53, 74], "200000": 8, "mvwcp": 8, "110001": 8, "011100": 8, "111000": 8, "199979": 8, "011000": 8, "converg": [8, 10, 18, 22], "explor": [9, 16, 18, 22, 66, 67, 74], "research": [9, 52], "arxiv": [9, 18], "org": [9, 11, 18, 50, 72, 74], "pdf": [9, 18, 29], "2402": 9, "01529": 9, "edinburgh": 9, "jointli": [9, 20], "develop": [9, 11, 12, 20, 30, 37, 38, 51, 52, 54, 61, 67, 70, 71, 72, 75, 79], "author": 9, "barrier": 9, "mit": 9, "licens": [9, 72, 74], "boniface316": 9, "bigdata_vqa": 9, "unsupervis": 9, "learn": [9, 11, 13, 18, 20, 29, 31, 51, 52, 57, 58, 78, 79, 80], "techniqu": [9, 18, 22, 27, 28, 54, 58], "similar": [9, 23, 33, 53, 58, 72], "characterist": 9, "enhanc": [9, 15, 30], "reliabl": [9, 78], "todai": 9, "limit": [9, 15, 53, 54, 58, 66, 78], "far": [9, 15], "too": [9, 29, 67], "extend": [9, 14, 16, 30, 31, 32, 77, 80], "harrow": 9, "emphas": 9, "util": [9, 11, 20, 25, 33, 45, 52, 53, 54, 66, 68, 71], "bipartit": 9, "branch": [9, 31, 35, 72, 74, 80], "directori": [9, 70, 72, 74, 78], "tree": 9, "uncom": [9, 12, 13, 72, 74], "skip": [9, 29, 72], "mkdir": [9, 71, 72, 75], "divisive_clustering_src": 9, "wget": [9, 72, 74], "githubusercont": 9, "sphinx": 9, "divisive_clust": 9, "main_divisive_clust": 9, "mpi4pi": [9, 54, 79], "networkx": 9, "panda": [9, 17], "scikit": [9, 11], "tqdm": [9, 20], "nx": 9, "pd": [9, 17], "divisiveclust": 9, "dendrogram": 9, "voironi_tessal": 9, "filterwarn": 9, "toggl": 9, "circuit_depth": 9, "max_shot": 9, "x_1": 9, "x_2": 9, "x_n": 9, "much": [9, 10, 22, 71], "w": [9, 42, 54, 63], "reason": [9, 16, 47], "conclus": 9, "variou": [9, 23, 31, 51, 53, 56, 64, 68, 71, 80], "1703": 9, "06476": 9, "essenti": 9, "boil": 9, "down": [9, 15, 53, 63], "toler": 9, "constraint": [9, 17, 20, 37, 38, 39, 54, 58, 63, 67], "priori": 9, "load": [9, 11, 33, 38, 51, 52, 63, 68, 70], "frame": 9, "imag": [9, 11, 12, 13, 15, 18, 20, 29, 31, 50, 63, 72, 79, 80], "star": 9, "create_dataset": 9, "number_of_sampling_for_centroid": 9, "coreset_s": 9, "number_of_coresets_to_evalu": 9, "coreset_method": 9, "bfl2": 9, "coreset_vector": 9, "coreset_weight": 9, "get_best_coreset": 9, "coreset_df": 9, "datafram": [9, 17], "chr": 9, "65": [9, 13, 17, 18, 25], "028364": 9, "669787": 9, "234": [9, 17], "230716": 9, "167441": 9, "354792": 9, "319288": 9, "022889": 9, "921443": 9, "125": [9, 27, 33, 36, 41, 52, 53, 62], "158339": 9, "706134": 9, "636852": 9, "650774": 9, "998497": 9, "455847": 9, "116": 9, "758239": 9, "507918": 9, "630311": 9, "120": [9, 18, 74], "727176": 9, "102508": 9, "297727": 9, "53": [9, 17], "294127": 9, "722463": 9, "400433": 9, "77": [9, 17], "415840": 9, "425868": 9, "341136": 9, "42": [9, 11, 17, 18, 21, 22], "847985": 9, "985373": 9, "063209": 9, "240": 9, "116237": 9, "7eba00": 9, "color": [9, 13], "marker": 9, "titl": [9, 20, 21, 22, 51, 74, 79], "cast": 9, "routin": [9, 13, 33], "e_": 9, "ij": [9, 20], "w_iw_jd_": 9, "d_": [9, 12], "euclidean": 9, "coreset_to_graph": 9, "vqa": 9, "src": [9, 51, 54, 72], "motiv": [9, 46, 72], "cut": [9, 30, 72, 74], "get_k2_hamiltonian": 9, "k2": 9, "r_z": 9, "r_y": 9, "cascad": 9, "benefit": [9, 16, 31, 58, 79, 80], "get_vqe_circuit": 9, "number_of_qubit": 9, "theta_posit": 9, "rz": [9, 13, 15, 29, 36, 40], "visual": [9, 13, 30, 47, 61], "rand": 9, "8904": 9, "7335": 9, "4343": 9, "2236": 9, "7937": 9, "9981": 9, "3945": 9, "696": 9, "3352": 9, "6658": 9, "05277": 9, "791": 9, "003569": 9, "4119": 9, "3205": 9, "3504": 9, "3913": 9, "7392": 9, "3171": 9, "0008056": 9, "proper": 9, "get_optim": 9, "initial_param": [9, 27], "divisiveclusteringvqa": 9, "run_divisive_clust": 9, "get_counts_from_simul": 9, "acceler": [9, 11, 12, 22, 30, 31, 52, 54, 58, 66, 71, 72, 74, 79, 80], "associ": [9, 13, 16, 23, 38, 53, 67], "super": [9, 11, 22], "coreset_vectors_df_for_iter": 9, "coreset_vectors_for_iteration_np": 9, "coreset_weights_for_iteration_np": 9, "_get_iteration_coreset_vectors_and_weight": 9, "metric": [9, 16], "coreset_to_graph_metr": 9, "_get_best_bitstr": 9, "create_hamiltonian": 9, "optimizer_funct": 9, "create_circuit": 9, "objective_funct": [9, 22, 27], "get_result": [9, 22, 27, 50], "mostli": 9, "previous": [9, 27, 51, 74], "threshold_for_max_cut": 9, "percent": [9, 16], "advanc": [9, 18, 22, 28], "normal": [9, 11, 15, 21, 22, 27, 67], "get_divisive_sequ": 9, "analyz": [9, 20, 70], "postprocess": 9, "sourc": [9, 10, 13, 17, 25, 31, 47, 50, 54, 68, 71, 74, 75, 76, 79, 80], "normalize_vector": 9, "sort_by_descend": 9, "hierarchial_clustering_sequ": 9, "129": [9, 18], "12075": 9, "19it": 9, "35025": 9, "50it": 9, "44254": 9, "09it": 9, "15827": 9, "56it": 9, "13617": 9, "87it": 9, "nice": 9, "earli": [9, 52, 74], "split": [9, 66], "least": [9, 13, 18, 19, 20, 23, 53, 72], "dendo": 9, "plot_dendrogram": 9, "plot_titl": 9, "notic": [9, 13, 15, 18, 20, 22, 47, 66, 68, 75], "complic": [9, 41], "occasion": 9, "especi": 9, "puzzl": 9, "glanc": [9, 15], "seem": [9, 67, 74, 79], "strai": 9, "belong": 9, "wrong": 9, "explan": 9, "stochast": [9, 33], "few": [9, 13, 18, 20, 22, 60], "pai": [9, 14], "exclud": [9, 52, 58, 72], "proxim": 9, "impact": [9, 22, 25], "look": [9, 15, 28, 29, 31, 47, 50, 51, 53, 57, 58, 62, 63, 64, 65, 66, 68, 72, 74, 80], "unusu": 9, "origin": [9, 12, 15, 25, 47, 68], "14": [9, 10, 11, 15, 16, 17, 18, 20, 22, 29, 52, 60, 63, 68], "plot_hierarchial_split": 9, "hierarch": 9, "flat": [9, 53], "perpendicular": 9, "intersect": 9, "threshold": [9, 12, 18, 54], "height": 9, "get_clusters_using_k": 9, "desir": [9, 18, 20, 43, 50, 53, 58, 71, 72, 74, 76], "15": [9, 11, 16, 17, 20, 22, 29, 60, 66, 68, 72, 74], "threshold_height": 9, "get_clusters_using_height": 9, "red": [9, 17, 23], "blue": [9, 23], "green": [9, 13], "purpl": 9, "orang": 9, "yellow": 9, "color_threshold": 9, "plot_clust": 9, "show_annot": 9, "get_voronoi_tessal": 9, "region": [9, 51], "accord": 9, "centroid": 9, "tesslation_by_clust": 9, "complet": [9, 10, 12, 15, 19, 25, 33, 50, 51, 72, 74, 78, 79], "plot_voironi": 9, "overlai": 9, "vt": 9, "voironi": 9, "tessal": 9, "design": [9, 13, 22, 28, 30, 32, 50, 53, 60, 79], "flexibl": [9, 56, 72], "tool": [9, 17, 23, 26, 27, 29, 31, 47, 68, 70, 72, 76, 78, 80], "get_qaoa_circuit": 9, "3527": 9, "19": [9, 16, 17, 18, 20, 29, 52, 60, 68], "20": [9, 12, 16, 17, 18, 20, 29, 39, 45, 60, 68, 76, 79], "484": 9, "12163": 9, "89it": 9, "52703": 9, "30it": 9, "48": 9, "31987": 9, "07it": 9, "36393": 9, "37957": 9, "42473": 9, "96it": 9, "quickli": [9, 10, 33, 74], "encount": [9, 52, 54, 63, 72, 74, 79], "port": [9, 53, 74], "hpc": [9, 31, 74, 80], "becam": 9, "massiv": [9, 19], "compar": [9, 22, 26, 57, 58, 74, 79], "100000": [9, 10, 66], "try": [9, 10, 14, 16, 18, 20, 22, 29, 66, 74], "slightli": [9, 22], "751": 9, "3460": 9, "26it": 9, "42771": 9, "74it": 9, "4064": 9, "6862": 9, "37it": 9, "56871": 9, "92it": 9, "44979": 9, "13it": 9, "128": [9, 11, 20, 68], "19366": 9, "94it": 9, "53773": 9, "54648": 9, "91it": 9, "51941": 9, "85it": 9, "56111": 9, "461": 9, "866833317": 9, "spent": 9, "452308367999706": 9, "oner": 9, "feel": 9, "interrupt": 9, "patienc": 9, "worn": 9, "still": [9, 15, 16, 19, 23, 37, 47, 58, 63, 67, 74, 78], "easili": [9, 10, 13, 19, 58, 72, 74, 78], "27": [9, 17, 18, 58], "7352": 9, "2063": 9, "82it": 9, "16492": 9, "4739": 9, "44it": 9, "256": [9, 11, 51], "15185": 9, "58it": 9, "64": [9, 11, 53, 54, 68, 72, 74], "23728": 9, "05it": 9, "15437": 9, "97it": 9, "50840": 9, "32": [9, 11, 17, 51, 54, 68, 74], "33562": 9, "54120": 9, "54560": 9, "55924": 9, "42717": 9, "29it": 9, "55007": 9, "27it": 9, "53601": 9, "33it": 9, "47127": 9, "01it": 9, "67": 9, "61674502899999": 9, "21": [9, 16, 17, 20, 29, 60, 68], "439895901": 9, "push": [9, 78], "a100": 9, "yourself": [9, 72], "28": [9, 11, 17, 31, 53, 72, 74, 79, 80], "nlopt": [9, 68], "failur": [9, 78], "pool": [9, 52, 66], "finish": [9, 23, 58, 68], "fail": [9, 16, 54, 70, 74, 78], "immedi": [9, 53, 71], "issu": [9, 33, 54, 72, 74, 78, 79], "mgpu": [9, 12, 14, 22, 28, 31, 49, 52, 53, 54, 66, 80], "gpu_count": 9, "smi": [9, 72, 74], "wc": 9, "mpirun": [9, 53, 54, 66], "Not": [9, 37, 51, 52, 74], "subroutin": [10, 22, 57, 60], "molecular": [10, 21, 22, 30], "semidefinit": 10, "briefli": 10, "introduc": [10, 13, 16, 18, 33], "ancilla": [10, 12, 33, 35], "insight": 10, "re": [10, 17, 18, 33, 47, 50, 64, 66, 72, 74], "x_1x_2": 10, "fact": [10, 14, 18, 47, 78], "u_": [10, 20], "qquad": 10, "repeatedli": [10, 16, 18, 58], "pmatrix": [10, 25], "functool": [10, 17], "psi_stat": 10, "phi_stat": 10, "sv": [10, 16, 76], "707107": 10, "withe": 10, "ham_matrix": 10, "exp_val": [10, 11, 21, 22, 27, 50, 53, 62], "conj": [10, 12, 15, 20], "7071067690849304": 10, "fourth": [10, 50], "u_psi": 10, "u_phi": 10, "ham_cir": 10, "mean_val": 10, "qc": [10, 51], "85281": 10, "14719": 10, "70562": 10, "0015844563982640861": 10, "hilbert": [10, 45, 50], "orthogon": [10, 12], "easi": [10, 13, 18, 50, 76], "mqpu": [10, 12, 22, 23, 27, 49, 54, 58, 62, 66], "sake": 10, "qpu_count": [10, 22, 27, 53], "four": [10, 16, 27, 53, 62, 67], "i_result": 10, "49865": 10, "50135": 10, "0027": 10, "0022360598270171573": 10, "49796": 10, "50204": 10, "00408": 10, "002236049366181346": 10, "49695": 10, "50305": 10, "0061": 10, "002236026375068058": 10, "49972": 10, "50028": 10, "00056": 10, "002236067626884303": 10, "my_mat": 10, "linalg": [10, 12, 17, 50], "eigh": 10, "00782313": 10, "00456313": 10, "76575845": 10, "64312829": 10, "highlight": [11, 28, 31, 80], "pytorch": 11, "maximis": 11, "classif": 11, "mnist": 11, "dataset": 11, "classifi": [11, 20], "hand": [11, 15, 52, 53, 54, 74, 78], "written": [11, 17, 29, 33, 67, 72, 76], "torch": [11, 20, 50], "cu118": 11, "torchvis": 11, "url": [11, 51, 53, 63, 72, 74], "download": [11, 20, 72, 74, 79], "whl": [11, 72], "autograd": 11, "nn": 11, "sklearn": 11, "model_select": 11, "train_test_split": 11, "manual_se": [11, 20], "22": [11, 17, 18, 20, 29, 58, 60, 68, 72, 74], "44": [11, 17], "prepare_data": 11, "target_digit": 11, "sample_count": [11, 66], "test_siz": 11, "percentag": 11, "remaind": [11, 13], "train": [11, 20], "totensor": 11, "1307": 11, "3081": 11, "filter": 11, "datapoint": 11, "subset_indic": 11, "randperm": 11, "unsqueez": 11, "relabel": 11, "min": [11, 12, 18], "x_train": 11, "x_test": 11, "y_train": 11, "y_test": 11, "shuffl": 11, "random_st": 11, "classification_threshold": 11, "accuraci": [11, 18, 20, 54], "parmet": 11, "visualis": 11, "sample_to_plot": 11, "grid_img": 11, "make_grid": 11, "pad": 11, "imshow": 11, "permut": [11, 16], "quantumfunct": 11, "finit": [11, 22, 27], "theta_v": 11, "excetut": 11, "live": 11, "tolist": [11, 16], "staticmethod": 11, "quantum_circuit": 11, "backward": [11, 22, 27, 39], "save_for_backward": 11, "grad_output": 11, "saved_tensor": 11, "thetas_plu": 11, "exp_vals_plu": 11, "thetas_minu": 11, "exp_vals_minu": 11, "mul": 11, "quantumlay": 11, "hybrid_qnn": 11, "fc1": 11, "fc2": 11, "dropout": 11, "fc3": 11, "fc4": 11, "fc5": 11, "feed": [11, 13], "view": [11, 38, 48, 51, 74], "relu": 11, "fed": 11, "sigmoid": 11, "accuracy_scor": 11, "y_hat": 11, "hybrid_model": 11, "adadelta": 11, "lr": [11, 68], "weight_decai": 11, "loss_funct": 11, "bceloss": 11, "training_cost": 11, "testing_cost": 11, "training_accuraci": 11, "testing_accuraci": 11, "zero_grad": 11, "y_hat_train": 11, "train_cost": 11, "eval": [11, 12], "no_grad": 11, "y_hat_test": 11, "test_cost": 11, "figsiz": [11, 17, 20], "subplot": [11, 17], "tight_layout": 11, "proto": [11, 20], "018ba9130a0e5800b93e86d0096a22daf7a132f8": [11, 20], "multirefer": 12, "mrsqk": 12, "low": [12, 17, 40, 66], "altern": [12, 13, 19, 51, 63, 65, 72, 74, 79], "background": [12, 53], "trotter": [12, 30, 41], "diagon": [12, 54], "heurist": 12, "cisd": 12, "veri": [12, 20, 53, 64, 70, 78], "unitari": [12, 14, 21, 22, 30, 36, 40, 47, 60, 65, 67], "lcu": 12, "avoid": [12, 20, 72, 78, 79], "dimension": [12, 15, 20, 29, 45, 50, 60, 63], "phi_0": 12, "phi_d": 12, "phi_i": 12, "mu": 12, "phi_": 12, "famili": 12, "alpha": [12, 13, 15, 50, 67], "equiv": [12, 18, 67], "psi_i": 12, "_n": 12, "c_": 12, "c_i": 12, "boldsymbol": 12, "hc": 12, "sc": [12, 51], "s_": 12, "beta": [12, 15, 67, 68], "_m": 12, "phi_j": 12, "sigma_": [12, 50], "scipi": [12, 17, 21, 22, 27, 50], "openfermionpyscf": [12, 21, 22], "multi_gpu": 12, "geometri": [12, 21, 22], "7474": [12, 21], "chemistri": [12, 21, 22], "create_molecular_hamiltonian": [12, 21], "sto": [12, 21, 22], "3g": [12, 21, 22], "electron_count": [12, 21, 22], "n_electron": [12, 21], "qubits_num": 12, "n_orbit": [12, 21], "spin_ham_matrix": 12, "eig": 12, "argmin": [12, 20], "min_indic": 12, "vec": [12, 60], "termcoeffici": [12, 19], "termword": [12, 19], "pauli_str": 12, "potenti": [12, 15, 18, 22, 23, 33, 58], "improv": [12, 18, 22, 28, 31, 54, 66, 74, 80], "higher": [12, 32], "receiv": [12, 33], "compon": [12, 13, 18, 20, 50, 72, 74, 78, 79], "um": 12, "u_m": 12, "dt": [12, 19], "un": 12, "u_n": 12, "apply_pauli": 12, "qfd_kernel": 12, "dt_alpha": 12, "dt_beta": 12, "word_list": 12, "my_list": 12, "x_0": 12, "y_0": 12, "m_qfd": 12, "wf_overlap": 12, "accomplish": [12, 24], "along": [12, 21, 26, 33, 51, 52, 54, 58, 60, 78], "observe_op": 12, "identity_word": 12, "pauli_list": 12, "dt_m": 12, "dt_n": 12, "temp": [12, 68], "collect_overlap_r": 12, "collect_overlap_img": 12, "sent": [12, 51, 53, 63], "count_id": 12, "tot_dim": 12, "real_val": 12, "img_val": 12, "ham_matrx": 12, "tot_": 12, "accumul": [12, 63], "ham_matrix_r": 12, "ham_matrix_imag": 12, "enter": [12, 63, 74], "eigenvaulu": 12, "sum_k": 12, "s_k": 12, "kj": 12, "hx": 12, "sce": 12, "s_diag": 12, "s_prime": 12, "sii": 12, "valueerror": [12, 50], "x_prime": 12, "h_prime": 12, "conjug": [12, 16, 50], "e_prim": 12, "c_prime": 12, "eigen_valu": 12, "eigen_vect": 12, "qfd": 12, "farhi": 13, "dive": [13, 29, 74], "ll": [13, 14, 18, 64, 68, 71, 75], "maxim": [13, 15, 52, 54, 56, 63, 66], "although": [13, 67], "rel": [13, 54], "hard": 13, "statist": [13, 23, 33, 36, 58, 67], "furthermor": [13, 31, 80], "wider": [13, 53], "portfolio": 13, "shop": 13, "vertex": 13, "subseteq": 13, "mathbb": [13, 25, 67], "interchang": [13, 54], "undirect": 13, "v_1": 13, "exactli": [13, 20], "bigcup": 13, "bigcap": 13, "emptyset": 13, "illustr": [13, 20, 33, 51, 53, 61, 63, 64], "disjoint": 13, "grai": 13, "depict": [13, 15, 18, 29], "distinct": [13, 20, 29, 47], "substack": 13, "sometim": [13, 15, 51], "01100": [13, 18, 53], "01011": [13, 18], "v1": [13, 51], "v2": 13, "v0": 13, "v3": [13, 72, 74], "v4": [13, 74], "10100": [13, 18], "01010": [13, 18], "10101": [13, 18], "edges_src": 13, "edges_tgt": 13, "algortihm": 13, "hamilitonian": 13, "distinguish": [13, 47], "mixer": 13, "posit": [13, 17, 18, 20, 22, 25, 40, 50, 54], "deeper": [13, 29], "layer_count": 13, "qaoaproblem": 13, "subcircuit": [13, 57], "kernel_qaoa": 13, "restrict": [13, 15, 20, 22, 53], "plaehold": 13, "qubitu": 13, "qubitv": 13, "mention": [13, 20], "earlier": [13, 20, 54, 58], "z_v": 13, "vale": 13, "arbirtrari": 13, "formula": 13, "z_uz_v": 13, "refram": 13, "promot": [13, 30, 79], "replac": [13, 18, 51, 52, 68, 70, 72, 74], "lead": [13, 15, 25], "reformul": 13, "hamiltonian_max_cut": 13, "inititi": 13, "iiziz": 13, "izzii": 13, "iiiii": 13, "zziii": 13, "iiizz": 13, "iizzi": 13, "ziizi": 13, "495973826282007": 13, "51349181993727": 13, "21299416361632417": 13, "3250526425808945": 13, "886630847343767": 13, "outcom": [13, 15, 16, 18], "max_cut": 13, "11111": [13, 18], "11110": [13, 18], "01101": [13, 18], "148": 13, "01110": [13, 18], "47": [13, 17, 18, 29], "01000": [13, 18], "00110": [13, 18], "54": [13, 17], "165": 13, "00101": [13, 18], "154": 13, "00100": [13, 18], "01001": [13, 18], "41": [13, 18], "00000": [13, 18], "00011": [13, 18], "10011": [13, 18, 53], "00010": [13, 18], "01111": [13, 18], "11011": [13, 18], "00111": [13, 18], "11100": [13, 18], "10001": [13, 18], "10010": [13, 18], "144": [13, 17], "10110": [13, 18], "40": [13, 15, 17, 20, 21, 27, 66], "10111": [13, 18], "11000": [13, 18], "11101": [13, 18], "11001": [13, 18], "a726804916fd397408cbf595ce6fe5f33dcd8b4c": [13, 14], "aid": [14, 32], "area": [14, 53], "signal": [14, 38, 50], "compress": 14, "qft": 14, "ingredi": 14, "shor": [14, 30], "faster": [14, 15, 18, 20, 22, 54], "prime": [14, 18], "plai": 14, "vital": 14, "role": 14, "interest": [14, 15, 16, 18, 20, 21, 22, 62, 64], "idea": [14, 18], "frequenc": [14, 63], "domain": 14, "easier": [14, 33, 68, 71], "analogi": 14, "ixi": 14, "5i": 14, "35": [14, 15, 17, 18], "0i": 14, "25i": 14, "35i": 14, "r_k": 14, "bmatrix": [14, 17, 67], "ciruit": 14, "quantum_fourier_transform": [14, 18], "cr1": [14, 18, 36], "zeroth": 14, "decim": 14, "round": [14, 20, 27, 36], "r1": [14, 18, 29, 36, 40, 47], "571": [14, 18], "7854": [14, 18], "25j": 14, "35j": 14, "continu": [14, 15, 18, 20, 58, 63, 68], "seri": [14, 51, 63], "fast": [14, 20, 38, 54, 57], "n2": 14, "life": [14, 52], "li": [14, 18, 68], "invert": [14, 20], "revers": [14, 18, 44], "quantum_fourier_transform2": 14, "attent": 14, "inverse_qft": [14, 18], "verification_exampl": 14, "phenomena": [15, 67], "implic": 15, "initialis": 15, "unless": [15, 72, 74], "0th": [15, 25], "arbitari": 15, "2nd": 15, "beta_": 15, "23": [15, 17, 18, 20, 29, 60], "replic": 15, "stage": 15, "psi0": 15, "psi4": 15, "71": 15, "62": [15, 22], "psi1": 15, "psi2": 15, "psi3": 15, "m1": 15, "m2": 15, "psi_4": 15, "multipartit": 15, "partial": 15, "subsystem": 15, "partial_trac": 15, "state_vector": 15, "trace_system": 15, "particl": [15, 47], "log2": [15, 18], "rho": 15, "tensordot": 15, "ax": [15, 17, 18], "prod": 15, "state_of_q0": 15, "state_of_q2": 15, "allclos": [15, 20], "happen": [15, 18, 47, 74], "portion": 15, "close": [15, 20, 58, 63], "lab": [15, 74], "infinit": [15, 20, 38, 45, 58], "apart": 15, "obei": [15, 67], "theorem": [15, 45], "longer": [15, 25, 72], "violat": 15, "travel": 15, "speed": 15, "light": [15, 50], "experimentalist": 15, "cx_": 15, "alic": 15, "bob": 15, "safekeep": 15, "moon": 15, "posess": 15, "she": 15, "send": 15, "who": 15, "mile": 15, "entail": 15, "collaps": [15, 23, 58, 67, 71], "seper": [15, 21], "poss": 15, "expand": [15, 68], "bracket": 15, "110": [15, 17, 18], "whilst": 15, "maintain": 15, "break": [15, 18], "ask": [15, 74], "her": 15, "unmeasur": 15, "determinist": [15, 58], "tell": [15, 17, 67], "summaris": 15, "psi_3": 15, "nearli": 15, "pend": 15, "minor": 15, "fulfil": 15, "protocol": [15, 72], "m1m2": 15, "recov": 15, "ambit": 15, "instantli": 15, "appear": [15, 20, 33, 74], "he": 15, "rather": [15, 19, 23, 24, 52, 54, 58, 67, 78], "transmit": 15, "notebook": [15, 20, 29, 51], "courtesei": 15, "textbook": 15, "nielsen": 15, "chuang": 15, "qv": 16, "power": [16, 20, 29, 31, 52, 54, 66, 80], "noisi": [16, 17, 20, 30, 61], "greatest": [16, 18], "score": 16, "though": [16, 72], "imperfect": [16, 17], "usabl": 16, "special": [16, 17, 37, 42, 68, 76], "median": 16, "greater": [16, 18, 47, 52, 54, 67], "heavi": 16, "averag": [16, 19, 79], "su4": 16, "kak": 16, "conclud": 16, "su4_per_circuit": 16, "n_params_in_su4": 16, "su4_gat": 16, "u3": 16, "reg": [16, 60], "param_index": 16, "randomli": [16, 18], "generate_random_param": 16, "params_list": 16, "generate_random_permut": 16, "circuit_permut": 16, "astyp": 16, "int64": 16, "make_bitstr": 16, "zfill": 16, "percent_heavy_sampl": 16, "rate": [16, 52], "error_r": 16, "noiseless": [16, 25], "circuit_param": 16, "layer_permut": 16, "print_output": 16, "bf": 16, "clean_result": 16, "noisy_result": [16, 25], "prob": [16, 17], "cutoff": [16, 54], "circuit_prob": 16, "outcome_prob": 16, "havi": 16, "prob_heavy_in_noisi": 16, "heavy_bitstr": 16, "04363711": 16, "0000": [16, 53], "0100": 16, "0010": 16, "1101": 16, "0011": 16, "0111": 16, "8153219893574715": 16, "488": 16, "detemin": 16, "_heavy_sampl": 16, "n_circuit": 16, "calc_qv": 16, "circuit_s": 16, "prob_of_error": 16, "number_of_circuit": 16, "counter": 16, "circuit_result": 16, "7280300000000003": 16, "affect": [16, 17, 54, 71], "relationship": 16, "caus": [17, 79], "properli": [17, 58, 72, 74, 78], "character": [17, 25], "independ": [17, 22, 33, 38, 50, 53, 54, 72], "pseudoinvers": 17, "p_": 17, "adjust": [17, 54, 72, 78], "quasi": 17, "correl": 17, "impract": 17, "seaborn": 17, "sn": 17, "itertool": 17, "set_styl": 17, "dark": 17, "bitflip": [17, 22, 25], "principl": 17, "yet": [17, 22, 23, 31, 51, 53, 74, 80], "get_nois": 17, "isinst": 17, "bit_flip": [17, 25], "state_label": 17, "ghz": [17, 23, 52, 53, 56, 58, 63, 64, 66, 68, 75], "ghz_kernel": 17, "plot_cmat": 17, "mat": 17, "fig": 17, "im2": 17, "matshow": 17, "cmap": 17, "cm": 17, "vmin": 17, "vmax": 17, "set_ytick": 17, "arang": 17, "set_xtick": 17, "set_yticklabel": 17, "set_xticklabel": 17, "set_titl": 17, "fontsiz": [17, 20], "set_xlabel": 17, "xaxi": 17, "set_label_posit": 17, "set_ylabel": 17, "colorbar": 17, "closest": 17, "min_": 17, "rm": [17, 72, 74], "find_closest_distribut": 17, "empirical_dist": 17, "empir": 17, "l1": 17, "ord": 17, "con": 17, "ineq": 17, "fun": [17, 22, 27], "eq": [17, 68], "bnd": 17, "initial_valu": 17, "slsqp": 17, "get_counts_from_distribut": 17, "drawn": [17, 18], "choic": [17, 18, 22, 54], "return_count": 17, "1024": 17, "noise_1": 17, "ghz_result": 17, "noisy_dict_1": 17, "dict": [17, 18], "noisy_res_1": 17, "352": 17, "43": 17, "367": 17, "61": [17, 18], "noise_2": 17, "noisy_dict_2": 17, "noisy_res_2": 17, "149816047538945": 17, "3802857225639665": 17, "292797576724562": 17, "212": 17, "122": 17, "189": 17, "87": 17, "78": 17, "131": [17, 18], "94": 17, "otim": 17, "single_qubit_label": 17, "single_qubit_st": 17, "924": 17, "104": 17, "920": 17, "true_stat": 17, "observed_st": 17, "90234375": 17, "1015625": 17, "09765625": 17, "8984375": 17, "joint": [17, 63], "a_pinv": 17, "pinv": 17, "positive_dist": 17, "ncorrect": [17, 36], "476": 17, "501": [17, 33], "mitigated_sg": 17, "kind": [17, 58], "bar_label": 17, "assumpt": 17, "a_n": 17, "local_label": 17, "local_st": 17, "388": 17, "235": 17, "174": 17, "79": [17, 18, 52], "58": 17, "38": [17, 18, 72, 74], "370": 17, "60": [17, 74], "107": 17, "162": 17, "marginalized_count": 17, "total_shot": 17, "marginal_ct": 17, "85546875": 17, "15722656": 17, "14453125": 17, "84277344": 17, "6328125": 17, "38476562": 17, "3671875": 17, "61523438": 17, "70800781": 17, "32226562": 17, "29199219": 17, "67773438": 17, "pinv_confusion_matric": 17, "a_joint": 17, "559": 17, "26": [17, 18, 52, 60], "510": [17, 66], "521": 17, "446": 17, "mitigated_k_loc": 17, "248": 17, "159": [17, 18], "83": 17, "68": 17, "161": [17, 18], "93": 17, "46": 17, "363": 17, "253": 17, "76": 17, "378": 17, "150": [17, 67], "36": [17, 66], "74": [17, 22], "106": 17, "145": 17, "251": 17, "386": 17, "99": 17, "29": [17, 18, 53], "229": 17, "247": 17, "70": [17, 22], "163": 17, "371": 17, "95": 17, "157": [17, 18], "233": 17, "85": [17, 66], "396": 17, "31": [17, 52, 66], "393": 17, "160": [17, 18], "a_ful": 17, "24": [17, 28, 29, 60, 71, 72, 74, 75, 79], "09734490298929": 17, "714": 17, "211": 17, "152": 17, "49": 17, "63": 17, "422": 17, "683": 17, "302": 17, "mitigated_ful": 17, "famou": 18, "particularli": [18, 20, 22, 54, 57, 60], "signific": [18, 19, 22, 23, 28, 31, 80], "modern": 18, "asymmetr": 18, "encrypt": [18, 74], "scheme": [18, 54], "rsa": [18, 74], "proce": [18, 19, 74, 79], "explain": [18, 20, 53, 67], "contfrac": 18, "156": 18, "gcd": 18, "ceil": 18, "fraction": [18, 54], "satisfi": [18, 25, 45, 63, 72], "share": [18, 54, 71, 74, 78], "divisor": 18, "smallest": 18, "shors_algorithm": 18, "outlin": [18, 78], "investig": 18, "terminologi": 18, "literatur": 18, "period": 18, "recast": 18, "a1": 18, "a2": 18, "divisor1": 18, "divisor2": 18, "find_order_quantum": 18, "find_order_class": 18, "test_ord": 18, "retri": [18, 29], "establish": 18, "rewritten": [18, 29], "rewrit": [18, 70], "peter": 18, "50": [18, 22, 58, 67, 78], "possible_factor": 18, "test_factor": 18, "No": [18, 63, 66, 74], "straightforward": 18, "notabl": 18, "ineffici": 18, "158": 18, "naiv": [18, 47], "interv": [18, 21], "my_integ": 18, "123": 18, "edit": [18, 74], "initial_value_to_start": 18, "central": 18, "lceil": 18, "rceil": 18, "phase_kernel": 18, "ai": 18, "carri": 18, "exponent": 18, "provabl": 18, "hefti": 18, "5l": 18, "algoirthm": 18, "72l": 18, "exponentiaion": 18, "beckman": 18, "chari": 18, "devabhaktuni": 18, "preskil": 18, "1996": 18, "beyond": [18, 52, 54, 66, 70], "difficulti": 18, "report": 18, "modular_mult_5_21": 18, "physlab": 18, "wp": 18, "content": [18, 33, 51, 63, 71, 74], "upload": 18, "2023": 18, "05": [18, 19, 52], "shor_s_algorithm_23100113_fin": 18, "modif": [18, 22, 54, 58, 64], "modular_exp_5_21": 18, "expon": 18, "control_s": 18, "ctrl_qubit": [18, 44], "198": 18, "5y": 18, "demonstrate_mod_exponenti": 18, "init": 18, "200": [18, 33], "integer_result": 18, "previou": [18, 19, 22, 24, 39, 45, 50, 74], "199": 18, "modular_exp_4_21": 18, "ab": [18, 20], "2103": 18, "13855": 18, "account": [18, 51, 52, 63, 74], "control_register_s": 18, "work_register_s": 18, "control_regist": 18, "work_regist": 18, "201": 18, "values_for_a": 18, "15000": 18, "q6": 18, "q7": 18, "2843": 18, "913": 18, "1850": 18, "1935": 18, "1830": 18, "2846": 18, "1861": 18, "922": 18, "top_result": 18, "202": 18, "results_dictionari": 18, "pop": [18, 74, 78], "sorted_result": 18, "top_kei": 18, "max_valu": 18, "top_results_dictionari": 18, "203": 18, "750": 18, "lectur": 18, "scott": 18, "aaronson": 18, "204": 18, "get_order_from_phas": 18, "phase_nbit": 18, "eigenphas": 18, "from_float": 18, "limit_denomin": 18, "denomin": 18, "coefficients_continued_fract": 18, "continued_fract": 18, "convergents_continued_fract": 18, "algoithm": 18, "205": 18, "zero_result": 18, "elem": 18, "most_probable_bitpattern": 18, "reverse_result": 18, "nonzero": 18, "bitpattern": 18, "206": 18, "452": 18, "92": 18, "2485": 18, "96": 18, "1747": 18, "1654": 18, "1736": 18, "475": [18, 66], "420": 18, "00001": 18, "1710": 18, "113": 18, "467": 18, "2536": 18, "81": 18, "8125": 18, "8421052631578947": 18, "regev": 18, "heisenberg": 19, "chain": [19, 21, 47], "recurs": [19, 37], "fo": 19, "iht": 19, "approx": [19, 67], "prod_": [19, 41], "predefin": [19, 35, 60], "jx": 19, "jy": 19, "n_step": [19, 50], "n_spin": 19, "j_x": 19, "x_j": 19, "x_": 19, "y_j": 19, "y_": 19, "z_": 19, "jz": 19, "heisenbergmodelham": 19, "tdop": 19, "getinitst": 19, "numspin": 19, "qid": 19, "average_magnet": 19, "start_tim": [19, 22], "magnetization_exp_v": 19, "steptim": 19, "03444695472717285": 19, "09042024163828166": 19, "0026793479919433594": 19, "08898564687193886": 19, "002758026123046875": 19, "08698024360923415": 19, "002524852752685547": 19, "08507694741170907": 19, "0026259422302246094": 19, "08394118068746997": 19, "002542734146118164": 19, "08394076573115139": 19, "0027430057525634766": 19, "08502222139504187": 19, "0025305747985839844": 19, "08677832064885871": 19, "003045797348022461": 19, "08863390649349775": 19, "0025949478149414062": 19, "09005513983609514": 19, "boost": [19, 28], "resimul": 19, "24x": 19, "florian": 20, "f\u00fcrrutter": 20, "gorka": 20, "mu\u00f1oz": 20, "gil": 20, "han": 20, "briegel": 20, "nat": 20, "mach": 20, "intel": [20, 79], "515": 20, "524": 20, "2024": [20, 52], "viabl": 20, "commonli": [20, 25, 50, 72, 74], "dm": [20, 52], "deliv": [20, 52], "fold": 20, "prompt": [20, 74], "thoroughli": 20, "overview": 20, "neural": [20, 30], "network": [20, 30, 31, 51, 52, 53, 63, 71, 74, 80], "crucial": 20, "emploi": [20, 25], "de": 20, "genqc": 20, "diffusion_pipelin": 20, "diffusionpipelin": 20, "infer": [20, 67], "export_cudaq": 20, "genqc_to_cudaq": 20, "infer_compil": 20, "infer_comp": 20, "fix": [20, 21, 31, 54, 80], "reproduc": 20, "infer_torch_devic": 20, "memoryclean": 20, "purge_mem": 20, "tf32": 20, "matmul": 20, "from_pretrain": 20, "floki00": 20, "qc_unitary_3qubit": 20, "hug": 20, "set_timestep": 20, "vocab": 20, "gate_pool": 20, "gateset": 20, "decod": 20, "num_of_qubit": 20, "max_gat": 20, "nonetheless": 20, "stai": 20, "tune": [20, 54], "bigger": 20, "70710678": [20, 23, 60], "complex128": [20, 25, 50], "inde": [20, 72], "ccx": 20, "scenario": [20, 31, 65, 74, 80], "miss": [20, 47, 54, 72], "u_r": 20, "u_i": 20, "u_tensor": 20, "stack": [20, 37], "out_tensor": 20, "generate_comp_tensor": 20, "system_s": 20, "guidanc": [20, 74], "cfg": [20, 68], "kernel_list": 20, "valid_tensor": 20, "invalid_tensor": 20, "out_tensors_i": 20, "catch": [20, 78], "invalid": [20, 54], "rapidli": 20, "successfulli": [20, 27], "transit": 20, "langl": [20, 33], "th": [20, 41], "got_unitari": 20, "basis_state_j": 20, "set_printopt": 20, "linewidth": 20, "7071": 20, "infidel": 20, "ones": [20, 33, 50], "want_unitari": 20, "histogram": 20, "hist": 20, "almost": [20, 72], "min_index": 20, "4e": [20, 63], "09": 20, "valuabl": 20, "deal": [20, 45], "fewest": 20, "toffoli": [20, 44, 54], "token": [20, 51, 74], "duplic": 20, "pick": [20, 71, 72], "idx_uniqu": 20, "return_index": 20, "unique_tensor": 20, "unique_infidel": 20, "unique_kernel": 20, "idx_correct": 20, "argwher": 20, "correct_tensor": 20, "num_ccx": 20, "correct_kernel": 20, "correct_kernels_ccx1": 20, "preprocess": [21, 22], "uccsd": [21, 22], "hydrogen": 21, "bond": [21, 54], "interatom": 21, "electrostat": 21, "forc": [21, 53, 78], "proton": 21, "shield": 21, "neutron": 21, "minimis": 21, "stabl": [21, 74], "hydrogen_count": 21, "angstrom": 21, "bond_dist": 21, "coupl": [21, 22, 38, 54, 63, 74], "cluster": [21, 22, 30, 53, 54], "uccsd_num_paramet": [21, 22], "builtin": [21, 68], "1371744305855906": 21, "popular": [21, 74], "xk": [21, 22], "x0": [21, 22, 33], "aspect": [22, 32, 33, 54, 78], "topic": [22, 60], "tradit": 22, "variation": 22, "elabor": 22, "get_fermion_oper": 22, "timeit": [22, 58, 66], "charg": 22, "1173": 22, "4691": 22, "7570": 22, "sto3g": 22, "run_pyscf": 22, "moleculardata": 22, "get_molecular_hamiltonian": 22, "jordan": 22, "wigner": 22, "molecular_hamiltonian": 22, "fermion_hamiltonian": 22, "qubit_hamiltonian": 22, "spatial": 22, "theoret": 22, "excit": [22, 67], "hate": 22, "electron_num": 22, "molecuul": 22, "140": 22, "default_tim": 22, "end_tim": 22, "get_term_count": 22, "elaps": 22, "21455023422772": 22, "1086": 22, "9171073289999185": 22, "perfect": 22, "greatli": [22, 31, 80], "minut": [22, 74], "drastic": 22, "side": [22, 29, 47, 74], "ith": [22, 27], "prohibit": 22, "observe_asynch": 22, "epsilon": [22, 25, 27], "batched_gradient_funct": [22, 27], "tile": [22, 27], "xplu": [22, 27], "ey": [22, 27], "xminu": [22, 27], "g_plu": [22, 27], "g_minu": [22, 27], "bfg": [22, 27, 33], "gradient_vector": [22, 27], "init_param": 22, "result_vq": [22, 27], "jac": [22, 27], "tol": [22, 27], "73": 22, "19471262288755": 22, "57": [22, 72, 74], "27010986900132": 22, "thank": [22, 31, 54, 80], "unnecessari": 22, "highest": 22, "unoccupi": 22, "shallow": 22, "nele_ca": 22, "norb_ca": 22, "ncore": 22, "constrcut": 22, "occupied_indic": 22, "active_indic": 22, "96341992791962": 22, "754178541001238": 22, "consecut": [22, 28], "cudaq_mgpu_fus": [22, 28, 31, 54, 80], "506": 23, "494": 23, "subtl": [23, 58], "rebuilt": [23, 58], "feasibl": [23, 67], "signinific": 23, "textcolor": 23, "intens": [23, 58], "respons": [23, 58], "event": [23, 58, 72], "hamiltonian_1": 23, "hamiltonian_2": 23, "result_1": [23, 58], "result_2": [23, 58], "220446049250313e": 23, "obver": 23, "0eb6b444eb5b3a687e6fd64529ee9223aaa2870": 23, "mx": 24, "my": [24, 52, 71, 74], "qubits_a": 24, "qubit_b": 24, "savig": 24, "b0": 24, "coher": [25, 37, 51], "incoher": 25, "systemat": 25, "miscalibr": 25, "formal": 25, "k_i": 25, "simpl": [25, 27, 35, 38, 50, 52, 53, 56, 58, 62, 63, 64, 68, 70, 74, 75, 79], "ideal_count": 25, "error_prob": 25, "phase_flip": 25, "amplitude_damp": 25, "kraus_0": 25, "kraus_1": 25, "bitflip_channel": 25, "uniformli": 25, "noisy_count": 25, "844": 25, "88": 25, "8666666666666666": 25, "cover": [26, 60], "sophist": 26, "2xyx": 26, "3zzy": 26, "referenc": 26, "xyxz": 26, "432xzy": 26, "324ixx": 26, "ixx": 26, "432": 26, "324": 26, "907": [27, 33, 36, 41, 52, 53, 62], "1433": [27, 33, 36, 41, 52, 53, 62], "21829": [27, 33, 36, 41, 52, 53, 62], "adam": [27, 50], "nminim": 27, "748382901613712": 27, "58409164053813": 27, "accomplis": 27, "fucntion": 27, "messag": [27, 38, 52, 72, 74], "statu": 27, "7488646919931474": 27, "944e": 27, "288e": 27, "nfev": 27, "33": [27, 53, 74], "maxcv": 27, "plu": [27, 50], "minu": [27, 29, 50], "situat": 28, "c2h2vqe": 28, "cue": 29, "sens": [29, 68], "2d": 29, "plane": 29, "3d": 29, "varphi": 29, "direct": [29, 68, 78], "spheric": 29, "sphere": 29, "showcas": 29, "sure": [29, 53, 72, 74, 76, 79], "restart": 29, "jupyt": [29, 51, 74], "menu": 29, "vscode": [29, 74], "click": [29, 74], "button": 29, "toolbar": 29, "misunderstand": 29, "qualifi": 29, "bash": [29, 52, 72, 74, 79], "pipe": [29, 68], "sy": [29, 58, 79], "importerror": 29, "nnew": 29, "subsequ": [29, 33, 38, 41, 43, 72, 74], "add_to_bloch_spher": 29, "rng": 29, "default_rng": [29, 66], "blochspherelist": 29, "anglelist": 29, "sph": 29, "displai": [29, 32], "accordingli": [29, 54, 78], "absolut": [29, 45, 68], "had": 29, "toolbox": 29, "blochspher": 29, "unfortun": 29, "handi": 29, "kernel_to_draw": 29, "14159": 29, "tdg": [29, 40], "142": 29, "documentclass": 29, "usepackag": 29, "quantikz": 29, "lstick": 29, "q_0": 29, "amp": 29, "r_1": 29, "qw": 29, "q_1": 29, "targx": 29, "q_2": 29, "q_3": 29, "editor": 29, "export": [29, 51, 52, 53, 71, 72, 79], "welcom": [30, 52, 64, 74], "page": [30, 58, 62, 64, 72, 74, 79], "scalabl": [30, 52, 79], "offer": [30, 52, 54, 79], "unifi": [30, 49, 79], "brows": 30, "amd64": [30, 31, 80], "2458": 30, "releas": [30, 49, 53, 54, 68, 74, 79, 80], "toolchain": [30, 46, 51, 58, 68, 74, 75, 76, 77, 79], "heterogen": [30, 32, 57, 72], "troubleshoot": [30, 55], "bernstein": [30, 74], "vazirani": [30, 74], "diffus": 30, "magnet": 30, "With": [30, 31, 53, 58, 68, 75, 80], "suzuki": 30, "deutsch": 30, "divis": 30, "coreset": 30, "qaoa": 30, "dock": 30, "dc": 30, "krylov": 30, "mont": 30, "carlo": 30, "fourier": [30, 36], "telepor": 30, "volum": 30, "readout": 30, "mitig": 30, "fusion": [30, 31, 54, 80], "subspac": 30, "cloud": [30, 31, 49, 51, 54, 63, 80], "processor": [30, 31, 33, 38, 49, 58, 74, 78, 79, 80], "center": [30, 73, 74], "cmake": [30, 70, 71, 77], "repositori": [31, 70, 71, 72, 74, 80], "docker": [31, 50, 72, 79, 80], "nightli": [31, 74, 80], "eas": [31, 80], "think": [31, 53, 67, 80], "great": [31, 80], "extern": [31, 54, 68, 70, 72, 78, 80], "contributor": [31, 80], "wheel": [31, 53, 54, 72, 80], "bug": [31, 80], "frontend": [31, 80], "blog": [31, 80], "ve": [31, 64, 76, 80], "workload": [31, 53, 74, 80], "gnu": [31, 68, 72, 74, 78, 80], "older": [31, 72, 74, 80], "glibc": [31, 72, 74, 80], "oqc": [31, 49, 80], "iqm": [31, 49, 80], "publish": [31, 74, 80], "arm": [31, 72, 74, 79, 80], "aarch64": [31, 50, 79, 80], "pypi": [31, 72, 79, 80], "quantinuum": [31, 49, 80], "ionq": [31, 49, 80], "linux": [31, 68, 72, 74, 80], "concept": [32, 33, 37, 39], "coprocess": 32, "annot": [32, 37, 56, 64], "core": [32, 33, 54, 66, 68], "namespac": [32, 33, 35, 36, 37, 40, 41, 43, 45, 46, 52, 53, 58, 62, 63, 70, 71, 76, 78], "philosophi": 33, "stand": 33, "alon": 33, "adaptor": 33, "returntyp": 33, "hasvoidreturntyp": 33, "is_void_v": 33, "sample_opt": 33, "bel": 33, "lu": [33, 36, 45, 64, 65], "sequential_data": 33, "reg1": 33, "499": 33, "alwai": [33, 54, 74], "middl": 33, "implicitli": [33, 38, 47], "discern": 33, "silent": 33, "discard": 33, "ancillari": 33, "varieti": [33, 58], "enforc": 33, "sample_async_result": 33, "\ud835\udeb9": 33, "observe_opt": 33, "retain": [33, 39], "measurecount": 33, "spinop": 33, "x0x1exp": 33, "x0x1data": 33, "qarrai": [33, 36, 37, 44, 64, 68], "lf": [33, 36, 53, 62], "analyt": 33, "async_observe_result": 33, "broader": [33, 53], "dictat": 33, "safe": 33, "providesgradi": 33, "_providesgradi": 33, "someth": [33, 45, 72, 74, 78], "max_ev": 33, "opt_energi": 33, "grad_vec": 33, "\ud835\udeb9_i": 33, "variad": 33, "address": [33, 53, 72], "overal": [33, 68, 71], "deuteron_n3_ansatz": 33, "x1": 33, "vctrl": 33, "h3": 33, "625": 33, "913119": 33, "make_tupl": 33, "min_val": 33, "permit": 34, "facilit": [35, 74], "privat": [35, 45], "thenfunctor": 35, "otherkernelbuild": 35, "kerneltocal": 35, "kerneltocontrol": 35, "kerneltoadjoint": 35, "argsarrai": 35, "decltyp": 35, "tuple_s": 35, "integral_const": 35, "sizeof": [35, 76], "tuple_el": 35, "conditional_t": [35, 45], "factori": 35, "xprep": 35, "qubitin": 35, "hadamardtest": 35, "num_it": 36, "c_str": [36, 78], "phase_estim": 36, "cpp": [36, 51, 52, 53, 54, 58, 62, 63, 64, 65, 68, 70, 71, 72, 74, 75, 76, 78, 79], "qpe": 36, "stdio": [36, 72], "cmath": 36, "iqft": 36, "denom": 36, "1ul": 36, "eigenst": 36, "stateprep": [36, 37], "ncountingqubit": 36, "state_prep": 36, "counting_qubit": 36, "state_regist": 36, "put": [36, 45, 67], "r1pigat": 36, "mostprob": 36, "to_integ": 36, "piestim": 36, "tgate": 36, "xgate": 36, "eigen": [36, 71], "nc": 36, "nq": 36, "countingqubit": 36, "stateregist": 36, "deuteron_n2_ansatz": 36, "param_spac": 36, "linspac": [36, 50, 63], "energy_at_param": 36, "energyatparam": 36, "reflect_about_uniform": 36, "ctrlqubit": 36, "lastqubit": 36, "compute_act": [36, 42], "run_grov": 36, "callablekernel": 36, "n_iter": 36, "target_st": 36, "target_bit_set": 36, "strtol": 36, "null": [36, 50, 74], "0b1011": 36, "compute_oracl": 36, "iterative_qp": 36, "iqp": 36, "cr0": 36, "cr2": 36, "m_pi_4": 36, "differenti": [37, 50], "former": 37, "latter": [37, 50, 68], "my_first_entry_point_kernel": 37, "my_second_entry_point_kernel": 37, "my_first_pure_device_kernel": 37, "parent": 37, "boolexprfromqubitmeasur": 37, "another_qubit": 37, "uncomput": [37, 38], "is_arithmetic_v": 37, "span": [37, 45], "mycustomsimplestruct": 37, "recursivevec": 37, "var": [37, 79], "kernelthatreturn": 37, "dataclass": 37, "mysimplestruct": 37, "recursivelist": 37, "1415926": 37, "kernellambda": 37, "mystateprep": 37, "prep": 37, "mygenericalgorithm": 37, "placehold": 37, "mygenericalgorithm2": 37, "callkernel": 37, "anothervers": 37, "constrain": [37, 65], "is_convertible_v": 37, "takes_qubit": [37, 65], "mygenericalgorithmonqarrai": 37, "mygenericalgorithmonqubit": 37, "presum": 38, "graphic": 38, "fpga": 38, "concurr": [38, 52], "inter": [38, 54], "fabric": 38, "novel": 38, "placement": 38, "copyabl": [38, 45], "flavor": 38, "tightli": 38, "modal": 38, "sfina": 39, "foundat": 40, "inst_nam": 40, "header": [40, 72, 74, 76, 78], "qubitarg": 40, "qr": [40, 54], "scalarangl": 40, "rotation_nam": 40, "measure_op": 40, "convei": 40, "offici": [40, 72, 74], "p_i": 41, "sigma_j": 41, "intent": 42, "u_cod": 42, "v_code": 42, "computef": 42, "actionf": 42, "computel": 42, "segment": [42, 79], "effort": 43, "get_platform": [43, 53, 62], "quantumregist": 44, "x_gate": 44, "ctrl_bit": 44, "rx_and_h_gat": 44, "kerneltestcontrol": 44, "kerneltestadjoint": 44, "aggreg": [44, 63], "qubit0": [44, 54], "qubit1": [44, 54], "kernel_arg": 44, "fundament": [45, 67, 74, 79], "movabl": 45, "never": 45, "n_level": 45, "adl": 45, "familiar": 45, "stride": 45, "first_5": 45, "qb": 45, "knowledg": 45, "ahead": 45, "storag": [45, 67], "fivecompiletimequbit": 45, "conceptu": 47, "sai": [47, 50], "embodi": 47, "behind": 47, "dataflow": 47, "contrast": 47, "truli": 47, "ssa": 47, "clarifi": 47, "toi": 47, "foo": 47, "boilerpl": [47, 71], "c0": 47, "c1": 47, "extract_ref": [47, 68], "bunch": 47, "decid": 47, "i1": [47, 68], "imagin": 47, "adjac": [47, 51], "Such": [47, 58], "Of": 47, "cours": 47, "correctli": [47, 72, 76, 78], "quit": [47, 58], "prone": 47, "analys": 47, "q0_1": 47, "q0_0": 47, "wire": 47, "q0_z": 47, "elimin": [47, 53], "r0": 47, "qref": 47, "unwrap": 47, "misc": 47, "q0_m": 47, "q0_l": 47, "q1_x": 47, "q0_p": 47, "q0_y": 47, "straightforwardli": 47, "cancel": [47, 74, 79], "mmeori": 47, "comprehens": [49, 51, 54], "fermioniq": 49, "anyon": 49, "stim": 49, "tensornet": [49, 52, 53, 54], "mp": [49, 52, 54], "cuquantum": [50, 54, 66, 71, 72], "superconduct": [50, 67], "transmon": 50, "omega_z": 50, "sigma_z": 50, "omega_x": 50, "omega_d": 50, "sigma_x": 50, "cp": [50, 74], "rho0": 50, "t_final": 50, "evolution_result": [50, 51], "photon": [50, 51, 63, 67], "aka": [50, 54], "ladder": 50, "harmon": 50, "oscil": 50, "displac": 50, "squeez": 50, "momentum": 50, "sigma_i": 50, "jayn": 50, "cum": 50, "omega_c": 50, "omega_a": 50, "caviti": 50, "consider": 50, "h_0": 50, "strength": 50, "drift": 50, "h0": 50, "displacement_matrix": 50, "numerictyp": 50, "en": 50, "wiki": 50, "displacement_oper": 50, "term1": 50, "term2": 50, "expm": 50, "system_dimens": 50, "system_oper": 50, "linearli": [50, 67], "time_depend": 50, "vari": 50, "parameter_valu": 50, "time_step": 50, "compute_valu": 50, "param_nam": 50, "step_idx": 50, "match": [50, 51, 72, 74, 78], "undefin": [50, 78], "rungekuttaintegr": 50, "4th": 50, "rung": 50, "kutta": 50, "scipyzvodeintegr": 50, "ordinari": 50, "cudatorchdiffeqdopri5integr": 50, "dormand": 50, "princ": 50, "shampin": 50, "torchdiffeq": 50, "cudatorchdiffeqadaptiveheunintegr": 50, "cudatorchdiffeqbosh3integr": 50, "bogacki": 50, "cudatorchdiffeqdopri8integr": 50, "cudatorchdiffeqeulerintegr": 50, "cudatorchdiffeqexplicitadamsintegr": 50, "bashforth": 50, "cudatorchdiffeqimplicitadamsintegr": 50, "moulton": 50, "cudatorchdiffeqmidpointintegr": 50, "midpoint": 50, "cudatorchdiffeqrk4integr": 50, "secur": [51, 53, 74], "demand": [51, 53], "simplest": 51, "cli": [51, 74], "aws_default_region": 51, "aws_access_key_id": 51, "key_id": 51, "aws_secret_access_kei": 51, "access_kei": 51, "aws_session_token": 51, "sv1": [51, 63], "arn": [51, 63], "eu": [51, 63], "north": [51, 63], "garnet": [51, 63], "device_arn": 51, "ionq_api_kei": 51, "ionq_generated_api_kei": 51, "authent": [51, 53, 54, 74], "aria": [51, 63], "login": [51, 74], "emit": [51, 68], "diagnost": 51, "usernam": 51, "password": [51, 74], "refresh": 51, "echo": [51, 52, 72, 74, 78], "home": [51, 52, 74], "anyon_config": 51, "apt": [51, 74], "curl": [51, 72], "jq": 51, "5000": 51, "id_token": 51, "cat": [51, 74], "refresh_token": 51, "cudaq_anyon_credenti": 51, "telegraph": 51, "8q": 51, "berkelei": 51, "25q": 51, "inject": [51, 63, 68, 74], "cortex": 51, "cach": 51, "iqm_tokens_fil": 51, "mandatori": 51, "coco": [51, 63], "adoni": [51, 63], "iqm_server_url": 51, "demo": 51, "fi": [51, 72, 74], "apollo": 51, "oxford": 51, "ring": 51, "topologi": 51, "luci": 51, "kagom": 51, "lattic": 51, "toshiko": 51, "registr": [51, 70, 71], "contact": [51, 54, 63], "oqc_qcaas_support": [51, 63], "oxfordquantumcircuit": [51, 63], "email": [51, 52], "oqc_url": [51, 63], "oqc_email": [51, 63], "oqc_password": [51, 63], "qcaa": 51, "assembli": 51, "qat": 51, "pt": [51, 63, 74], "interf": [51, 63], "detector": [51, 63], "delai": [51, 63], "orca_access_url": [51, 63], "orca_auth_token": 51, "abcdef123456": 51, "orca_url": [51, 63], "getenv": [51, 63], "localhost": [51, 53, 63, 74], "your_alia": 51, "your_password": 51, "qapi": 51, "quantinuum_config": 51, "cudaq_quantinuum_credenti": 51, "checker": [51, 63], "mere": [51, 72], "2e": [51, 63], "1sc": 51, "navig": [51, 74], "tab": [51, 74], "tabl": [51, 52, 53, 71, 74], "east": 51, "neutral": 51, "whitepap": 51, "world": [52, 57, 64], "visit": [52, 58], "link": [52, 68, 72, 74, 75, 76, 78], "approv": 52, "nvqc_api_kei": 52, "session": [52, 53, 74], "bashrc": [52, 74], "438": 52, "3600": 52, "h100": 52, "80gb": 52, "hbm3": 52, "driver": [52, 72, 74], "gb": [52, 54, 66], "clock": 52, "mhz": 52, "2619": 52, "1980": 52, "1111111111111111111111111": [52, 66], "486": 52, "0000000000000000000000000": [52, 66], "514": 52, "nvqc_intro": 52, "545": 52, "487": 52, "513": 52, "nvqc_sampl": 52, "grow": [52, 71], "ngpu": 52, "unabl": [52, 74], "deploy": 52, "ye": [52, 74], "cutensornet": [52, 54], "contract": [52, 54], "wherebi": [52, 53, 54], "worker": 52, "nqpu": 52, "opt_gradi": 52, "submiss": [52, 59, 63], "energy_futur": 52, "plus_futur": 52, "minus_futur": 52, "optimal_valu": 52, "grad": 52, "paramshift": 52, "74886": 52, "nvqc_vqe": 52, "incom": [52, 65], "attain": 52, "On": [52, 53, 54, 64, 74, 79], "busi": 52, "substanti": 52, "nvqc_log_level": 52, "disabl": [52, 54, 72], "credenti": [52, 54, 63], "lieu": 52, "api_kei": 52, "nvqc_config": 52, "elucid": 53, "unlik": [53, 58], "opportun": 53, "count_futur": 53, "kerneltobesampl": 53, "runtimeparam": 53, "singleton": [53, 62], "zu": [53, 62], "countfutur": 53, "emplace_back": 53, "gpuemulatedqpu": 53, "37": 53, "cudaq_mqpu_ngpu": 53, "bellow": 53, "state_futur": 53, "kerneltorun": 53, "async_state_result": 53, "statefutur": 53, "suffici": [53, 72, 74, 79], "mpiexec": [53, 54, 72], "script": [53, 58, 72, 74], "srun": 53, "controls_count": 53, "auto_launch": 53, "isdigit": 53, "nrcontrol": 53, "tidx": 53, "daemon": 53, "qpud": 53, "shut": 53, "cudaq_loc": 53, "grep": [53, 72], "qpud_pi": 53, "cuda_visible_devic": [53, 54], "tcp": [53, 74], "ip": 53, "ld_library_path": [53, 72, 79], "launcher": 53, "app": 53, "firewal": 53, "port1": 53, "port2": 53, "port3": 53, "port4": 53, "per": [53, 54, 66], "resolv": 53, "contigu": 53, "byte": [53, 66, 78], "memcpi": 53, "ixiz": 53, "charact": 53, "incur": 53, "overhead": 53, "1111": 53, "defer": 53, "rtti": 53, "standalon": [53, 71], "accommod": 54, "switch": [54, 66], "cudaq_fusion_max_qubit": 54, "cudaq_fusion_diagonal_gate_max_qubit": 54, "cudaq_fusion_num_host_thread": 54, "cudaq_max_cpu_memory_gb": 54, "migrat": [54, 72], "unlimit": 54, "0gb": 54, "cudaq_max_gpu_memory_gb": 54, "exce": 54, "cudaq_mgpu_lib_mpi": 54, "libmpi": [54, 74], "cudaq_mgpu_comm_plugin_typ": 54, "openmpi": [54, 72, 74, 79], "mpich": [54, 72], "commplugin": 54, "cudaq_mgpu_nqubits_thresh": 54, "cudaq_mgpu_p2p_device_bit": 54, "gpudirect": 54, "p2p": 54, "cudaq_gpu_fabr": 54, "mnnvl": 54, "nvl": 54, "nvlink": 54, "cudaq_global_index_bit": 54, "comma": 54, "slower": 54, "cudaq_host_device_migration_level": 54, "insert": [54, 70], "interconnect": 54, "infiniband": 54, "fuse": 54, "4x4": 54, "bandwidth": 54, "significantli": 54, "suitabl": [54, 72, 74, 78], "despit": [54, 63], "poor": 54, "visibl": [54, 74], "cutensornet_comm_lib": 54, "newli": [54, 74], "libcutensornet_distributed_interface_mpi": 54, "dedic": 54, "dgx": 54, "omp_plac": 54, "omp_num_thread": 54, "number_of_cores_per_nod": 54, "number_of_gpus_per_nod": 54, "wave": 54, "sparsiti": 54, "svd": 54, "singular": [54, 72], "truncat": 54, "tractabl": 54, "footprint": 54, "cudaq_mps_max_bond": 54, "cudaq_mps_abs_cutoff": 54, "largest": 54, "trim": 54, "cudaq_mps_relative_cutoff": 54, "cudaq_mps_svd_algo": 54, "gesvd": 54, "gesvdj": 54, "jacobi": 54, "gesvdp": 54, "gesvdr": 54, "medium": 54, "ava": 54, "onlin": [54, 72, 74], "fermioniq_access_token_id": 54, "fermioniq_access_token_secret": 54, "remote_config_id": 54, "organ": 54, "project_id": 54, "overridden": [54, 71], "cudaq_default_simul": 54, "debug": [55, 68, 72, 74], "amongst": 56, "closer": [57, 64, 68], "roughli": [58, 66, 67], "505": 58, "495": 58, "result_0": 58, "5005": 58, "4995": 58, "most_probable_result": 58, "kernel2": 58, "num_gpu": [58, 66], "confirm": [58, 63, 72, 74, 79], "025": 58, "million": 58, "35x": 58, "code_to_tim": 58, "1000000": 58, "57462": 58, "stmt": 58, "773286": 58, "atoi": [58, 79], "chrono": [58, 63], "high_resolution_clock": 58, "durat": 58, "took": 58, "8337": 58, "18988": 58, "cudaq_log_level": 59, "prepend": 59, "cudaq_dump_jit_ir": 59, "output_filenam": 59, "agnost": 60, "707": 60, "707j": 60, "kernel_initi": 60, "state_to_pass": 60, "default_op": 60, "Or": 60, "x_kernel": [60, 65], "control_vector": [60, 65], "bottom": 60, "blow": 60, "kernel_a": 60, "kernel_b": 60, "024": 60, "543": 60, "d2": 62, "observe_mqpu": 62, "async_count": 63, "fstream": 63, "meantim": [63, 74], "proceed": [63, 72], "redefin": 63, "flight": 63, "txt": [63, 70, 71, 74, 75], "same_fil": 63, "retrieved_async_result": 63, "mimic": 63, "dashboard": 63, "ofstream": 63, "savem": 63, "readin": 63, "ifstream": 63, "qb1": 63, "qb2": 63, "qb3": 63, "qb4": 63, "qb5": 63, "adonis_ghz": 63, "transpar": 63, "worri": 63, "schemat": 63, "optic": 63, "reconfigur": 63, "indistinguish": 63, "interfer": [63, 72, 74], "exit": [63, 66, 74], "half": 63, "n_beam_splitt": 63, "sleep": 63, "this_thread": 63, "sleep_for": 63, "sleep_until": 63, "chrono_liter": 63, "helper": 63, "sum_loop_length": 63, "static_cast": [63, 76], "n_loop": 63, "n_mode": 63, "endl": [63, 78], "200m": 63, "endpoint": 63, "syntax_check": 63, "materi": [63, 67], "hello": [63, 64, 74], "arrang": 63, "7e": 63, "time_max": 63, "time_ramp": 63, "omega_max": 63, "6300000": 63, "rad": 63, "sec": 63, "delta_start": 63, "delta_end": 63, "piec": [63, 72], "wise": 63, "waveform": 63, "rabi": 63, "12121222": 63, "21202221": 63, "21212121": 63, "21212122": 63, "21221212": 63, "21221221": 63, "22121221": 63, "22221221": 63, "post_sequ": 63, "01010111": 63, "10101010": 63, "10101011": 63, "10101110": 63, "10110101": 63, "10110110": 63, "11010110": 63, "11110110": 63, "pre_sequ": 63, "11101111": 63, "11111111": 63, "rydberg": 63, "gotten": 64, "static_kernel": 64, "multi_controlled_oper": 65, "ccnot": 65, "applyx": 65, "ccnot_test": 65, "apply_x": 65, "counts2": 65, "seamless": [66, 74], "multithread": 66, "ghz_state": 66, "sample_ghz_st": 66, "cpu_result": 66, "525": [66, 74], "2500x": 66, "gpu_result": 66, "490": 66, "8700": 66, "freeli": [66, 72, 74], "term_count": 66, "qubits_list": 66, "990": 66, "dev": [66, 72, 74], "xi": 66, "2500": 66, "4x": 66, "transmiss": 67, "counterpart": 67, "transistor": 67, "alter": 67, "ion": 67, "ourselv": 67, "law": 67, "physicist": 67, "theori": 67, "logarithm": 67, "dirac": 67, "correspondingli": [67, 78], "art": [67, 78], "manipul": 67, "offload": 67, "lvert": 67, "rvert": 67, "502": 67, "498": 67, "modulu": 67, "conserv": 67, "uphold": 67, "probabilist": 67, "devis": 67, "postul": 67, "alpha_": 67, "llvm": [68, 70, 71, 72, 76], "qke": [68, 70], "pipelin": 68, "canonic": 68, "lift": 68, "indirect": 68, "loader": 68, "cse": 68, "lpsxpu": 68, "p3de4l": 68, "fixup": 68, "linkag": 68, "pl": [68, 72], "llc": [68, 72], "reloc": 68, "pic": 68, "filetyp": 68, "obj": 68, "o2": 68, "clang": [68, 72, 78], "gcc": [68, 72, 74, 78], "x86_64": [68, 72, 74, 79], "lib64": [68, 74, 76], "stub": 68, "wl": [68, 72, 78], "rpath": [68, 78], "llib": 68, "lcudaq": 68, "builder": 68, "ensmallen": 68, "em": 68, "lnvqir": 68, "orchestr": 68, "qtx": 68, "mangled_name_map": 68, "__nvqpp__mlirgen__ghz": 68, "_zn3ghzclei": 68, "i32": 68, "entrypoint": 68, "alloca": 68, "memref": 68, "extsi": 68, "c0_i32": 68, "c0_i32_0": 68, "alloca_1": 68, "c1_i32": 68, "subi": 68, "cmpi": 68, "slt": 68, "addi": 68, "unoptim": 68, "mangl": 68, "introspect": 68, "overwrit": 68, "libcudaq": 68, "libnvqir": [68, 71], "robust": 68, "depart": 68, "recal": 68, "datalayout": 68, "p270": 68, "p271": 68, "p272": 68, "f80": 68, "n8": 68, "s128": 68, "invokewithcontrolqubit": 68, "__quantum__qis__x__ctl": 68, "__quantum__rt__array_get_size_1d": 68, "__quantum__qis__h": 68, "i8": 68, "__quantum__rt__array_get_element_ptr_1d": 68, "sext": 68, "bitcast": 68, "icmp": 68, "sgt": 68, "br": 68, "ph": 68, "prehead": 68, "_crit_edg": 68, "trip": 68, "zext": 68, "indvar": 68, "iv": 68, "nuw": 68, "nsw": 68, "nonnul": 68, "exitcond": 68, "ph3": 68, "_crit_edge4": 68, "exitcond5": 68, "mycustomplugin": 70, "cmakelist": [70, 71, 75], "add_llvm_pass_plugin": 70, "operationpass": 70, "quakedialect": 70, "quakeop": 70, "frozenrewritepatternset": 70, "dialectconvers": 70, "replaceh": 70, "oprewritepattern": 70, "hop": 70, "logicalresult": 70, "matchandrewrit": 70, "patternrewrit": 70, "replaceopwithnewop": 70, "sop": 70, "isadj": 70, "getparamet": 70, "getcontrol": 70, "gettarget": 70, "custompassplugin": 70, "passwrapp": 70, "mlir_define_explicit_internal_inline_type_id": 70, "stringref": 70, "runonoper": 70, "getoper": 70, "getcontext": 70, "rewritepatternset": 70, "conversiontarget": 70, "addlegaldialect": 70, "addillegalop": 70, "applypartialconvers": 70, "emitoperror": 70, "signalpassfailur": 70, "cudaq_register_mlir_pass": 70, "add_subdirectori": 70, "circuitsimulatorbas": 71, "lot": 71, "qppcircuitsimul": 71, "custateveccircuitsimul": 71, "openmp": [71, 72, 79], "addqubittost": 71, "addqubitstost": 71, "resetqubit": 71, "qubitidx": 71, "resetqubitstateimpl": 71, "applyg": 71, "gateapplicationtask": 71, "measurequbit": 71, "floattyp": 71, "mysimul": 71, "nvqir_register_simul": 71, "mysimulatorclassnam": 71, "dylib": 71, "nvqir_simulation_backend": 71, "cuda_quantum_path": [71, 72, 74, 75], "find_packag": [71, 75], "nvqir_add_backend": 71, "folder": [71, 72, 74, 75], "cmake_minimum_requir": [71, 75], "fatal_error": [71, 75], "democreatenvqirbackend": 71, "cxx": [71, 72, 75, 79], "measuredbit": 71, "cuda_quantum": [71, 72], "cd": [71, 72, 74, 75], "ninja": [71, 75], "dnvqir_dir": 71, "softwar": [72, 74], "rootless": 72, "admin": [72, 74], "meet": 72, "carefulli": 72, "requisit": 72, "almalinux": 72, "manylinux_2_28": 72, "cento": [72, 74], "debian": [72, 74], "fedora": [72, 74], "opensus": [72, 74], "sled": [72, 74], "sle": [72, 74], "rhel": [72, 74], "rocki": [72, 74], "ubuntu": [72, 74], "newer": [72, 74, 79], "x86": [72, 74], "arm64": [72, 74, 79], "v8": [72, 74], "volta": [72, 74], "ture": [72, 74], "amper": [72, 74], "ada": [72, 74], "hopper": [72, 74], "470": [72, 74], "git": 72, "unzip": 72, "web": [72, 74], "cudaq_install_prefix": 72, "cuquantum_install_prefix": 72, "cutensor_install_prefix": 72, "cutensor": 72, "llvm_install_prefix": 72, "blas_install_prefix": 72, "bla": 72, "zlib_install_prefix": 72, "zlib": 72, "openssl_install_prefix": 72, "openssl": 72, "curl_install_prefix": 72, "aws_install_prefix": 72, "deviat": 72, "toolkit": [72, 74, 76, 79], "cuda_vers": [72, 74, 79], "cuda_download_url": [72, 74], "repo": [72, 74], "subfold": [72, 74], "rhel8": [72, 74], "cuda_arch_fold": [72, 74], "dnf": [72, 74], "nobest": [72, 74], "setopt": [72, 74], "install_weak_dep": [72, 74], "tr": [72, 74], "gcc_version": 72, "toolset": [72, 78], "assembl": 72, "enable_script": 72, "gcc_toolchain": 72, "rh": 72, "cudacxx": 72, "nvcc": [72, 74, 76], "cudahostcxx": 72, "commit": 72, "checkout": 72, "archiv": [72, 74, 78], "subsect": 72, "devel": [72, 74], "suffix": [72, 79], "conda": [72, 79], "auditwheel": 72, "patchelf": 72, "pyproject": 72, "toml": 72, "llvm_project": 72, "flang": 72, "lld": 72, "install_prerequisit": [72, 74], "sh": [72, 74, 79], "fc": 72, "histori": 72, "setuptools_scm_pretend_vers": 72, "cudaq_wheel": 72, "manylinux_platform": 72, "linux_": 72, "sed": [72, 74], "manylinux_2_28_": 72, "pwd": [72, 78], "_skbuild": 72, "repair": 72, "plat": 72, "libcubla": [72, 74], "libcublaslt": 72, "libcusolv": [72, 74], "libcutensor": 72, "libcutensornet": 72, "libcustatevec": 72, "libcudart": 72, "libnvtoolsext": 72, "libnvidia": 72, "ml": 72, "libcuda": 72, "wheelhous": 72, "cudaq_enable_static_link": 72, "cudaq_require_openmp": 72, "cudaq_werror": 72, "cudaq_python_support": 72, "build_cudaq": 72, "primarili": 72, "linker": [72, 78], "makeself": 72, "cuda_quantum_asset": 72, "mv": 72, "ld": 72, "build_config": 72, "xml": 72, "gzip": [72, 74], "sha256": 72, "install_cuda_quantum": [72, 74, 79], "unam": [72, 74, 79], "migrate_asset": 72, "libc6": [72, 74], "sudo": [72, 74, 79], "set_env": [72, 74], "asset": [72, 74, 79], "highli": [72, 74], "profil": [72, 74, 79], "version_suffix": [72, 74], "cudart": [72, 74], "nvrtc": [72, 74], "f1": [72, 74], "libnvjitlink": [72, 74], "awar": 72, "autoconf": 72, "libtool": 72, "flex": 72, "openmpi_vers": 72, "openmpi_download_url": 72, "ompi": 72, "tar": [72, 74], "gz": [72, 74], "tmp": 72, "xf": 72, "rf": [72, 74], "autogen": 72, "ldflag": 72, "prefix": [72, 74], "getpwuid": 72, "mem": 72, "memcheck": 72, "verb": 72, "nproc": 72, "mpic": 72, "mpi_cuda_check": 72, "__has_includ": 72, "ext": 72, "endif": 72, "mpi_init": 72, "exit_cod": 72, "mpix_query_cuda_support": 72, "mpi_fin": 72, "mca": 72, "plm_rsh_agent": 72, "ssh": 72, "rsh": 72, "slurm": 72, "mpi_path": [72, 74, 79], "distributed_interfac": [72, 74, 79], "activate_custom_mpi": [72, 74, 79], "bundl": 74, "deploi": 74, "unsur": 74, "engin": 74, "desktop": 74, "administr": 74, "ngc": 74, "whenev": 74, "pull": 74, "nvcr": 74, "cu12": [74, 79], "prototyp": 74, "tri": 74, "readm": 74, "appreci": 74, "insuffici": 74, "hover": 74, "id_rsa": 74, "pub": 74, "itd": 74, "2222": 74, "exec": 74, "openssh": 74, "usepam": 74, "sshd_config": 74, "authorized_kei": 74, "sbin": 74, "sshd": 74, "stricthostkeycheck": 74, "userknownhostsfil": 74, "globalknownhostsfil": 74, "relocat": 74, "wsl": 74, "prerequisit": 74, "sylab": 74, "ce": 74, "xzf": 74, "mconfig": 74, "suid": 74, "builddir": 74, "bootstrap": 74, "runscript": 74, "mount": 74, "devpt": 74, "fakeroot": 74, "sif": 74, "writabl": 74, "nv": 74, "conf": 74, "ldd": [74, 78], "privileg": 74, "revis": 74, "upvot": 74, "posix": 74, "browser": 74, "palett": 74, "attach": 74, "window": 74, "reload": 74, "microsoft": 74, "sandbox": 74, "portmap": 74, "sshd_output": 74, "listen": 74, "1025": 74, "65535": 74, "ui": 74, "aren": 74, "icon": 74, "sidebar": 74, "workspac": 74, "remotecommand": 74, "requesttti": 74, "hostnam": 74, "enableremotecommand": 74, "uselocalserv": 74, "remoteserverlistenonsocket": 74, "connecttimeout": 74, "serverinstallpath": 74, "sign": 74, "upgrad": 74, "ac": 74, "ace_nam": 74, "instance_nam": 74, "commandlin": 74, "job_id": 74, "8888": 74, "portal": 74, "404": 74, "patient": 74, "happi": 74, "cuda12x": 74, "ship": 74, "vendor": 74, "prebuilt": 74, "guarante": 74, "libcudaq_distributed_interface_mpi": 74, "cudaq_mpi_comm_lib": 74, "cu11": [74, 79], "uninstal": [74, 79], "supersed": 74, "dsize": 74, "fairli": 74, "succe": 74, "hang": [74, 79], "imper": 75, "mycudaqapp": 75, "add_execut": 75, "ghz_ex": 75, "dcudaq_dir": 75, "cu": 76, "my_proj": 76, "conform": 76, "my_proj_quantum": 76, "libc": 76, "cudadatatyp": [76, 78], "cudasetfirstnel": 76, "__restrict__": 76, "sv2": 76, "int64_t": 76, "blockidx": 76, "blockdim": 76, "threadidx": 76, "setfirstnel": 76, "uint32_t": [76, 78], "n_block": [76, 78], "int32_t": [76, 78], "threads_per_block": [76, 78], "newdevicestatevector": 76, "devicestatevector": [76, 78], "previousstatedimens": 76, "reinterpret_cast": [76, 78], "cufloatcomplex": [76, 78], "cudoublecomplex": [76, 78], "cucomplex": 76, "cuda_runtim": 76, "device_launch_paramet": 76, "my_kernel": 76, "cudamalloc": 76, "xcompil": 76, "fpic": [76, 78], "cuda_hom": 76, "lcudart": 76, "my_execut": 76, "hood": 78, "quantum_kernel": 78, "sstream": 78, "bell_distribut": 78, "stringbuf": 78, "ptr": 78, "strcpy": 78, "libstdc": 78, "libquantum_kernel": 78, "bell_dist": 78, "lquantum_kernel": 78, "abi": 78, "incompat": 78, "watch": 78, "surround": 78, "wherea": 78, "third_party_librari": 78, "libexternal_librari": 78, "my_cod": 78, "bstatic": 78, "lexternal_librari": 78, "bdynam": 78, "crut": 78, "libexternal_library_complet": 78, "naddlib": 78, "nsave": 78, "nend": 78, "lexternal_library_complet": 78, "shim": 78, "pragma": 78, "is_integr": 78, "initializedevicestatevector": 78, "statedimens": 78, "cudainitializedevicestatevector": 78, "cumbersom": 78, "necessarili": 78, "recogn": 78, "env": 79, "forg": 79, "conda_prefix": 79, "ompi_mca_opal_cuda_support": 79, "ompi_mca_btl": 79, "openib": 79, "fault": 79, "bash_profil": 79, "bash_login": 79, "_cu11": 79, "_cu12": 79, "amd": 79}, "objects": {"": [[2, 0, 1, "_CPPv45cudaq", "cudaq"], [2, 1, 1, "_CPPv4N5cudaq20BaseNvcfSimulatorQPUE", "cudaq::BaseNvcfSimulatorQPU"], [2, 1, 1, "_CPPv4N5cudaq17BaseRemoteRESTQPUE", "cudaq::BaseRemoteRESTQPU"], [2, 1, 1, "_CPPv4N5cudaq22BaseRemoteSimulatorQPUE", "cudaq::BaseRemoteSimulatorQPU"], [2, 1, 1, "_CPPv4I0EN5cudaq9CusvStateE", "cudaq::CusvState"], [2, 2, 1, "_CPPv4I0EN5cudaq9CusvStateE", "cudaq::CusvState::ScalarType"], [2, 1, 1, "_CPPv4N5cudaq16ExecutionContextE", "cudaq::ExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE", "cudaq::ExecutionContext::ExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE", "cudaq::ExecutionContext::ExecutionContext::n"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext::n"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext::shots_"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13amplitudeMapsE", "cudaq::ExecutionContext::amplitudeMaps"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext9asyncExecE", "cudaq::ExecutionContext::asyncExec"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext11asyncResultE", "cudaq::ExecutionContext::asyncResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext14batchIterationE", "cudaq::ExecutionContext::batchIteration"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext16canHandleObserveE", "cudaq::ExecutionContext::canHandleObserve"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext16expectationValueE", "cudaq::ExecutionContext::expectationValue"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext12futureResultE", "cudaq::ExecutionContext::futureResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext31hasConditionalsOnMeasureResultsE", "cudaq::ExecutionContext::hasConditionalsOnMeasureResults"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext22invocationResultBufferE", "cudaq::ExecutionContext::invocationResultBuffer"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10kernelNameE", "cudaq::ExecutionContext::kernelName"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext11kernelTraceE", "cudaq::ExecutionContext::kernelTrace"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext4nameE", "cudaq::ExecutionContext::name"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10noiseModelE", "cudaq::ExecutionContext::noiseModel"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext9optResultE", "cudaq::ExecutionContext::optResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext20overlapComputeStatesE", "cudaq::ExecutionContext::overlapComputeStates"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13overlapResultE", "cudaq::ExecutionContext::overlapResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13registerNamesE", "cudaq::ExecutionContext::registerNames"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10reorderIdxE", "cudaq::ExecutionContext::reorderIdx"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext6resultE", "cudaq::ExecutionContext::result"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext5shotsE", "cudaq::ExecutionContext::shots"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext15simulationStateE", "cudaq::ExecutionContext::simulationState"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext4spinE", "cudaq::ExecutionContext::spin"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext15totalIterationsE", "cudaq::ExecutionContext::totalIterations"], [2, 1, 1, "_CPPv4N5cudaq15ExecutionResultE", "cudaq::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEv", "cudaq::ExecutionResult::ExecutionResult"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult::e"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd", "cudaq::ExecutionResult::ExecutionResult::expVal"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult::name"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE", "cudaq::ExecutionResult::ExecutionResult::name"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult", "cudaq::ExecutionResult::ExecutionResult::other"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult::bitString"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult::count"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::ExecutionResult::deserialize"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::ExecutionResult::deserialize::data"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult", "cudaq::ExecutionResult::operator="], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult", "cudaq::ExecutionResult::operator=::other"], [2, 3, 1, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult", "cudaq::ExecutionResult::operator=="], [2, 4, 1, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult", "cudaq::ExecutionResult::operator==::result"], [2, 5, 1, "_CPPv4N5cudaq15ExecutionResult12registerNameE", "cudaq::ExecutionResult::registerName"], [2, 5, 1, "_CPPv4N5cudaq15ExecutionResult14sequentialDataE", "cudaq::ExecutionResult::sequentialData"], [2, 3, 1, "_CPPv4NK5cudaq15ExecutionResult9serializeEv", "cudaq::ExecutionResult::serialize"], [2, 1, 1, "_CPPv4N5cudaq16FermioniqBaseQPUE", "cudaq::FermioniqBaseQPU"], [2, 0, 1, "_CPPv4N5cudaq19KernelExecutionTaskE", "cudaq::KernelExecutionTask"], [2, 1, 1, "_CPPv4N5cudaq21KernelThunkResultTypeE", "cudaq::KernelThunkResultType"], [2, 0, 1, "_CPPv4N5cudaq15KernelThunkTypeE", "cudaq::KernelThunkType"], [2, 1, 1, "_CPPv4N5cudaq17OrcaRemoteRESTQPUE", "cudaq::OrcaRemoteRESTQPU"], [2, 1, 1, "_CPPv4N5cudaq3QPUE", "cudaq::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE", "cudaq::QPU::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUERR3QPU", "cudaq::QPU::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUEv", "cudaq::QPU::QPU"], [2, 4, 1, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE", "cudaq::QPU::QPU::_qpuId"], [2, 3, 1, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask", "cudaq::QPU::enqueue"], [2, 4, 1, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask", "cudaq::QPU::enqueue::task"], [2, 3, 1, "_CPPv4N5cudaq3QPU15getConnectivityEv", "cudaq::QPU::getConnectivity"], [2, 3, 1, "_CPPv4NK5cudaq3QPU20getExecutionThreadIdEv", "cudaq::QPU::getExecutionThreadId"], [2, 3, 1, "_CPPv4N5cudaq3QPU12getNumQubitsEv", "cudaq::QPU::getNumQubits"], [2, 3, 1, "_CPPv4NK5cudaq3QPU21getRemoteCapabilitiesEv", "cudaq::QPU::getRemoteCapabilities"], [2, 3, 1, "_CPPv4N5cudaq3QPU10isEmulatedEv", "cudaq::QPU::isEmulated"], [2, 3, 1, "_CPPv4N5cudaq3QPU11isSimulatorEv", "cudaq::QPU::isSimulator"], [2, 3, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel"], [2, 3, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::args"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::kernelFunc"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::rawArgs"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::rawArgs"], [2, 3, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution"], [2, 4, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution::serializeCodeExecutionObject"], [2, 3, 1, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE", "cudaq::QPU::onRandomSeedSet"], [2, 4, 1, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE", "cudaq::QPU::onRandomSeedSet::seed"], [2, 3, 1, "_CPPv4N5cudaq3QPU21resetExecutionContextEv", "cudaq::QPU::resetExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext", "cudaq::QPU::setExecutionContext"], [2, 4, 1, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext", "cudaq::QPU::setExecutionContext::context"], [2, 3, 1, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE", "cudaq::QPU::setId"], [2, 4, 1, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE", "cudaq::QPU::setId::_qpuId"], [2, 3, 1, "_CPPv4N5cudaq3QPU8setShotsEi", "cudaq::QPU::setShots"], [2, 4, 1, "_CPPv4N5cudaq3QPU8setShotsEi", "cudaq::QPU::setShots::_nShots"], [2, 3, 1, "_CPPv4N5cudaq3QPU27supportsConditionalFeedbackEv", "cudaq::QPU::supportsConditionalFeedback"], [2, 3, 1, "_CPPv4N5cudaq3QPUD0Ev", "cudaq::QPU::~QPU"], [2, 1, 1, "_CPPv4N5cudaq12QuEraBaseQPUE", "cudaq::QuEraBaseQPU"], [2, 1, 1, "_CPPv4N5cudaq10QuakeValueE", "cudaq::QuakeValue"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue::builder"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue::builder"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue::v"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue::v"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue22canValidateNumElementsEv", "cudaq::QuakeValue::canValidateNumElements"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue12constantSizeEv", "cudaq::QuakeValue::constantSize"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4dumpERNSt7ostreamE", "cudaq::QuakeValue::dump"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4dumpEv", "cudaq::QuakeValue::dump"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue19getRequiredElementsEv", "cudaq::QuakeValue::getRequiredElements"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValue8getValueEv", "cudaq::QuakeValue::getValue"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValue7inverseEv", "cudaq::QuakeValue::inverse"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue8isStdVecEv", "cudaq::QuakeValue::isStdVec"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue", "cudaq::QuakeValue::operator*"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemlEKd", "cudaq::QuakeValue::operator*"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue", "cudaq::QuakeValue::operator*::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue", "cudaq::QuakeValue::operator+"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplEKd", "cudaq::QuakeValue::operator+"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplEKi", "cudaq::QuakeValue::operator+"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue", "cudaq::QuakeValue::operator+::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiEKd", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiEKi", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValuemiEv", "cudaq::QuakeValue::operator-"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue", "cudaq::QuakeValue::operator-::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue", "cudaq::QuakeValue::operator/"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuedvEKd", "cudaq::QuakeValue::operator/"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue", "cudaq::QuakeValue::operator/::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE", "cudaq::QuakeValue::operator[]"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue", "cudaq::QuakeValue::operator[]"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE", "cudaq::QuakeValue::operator[]::idx"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue", "cudaq::QuakeValue::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4sizeEv", "cudaq::QuakeValue::size"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice::count"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice::startIdx"], [2, 0, 1, "_CPPv4N5cudaq11QuantumTaskE", "cudaq::QuantumTask"], [2, 0, 1, "_CPPv4N5cudaq17QubitConnectivityE", "cudaq::QubitConnectivity"], [2, 0, 1, "_CPPv4N5cudaq9QubitEdgeE", "cudaq::QubitEdge"], [2, 1, 1, "_CPPv4N5cudaq18RemoteCapabilitiesE", "cudaq::RemoteCapabilities"], [2, 3, 1, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb", "cudaq::RemoteCapabilities::RemoteCapabilities"], [2, 4, 1, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb", "cudaq::RemoteCapabilities::RemoteCapabilities::initValue"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities17isRemoteSimulatorE", "cudaq::RemoteCapabilities::isRemoteSimulator"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities18serializedCodeExecE", "cudaq::RemoteCapabilities::serializedCodeExec"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities12stateOverlapE", "cudaq::RemoteCapabilities::stateOverlap"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities3vqeE", "cudaq::RemoteCapabilities::vqe"], [2, 1, 1, "_CPPv4N5cudaq21RemoteSimulationStateE", "cudaq::RemoteSimulationState"], [2, 1, 1, "_CPPv4N5cudaq9ResourcesE", "cudaq::Resources"], [2, 1, 1, "_CPPv4N5cudaq30SerializedCodeExecutionContextE", "cudaq::SerializedCodeExecutionContext"], [2, 1, 1, "_CPPv4N5cudaq15SimulationStateE", "cudaq::SimulationState"], [2, 1, 1, "_CPPv4N5cudaq15SimulationState6TensorE", "cudaq::SimulationState::Tensor"], [2, 6, 1, "_CPPv4N5cudaq15SimulationState9precisionE", "cudaq::SimulationState::precision"], [2, 7, 1, "_CPPv4N5cudaq15SimulationState9precision4fp32E", "cudaq::SimulationState::precision::fp32"], [2, 7, 1, "_CPPv4N5cudaq15SimulationState9precision4fp64E", "cudaq::SimulationState::precision::fp64"], [2, 0, 1, "_CPPv4N5cudaq15TensorStateDataE", "cudaq::TensorStateData"], [2, 1, 1, "_CPPv4N5cudaq5TraceE", "cudaq::Trace"], [2, 1, 1, "_CPPv4N5cudaq25amplitude_damping_channelE", "cudaq::amplitude_damping_channel"], [2, 1, 1, "_CPPv4I0EN5cudaq12async_resultE", "cudaq::async_result"], [2, 2, 1, "_CPPv4I0EN5cudaq12async_resultE", "cudaq::async_result::T"], [2, 3, 1, "_CPPv4N5cudaq12async_result3getEv", "cudaq::async_result::get"], [2, 0, 1, "_CPPv4N5cudaq19async_sample_resultE", "cudaq::async_sample_result"], [2, 1, 1, "_CPPv4N5cudaq16bit_flip_channelE", "cudaq::bit_flip_channel"], [2, 0, 1, "_CPPv4N5cudaq7complexE", "cudaq::complex"], [2, 1, 1, "_CPPv4N5cudaq14complex_matrixE", "cudaq::complex_matrix"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4colsEv", "cudaq::complex_matrix::cols"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::cols"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::cols"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rawData"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rows"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rows"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4dataEv", "cudaq::complex_matrix::data"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE", "cudaq::complex_matrix::dump"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix4dumpEv", "cudaq::complex_matrix::dump"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE", "cudaq::complex_matrix::dump::os"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix11eigenvaluesEv", "cudaq::complex_matrix::eigenvalues"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix12eigenvectorsEv", "cudaq::complex_matrix::eigenvectors"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix18minimal_eigenvalueEv", "cudaq::complex_matrix::minimal_eigenvalue"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()::i"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()::j"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix", "cudaq::complex_matrix::operator*"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE", "cudaq::complex_matrix::operator*"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix", "cudaq::complex_matrix::operator*::other"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE", "cudaq::complex_matrix::operator*::other"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4rowsEv", "cudaq::complex_matrix::rows"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix8set_zeroEv", "cudaq::complex_matrix::set_zero"], [2, 0, 1, "_CPPv4N5cudaq14complex_matrix10value_typeE", "cudaq::complex_matrix::value_type"], [2, 1, 1, "_CPPv4N5cudaq22depolarization_channelE", "cudaq::depolarization_channel"], [2, 0, 1, "_CPPv4N5cudaq7detailsE", "cudaq::details"], [2, 1, 1, "_CPPv4N5cudaq7details17KernelBuilderTypeE", "cudaq::details::KernelBuilderType"], [2, 3, 1, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE", "cudaq::details::KernelBuilderType::KernelBuilderType"], [2, 4, 1, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE", "cudaq::details::KernelBuilderType::KernelBuilderType::f"], [2, 3, 1, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE", "cudaq::details::KernelBuilderType::create"], [2, 4, 1, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE", "cudaq::details::KernelBuilderType::create::ctx"], [2, 1, 1, "_CPPv4N5cudaq7details6futureE", "cudaq::details::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureERR6future", "cudaq::details::future::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureEv", "cudaq::details::future::future"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::_jobs"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::config"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::qpuNameIn"], [2, 1, 1, "_CPPv4N5cudaq7details19kernel_builder_baseE", "cudaq::details::kernel_builder_base"], [2, 3, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<"], [2, 4, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<::builder"], [2, 4, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<::stream"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::QuantumKernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::kernel"], [2, 5, 1, "_CPPv4N5cudaq3dynE", "cudaq::dyn"], [2, 1, 1, "_CPPv4N5cudaq8gradientE", "cudaq::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient5cloneEv", "cudaq::gradient::clone"], [2, 3, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute"], [2, 3, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::func"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::h"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::x"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient8gradientEv", "cudaq::gradient::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradient::gradient::kernel"], [2, 3, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs"], [2, 2, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::Args"], [2, 2, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::QuantumKernel"], [2, 4, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::args"], [2, 4, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::kernel"], [2, 3, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel"], [2, 2, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel::QuantumKernel"], [2, 4, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients18central_differenceE", "cudaq::gradients::central_difference"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference5cloneEv", "cudaq::gradients::central_difference::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::exp_h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientEv", "cudaq::gradients::central_difference::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::central_difference::gradient::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients18forward_differenceE", "cudaq::gradients::forward_difference"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference5cloneEv", "cudaq::gradients::forward_difference::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientEv", "cudaq::gradients::forward_difference::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients15parameter_shiftE", "cudaq::gradients::parameter_shift"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift5cloneEv", "cudaq::gradients::parameter_shift::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::exp_h"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientEv", "cudaq::gradients::parameter_shift::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 1, 1, "_CPPv4IDpEN5cudaq14kernel_builderE", "cudaq::kernel_builder"], [2, 2, 1, "_CPPv4IDpEN5cudaq14kernel_builderE", "cudaq::kernel_builder::Args"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder11constantValEd", "cudaq::kernel_builder::constantVal"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder11constantValEd", "cudaq::kernel_builder::constantVal::val"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder12getArgumentsEv", "cudaq::kernel_builder::getArguments"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder12getNumParamsEv", "cudaq::kernel_builder::getNumParams"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE", "cudaq::kernel_builder::isArgStdVec"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE", "cudaq::kernel_builder::isArgStdVec::idx"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE", "cudaq::kernel_builder::kernel_builder"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE", "cudaq::kernel_builder::kernel_builder::types"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder4nameEv", "cudaq::kernel_builder::name"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocEv", "cudaq::kernel_builder::qalloc"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE", "cudaq::kernel_builder::qalloc::nQubits"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue", "cudaq::kernel_builder::qalloc::size"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE", "cudaq::kernel_builder::qalloc::state"], [2, 3, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 3, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::control"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::controls"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 2, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::mod"], [2, 2, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::mod"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 1, 1, "_CPPv4N5cudaq13kraus_channelE", "cudaq::kraus_channel"], [2, 3, 1, "_CPPv4NK5cudaq13kraus_channel5emptyEv", "cudaq::kraus_channel::empty"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel7get_opsEv", "cudaq::kraus_channel::get_ops"], [2, 3, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelEv", "cudaq::kraus_channel::kraus_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel::T"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel::inOps"], [2, 4, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel::inputLists"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel::ops"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel", "cudaq::kraus_channel::kraus_channel::other"], [2, 5, 1, "_CPPv4N5cudaq13kraus_channel10noise_typeE", "cudaq::kraus_channel::noise_type"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel", "cudaq::kraus_channel::operator="], [2, 4, 1, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel", "cudaq::kraus_channel::operator=::other"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE", "cudaq::kraus_channel::operator[]"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE", "cudaq::kraus_channel::operator[]::idx"], [2, 5, 1, "_CPPv4N5cudaq13kraus_channel10parametersE", "cudaq::kraus_channel::parameters"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op", "cudaq::kraus_channel::push_back"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op", "cudaq::kraus_channel::push_back::op"], [2, 3, 1, "_CPPv4NK5cudaq13kraus_channel4sizeEv", "cudaq::kraus_channel::size"], [2, 1, 1, "_CPPv4N5cudaq8kraus_opE", "cudaq::kraus_op"], [2, 3, 1, "_CPPv4NK5cudaq8kraus_op7adjointEv", "cudaq::kraus_op::adjoint"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op4dataE", "cudaq::kraus_op::data"], [2, 3, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op"], [2, 3, 1, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE", "cudaq::kraus_op::kraus_op"], [2, 3, 1, "_CPPv4N5cudaq8kraus_op8kraus_opERK8kraus_op", "cudaq::kraus_op::kraus_op"], [2, 2, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op::T"], [2, 4, 1, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE", "cudaq::kraus_op::kraus_op::d"], [2, 4, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op::initList"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op5nColsE", "cudaq::kraus_op::nCols"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op5nRowsE", "cudaq::kraus_op::nRows"], [2, 3, 1, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op", "cudaq::kraus_op::operator="], [2, 4, 1, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op", "cudaq::kraus_op::operator=::other"], [2, 0, 1, "_CPPv4N5cudaq3mpiE", "cudaq::mpi"], [2, 3, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather"], [2, 3, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather::global"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather::global"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather::local"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather::local"], [2, 3, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce"], [2, 3, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::BinaryFunction"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce::Func"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::T"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce::T"], [2, 4, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::function"], [2, 4, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::localValue"], [2, 3, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast"], [2, 3, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast::data"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast::data"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast::rootRank"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast::rootRank"], [2, 3, 1, "_CPPv4N5cudaq3mpi8finalizeEv", "cudaq::mpi::finalize"], [2, 3, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize"], [2, 3, 1, "_CPPv4N5cudaq3mpi10initializeEv", "cudaq::mpi::initialize"], [2, 4, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize::argc"], [2, 4, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize::argv"], [2, 3, 1, "_CPPv4N5cudaq3mpi14is_initializedEv", "cudaq::mpi::is_initialized"], [2, 3, 1, "_CPPv4N5cudaq3mpi9num_ranksEv", "cudaq::mpi::num_ranks"], [2, 3, 1, "_CPPv4N5cudaq3mpi4rankEv", "cudaq::mpi::rank"], [2, 1, 1, "_CPPv4N5cudaq11noise_modelE", "cudaq::noise_model"], [2, 0, 1, "_CPPv4N5cudaq11noise_model15PredicateFuncTyE", "cudaq::noise_model::PredicateFuncTy"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::QuantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::channel"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::channel"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::numControls"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::numControls"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::quantumOp"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel::QuantumOp"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::QuantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::channel"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::channel"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel::pred"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel::pred"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel::quantumOp"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::quantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::qubits"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::qubits"], [2, 3, 1, "_CPPv4NK5cudaq11noise_model5emptyEv", "cudaq::noise_model::empty"], [2, 3, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels"], [2, 3, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels"], [2, 2, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::QuantumOp"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::controlQubits"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::controlQubits"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::params"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::params"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::quantumOp"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::targetQubits"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::targetQubits"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11noise_modelEv", "cudaq::noise_model::noise_model"], [2, 6, 1, "_CPPv4N5cudaq16noise_model_typeE", "cudaq::noise_model_type"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type25amplitude_damping_channelE", "cudaq::noise_model_type::amplitude_damping_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type16bit_flip_channelE", "cudaq::noise_model_type::bit_flip_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type22depolarization_channelE", "cudaq::noise_model_type::depolarization_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type18phase_flip_channelE", "cudaq::noise_model_type::phase_flip_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type7unknownE", "cudaq::noise_model_type::unknown"], [2, 3, 1, "_CPPv4N5cudaq18num_available_gpusEv", "cudaq::num_available_gpus"], [2, 1, 1, "_CPPv4N5cudaq14observe_resultE", "cudaq::observe_result"], [2, 3, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts"], [2, 2, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts::SpinOpType"], [2, 4, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts::term"], [2, 3, 1, "_CPPv4N5cudaq14observe_result4dumpEv", "cudaq::observe_result::dump"], [2, 3, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation"], [2, 3, 1, "_CPPv4N5cudaq14observe_result11expectationEv", "cudaq::observe_result::expectation"], [2, 2, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation::SpinOpType"], [2, 4, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation::term"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14id_coefficientEv", "cudaq::observe_result::id_coefficient"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result::H"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::H"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::counts"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result::e"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::e"], [2, 3, 1, "_CPPv4N5cudaq14observe_resultcvdEv", "cudaq::observe_result::operator double"], [2, 3, 1, "_CPPv4N5cudaq14observe_result8raw_dataEv", "cudaq::observe_result::raw_data"], [2, 1, 1, "_CPPv4N5cudaq20optimizable_functionE", "cudaq::optimizable_function"], [2, 0, 1, "_CPPv4N5cudaq19optimization_resultE", "cudaq::optimization_result"], [2, 1, 1, "_CPPv4N5cudaq9optimizerE", "cudaq::optimizer"], [2, 3, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize"], [2, 4, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize::dim"], [2, 4, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize::opt_function"], [2, 3, 1, "_CPPv4N5cudaq9optimizer17requiresGradientsEv", "cudaq::optimizer::requiresGradients"], [2, 0, 1, "_CPPv4N5cudaq4orcaE", "cudaq::orca"], [2, 3, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample"], [2, 3, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::ps_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async"], [2, 3, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::ps_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::qpu_id"], [2, 1, 1, "_CPPv4N5cudaq18phase_flip_channelE", "cudaq::phase_flip_channel"], [2, 1, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg::Levels"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg::N"], [2, 3, 1, "_CPPv4N5cudaq4qreg4backENSt6size_tE", "cudaq::qreg::back"], [2, 3, 1, "_CPPv4N5cudaq4qreg4backEv", "cudaq::qreg::back"], [2, 4, 1, "_CPPv4N5cudaq4qreg4backENSt6size_tE", "cudaq::qreg::back::count"], [2, 3, 1, "_CPPv4N5cudaq4qreg5beginEv", "cudaq::qreg::begin"], [2, 3, 1, "_CPPv4N5cudaq4qreg5clearEv", "cudaq::qreg::clear"], [2, 3, 1, "_CPPv4N5cudaq4qreg5frontENSt6size_tE", "cudaq::qreg::front"], [2, 3, 1, "_CPPv4N5cudaq4qreg5frontEv", "cudaq::qreg::front"], [2, 4, 1, "_CPPv4N5cudaq4qreg5frontENSt6size_tE", "cudaq::qreg::front::count"], [2, 3, 1, "_CPPv4N5cudaq4qregixEKNSt6size_tE", "cudaq::qreg::operator[]"], [2, 4, 1, "_CPPv4N5cudaq4qregixEKNSt6size_tE", "cudaq::qreg::operator[]::idx"], [2, 3, 1, "_CPPv4NK5cudaq4qreg4sizeEv", "cudaq::qreg::size"], [2, 3, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice"], [2, 4, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice::size"], [2, 4, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice::start"], [2, 0, 1, "_CPPv4N5cudaq4qreg10value_typeE", "cudaq::qreg::value_type"], [2, 1, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan::Levels"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan::N"], [2, 1, 1, "_CPPv4N5cudaq16quantum_platformE", "cudaq::quantum_platform"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform11clear_shotsEv", "cudaq::quantum_platform::clear_shots"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12connectivityEv", "cudaq::quantum_platform::connectivity"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask::f"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask::t"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12getLogStreamEv", "cudaq::quantum_platform::getLogStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15get_current_qpuEv", "cudaq::quantum_platform::get_current_qpu"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform12get_exec_ctxEv", "cudaq::quantum_platform::get_exec_ctx"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE", "cudaq::quantum_platform::get_num_qubits"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsEv", "cudaq::quantum_platform::get_num_qubits"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE", "cudaq::quantum_platform::get_num_qubits::qpu_id"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE", "cudaq::quantum_platform::get_remote_capabilities"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE", "cudaq::quantum_platform::get_remote_capabilities::qpuId"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9get_shotsEv", "cudaq::quantum_platform::get_shots"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE", "cudaq::quantum_platform::is_emulated"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE", "cudaq::quantum_platform::is_emulated::qpuId"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE", "cudaq::quantum_platform::is_remote"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE", "cudaq::quantum_platform::is_remote::qpuId"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE", "cudaq::quantum_platform::is_simulator"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE", "cudaq::quantum_platform::is_simulator::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::H"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::gradient"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::kernelArgs"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::kernelName"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::n_params"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::optimizer"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::shots"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14list_platformsEv", "cudaq::quantum_platform::list_platforms"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform4nameEv", "cudaq::quantum_platform::name"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform8num_qpusEv", "cudaq::quantum_platform::num_qpus"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE", "cudaq::quantum_platform::onRandomSeedSet"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE", "cudaq::quantum_platform::onRandomSeedSet::seed"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14resetLogStreamEv", "cudaq::quantum_platform::resetLogStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE", "cudaq::quantum_platform::reset_exec_ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE", "cudaq::quantum_platform::reset_exec_ctx::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform11reset_noiseEv", "cudaq::quantum_platform::reset_noise"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE", "cudaq::quantum_platform::setLogStream"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE", "cudaq::quantum_platform::setLogStream::logStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE", "cudaq::quantum_platform::setTargetBackend"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE", "cudaq::quantum_platform::setTargetBackend::name"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE", "cudaq::quantum_platform::set_current_qpu"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE", "cudaq::quantum_platform::set_current_qpu::device_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx::ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model", "cudaq::quantum_platform::set_noise"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model", "cudaq::quantum_platform::set_noise::model"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9set_shotsEi", "cudaq::quantum_platform::set_shots"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9set_shotsEi", "cudaq::quantum_platform::set_shots::numShots"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE", "cudaq::quantum_platform::supports_conditional_feedback"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE", "cudaq::quantum_platform::supports_conditional_feedback::qpu_id"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform26supports_task_distributionEv", "cudaq::quantum_platform::supports_task_distribution"], [2, 0, 1, "_CPPv4N5cudaq5qubitE", "cudaq::qubit"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq5quditE", "cudaq::qudit"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq5quditE", "cudaq::qudit::Levels"], [2, 3, 1, "_CPPv4N5cudaq5qudit5quditEv", "cudaq::qudit::qudit"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE", "cudaq::qvector"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE", "cudaq::qvector::Levels"], [2, 3, 1, "_CPPv4N5cudaq7qvector4backENSt6size_tE", "cudaq::qvector::back"], [2, 3, 1, "_CPPv4N5cudaq7qvector4backEv", "cudaq::qvector::back"], [2, 4, 1, "_CPPv4N5cudaq7qvector4backENSt6size_tE", "cudaq::qvector::back::count"], [2, 3, 1, "_CPPv4N5cudaq7qvector5beginEv", "cudaq::qvector::begin"], [2, 3, 1, "_CPPv4N5cudaq7qvector5clearEv", "cudaq::qvector::clear"], [2, 3, 1, "_CPPv4N5cudaq7qvector3endEv", "cudaq::qvector::end"], [2, 3, 1, "_CPPv4N5cudaq7qvector5frontENSt6size_tE", "cudaq::qvector::front"], [2, 3, 1, "_CPPv4N5cudaq7qvector5frontEv", "cudaq::qvector::front"], [2, 4, 1, "_CPPv4N5cudaq7qvector5frontENSt6size_tE", "cudaq::qvector::front::count"], [2, 3, 1, "_CPPv4N5cudaq7qvectoraSERK7qvector", "cudaq::qvector::operator="], [2, 3, 1, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE", "cudaq::qvector::operator[]"], [2, 4, 1, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE", "cudaq::qvector::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERK5state", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERK7qvector", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERR7qvector", "cudaq::qvector::qvector"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE", "cudaq::qvector::qvector::size"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERK5state", "cudaq::qvector::qvector::state"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector::validate"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector::vector"], [2, 3, 1, "_CPPv4NK5cudaq7qvector4sizeEv", "cudaq::qvector::size"], [2, 3, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice"], [2, 4, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice::size"], [2, 4, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice::start"], [2, 0, 1, "_CPPv4N5cudaq7qvector10value_typeE", "cudaq::qvector::value_type"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE", "cudaq::qview"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE", "cudaq::qview::Levels"], [2, 0, 1, "_CPPv4N5cudaq5qview10value_typeE", "cudaq::qview::value_type"], [2, 3, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range"], [2, 3, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range"], [2, 3, 1, "_CPPv4N5cudaq5rangeENSt6size_tE", "cudaq::range"], [2, 2, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range::ElementType"], [2, 2, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::ElementType"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range::N"], [2, 4, 1, "_CPPv4N5cudaq5rangeENSt6size_tE", "cudaq::range::N"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::start"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::step"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::stop"], [2, 0, 1, "_CPPv4N5cudaq4realE", "cudaq::real"], [2, 0, 1, "_CPPv4N5cudaq8registryE", "cudaq::registry"], [2, 1, 1, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE", "cudaq::registry::RegisteredType"], [2, 2, 1, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE", "cudaq::registry::RegisteredType::T"], [2, 1, 1, "_CPPv4N5cudaq13sample_resultE", "cudaq::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult", "cudaq::sample_result::append"], [2, 4, 1, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult", "cudaq::sample_result::append::result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5beginEv", "cudaq::sample_result::begin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result5beginEv", "cudaq::sample_result::begin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result6cbeginEv", "cudaq::sample_result::cbegin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4cendEv", "cudaq::sample_result::cend"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5clearEv", "cudaq::sample_result::clear"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count"], [2, 4, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count::bitString"], [2, 4, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::sample_result::deserialize"], [2, 4, 1, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::sample_result::deserialize::data"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE", "cudaq::sample_result::dump"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4dumpEv", "cudaq::sample_result::dump"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE", "cudaq::sample_result::dump::os"], [2, 3, 1, "_CPPv4N5cudaq13sample_result3endEv", "cudaq::sample_result::end"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result3endEv", "cudaq::sample_result::end"], [2, 3, 1, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE", "cudaq::sample_result::exp_val_z"], [2, 4, 1, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE", "cudaq::sample_result::exp_val_z::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE", "cudaq::sample_result::expectation"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE", "cudaq::sample_result::expectation::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal"], [2, 3, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::marginalIndices"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::marginalIndices"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::registerName"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE", "cudaq::sample_result::has_even_parity"], [2, 4, 1, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE", "cudaq::sample_result::has_even_parity::bitString"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE", "cudaq::sample_result::has_expectation"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE", "cudaq::sample_result::has_expectation::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE", "cudaq::sample_result::most_probable"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE", "cudaq::sample_result::most_probable::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultpLERK13sample_result", "cudaq::sample_result::operator+="], [2, 4, 1, "_CPPv4N5cudaq13sample_resultpLERK13sample_result", "cudaq::sample_result::operator+=::other"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultaSER13sample_result", "cudaq::sample_result::operator="], [2, 4, 1, "_CPPv4N5cudaq13sample_resultaSER13sample_result", "cudaq::sample_result::operator=::counts"], [2, 3, 1, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result", "cudaq::sample_result::operator=="], [2, 4, 1, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result", "cudaq::sample_result::operator==::counts"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability::bitString"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result14register_namesEv", "cudaq::sample_result::register_names"], [2, 3, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder"], [2, 4, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder::index"], [2, 4, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERK13sample_result", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultEv", "cudaq::sample_result::sample_result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::preComputedExp"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult", "cudaq::sample_result::sample_result::result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult", "cudaq::sample_result::sample_result::result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::results"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::results"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result9serializeEv", "cudaq::sample_result::serialize"], [2, 3, 1, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE", "cudaq::sample_result::size"], [2, 4, 1, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE", "cudaq::sample_result::size::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE", "cudaq::sample_result::to_map"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE", "cudaq::sample_result::to_map::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultD0Ev", "cudaq::sample_result::~sample_result"], [2, 3, 1, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE", "cudaq::set_noise"], [2, 4, 1, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE", "cudaq::set_noise::model"], [2, 3, 1, "_CPPv4N5cudaq15set_random_seedENSt6size_tE", "cudaq::set_random_seed"], [2, 4, 1, "_CPPv4N5cudaq15set_random_seedENSt6size_tE", "cudaq::set_random_seed::seed"], [2, 6, 1, "_CPPv4N5cudaq20simulation_precisionE", "cudaq::simulation_precision"], [2, 7, 1, "_CPPv4N5cudaq20simulation_precision4fp32E", "cudaq::simulation_precision::fp32"], [2, 7, 1, "_CPPv4N5cudaq20simulation_precision4fp64E", "cudaq::simulation_precision::fp64"], [2, 1, 1, "_CPPv4N5cudaq7spin_opE", "cudaq::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op5beginEv", "cudaq::spin_op::begin"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op5beginEv", "cudaq::spin_op::begin"], [2, 0, 1, "_CPPv4N5cudaq7spin_op12csr_spmatrixE", "cudaq::spin_op::csr_spmatrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE", "cudaq::spin_op::distribute_terms"], [2, 4, 1, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE", "cudaq::spin_op::distribute_terms::numChunks"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op4dumpEv", "cudaq::spin_op::dump"], [2, 3, 1, "_CPPv4N5cudaq7spin_op3endEv", "cudaq::spin_op::end"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op3endEv", "cudaq::spin_op::end"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op14for_each_pauliERRNSt8functionIFv5pauliNSt6size_tEEEE", "cudaq::spin_op::for_each_pauli"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op13for_each_termERRNSt8functionIFvR7spin_opEEE", "cudaq::spin_op::for_each_term"], [2, 3, 1, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE", "cudaq::spin_op::from_word"], [2, 4, 1, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE", "cudaq::spin_op::from_word::pauliWord"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op21getDataRepresentationEv", "cudaq::spin_op::getDataRepresentation"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op12getDataTupleEv", "cudaq::spin_op::getDataTuple"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op15get_coefficientEv", "cudaq::spin_op::get_coefficient"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op12get_raw_dataEv", "cudaq::spin_op::get_raw_data"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op11is_identityEv", "cudaq::spin_op::is_identity"], [2, 1, 1, "_CPPv4I0EN5cudaq7spin_op8iteratorE", "cudaq::spin_op::iterator"], [2, 2, 1, "_CPPv4I0EN5cudaq7spin_op8iteratorE", "cudaq::spin_op::iterator::QualifiedSpinOp"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op10num_qubitsEv", "cudaq::spin_op::num_qubits"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9num_termsEv", "cudaq::spin_op::num_terms"], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE", "cudaq::spin_op::operator*="], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLEKd", "cudaq::spin_op::operator*="], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLERK7spin_op", "cudaq::spin_op::operator*="], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE", "cudaq::spin_op::operator*=::v"], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLEKd", "cudaq::spin_op::operator*=::v"], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLERK7spin_op", "cudaq::spin_op::operator*=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_oppLERK7spin_op", "cudaq::spin_op::operator+="], [2, 4, 1, "_CPPv4N5cudaq7spin_oppLERK7spin_op", "cudaq::spin_op::operator+=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_opmIERK7spin_op", "cudaq::spin_op::operator-="], [2, 4, 1, "_CPPv4N5cudaq7spin_opmIERK7spin_op", "cudaq::spin_op::operator-=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_opaSERK7spin_op", "cudaq::spin_op::operator="], [2, 3, 1, "_CPPv4NK5cudaq7spin_opeqERK7spin_op", "cudaq::spin_op::operator=="], [2, 4, 1, "_CPPv4NK5cudaq7spin_opeqERK7spin_op", "cudaq::spin_op::operator==::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::nQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::nTerms"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::seed"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opEv", "cudaq::spin_op::spin_op"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::_terms"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op::bsf"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op::coeff"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op::coeff"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op::coeffs"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op::data_rep"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op::id"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op::nQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE", "cudaq::spin_op::spin_op::numQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op", "cudaq::spin_op::spin_op::o"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op::term"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::termData"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::termData"], [2, 0, 1, "_CPPv4N5cudaq7spin_op12spin_op_termE", "cudaq::spin_op::spin_op_term"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9to_matrixEv", "cudaq::spin_op::to_matrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op16to_sparse_matrixEv", "cudaq::spin_op::to_sparse_matrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9to_stringEb", "cudaq::spin_op::to_string"], [2, 4, 1, "_CPPv4NK5cudaq7spin_op9to_stringEb", "cudaq::spin_op::to_string::printCoefficients"], [2, 3, 1, "_CPPv4N5cudaq7spin_opD0Ev", "cudaq::spin_op::~spin_op"], [2, 1, 1, "_CPPv4N5cudaq5stateE", "cudaq::state"], [2, 3, 1, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE", "cudaq::state::amplitude"], [2, 4, 1, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE", "cudaq::state::amplitude::basisState"], [2, 3, 1, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE", "cudaq::state::amplitudes"], [2, 4, 1, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE", "cudaq::state::amplitudes::basisStates"], [2, 3, 1, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE", "cudaq::state::dump"], [2, 3, 1, "_CPPv4NK5cudaq5state4dumpEv", "cudaq::state::dump"], [2, 4, 1, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE", "cudaq::state::dump::os"], [2, 3, 1, "_CPPv4N5cudaq5state9from_dataERK10state_data", "cudaq::state::from_data"], [2, 4, 1, "_CPPv4N5cudaq5state9from_dataERK10state_data", "cudaq::state::from_data::data"], [2, 3, 1, "_CPPv4NK5cudaq5state14get_num_qubitsEv", "cudaq::state::get_num_qubits"], [2, 3, 1, "_CPPv4NK5cudaq5state15get_num_tensorsEv", "cudaq::state::get_num_tensors"], [2, 3, 1, "_CPPv4NK5cudaq5state13get_precisionEv", "cudaq::state::get_precision"], [2, 3, 1, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE", "cudaq::state::get_tensor"], [2, 4, 1, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE", "cudaq::state::get_tensor::tensorIdx"], [2, 3, 1, "_CPPv4NK5cudaq5state11get_tensorsEv", "cudaq::state::get_tensors"], [2, 3, 1, "_CPPv4NK5cudaq5state9is_on_gpuEv", "cudaq::state::is_on_gpu"], [2, 3, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()"], [2, 3, 1, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE", "cudaq::state::operator()"], [2, 4, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()::idx"], [2, 4, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()::jdx"], [2, 4, 1, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE", "cudaq::state::operator()::tensorIdx"], [2, 3, 1, "_CPPv4N5cudaq5stateaSERR5state", "cudaq::state::operator="], [2, 4, 1, "_CPPv4N5cudaq5stateaSERR5state", "cudaq::state::operator=::other"], [2, 3, 1, "_CPPv4NK5cudaq5stateixENSt6size_tE", "cudaq::state::operator[]"], [2, 4, 1, "_CPPv4NK5cudaq5stateixENSt6size_tE", "cudaq::state::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq5state7overlapERK5state", "cudaq::state::overlap"], [2, 4, 1, "_CPPv4N5cudaq5state7overlapERK5state", "cudaq::state::overlap::other"], [2, 3, 1, "_CPPv4N5cudaq5state5stateEP15SimulationState", "cudaq::state::state"], [2, 3, 1, "_CPPv4N5cudaq5state5stateERK5state", "cudaq::state::state"], [2, 4, 1, "_CPPv4N5cudaq5state5stateERK5state", "cudaq::state::state::other"], [2, 4, 1, "_CPPv4N5cudaq5state5stateEP15SimulationState", "cudaq::state::state::ptrToOwn"], [2, 3, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host"], [2, 2, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::ScalarType"], [2, 4, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::hostPtr"], [2, 4, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::numElements"], [2, 0, 1, "_CPPv4N5cudaq10state_dataE", "cudaq::state_data"], [2, 0, 1, "_CPPv4N5cudaq6tensorE", "cudaq::tensor"], [2, 3, 1, "_CPPv4N5cudaq11unset_noiseEv", "cudaq::unset_noise"], [2, 1, 1, "_CPPv4N5nvqir18MPSSimulationStateE", "nvqir::MPSSimulationState"], [2, 1, 1, "_CPPv4N5nvqir24TensorNetSimulationStateE", "nvqir::TensorNetSimulationState"], [3, 8, 0, "-", "cudaq"]], "cudaq": [[3, 9, 1, "", "AmplitudeDampingChannel"], [3, 9, 1, "", "AsyncEvolveResult"], [3, 9, 1, "", "AsyncObserveResult"], [3, 9, 1, "", "AsyncSampleResult"], [3, 9, 1, "", "AsyncStateResult"], [3, 9, 1, "", "BitFlipChannel"], [3, 9, 1, "", "ComplexMatrix"], [3, 9, 1, "", "DepolarizationChannel"], [3, 9, 1, "", "EvolveResult"], [3, 11, 1, "", "Kernel"], [3, 9, 1, "", "KrausChannel"], [3, 9, 1, "", "KrausOperator"], [3, 9, 1, "", "NoiseModel"], [3, 9, 1, "", "ObserveResult"], [3, 9, 1, "", "OptimizationResult"], [3, 9, 1, "", "PhaseFlipChannel"], [3, 9, 1, "", "PyKernel"], [3, 9, 1, "", "PyKernelDecorator"], [3, 9, 1, "", "QuakeValue"], [3, 9, 1, "", "SampleResult"], [3, 9, 1, "", "Schedule"], [3, 9, 1, "", "SimulationPrecision"], [3, 9, 1, "", "SpinOperator"], [3, 9, 1, "", "State"], [3, 9, 1, "", "Target"], [3, 9, 1, "", "Tensor"], [3, 13, 1, "", "draw"], [3, 13, 1, "", "evolve"], [3, 13, 1, "", "evolve_async"], [3, 13, 1, "", "get_state"], [3, 13, 1, "", "get_state_async"], [3, 13, 1, "", "get_target"], [3, 13, 1, "", "get_targets"], [3, 13, 1, "", "has_target"], [3, 10, 1, "", "initialize_cudaq"], [3, 13, 1, "", "kernel"], [3, 13, 1, "", "make_kernel"], [3, 10, 1, "", "num_available_gpus"], [3, 13, 1, "", "observe"], [3, 13, 1, "", "observe_async"], [3, 11, 1, "", "qreg"], [3, 9, 1, "", "qubit"], [3, 9, 1, "", "qvector"], [3, 13, 1, "", "reset_target"], [3, 13, 1, "", "sample"], [3, 13, 1, "", "sample_async"], [3, 13, 1, "", "set_noise"], [3, 10, 1, "", "set_random_seed"], [3, 13, 1, "", "set_target"], [3, 13, 1, "", "translate"], [3, 13, 1, "", "unset_noise"], [3, 13, 1, "", "vqe"]], "cudaq.AmplitudeDampingChannel": [[3, 10, 1, "", "__init__"]], "cudaq.AsyncEvolveResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncObserveResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncSampleResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncStateResult": [[3, 10, 1, "", "get"]], "cudaq.BitFlipChannel": [[3, 10, 1, "", "__init__"]], "cudaq.ComplexMatrix": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__str__"], [3, 10, 1, "", "minimal_eigenvalue"], [3, 10, 1, "", "num_columns"], [3, 10, 1, "", "num_rows"], [3, 10, 1, "", "to_numpy"]], "cudaq.DepolarizationChannel": [[3, 10, 1, "", "__init__"]], "cudaq.EvolveResult": [[3, 10, 1, "", "expectation_values"], [3, 10, 1, "", "final_expectation_values"], [3, 10, 1, "", "final_state"], [3, 10, 1, "", "intermediate_states"]], "cudaq.KrausChannel": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "append"]], "cudaq.KrausOperator": [[3, 12, 1, "", "col_count"], [3, 12, 1, "", "row_count"]], "cudaq.NoiseModel": [[3, 10, 1, "", "__init__"], [3, 10, 1, "", "add_all_qubit_channel"], [3, 10, 1, "", "add_channel"], [3, 10, 1, "", "get_channels"]], "cudaq.ObserveResult": [[3, 10, 1, "", "counts"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "expectation"], [3, 10, 1, "", "expectation_z"], [3, 10, 1, "", "get_spin"]], "cudaq.PhaseFlipChannel": [[3, 10, 1, "", "__init__"]], "cudaq.PyKernel": [[3, 11, 1, "", "argument_count"], [3, 11, 1, "", "arguments"], [3, 11, 1, "", "name"]], "cudaq.PyKernelDecorator": [[3, 10, 1, "", "__call__"], [3, 10, 1, "", "__str__"], [3, 10, 1, "", "compile"], [3, 10, 1, "", "extract_c_function_pointer"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "merge_kernel"], [3, 10, 1, "", "synthesize_callable_arguments"], [3, 10, 1, "", "to_json"], [3, 10, 1, "", "type_to_str"]], "cudaq.QuakeValue": [[3, 10, 1, "", "__add__"], [3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__mul__"], [3, 10, 1, "", "__neg__"], [3, 10, 1, "", "__radd__"], [3, 10, 1, "", "__rmul__"], [3, 10, 1, "", "__rsub__"], [3, 10, 1, "", "__sub__"], [3, 10, 1, "", "slice"]], "cudaq.SampleResult": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__iter__"], [3, 10, 1, "", "__len__"], [3, 10, 1, "", "clear"], [3, 10, 1, "", "count"], [3, 10, 1, "", "deserialize"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "expectation"], [3, 10, 1, "", "expectation_z"], [3, 10, 1, "", "get_marginal_counts"], [3, 10, 1, "", "get_register_counts"], [3, 10, 1, "", "get_sequential_data"], [3, 10, 1, "", "items"], [3, 10, 1, "", "most_probable"], [3, 10, 1, "", "probability"], [3, 11, 1, "", "register_names"], [3, 10, 1, "", "serialize"], [3, 10, 1, "", "values"]], "cudaq.SimulationPrecision": [[3, 12, 1, "", "name"]], "cudaq.State": [[3, 10, 1, "", "amplitude"], [3, 10, 1, "", "amplitudes"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "from_data"], [3, 10, 1, "", "getTensor"], [3, 10, 1, "", "getTensors"], [3, 10, 1, "", "is_on_gpu"], [3, 10, 1, "", "num_qubits"], [3, 10, 1, "", "overlap"]], "cudaq.Target": [[3, 12, 1, "", "description"], [3, 10, 1, "", "get_precision"], [3, 10, 1, "", "is_emulated"], [3, 10, 1, "", "is_remote"], [3, 12, 1, "", "name"], [3, 10, 1, "", "num_qpus"], [3, 12, 1, "", "platform"], [3, 12, 1, "", "simulator"]], "cudaq.gradients": [[3, 9, 1, "", "CentralDifference"], [3, 9, 1, "", "ForwardDifference"], [3, 9, 1, "", "ParameterShift"], [3, 9, 1, "", "gradient"]], "cudaq.gradients.CentralDifference": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.gradients.ForwardDifference": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.gradients.ParameterShift": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.mpi": [[3, 10, 1, "", "all_gather"], [3, 10, 1, "", "broadcast"], [3, 10, 1, "", "finalize"], [3, 10, 1, "", "initialize"], [3, 10, 1, "", "is_initialized"], [3, 10, 1, "", "num_ranks"], [3, 10, 1, "", "rank"]], "cudaq.operator.cudm_state": [[3, 9, 1, "", "CuDensityMatState"], [3, 13, 1, "", "to_cupy_array"]], "cudaq.operator.definitions": [[3, 9, 1, "", "SpinOperator"]], "cudaq.operator.expressions": [[3, 9, 1, "", "ElementaryOperator"], [3, 9, 1, "", "OperatorSum"], [3, 9, 1, "", "ProductOperator"], [3, 9, 1, "", "RydbergHamiltonian"], [3, 9, 1, "", "ScalarOperator"]], "cudaq.operator.expressions.ElementaryOperator": [[3, 10, 1, "", "define"]], "cudaq.operator.expressions.RydbergHamiltonian": [[3, 10, 1, "", "__init__"]], "cudaq.operator.integrator": [[3, 9, 1, "", "BaseIntegrator"]], "cudaq.optimizers": [[3, 9, 1, "", "COBYLA"], [3, 9, 1, "", "GradientDescent"], [3, 9, 1, "", "LBFGS"], [3, 9, 1, "", "NelderMead"], [3, 9, 1, "", "optimizer"]], "cudaq.optimizers.COBYLA": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.GradientDescent": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.LBFGS": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.NelderMead": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.orca": [[3, 10, 1, "", "sample"]], "cudaq.spin": [[3, 13, 1, "", "i"], [3, 13, 1, "", "x"], [3, 13, 1, "", "y"], [3, 13, 1, "", "z"]]}, "objtypes": {"0": "cpp:type", "1": "cpp:class", "2": "cpp:templateParam", "3": "cpp:function", "4": "cpp:functionParam", "5": "cpp:member", "6": "cpp:enum", "7": "cpp:enumerator", "8": "py:module", "9": "py:class", "10": "py:method", "11": "py:attribute", "12": "py:property", "13": "py:function"}, "objnames": {"0": ["cpp", "type", "C++ type"], "1": ["cpp", "class", "C++ class"], "2": ["cpp", "templateParam", "C++ template parameter"], "3": ["cpp", "function", "C++ function"], "4": ["cpp", "functionParam", "C++ function parameter"], "5": ["cpp", "member", "C++ member"], "6": ["cpp", "enum", "C++ enum"], "7": ["cpp", "enumerator", "C++ enumerator"], "8": ["py", "module", "Python module"], "9": ["py", "class", "Python class"], "10": ["py", "method", "Python method"], "11": ["py", "attribute", "Python attribute"], "12": ["py", "property", "Python property"], "13": ["py", "function", "Python function"]}, "titleterms": {"code": [0, 74], "document": 0, "cuda": [0, 2, 3, 4, 5, 8, 9, 20, 21, 22, 27, 30, 31, 32, 33, 48, 49, 50, 51, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80], "q": [0, 2, 3, 4, 5, 8, 9, 20, 21, 22, 27, 30, 31, 32, 33, 48, 49, 50, 51, 54, 55, 56, 57, 58, 61, 68, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80], "api": [0, 2, 3], "quantum": [1, 2, 4, 5, 7, 9, 10, 11, 12, 14, 15, 16, 18, 21, 23, 33, 36, 37, 40, 41, 42, 43, 45, 52, 53, 63, 67], "oper": [1, 2, 26, 40, 41, 50], "unitari": [1, 20], "qubit": [1, 17, 29, 40, 45], "x": 1, "y": 1, "z": 1, "h": 1, "r1": 1, "rx": 1, "ry": 1, "rz": 1, "": [1, 7, 18, 36, 71], "t": 1, "swap": 1, "u3": 1, "adjoint": 1, "control": [1, 34, 65], "measur": [1, 18, 24, 67], "mz": 1, "mx": 1, "my": 1, "user": 1, "defin": 1, "custom": 1, "photon": 1, "qudit": [1, 45], "creat": [1, 70], "annihil": 1, "phase_shift": 1, "beam_splitt": 1, "c": [2, 51, 72, 78], "common": [2, 42], "nois": [2, 17], "model": [2, 17, 20, 38], "kernel": [2, 3, 18, 20, 29, 35, 37, 53, 57, 60], "builder": 2, "algorithm": [2, 5, 7, 12, 18, 33, 36], "platform": [2, 43, 53], "util": 2, "namespac": [2, 39], "python": [3, 51, 72, 74], "program": [3, 36, 42, 56, 58], "construct": [3, 26], "execut": [3, 23, 52], "dynam": [3, 50], "backend": [3, 49, 51, 52, 54], "configur": 3, "data": [3, 9], "type": [3, 45], "optim": [3, 21, 27, 28, 33], "gradient": [3, 22, 27, 33], "noisi": [3, 25], "simul": [3, 9, 19, 20, 25, 52, 53, 54, 59, 71, 74], "mpi": [3, 72, 74], "submodul": 3, "orca": [3, 51, 63], "enhanc": 4, "auxiliari": 4, "field": 4, "mont": 4, "carlo": 4, "hamiltonian": [4, 66], "prepar": [4, 36], "vqe": [4, 22], "run": [4, 19, 58], "afqmc": 4, "molecular": [4, 8], "trial": 4, "wave": 4, "function": [4, 9, 33], "setup": [4, 12, 19, 20], "paramet": [4, 22, 27, 36], "bernstein": 5, "vazirani": 5, "classic": [5, 10, 18], "case": [5, 18], "implement": [5, 8, 9, 22], "cost": 6, "minim": 6, "deutsch": 7, "xor": 7, "oplu": 7, "oracl": 7, "phase": [7, 18, 36], "parallel": [7, 22, 23, 27, 53, 62, 66], "dock": 8, "via": [8, 74], "dc": 8, "qaoa": [8, 9, 13], "set": [8, 51], "up": 8, "problem": [8, 18, 19], "divis": 9, "cluster": 9, "With": [9, 18, 19], "coreset": 9, "us": [9, 10, 20, 21, 22, 45, 63, 74, 76], "preprocess": 9, "scale": 9, "hadamard": 10, "test": 10, "determin": [10, 12, 18], "krylov": [10, 12], "subspac": [10, 12], "decomposit": 10, "matrix": [10, 12, 17, 54], "element": [10, 12], "numer": [10, 50], "result": [10, 18], "refer": [10, 12], "sampl": [10, 23, 33, 36, 58], "perform": [10, 28], "multi": [10, 12, 53, 54, 65, 66], "gpu": [10, 52, 54, 58, 66, 74], "evalu": [10, 20], "qksd": 10, "diagon": 10, "hybrid": 11, "neural": 11, "network": [11, 54], "h_2": 12, "molecul": 12, "comput": [12, 19, 42, 51, 62, 63, 67, 74], "ground": 12, "state": [12, 23, 36, 53, 54, 67], "energi": [12, 36], "max": 13, "cut": 13, "fourier": [14, 18], "transform": [14, 18], "revisit": 14, "telepor": 15, "teleport": 15, "explain": 15, "volum": 16, "readout": 17, "error": 17, "mitig": 17, "invers": [17, 18], "confus": 17, "from": [17, 18, 51, 72, 78], "singl": [17, 54], "k": 17, "local": [17, 74], "matric": 17, "full": 17, "factor": 18, "integ": 18, "shor": 18, "solv": 18, "order": 18, "find": 18, "modular": 18, "exponenti": [18, 26], "The": [18, 19, 22], "n": [18, 45], "21": 18, "5": 18, "4": 18, "postscript": 18, "magnet": 19, "suzuki": 19, "trotter": 19, "approxim": 19, "compil": [20, 70, 78], "diffus": 20, "pipelin": 20, "load": [20, 22], "convert": 20, "tensor": [20, 54], "gener": [20, 47], "circuit": [20, 22, 23, 44, 66, 71], "compar": 20, "choos": 20, "you": 20, "need": 20, "variat": 21, "eigensolv": 21, "integr": [21, 50, 77, 78], "third": [21, 27, 78], "parti": [21, 27, 78], "activ": 22, "space": 22, "gate": [22, 28, 67], "fusion": [22, 28], "basic": [22, 55], "instal": [22, 72, 73, 74, 79], "relev": 22, "packag": 22, "shift": [22, 27], "an": [22, 78], "larger": 22, "observ": [23, 33, 58], "get": [23, 74], "techniqu": 23, "async": 23, "midcircuit": 24, "condit": 24, "logic": 24, "spin": 26, "pauli": 26, "word": 26, "built": [27, 74], "visual": 29, "content": [30, 55, 73], "releas": 31, "languag": 32, "specif": [32, 46], "primit": 33, "cudaq": [33, 40, 41, 45], "deprec": [33, 45], "move": 33, "librari": [33, 72, 78], "flow": 34, "just": 35, "time": [35, 50], "creation": 35, "exampl": [36, 61], "hello": 36, "world": 36, "simpl": 36, "bell": 36, "ghz": 36, "estim": 36, "deuteron": 36, "bind": 36, "sweep": 36, "grover": 36, "iter": 36, "machin": 38, "standard": 39, "intrins": 40, "spin_op": 41, "pattern": 42, "action": [42, 71], "uncomput": 42, "sub": 44, "synthesi": [44, 65], "level": 45, "contain": [45, 74], "qview": 45, "2": 45, "qvector": 45, "qarrai": 45, "qspan": 45, "instead": 45, "qreg": 45, "quak": 47, "dialect": 47, "introduct": [47, 64, 74], "motiv": 47, "applic": 48, "target": [49, 66], "quick": [50, 52, 79], "start": [50, 52, 74, 79], "builtin": 50, "depend": [50, 72, 74], "hardwar": [51, 63], "amazon": [51, 63], "braket": [51, 63], "credenti": 51, "submiss": 51, "ionq": [51, 63], "anyon": 51, "technologi": 51, "iqm": [51, 63], "oqc": [51, 63], "quantinuum": [51, 63], "quera": [51, 63], "nvidia": [52, 53], "cloud": [52, 74], "select": 52, "multipl": [52, 62, 66], "qpu": 52, "asynchron": 52, "faq": 52, "processor": [53, 62, 66], "mqpu": 53, "distribut": [53, 74], "mode": [53, 54], "remot": [53, 74], "support": [53, 54, 72, 74], "argument": 53, "serial": 53, "access": [53, 74], "vector": 54, "featur": 54, "environ": 54, "variabl": 54, "option": 54, "node": 54, "addit": [54, 74], "openmp": 54, "cpu": 54, "onli": 54, "product": 54, "clifford": 54, "stim": 54, "fermioniq": 54, "default": 54, "build": [56, 60, 72], "your": [56, 58, 70, 79], "first": [56, 58], "what": 57, "i": 57, "troubleshoot": 59, "debug": 59, "verbos": 59, "output": 59, "expect": 62, "valu": 62, "across": [62, 66], "provid": 63, "workflow": 66, "avail": 66, "batch": 66, "term": 66, "101": 67, "work": 68, "ir": 68, "extend": [69, 71], "own": 70, "pass": 70, "new": 71, "circuitsimul": 71, "requir": [71, 74], "subtyp": 71, "method": 71, "overrid": 71, "let": 71, "see": 71, "thi": 71, "sourc": 72, "prerequisit": 72, "toolchain": [72, 78], "host": [72, 74], "runtim": 72, "guid": 73, "docker": 74, "singular": 74, "wheel": 74, "pre": 74, "binari": [74, 78], "develop": 74, "v": 74, "connect": 74, "tunnel": 74, "ssh": 74, "dgx": 74, "jupyterlab": 74, "tool": [74, 77], "pypi": 74, "In": 74, "imag": 74, "updat": 74, "compat": 74, "system": 74, "next": 74, "step": 74, "cmake": 75, "project": 76, "other": 77, "softwar": 77, "call": 78, "interfac": 78, "between": 78, "differ": 78, "valid": 79, "version": 80}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Quantum Operators": [[41, "quantum-operators"]], "cudaq::spin_op": [[41, "cudaq-spin-op"]], "Quantum Types": [[45, "quantum-types"]], "cudaq::qudit": [[45, "cudaq-qudit-levels"]], "cudaq::qubit": [[45, "cudaq-qubit"]], "Quantum Containers": [[45, "quantum-containers"]], "cudaq::qview": [[45, "cudaq-qview-levels-2"]], "cudaq::qvector": [[45, "cudaq-qvector-levels-2"]], "cudaq::qarray": [[45, "cudaq-qarray-n-levels-2"]], "cudaq::qspan (Deprecated. Use cudaq::qview instead.)": [[45, "cudaq-qspan-n-levels-deprecated-use-cudaq-qview-levels-instead"]], "cudaq::qreg (Deprecated. Use cudaq::qvector instead.)": [[45, "cudaq-qreg-n-levels-deprecated-use-cudaq-qvector-levels-instead"]], "Common Quantum Programming Patterns": [[42, "common-quantum-programming-patterns"]], "Compute-Action-Uncompute": [[42, "compute-action-uncompute"]], "CUDA-Q Backends": [[49, "cuda-q-backends"]], "Backend Targets": [[49, null]], "Specifications": [[46, "specifications"]], "Sub-circuit Synthesis": [[44, "sub-circuit-synthesis"]], "Quantum Platform": [[43, "quantum-platform"]], "Quantum Intrinsic Operations": [[40, "quantum-intrinsic-operations"]], "Operations on cudaq::qubit": [[40, "operations-on-cudaq-qubit"]], "CUDA-Q Applications": [[48, "cuda-q-applications"]], "Quake Dialect": [[47, "quake-dialect"]], "General Introduction": [[47, "general-introduction"]], "Motivation": [[47, "motivation"]], "CUDA-Q": [[30, "cuda-q"], [32, null]], "Contents": [[30, null], [73, null], [55, null]], "Machine Model": [[38, "machine-model"]], "Example Programs": [[36, "example-programs"]], "Hello World - Simple Bell State": [[36, "hello-world-simple-bell-state"]], "GHZ State Preparation and Sampling": [[36, "ghz-state-preparation-and-sampling"]], "Quantum Phase Estimation": [[36, "quantum-phase-estimation"]], "Deuteron Binding Energy Parameter Sweep": [[36, "deuteron-binding-energy-parameter-sweep"]], "Grover\u2019s Algorithm": [[36, "grover-s-algorithm"]], "Iterative Phase Estimation": [[36, "iterative-phase-estimation"]], "Control Flow": [[34, "control-flow"]], "Just-in-Time Kernel Creation": [[35, "just-in-time-kernel-creation"]], "Quantum Kernels": [[37, "quantum-kernels"]], "Namespace and Standard": [[39, "namespace-and-standard"]], "CUDA-Q Releases": [[31, "cuda-q-releases"]], "Language Specification": [[32, "language-specification"]], "Quantum Algorithmic Primitives": [[33, "quantum-algorithmic-primitives"]], "cudaq::sample": [[33, "cudaq-sample"]], "cudaq::observe": [[33, "cudaq-observe"]], "cudaq::optimizer (deprecated, functionality moved to CUDA-Q libraries)": [[33, "cudaq-optimizer-deprecated-functionality-moved-to-cuda-q-libraries"]], "cudaq::gradient (deprecated, functionality moved to CUDA-Q libraries)": [[33, "cudaq-gradient-deprecated-functionality-moved-to-cuda-q-libraries"]], "Working with the CUDA-Q IR": [[68, "working-with-the-cuda-q-ir"]], "Using Quantum Hardware Providers": [[63, "using-quantum-hardware-providers"]], "Amazon Braket": [[63, "amazon-braket"], [51, "amazon-braket"]], "IonQ": [[63, "ionq"], [51, "ionq"]], "IQM": [[63, "iqm"], [51, "iqm"]], "OQC": [[63, "oqc"], [51, "oqc"]], "ORCA Computing": [[63, "orca-computing"], [51, "orca-computing"]], "Quantinuum": [[63, "quantinuum"], [51, "quantinuum"]], "QuEra Computing": [[63, "quera-computing"], [51, "quera-computing"]], "Building Kernels": [[60, "building-kernels"]], "Computing Expectation Values": [[62, "computing-expectation-values"]], "Parallelizing across Multiple Processors": [[62, "parallelizing-across-multiple-processors"]], "CUDA-Q by Example": [[61, "cuda-q-by-example"]], "Multi-GPU Workflows": [[66, "multi-gpu-workflows"]], "Available Targets": [[66, "available-targets"]], "Parallelization across Multiple Processors": [[66, "parallelization-across-multiple-processors"]], "Batching Hamiltonian Terms": [[66, "batching-hamiltonian-terms"]], "Circuit Batching": [[66, "circuit-batching"]], "Multi-control Synthesis": [[65, "multi-control-synthesis"]], "Quantum Computing 101": [[67, "quantum-computing-101"]], "Quantum States": [[67, "quantum-states"]], "Quantum Gates": [[67, "quantum-gates"]], "Measurements": [[67, "measurements"], [24, "Measurements"]], "Introduction": [[64, "introduction"], [74, "introduction"]], "Extending CUDA-Q": [[69, "extending-cuda-q"]], "CUDA-Q Versions": [[80, "cuda-q-versions"]], "Quick Start": [[79, "quick-start"], [52, "quick-start"], [50, "quick-start"]], "Install CUDA-Q": [[79, "install-cuda-q"]], "Validate your Installation": [[79, "validate-your-installation"]], "Extending CUDA-Q with a new Simulator": [[71, "extending-cuda-q-with-a-new-simulator"]], "CircuitSimulator": [[71, "circuitsimulator"]], "Required Circuit Simulator Subtype Method Overrides": [[71, "id1"]], "Let\u2019s see this in action": [[71, "let-s-see-this-in-action"]], "Create your own CUDA-Q Compiler Pass": [[70, "create-your-own-cuda-q-compiler-pass"]], "Using CUDA and CUDA-Q in a Project": [[76, "using-cuda-and-cuda-q-in-a-project"]], "CUDA-Q and CMake": [[75, "cuda-q-and-cmake"]], "Installation from Source": [[72, "installation-from-source"]], "Prerequisites": [[72, "prerequisites"]], "Build Dependencies": [[72, "build-dependencies"]], "CUDA": [[72, "cuda"]], "Toolchain": [[72, "toolchain"]], "Building CUDA-Q": [[72, "building-cuda-q"]], "Python Support": [[72, "python-support"]], "C++ Support": [[72, "c-support"]], "Installation on the Host": [[72, "installation-on-the-host"]], "CUDA Runtime Libraries": [[72, "cuda-runtime-libraries"]], "MPI": [[72, "mpi"]], "Integration with other Software Tools": [[77, "integration-with-other-software-tools"]], "Integrating with Third-Party Libraries": [[78, "integrating-with-third-party-libraries"]], "Calling a CUDA-Q library from C++": [[78, "calling-a-cuda-q-library-from-c"]], "Calling an C++ library from CUDA-Q": [[78, "calling-an-c-library-from-cuda-q"]], "Interfacing between binaries compiled with a different toolchains": [[78, "interfacing-between-binaries-compiled-with-a-different-toolchains"]], "Installation Guide": [[73, "installation-guide"]], "Local Installation": [[74, "local-installation"]], "Docker": [[74, "docker"]], "Singularity": [[74, "singularity"]], "Python wheels": [[74, "python-wheels"]], "Pre-built binaries": [[74, "pre-built-binaries"]], "Development with VS Code": [[74, "development-with-vs-code"]], "Using a Docker container": [[74, "using-a-docker-container"]], "Using a Singularity container": [[74, "using-a-singularity-container"]], "Connecting to a Remote Host": [[74, "connecting-to-a-remote-host"]], "Developing with Remote Tunnels": [[74, "developing-with-remote-tunnels"]], "Remote Access via SSH": [[74, "remote-access-via-ssh"]], "DGX Cloud": [[74, "dgx-cloud"]], "Get Started": [[74, "get-started"]], "Use JupyterLab": [[74, "use-jupyterlab"]], "Use VS Code": [[74, "use-vs-code"]], "Additional CUDA Tools": [[74, "additional-cuda-tools"]], "Installation via PyPI": [[74, "installation-via-pypi"]], "Installation In Container Images": [[74, "installation-in-container-images"]], "Installing Pre-built Binaries": [[74, "installing-pre-built-binaries"]], "Distributed Computing with MPI": [[74, "distributed-computing-with-mpi"]], "Updating CUDA-Q": [[74, "updating-cuda-q"]], "Dependencies and Compatibility": [[74, "dependencies-and-compatibility"]], "Supported Systems": [[74, "id10"]], "Requirements for GPU Simulation": [[74, "id11"]], "Next Steps": [[74, "next-steps"]], "NVIDIA Quantum Cloud": [[52, "nvidia-quantum-cloud"]], "Simulator Backend Selection": [[52, "simulator-backend-selection"]], "Multiple GPUs": [[52, "multiple-gpus"]], "Simulator Backends": [[52, "id1"]], "Multiple QPUs Asynchronous Execution": [[52, "multiple-qpus-asynchronous-execution"]], "FAQ": [[52, "faq"]], "CUDA-Q Basics": [[55, "cuda-q-basics"]], "CUDA-Q Hardware Backends": [[51, "cuda-q-hardware-backends"]], "Setting Credentials": [[51, "setting-credentials"], [51, "ionq-backend"], [51, "anyon-backend"], [51, "id7"], [51, "id10"], [51, "id13"], [51, "quantinuum-backend"], [51, "quera-backend"]], "Submission from C++": [[51, "submission-from-c"], [51, "id2"], [51, "id5"], [51, "id8"], [51, "id11"], [51, "id14"], [51, "id17"], [51, "id20"]], "Submission from Python": [[51, "submission-from-python"], [51, "id3"], [51, "id6"], [51, "id9"], [51, "id12"], [51, "id15"], [51, "id18"], [51, "id21"]], "Anyon Technologies/Anyon Computing": [[51, "anyon-technologies-anyon-computing"]], "What is a CUDA-Q kernel?": [[57, "what-is-a-cuda-q-kernel"]], "CUDA-Q Dynamics": [[50, "cuda-q-dynamics"]], "Operator": [[50, "operator"]], "Builtin Operators": [[50, "id1"]], "Time-Dependent Dynamics": [[50, "time-dependent-dynamics"]], "Numerical Integrators": [[50, "numerical-integrators"], [50, "id2"]], "Building your first CUDA-Q Program": [[56, "building-your-first-cuda-q-program"]], "CUDA-Q Simulation Backends": [[54, "cuda-q-simulation-backends"]], "State Vector Simulators": [[54, "state-vector-simulators"]], "Features": [[54, "features"]], "Single-GPU": [[54, "single-gpu"]], "Environment variable options supported in single-GPU mode": [[54, "id4"]], "Multi-node multi-GPU": [[54, "multi-node-multi-gpu"], [54, "id2"]], "Additional environment variable options for multi-node multi-GPU mode": [[54, "id5"]], "OpenMP CPU-only": [[54, "openmp-cpu-only"]], "Tensor Network Simulators": [[54, "tensor-network-simulators"]], "Matrix product state": [[54, "matrix-product-state"]], "Clifford-Only Simulator": [[54, "clifford-only-simulator"]], "Stim (CPU)": [[54, "stim-cpu"]], "Fermioniq": [[54, "fermioniq"]], "Default Simulator": [[54, "default-simulator"]], "Running your first CUDA-Q Program": [[58, "running-your-first-cuda-q-program"]], "Sample": [[58, "sample"], [23, "Sample"]], "Observe": [[58, "observe"], [23, "Observe"]], "Running on a GPU": [[58, "running-on-a-gpu"]], "Multi-Processor Platforms": [[53, "multi-processor-platforms"]], "NVIDIA MQPU Platform": [[53, "nvidia-mqpu-platform"]], "Parallel distribution mode": [[53, "parallel-distribution-mode"]], "Remote MQPU Platform": [[53, "remote-mqpu-platform"]], "Supported Kernel Arguments": [[53, "supported-kernel-arguments"]], "Kernel argument serialization": [[53, "id4"]], "Accessing Simulated Quantum State": [[53, "accessing-simulated-quantum-state"]], "Troubleshooting": [[59, "troubleshooting"]], "Debugging and Verbose Simulation Output": [[59, "debugging-and-verbose-simulation-output"]], "Visualization": [[29, "Visualization"]], "Qubit Visualization": [[29, "Qubit-Visualization"]], "Kernel Visualization": [[29, "Kernel-Visualization"]], "Compiling Unitaries Using Diffusion Models": [[20, "Compiling-Unitaries-Using-Diffusion-Models"]], "Diffusion model pipeline": [[20, "Diffusion-model-pipeline"]], "Setup and compilation": [[20, "Setup-and-compilation"]], "Load model": [[20, "Load-model"]], "Unitary compilation": [[20, "Unitary-compilation"]], "Convert tensors to CUDA-Q": [[20, "Convert-tensors-to-CUDA-Q"]], "Evaluate generated circuits": [[20, "Evaluate-generated-circuits"]], "Simulate kernels": [[20, "Simulate-kernels"]], "Compare unitaries": [[20, "Compare-unitaries"]], "Choosing the circuit you need": [[20, "Choosing-the-circuit-you-need"]], "Variational Quantum Eigensolver": [[21, "Variational-Quantum-Eigensolver"]], "Using CUDA-Q Optimizers": [[21, "Using-CUDA-Q-Optimizers"]], "Integration with Third-Party Optimizers": [[21, "Integration-with-Third-Party-Optimizers"]], "Optimizing Performance": [[28, "Optimizing-Performance"]], "Gate Fusion": [[28, "Gate-Fusion"]], "VQE with gradients, active spaces, and gate fusion": [[22, "VQE-with-gradients,-active-spaces,-and-gate-fusion"]], "The Basics of VQE": [[22, "The-Basics-of-VQE"]], "Installing/Loading Relevant Packages": [[22, "Installing/Loading-Relevant-Packages"]], "Implementing VQE in CUDA-Q": [[22, "Implementing-VQE-in-CUDA-Q"]], "Parallel Parameter Shift Gradients": [[22, "Parallel-Parameter-Shift-Gradients"], [27, "Parallel-Parameter-Shift-Gradients"]], "Using an Active Space": [[22, "Using-an-Active-Space"]], "Gate Fusion for Larger Circuits": [[22, "Gate-Fusion-for-Larger-Circuits"]], "Midcircuit Measurement and Conditional Logic": [[24, "Midcircuit-Measurement-and-Conditional-Logic"]], "Noisy Simulation": [[25, "Noisy-Simulation"], [3, "noisy-simulation"]], "Operators": [[26, "Operators"], [2, "operators"]], "Constructing Spin Operators": [[26, "Constructing-Spin-Operators"]], "Pauli Words and Exponentiating Pauli Words": [[26, "Pauli-Words-and-Exponentiating-Pauli-Words"]], "Optimizers and Gradients": [[27, "Optimizers-and-Gradients"]], "Built in CUDA-Q Optimizers and Gradients": [[27, "Built-in-CUDA-Q-Optimizers-and-Gradients"]], "Third-Party Optimizers": [[27, "Third-Party-Optimizers"]], "Executing Quantum Circuits": [[23, "Executing-Quantum-Circuits"]], "Get state": [[23, "Get-state"]], "Parallelization Techniques": [[23, "Parallelization-Techniques"]], "Observe Async": [[23, "Observe-Async"]], "Sample Async": [[23, "Sample-Async"]], "Get State Async": [[23, "Get-State-Async"]], "Computing Magnetization With The Suzuki-Trotter Approximation": [[19, "Computing-Magnetization-With-The-Suzuki-Trotter-Approximation"]], "Problem Setup": [[19, "Problem-Setup"]], "Running the Simulation": [[19, "Running-the-Simulation"]], "Multi-reference Quantum Krylov Algorithm - H_2 Molecule": [[12, "Multi-reference-Quantum-Krylov-Algorithm---H_2-Molecule"]], "Setup": [[12, "Setup"]], "Computing the matrix elements": [[12, "Computing-the-matrix-elements"]], "Determining the ground state energy of the Subspace": [[12, "Determining-the-ground-state-energy-of-the-Subspace"]], "Factoring Integers With Shor\u2019s Algorithm": [[18, "Factoring-Integers-With-Shor's-Algorithm"]], "Shor\u2019s algorithm": [[18, "Shor's-algorithm"]], "Solving the order-finding problem classically": [[18, "Solving-the-order-finding-problem-classically"]], "Solving the order-finding problem with a quantum algorithm": [[18, "Solving-the-order-finding-problem-with-a-quantum-algorithm"]], "Inverse quantum Fourier transform": [[18, "Inverse-quantum-Fourier-transform"]], "Quantum kernels for modular exponentiation": [[18, "Quantum-kernels-for-modular-exponentiation"]], "The case N = 21 and a = 5:": [[18, "The-case-N-=-21-and-a-=-5:"]], "The case N = 21 and a = 4:": [[18, "The-case-N-=-21-and-a-=-4:"]], "Determining the order from the measurement results of the phase kernel": [[18, "Determining-the-order-from-the-measurement-results-of-the-phase-kernel"]], "Postscript": [[18, "Postscript"]], "Hybrid Quantum Neural Networks": [[11, "Hybrid-Quantum-Neural-Networks"]], "Quantum Volume": [[16, "Quantum-Volume"]], "Max-Cut with QAOA": [[13, "Max-Cut-with-QAOA"]], "Using the Hadamard Test to Determine Quantum Krylov Subspace Decomposition Matrix Elements": [[10, "Using-the-Hadamard-Test-to-Determine-Quantum-Krylov-Subspace-Decomposition-Matrix-Elements"]], "Numerical result as a reference:": [[10, "Numerical-result-as-a-reference:"]], "Using Sample to perform the Hadamard test": [[10, "Using-Sample-to-perform-the-Hadamard-test"]], "Multi-GPU evaluation of QKSD matrix elements using the Hadamard Test": [[10, "Multi-GPU-evaluation-of-QKSD-matrix-elements-using-the-Hadamard-Test"]], "Classically Diagonalize the Subspace Matrix": [[10, "Classically-Diagonalize-the-Subspace-Matrix"]], "Quantum Fourier Transform": [[14, "Quantum-Fourier-Transform"]], "Quantum Fourier Transform revisited": [[14, "Quantum-Fourier-Transform-revisited"]], "Readout Error Mitigation": [[17, "Readout-Error-Mitigation"]], "Inverse confusion matrix from single-qubit noise model": [[17, "Inverse-confusion-matrix-from-single-qubit-noise-model"]], "Inverse confusion matrix from k local confusion matrices": [[17, "Inverse-confusion-matrix-from-k-local-confusion-matrices"]], "Inverse of full confusion matrix": [[17, "Inverse-of-full-confusion-matrix"]], "Quantum Teleporation": [[15, "Quantum-Teleporation"]], "Teleportation explained": [[15, "Teleportation-explained"]], "Deutsch\u2019s Algorithm": [[7, "Deutsch's-Algorithm"]], "XOR \\oplus": [[7, "XOR-\\oplus"]], "Quantum oracles": [[7, "Quantum-oracles"]], "Phase oracle": [[7, "Phase-oracle"]], "Quantum parallelism": [[7, "Quantum-parallelism"]], "Deutschs\u2019 Algorithm:": [[7, "Deutschs'-Algorithm:"]], "Divisive Clustering With Coresets Using CUDA-Q": [[9, "Divisive-Clustering-With-Coresets-Using-CUDA-Q"]], "Data preprocessing": [[9, "Data-preprocessing"]], "Quantum functions": [[9, "Quantum-functions"]], "Divisive Clustering Function": [[9, "Divisive-Clustering-Function"]], "QAOA Implementation": [[9, "QAOA-Implementation"]], "Scaling simulations with CUDA-Q": [[9, "Scaling-simulations-with-CUDA-Q"]], "Quantum Operations": [[1, "quantum-operations"]], "Unitary Operations on Qubits": [[1, "unitary-operations-on-qubits"]], "x": [[1, "x"]], "y": [[1, "y"]], "z": [[1, "z"]], "h": [[1, "h"]], "r1": [[1, "r1"]], "rx": [[1, "rx"]], "ry": [[1, "ry"]], "rz": [[1, "rz"]], "s": [[1, "s"]], "t": [[1, "t"]], "swap": [[1, "swap"]], "u3": [[1, "u3"]], "Adjoint and Controlled Operations": [[1, "adjoint-and-controlled-operations"]], "Measurements on Qubits": [[1, "measurements-on-qubits"]], "mz": [[1, "mz"], [1, "id1"]], "mx": [[1, "mx"]], "my": [[1, "my"]], "User-Defined Custom Operations": [[1, "user-defined-custom-operations"]], "Photonic Operations on Qudits": [[1, "photonic-operations-on-qudits"]], "create": [[1, "create"]], "annihilate": [[1, "annihilate"]], "phase_shift": [[1, "phase-shift"]], "beam_splitter": [[1, "beam-splitter"]], "Bernstein-Vazirani Algorithm": [[5, "Bernstein-Vazirani-Algorithm"]], "Classical case": [[5, "Classical-case"]], "Quantum case": [[5, "Quantum-case"]], "Implementing in CUDA-Q": [[5, "Implementing-in-CUDA-Q"]], "Quantum Enhanced Auxiliary Field Quantum Monte Carlo": [[4, "Quantum-Enhanced-Auxiliary-Field-Quantum-Monte-Carlo"]], "Hamiltonian preparation for VQE": [[4, "Hamiltonian-preparation-for-VQE"]], "Run VQE with CUDA-Q": [[4, "Run-VQE-with-CUDA-Q"]], "Auxiliary Field Quantum Monte Carlo (AFQMC)": [[4, "Auxiliary-Field-Quantum-Monte-Carlo-(AFQMC)"]], "Preparation of the molecular Hamiltonian": [[4, "Preparation-of-the-molecular-Hamiltonian"]], "Preparation of the trial wave function": [[4, "Preparation-of-the-trial-wave-function"]], "Setup of the AFQMC parameters": [[4, "Setup-of-the-AFQMC-parameters"]], "Molecular docking via DC-QAOA": [[8, "Molecular-docking-via-DC-QAOA"]], "Setting up the Molecular Docking Problem": [[8, "Setting-up-the-Molecular-Docking-Problem"]], "CUDA-Q Implementation": [[8, "CUDA-Q-Implementation"]], "Code documentation": [[0, "code-documentation"]], "CUDA-Q API": [[0, null]], "Cost Minimization": [[6, "Cost-Minimization"]], "CUDA-Q Python API": [[3, "module-cudaq"]], "Program Construction": [[3, "program-construction"]], "Kernel Execution": [[3, "kernel-execution"]], "Dynamics": [[3, "dynamics"]], "Backend Configuration": [[3, "backend-configuration"]], "Data Types": [[3, "data-types"]], "Optimizers": [[3, "optimizers"]], "Gradients": [[3, "gradients"]], "MPI Submodule": [[3, "mpi-submodule"]], "ORCA Submodule": [[3, "orca-submodule"]], "CUDA-Q C++ API": [[2, "cuda-q-c-api"]], "Quantum": [[2, "quantum"]], "Common": [[2, "common"]], "Noise Modeling": [[2, "noise-modeling"]], "Kernel Builder": [[2, "kernel-builder"]], "Algorithms": [[2, "algorithms"]], "Platform": [[2, "platform"]], "Utilities": [[2, "utilities"]], "Namespaces": [[2, "namespaces"]]}, "indexentries": {"cudaq (c++ type)": [[2, "_CPPv45cudaq"]], "cudaq::basenvcfsimulatorqpu (c++ class)": [[2, "_CPPv4N5cudaq20BaseNvcfSimulatorQPUE"]], "cudaq::baseremoterestqpu (c++ class)": [[2, "_CPPv4N5cudaq17BaseRemoteRESTQPUE"]], "cudaq::baseremotesimulatorqpu (c++ class)": [[2, "_CPPv4N5cudaq22BaseRemoteSimulatorQPUE"]], "cudaq::cusvstate (c++ class)": [[2, "_CPPv4I0EN5cudaq9CusvStateE"]], "cudaq::executioncontext (c++ class)": [[2, "_CPPv4N5cudaq16ExecutionContextE"]], "cudaq::executioncontext::executioncontext (c++ function)": [[2, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE"], [2, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE"]], "cudaq::executioncontext::amplitudemaps (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13amplitudeMapsE"]], "cudaq::executioncontext::asyncexec (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext9asyncExecE"]], "cudaq::executioncontext::asyncresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext11asyncResultE"]], "cudaq::executioncontext::batchiteration (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext14batchIterationE"]], "cudaq::executioncontext::canhandleobserve (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext16canHandleObserveE"]], "cudaq::executioncontext::expectationvalue (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext16expectationValueE"]], "cudaq::executioncontext::futureresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext12futureResultE"]], "cudaq::executioncontext::hasconditionalsonmeasureresults (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext31hasConditionalsOnMeasureResultsE"]], "cudaq::executioncontext::invocationresultbuffer (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext22invocationResultBufferE"]], "cudaq::executioncontext::kernelname (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10kernelNameE"]], "cudaq::executioncontext::kerneltrace (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext11kernelTraceE"]], "cudaq::executioncontext::name (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext4nameE"]], "cudaq::executioncontext::noisemodel (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10noiseModelE"]], "cudaq::executioncontext::optresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext9optResultE"]], "cudaq::executioncontext::overlapcomputestates (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext20overlapComputeStatesE"]], "cudaq::executioncontext::overlapresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13overlapResultE"]], "cudaq::executioncontext::registernames (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13registerNamesE"]], "cudaq::executioncontext::reorderidx (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10reorderIdxE"]], "cudaq::executioncontext::result (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext6resultE"]], "cudaq::executioncontext::shots (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext5shotsE"]], "cudaq::executioncontext::simulationstate (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext15simulationStateE"]], "cudaq::executioncontext::spin (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext4spinE"]], "cudaq::executioncontext::totaliterations (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext15totalIterationsE"]], "cudaq::executionresult (c++ struct)": [[2, "_CPPv4N5cudaq15ExecutionResultE"]], "cudaq::executionresult::executionresult (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEv"]], "cudaq::executionresult::appendresult (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE"]], "cudaq::executionresult::deserialize (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE"]], "cudaq::executionresult::operator= (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult"]], "cudaq::executionresult::operator== (c++ function)": [[2, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult"]], "cudaq::executionresult::registername (c++ member)": [[2, "_CPPv4N5cudaq15ExecutionResult12registerNameE"]], "cudaq::executionresult::sequentialdata (c++ member)": [[2, "_CPPv4N5cudaq15ExecutionResult14sequentialDataE"]], "cudaq::executionresult::serialize (c++ function)": [[2, "_CPPv4NK5cudaq15ExecutionResult9serializeEv"]], "cudaq::fermioniqbaseqpu (c++ class)": [[2, "_CPPv4N5cudaq16FermioniqBaseQPUE"]], "cudaq::kernelexecutiontask (c++ type)": [[2, "_CPPv4N5cudaq19KernelExecutionTaskE"]], "cudaq::kernelthunkresulttype (c++ struct)": [[2, "_CPPv4N5cudaq21KernelThunkResultTypeE"]], "cudaq::kernelthunktype (c++ type)": [[2, "_CPPv4N5cudaq15KernelThunkTypeE"]], "cudaq::orcaremoterestqpu (c++ class)": [[2, "_CPPv4N5cudaq17OrcaRemoteRESTQPUE"]], "cudaq::qpu (c++ class)": [[2, "_CPPv4N5cudaq3QPUE"]], "cudaq::qpu::qpu (c++ function)": [[2, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE"], [2, "_CPPv4N5cudaq3QPU3QPUERR3QPU"], [2, "_CPPv4N5cudaq3QPU3QPUEv"]], "cudaq::qpu::enqueue (c++ function)": [[2, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask"]], "cudaq::qpu::getconnectivity (c++ function)": [[2, "_CPPv4N5cudaq3QPU15getConnectivityEv"]], "cudaq::qpu::getexecutionthreadid (c++ function)": [[2, "_CPPv4NK5cudaq3QPU20getExecutionThreadIdEv"]], "cudaq::qpu::getnumqubits (c++ function)": [[2, "_CPPv4N5cudaq3QPU12getNumQubitsEv"]], "cudaq::qpu::getremotecapabilities (c++ function)": [[2, "_CPPv4NK5cudaq3QPU21getRemoteCapabilitiesEv"]], "cudaq::qpu::isemulated (c++ function)": [[2, "_CPPv4N5cudaq3QPU10isEmulatedEv"]], "cudaq::qpu::issimulator (c++ function)": [[2, "_CPPv4N5cudaq3QPU11isSimulatorEv"]], "cudaq::qpu::launchkernel (c++ function)": [[2, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE"], [2, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE"]], "cudaq::qpu::launchserializedcodeexecution (c++ function)": [[2, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE"]], "cudaq::qpu::onrandomseedset (c++ function)": [[2, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE"]], "cudaq::qpu::resetexecutioncontext (c++ function)": [[2, "_CPPv4N5cudaq3QPU21resetExecutionContextEv"]], "cudaq::qpu::setexecutioncontext (c++ function)": [[2, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext"]], "cudaq::qpu::setid (c++ function)": [[2, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE"]], "cudaq::qpu::setshots (c++ function)": [[2, "_CPPv4N5cudaq3QPU8setShotsEi"]], "cudaq::qpu::supportsconditionalfeedback (c++ function)": [[2, "_CPPv4N5cudaq3QPU27supportsConditionalFeedbackEv"]], "cudaq::qpu::~qpu (c++ function)": [[2, "_CPPv4N5cudaq3QPUD0Ev"]], "cudaq::querabaseqpu (c++ class)": [[2, "_CPPv4N5cudaq12QuEraBaseQPUE"]], "cudaq::quakevalue (c++ class)": [[2, "_CPPv4N5cudaq10QuakeValueE"]], "cudaq::quakevalue::quakevalue (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE"], [2, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd"]], "cudaq::quakevalue::canvalidatenumelements (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue22canValidateNumElementsEv"]], "cudaq::quakevalue::constantsize (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue12constantSizeEv"]], "cudaq::quakevalue::dump (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue4dumpERNSt7ostreamE"], [2, "_CPPv4N5cudaq10QuakeValue4dumpEv"]], "cudaq::quakevalue::getrequiredelements (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue19getRequiredElementsEv"]], "cudaq::quakevalue::getvalue (c++ function)": [[2, "_CPPv4NK5cudaq10QuakeValue8getValueEv"]], "cudaq::quakevalue::inverse (c++ function)": [[2, "_CPPv4NK5cudaq10QuakeValue7inverseEv"]], "cudaq::quakevalue::isstdvec (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue8isStdVecEv"]], "cudaq::quakevalue::operator* (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuemlEKd"]], "cudaq::quakevalue::operator+ (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValueplEKd"], [2, "_CPPv4N5cudaq10QuakeValueplEKi"]], "cudaq::quakevalue::operator- (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuemiEKd"], [2, "_CPPv4N5cudaq10QuakeValuemiEKi"], [2, "_CPPv4NK5cudaq10QuakeValuemiEv"]], "cudaq::quakevalue::operator/ (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuedvEKd"]], "cudaq::quakevalue::operator[] (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE"], [2, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue"]], "cudaq::quakevalue::size (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue4sizeEv"]], "cudaq::quakevalue::slice (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE"]], "cudaq::quantumtask (c++ type)": [[2, "_CPPv4N5cudaq11QuantumTaskE"]], "cudaq::qubitconnectivity (c++ type)": [[2, "_CPPv4N5cudaq17QubitConnectivityE"]], "cudaq::qubitedge (c++ type)": [[2, "_CPPv4N5cudaq9QubitEdgeE"]], "cudaq::remotecapabilities (c++ struct)": [[2, "_CPPv4N5cudaq18RemoteCapabilitiesE"]], "cudaq::remotecapabilities::remotecapabilities (c++ function)": [[2, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb"]], "cudaq::remotecapabilities::isremotesimulator (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities17isRemoteSimulatorE"]], "cudaq::remotecapabilities::serializedcodeexec (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities18serializedCodeExecE"]], "cudaq::remotecapabilities::stateoverlap (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities12stateOverlapE"]], "cudaq::remotecapabilities::vqe (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities3vqeE"]], "cudaq::remotesimulationstate (c++ class)": [[2, "_CPPv4N5cudaq21RemoteSimulationStateE"]], "cudaq::resources (c++ class)": [[2, "_CPPv4N5cudaq9ResourcesE"]], "cudaq::serializedcodeexecutioncontext (c++ class)": [[2, "_CPPv4N5cudaq30SerializedCodeExecutionContextE"]], "cudaq::simulationstate (c++ class)": [[2, "_CPPv4N5cudaq15SimulationStateE"]], "cudaq::simulationstate::tensor (c++ struct)": [[2, "_CPPv4N5cudaq15SimulationState6TensorE"]], "cudaq::simulationstate::precision (c++ enum)": [[2, "_CPPv4N5cudaq15SimulationState9precisionE"]], "cudaq::simulationstate::precision::fp32 (c++ enumerator)": [[2, "_CPPv4N5cudaq15SimulationState9precision4fp32E"]], "cudaq::simulationstate::precision::fp64 (c++ enumerator)": [[2, "_CPPv4N5cudaq15SimulationState9precision4fp64E"]], "cudaq::tensorstatedata (c++ type)": [[2, "_CPPv4N5cudaq15TensorStateDataE"]], "cudaq::trace (c++ class)": [[2, "_CPPv4N5cudaq5TraceE"]], "cudaq::amplitude_damping_channel (c++ class)": [[2, "_CPPv4N5cudaq25amplitude_damping_channelE"]], "cudaq::async_result (c++ class)": [[2, "_CPPv4I0EN5cudaq12async_resultE"]], "cudaq::async_result::get (c++ function)": [[2, "_CPPv4N5cudaq12async_result3getEv"]], "cudaq::async_sample_result (c++ type)": [[2, "_CPPv4N5cudaq19async_sample_resultE"]], "cudaq::bit_flip_channel (c++ class)": [[2, "_CPPv4N5cudaq16bit_flip_channelE"]], "cudaq::complex (c++ type)": [[2, "_CPPv4N5cudaq7complexE"]], "cudaq::complex_matrix (c++ class)": [[2, "_CPPv4N5cudaq14complex_matrixE"]], "cudaq::complex_matrix::cols (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4colsEv"]], "cudaq::complex_matrix::complex_matrix (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE"], [2, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE"]], "cudaq::complex_matrix::data (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4dataEv"]], "cudaq::complex_matrix::dump (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE"], [2, "_CPPv4N5cudaq14complex_matrix4dumpEv"]], "cudaq::complex_matrix::eigenvalues (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix11eigenvaluesEv"]], "cudaq::complex_matrix::eigenvectors (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix12eigenvectorsEv"]], "cudaq::complex_matrix::minimal_eigenvalue (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix18minimal_eigenvalueEv"]], "cudaq::complex_matrix::operator() (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE"]], "cudaq::complex_matrix::operator* (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix"], [2, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE"]], "cudaq::complex_matrix::rows (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4rowsEv"]], "cudaq::complex_matrix::set_zero (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix8set_zeroEv"]], "cudaq::complex_matrix::value_type (c++ type)": [[2, "_CPPv4N5cudaq14complex_matrix10value_typeE"]], "cudaq::depolarization_channel (c++ class)": [[2, "_CPPv4N5cudaq22depolarization_channelE"]], "cudaq::details (c++ type)": [[2, "_CPPv4N5cudaq7detailsE"]], "cudaq::details::kernelbuildertype (c++ class)": [[2, "_CPPv4N5cudaq7details17KernelBuilderTypeE"]], "cudaq::details::kernelbuildertype::kernelbuildertype (c++ function)": [[2, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE"]], "cudaq::details::kernelbuildertype::create (c++ function)": [[2, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE"]], "cudaq::details::future (c++ class)": [[2, "_CPPv4N5cudaq7details6futureE"]], "cudaq::details::future::future (c++ function)": [[2, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE"], [2, "_CPPv4N5cudaq7details6future6futureERR6future"], [2, "_CPPv4N5cudaq7details6future6futureEv"]], "cudaq::details::kernel_builder_base (c++ class)": [[2, "_CPPv4N5cudaq7details19kernel_builder_baseE"]], "cudaq::details::kernel_builder_base::operator<< (c++ function)": [[2, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base"]], "cudaq::draw (c++ function)": [[2, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args"]], "cudaq::dyn (c++ member)": [[2, "_CPPv4N5cudaq3dynE"]], "cudaq::gradient (c++ class)": [[2, "_CPPv4N5cudaq8gradientE"]], "cudaq::gradient::clone (c++ function)": [[2, "_CPPv4N5cudaq8gradient5cloneEv"]], "cudaq::gradient::compute (c++ function)": [[2, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradient::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq8gradient8gradientEv"]], "cudaq::gradient::setargs (c++ function)": [[2, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args"]], "cudaq::gradient::setkernel (c++ function)": [[2, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel"]], "cudaq::gradients::central_difference (c++ class)": [[2, "_CPPv4N5cudaq9gradients18central_differenceE"]], "cudaq::gradients::central_difference::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients18central_difference5cloneEv"]], "cudaq::gradients::central_difference::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::central_difference::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients18central_difference8gradientEv"]], "cudaq::gradients::forward_difference (c++ class)": [[2, "_CPPv4N5cudaq9gradients18forward_differenceE"]], "cudaq::gradients::forward_difference::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients18forward_difference5cloneEv"]], "cudaq::gradients::forward_difference::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::forward_difference::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients18forward_difference8gradientEv"]], "cudaq::gradients::parameter_shift (c++ class)": [[2, "_CPPv4N5cudaq9gradients15parameter_shiftE"]], "cudaq::gradients::parameter_shift::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients15parameter_shift5cloneEv"]], "cudaq::gradients::parameter_shift::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::parameter_shift::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients15parameter_shift8gradientEv"]], "cudaq::kernel_builder (c++ class)": [[2, "_CPPv4IDpEN5cudaq14kernel_builderE"]], "cudaq::kernel_builder::constantval (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder11constantValEd"]], "cudaq::kernel_builder::getarguments (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder12getArgumentsEv"]], "cudaq::kernel_builder::getnumparams (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder12getNumParamsEv"]], "cudaq::kernel_builder::isargstdvec (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE"]], "cudaq::kernel_builder::kernel_builder (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE"]], "cudaq::kernel_builder::name (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder4nameEv"]], "cudaq::kernel_builder::qalloc (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue"], [2, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE"], [2, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE"], [2, "_CPPv4N5cudaq14kernel_builder6qallocEv"]], "cudaq::kernel_builder::swap (c++ function)": [[2, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue"], [2, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue"], [2, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue"]], "cudaq::kraus_channel (c++ class)": [[2, "_CPPv4N5cudaq13kraus_channelE"]], "cudaq::kraus_channel::empty (c++ function)": [[2, "_CPPv4NK5cudaq13kraus_channel5emptyEv"]], "cudaq::kraus_channel::get_ops (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channel7get_opsEv"]], "cudaq::kraus_channel::kraus_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelEv"]], "cudaq::kraus_channel::noise_type (c++ member)": [[2, "_CPPv4N5cudaq13kraus_channel10noise_typeE"]], "cudaq::kraus_channel::operator= (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel"]], "cudaq::kraus_channel::operator[] (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE"]], "cudaq::kraus_channel::parameters (c++ member)": [[2, "_CPPv4N5cudaq13kraus_channel10parametersE"]], "cudaq::kraus_channel::push_back (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op"]], "cudaq::kraus_channel::size (c++ function)": [[2, "_CPPv4NK5cudaq13kraus_channel4sizeEv"]], "cudaq::kraus_op (c++ struct)": [[2, "_CPPv4N5cudaq8kraus_opE"]], "cudaq::kraus_op::adjoint (c++ function)": [[2, "_CPPv4NK5cudaq8kraus_op7adjointEv"]], "cudaq::kraus_op::data (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op4dataE"]], "cudaq::kraus_op::kraus_op (c++ function)": [[2, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE"], [2, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE"], [2, "_CPPv4N5cudaq8kraus_op8kraus_opERK8kraus_op"]], "cudaq::kraus_op::ncols (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op5nColsE"]], "cudaq::kraus_op::nrows (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op5nRowsE"]], "cudaq::kraus_op::operator= (c++ function)": [[2, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op"]], "cudaq::mpi (c++ type)": [[2, "_CPPv4N5cudaq3mpiE"]], "cudaq::mpi::all_gather (c++ function)": [[2, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE"], [2, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE"]], "cudaq::mpi::all_reduce (c++ function)": [[2, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction"], [2, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func"]], "cudaq::mpi::broadcast (c++ function)": [[2, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi"], [2, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi"]], "cudaq::mpi::finalize (c++ function)": [[2, "_CPPv4N5cudaq3mpi8finalizeEv"]], "cudaq::mpi::initialize (c++ function)": [[2, "_CPPv4N5cudaq3mpi10initializeEiPPc"], [2, "_CPPv4N5cudaq3mpi10initializeEv"]], "cudaq::mpi::is_initialized (c++ function)": [[2, "_CPPv4N5cudaq3mpi14is_initializedEv"]], "cudaq::mpi::num_ranks (c++ function)": [[2, "_CPPv4N5cudaq3mpi9num_ranksEv"]], "cudaq::mpi::rank (c++ function)": [[2, "_CPPv4N5cudaq3mpi4rankEv"]], "cudaq::noise_model (c++ class)": [[2, "_CPPv4N5cudaq11noise_modelE"]], "cudaq::noise_model::predicatefuncty (c++ type)": [[2, "_CPPv4N5cudaq11noise_model15PredicateFuncTyE"]], "cudaq::noise_model::add_all_qubit_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli"], [2, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli"]], "cudaq::noise_model::add_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy"], [2, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel"], [2, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy"], [2, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel"]], "cudaq::noise_model::empty (c++ function)": [[2, "_CPPv4NK5cudaq11noise_model5emptyEv"]], "cudaq::noise_model::get_channels (c++ function)": [[2, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE"], [2, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE"]], "cudaq::noise_model::noise_model (c++ function)": [[2, "_CPPv4N5cudaq11noise_model11noise_modelEv"]], "cudaq::noise_model_type (c++ enum)": [[2, "_CPPv4N5cudaq16noise_model_typeE"]], "cudaq::noise_model_type::amplitude_damping_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type25amplitude_damping_channelE"]], "cudaq::noise_model_type::bit_flip_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type16bit_flip_channelE"]], "cudaq::noise_model_type::depolarization_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type22depolarization_channelE"]], "cudaq::noise_model_type::phase_flip_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type18phase_flip_channelE"]], "cudaq::noise_model_type::unknown (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type7unknownE"]], "cudaq::num_available_gpus (c++ function)": [[2, "_CPPv4N5cudaq18num_available_gpusEv"]], "cudaq::observe_result (c++ class)": [[2, "_CPPv4N5cudaq14observe_resultE"]], "cudaq::observe_result::counts (c++ function)": [[2, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType"]], "cudaq::observe_result::dump (c++ function)": [[2, "_CPPv4N5cudaq14observe_result4dumpEv"]], "cudaq::observe_result::expectation (c++ function)": [[2, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType"], [2, "_CPPv4N5cudaq14observe_result11expectationEv"]], "cudaq::observe_result::id_coefficient (c++ function)": [[2, "_CPPv4N5cudaq14observe_result14id_coefficientEv"]], "cudaq::observe_result::observe_result (c++ function)": [[2, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op"], [2, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result"]], "cudaq::observe_result::operator double (c++ function)": [[2, "_CPPv4N5cudaq14observe_resultcvdEv"]], "cudaq::observe_result::raw_data (c++ function)": [[2, "_CPPv4N5cudaq14observe_result8raw_dataEv"]], "cudaq::optimizable_function (c++ class)": [[2, "_CPPv4N5cudaq20optimizable_functionE"]], "cudaq::optimization_result (c++ type)": [[2, "_CPPv4N5cudaq19optimization_resultE"]], "cudaq::optimizer (c++ class)": [[2, "_CPPv4N5cudaq9optimizerE"]], "cudaq::optimizer::optimize (c++ function)": [[2, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function"]], "cudaq::optimizer::requiresgradients (c++ function)": [[2, "_CPPv4N5cudaq9optimizer17requiresGradientsEv"]], "cudaq::orca (c++ type)": [[2, "_CPPv4N5cudaq4orcaE"]], "cudaq::orca::sample (c++ function)": [[2, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE"], [2, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE"]], "cudaq::orca::sample_async (c++ function)": [[2, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE"], [2, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE"]], "cudaq::phase_flip_channel (c++ class)": [[2, "_CPPv4N5cudaq18phase_flip_channelE"]], "cudaq::qreg (c++ class)": [[2, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE"]], "cudaq::qreg::back (c++ function)": [[2, "_CPPv4N5cudaq4qreg4backENSt6size_tE"], [2, "_CPPv4N5cudaq4qreg4backEv"]], "cudaq::qreg::begin (c++ function)": [[2, "_CPPv4N5cudaq4qreg5beginEv"]], "cudaq::qreg::clear (c++ function)": [[2, "_CPPv4N5cudaq4qreg5clearEv"]], "cudaq::qreg::front (c++ function)": [[2, "_CPPv4N5cudaq4qreg5frontENSt6size_tE"], [2, "_CPPv4N5cudaq4qreg5frontEv"]], "cudaq::qreg::operator[] (c++ function)": [[2, "_CPPv4N5cudaq4qregixEKNSt6size_tE"]], "cudaq::qreg::size (c++ function)": [[2, "_CPPv4NK5cudaq4qreg4sizeEv"]], "cudaq::qreg::slice (c++ function)": [[2, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE"]], "cudaq::qreg::value_type (c++ type)": [[2, "_CPPv4N5cudaq4qreg10value_typeE"]], "cudaq::qspan (c++ class)": [[2, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE"]], "cudaq::quantum_platform (c++ class)": [[2, "_CPPv4N5cudaq16quantum_platformE"]], "cudaq::quantum_platform::clear_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform11clear_shotsEv"]], "cudaq::quantum_platform::connectivity (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12connectivityEv"]], "cudaq::quantum_platform::enqueueasynctask (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask"], [2, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE"]], "cudaq::quantum_platform::getlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12getLogStreamEv"]], "cudaq::quantum_platform::get_current_qpu (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15get_current_qpuEv"]], "cudaq::quantum_platform::get_exec_ctx (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform12get_exec_ctxEv"]], "cudaq::quantum_platform::get_num_qubits (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE"], [2, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsEv"]], "cudaq::quantum_platform::get_remote_capabilities (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE"]], "cudaq::quantum_platform::get_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9get_shotsEv"]], "cudaq::quantum_platform::is_emulated (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE"]], "cudaq::quantum_platform::is_remote (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE"]], "cudaq::quantum_platform::is_simulator (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE"]], "cudaq::quantum_platform::launchvqe (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE"]], "cudaq::quantum_platform::list_platforms (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14list_platformsEv"]], "cudaq::quantum_platform::name (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform4nameEv"]], "cudaq::quantum_platform::num_qpus (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform8num_qpusEv"]], "cudaq::quantum_platform::onrandomseedset (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE"]], "cudaq::quantum_platform::resetlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14resetLogStreamEv"]], "cudaq::quantum_platform::reset_exec_ctx (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE"]], "cudaq::quantum_platform::reset_noise (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform11reset_noiseEv"]], "cudaq::quantum_platform::setlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE"]], "cudaq::quantum_platform::settargetbackend (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE"]], "cudaq::quantum_platform::set_current_qpu (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE"]], "cudaq::quantum_platform::set_exec_ctx (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE"]], "cudaq::quantum_platform::set_noise (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model"]], "cudaq::quantum_platform::set_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9set_shotsEi"]], "cudaq::quantum_platform::supports_conditional_feedback (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE"]], "cudaq::quantum_platform::supports_task_distribution (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform26supports_task_distributionEv"]], "cudaq::qubit (c++ type)": [[2, "_CPPv4N5cudaq5qubitE"]], "cudaq::qudit (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq5quditE"]], "cudaq::qudit::qudit (c++ function)": [[2, "_CPPv4N5cudaq5qudit5quditEv"]], "cudaq::qvector (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE"]], "cudaq::qvector::back (c++ function)": [[2, "_CPPv4N5cudaq7qvector4backENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector4backEv"]], "cudaq::qvector::begin (c++ function)": [[2, "_CPPv4N5cudaq7qvector5beginEv"]], "cudaq::qvector::clear (c++ function)": [[2, "_CPPv4N5cudaq7qvector5clearEv"]], "cudaq::qvector::end (c++ function)": [[2, "_CPPv4N5cudaq7qvector3endEv"]], "cudaq::qvector::front (c++ function)": [[2, "_CPPv4N5cudaq7qvector5frontENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector5frontEv"]], "cudaq::qvector::operator= (c++ function)": [[2, "_CPPv4N5cudaq7qvectoraSERK7qvector"]], "cudaq::qvector::operator[] (c++ function)": [[2, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE"]], "cudaq::qvector::qvector (c++ function)": [[2, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector7qvectorERK5state"], [2, "_CPPv4N5cudaq7qvector7qvectorERK7qvector"], [2, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb"], [2, "_CPPv4N5cudaq7qvector7qvectorERR7qvector"]], "cudaq::qvector::size (c++ function)": [[2, "_CPPv4NK5cudaq7qvector4sizeEv"]], "cudaq::qvector::slice (c++ function)": [[2, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE"]], "cudaq::qvector::value_type (c++ type)": [[2, "_CPPv4N5cudaq7qvector10value_typeE"]], "cudaq::qview (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE"]], "cudaq::qview::value_type (c++ type)": [[2, "_CPPv4N5cudaq5qview10value_typeE"]], "cudaq::range (c++ function)": [[2, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType"], [2, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType"], [2, "_CPPv4N5cudaq5rangeENSt6size_tE"]], "cudaq::real (c++ type)": [[2, "_CPPv4N5cudaq4realE"]], "cudaq::registry (c++ type)": [[2, "_CPPv4N5cudaq8registryE"]], "cudaq::registry::registeredtype (c++ class)": [[2, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE"]], "cudaq::sample_result (c++ class)": [[2, "_CPPv4N5cudaq13sample_resultE"]], "cudaq::sample_result::append (c++ function)": [[2, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult"]], "cudaq::sample_result::begin (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5beginEv"], [2, "_CPPv4NK5cudaq13sample_result5beginEv"]], "cudaq::sample_result::cbegin (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result6cbeginEv"]], "cudaq::sample_result::cend (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result4cendEv"]], "cudaq::sample_result::clear (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5clearEv"]], "cudaq::sample_result::count (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE"]], "cudaq::sample_result::deserialize (c++ function)": [[2, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE"]], "cudaq::sample_result::dump (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE"], [2, "_CPPv4NK5cudaq13sample_result4dumpEv"]], "cudaq::sample_result::end (c++ function)": [[2, "_CPPv4N5cudaq13sample_result3endEv"], [2, "_CPPv4NK5cudaq13sample_result3endEv"]], "cudaq::sample_result::exp_val_z (c++ function)": [[2, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE"]], "cudaq::sample_result::expectation (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE"]], "cudaq::sample_result::get_marginal (c++ function)": [[2, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE"], [2, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE"]], "cudaq::sample_result::has_even_parity (c++ function)": [[2, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE"]], "cudaq::sample_result::has_expectation (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE"]], "cudaq::sample_result::most_probable (c++ function)": [[2, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE"]], "cudaq::sample_result::operator+= (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultpLERK13sample_result"]], "cudaq::sample_result::operator= (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultaSER13sample_result"]], "cudaq::sample_result::operator== (c++ function)": [[2, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result"]], "cudaq::sample_result::probability (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE"]], "cudaq::sample_result::register_names (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result14register_namesEv"]], "cudaq::sample_result::reorder (c++ function)": [[2, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE"]], "cudaq::sample_result::sample_result (c++ function)": [[2, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERK13sample_result"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult"], [2, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE"], [2, "_CPPv4N5cudaq13sample_result13sample_resultEv"]], "cudaq::sample_result::serialize (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result9serializeEv"]], "cudaq::sample_result::size (c++ function)": [[2, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE"]], "cudaq::sample_result::to_map (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE"]], "cudaq::sample_result::~sample_result (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultD0Ev"]], "cudaq::set_noise (c++ function)": [[2, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE"]], "cudaq::set_random_seed (c++ function)": [[2, "_CPPv4N5cudaq15set_random_seedENSt6size_tE"]], "cudaq::simulation_precision (c++ enum)": [[2, "_CPPv4N5cudaq20simulation_precisionE"]], "cudaq::simulation_precision::fp32 (c++ enumerator)": [[2, "_CPPv4N5cudaq20simulation_precision4fp32E"]], "cudaq::simulation_precision::fp64 (c++ enumerator)": [[2, "_CPPv4N5cudaq20simulation_precision4fp64E"]], "cudaq::spin_op (c++ class)": [[2, "_CPPv4N5cudaq7spin_opE"]], "cudaq::spin_op::begin (c++ function)": [[2, "_CPPv4N5cudaq7spin_op5beginEv"], [2, "_CPPv4NK5cudaq7spin_op5beginEv"]], "cudaq::spin_op::csr_spmatrix (c++ type)": [[2, "_CPPv4N5cudaq7spin_op12csr_spmatrixE"]], "cudaq::spin_op::distribute_terms (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE"]], "cudaq::spin_op::dump (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op4dumpEv"]], "cudaq::spin_op::end (c++ function)": [[2, "_CPPv4N5cudaq7spin_op3endEv"], [2, "_CPPv4NK5cudaq7spin_op3endEv"]], "cudaq::spin_op::for_each_pauli (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op14for_each_pauliERRNSt8functionIFv5pauliNSt6size_tEEEE"]], "cudaq::spin_op::for_each_term (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op13for_each_termERRNSt8functionIFvR7spin_opEEE"]], "cudaq::spin_op::from_word (c++ function)": [[2, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE"]], "cudaq::spin_op::getdatarepresentation (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op21getDataRepresentationEv"]], "cudaq::spin_op::getdatatuple (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op12getDataTupleEv"]], "cudaq::spin_op::get_coefficient (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op15get_coefficientEv"]], "cudaq::spin_op::get_raw_data (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op12get_raw_dataEv"]], "cudaq::spin_op::is_identity (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op11is_identityEv"]], "cudaq::spin_op::iterator (c++ struct)": [[2, "_CPPv4I0EN5cudaq7spin_op8iteratorE"]], "cudaq::spin_op::num_qubits (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op10num_qubitsEv"]], "cudaq::spin_op::num_terms (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9num_termsEv"]], "cudaq::spin_op::operator*= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_opmLEKd"], [2, "_CPPv4N5cudaq7spin_opmLERK7spin_op"]], "cudaq::spin_op::operator+= (c++ function)": [[2, "_CPPv4N5cudaq7spin_oppLERK7spin_op"]], "cudaq::spin_op::operator-= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opmIERK7spin_op"]], "cudaq::spin_op::operator= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opaSERK7spin_op"]], "cudaq::spin_op::operator== (c++ function)": [[2, "_CPPv4NK5cudaq7spin_opeqERK7spin_op"]], "cudaq::spin_op::random (c++ function)": [[2, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj"]], "cudaq::spin_op::spin_op (c++ function)": [[2, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opEv"]], "cudaq::spin_op::spin_op_term (c++ type)": [[2, "_CPPv4N5cudaq7spin_op12spin_op_termE"]], "cudaq::spin_op::to_matrix (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9to_matrixEv"]], "cudaq::spin_op::to_sparse_matrix (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op16to_sparse_matrixEv"]], "cudaq::spin_op::to_string (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9to_stringEb"]], "cudaq::spin_op::~spin_op (c++ function)": [[2, "_CPPv4N5cudaq7spin_opD0Ev"]], "cudaq::state (c++ class)": [[2, "_CPPv4N5cudaq5stateE"]], "cudaq::state::amplitude (c++ function)": [[2, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE"]], "cudaq::state::amplitudes (c++ function)": [[2, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE"]], "cudaq::state::dump (c++ function)": [[2, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE"], [2, "_CPPv4NK5cudaq5state4dumpEv"]], "cudaq::state::from_data (c++ function)": [[2, "_CPPv4N5cudaq5state9from_dataERK10state_data"]], "cudaq::state::get_num_qubits (c++ function)": [[2, "_CPPv4NK5cudaq5state14get_num_qubitsEv"]], "cudaq::state::get_num_tensors (c++ function)": [[2, "_CPPv4NK5cudaq5state15get_num_tensorsEv"]], "cudaq::state::get_precision (c++ function)": [[2, "_CPPv4NK5cudaq5state13get_precisionEv"]], "cudaq::state::get_tensor (c++ function)": [[2, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE"]], "cudaq::state::get_tensors (c++ function)": [[2, "_CPPv4NK5cudaq5state11get_tensorsEv"]], "cudaq::state::is_on_gpu (c++ function)": [[2, "_CPPv4NK5cudaq5state9is_on_gpuEv"]], "cudaq::state::operator() (c++ function)": [[2, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE"], [2, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE"]], "cudaq::state::operator= (c++ function)": [[2, "_CPPv4N5cudaq5stateaSERR5state"]], "cudaq::state::operator[] (c++ function)": [[2, "_CPPv4NK5cudaq5stateixENSt6size_tE"]], "cudaq::state::overlap (c++ function)": [[2, "_CPPv4N5cudaq5state7overlapERK5state"]], "cudaq::state::state (c++ function)": [[2, "_CPPv4N5cudaq5state5stateEP15SimulationState"], [2, "_CPPv4N5cudaq5state5stateERK5state"]], "cudaq::state::to_host (c++ function)": [[2, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE"]], "cudaq::state_data (c++ type)": [[2, "_CPPv4N5cudaq10state_dataE"]], "cudaq::tensor (c++ type)": [[2, "_CPPv4N5cudaq6tensorE"]], "cudaq::unset_noise (c++ function)": [[2, "_CPPv4N5cudaq11unset_noiseEv"]], "nvqir::mpssimulationstate (c++ class)": [[2, "_CPPv4N5nvqir18MPSSimulationStateE"]], "nvqir::tensornetsimulationstate (c++ class)": [[2, "_CPPv4N5nvqir24TensorNetSimulationStateE"]], "amplitudedampingchannel (class in cudaq)": [[3, "cudaq.AmplitudeDampingChannel"]], "asyncevolveresult (class in cudaq)": [[3, "cudaq.AsyncEvolveResult"]], "asyncobserveresult (class in cudaq)": [[3, "cudaq.AsyncObserveResult"]], "asyncsampleresult (class in cudaq)": [[3, "cudaq.AsyncSampleResult"]], "asyncstateresult (class in cudaq)": [[3, "cudaq.AsyncStateResult"]], "baseintegrator (class in cudaq.operator.integrator)": [[3, "cudaq.operator.integrator.BaseIntegrator"]], "bitflipchannel (class in cudaq)": [[3, "cudaq.BitFlipChannel"]], "cobyla (class in cudaq.optimizers)": [[3, "cudaq.optimizers.COBYLA"]], "centraldifference (class in cudaq.gradients)": [[3, "cudaq.gradients.CentralDifference"]], "complexmatrix (class in cudaq)": [[3, "cudaq.ComplexMatrix"]], "cudensitymatstate (class in cudaq.operator.cudm_state)": [[3, "cudaq.operator.cudm_state.CuDensityMatState"]], "depolarizationchannel (class in cudaq)": [[3, "cudaq.DepolarizationChannel"]], "elementaryoperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ElementaryOperator"]], "evolveresult (class in cudaq)": [[3, "cudaq.EvolveResult"]], "forwarddifference (class in cudaq.gradients)": [[3, "cudaq.gradients.ForwardDifference"]], "gradientdescent (class in cudaq.optimizers)": [[3, "cudaq.optimizers.GradientDescent"]], "kernel (in module cudaq)": [[3, "cudaq.Kernel"]], "krauschannel (class in cudaq)": [[3, "cudaq.KrausChannel"]], "krausoperator (class in cudaq)": [[3, "cudaq.KrausOperator"]], "lbfgs (class in cudaq.optimizers)": [[3, "cudaq.optimizers.LBFGS"]], "neldermead (class in cudaq.optimizers)": [[3, "cudaq.optimizers.NelderMead"]], "noisemodel (class in cudaq)": [[3, "cudaq.NoiseModel"]], "observeresult (class in cudaq)": [[3, "cudaq.ObserveResult"]], "operatorsum (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.OperatorSum"]], "optimizationresult (class in cudaq)": [[3, "cudaq.OptimizationResult"]], "parametershift (class in cudaq.gradients)": [[3, "cudaq.gradients.ParameterShift"]], "phaseflipchannel (class in cudaq)": [[3, "cudaq.PhaseFlipChannel"]], "productoperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ProductOperator"]], "pykernel (class in cudaq)": [[3, "cudaq.PyKernel"]], "pykerneldecorator (class in cudaq)": [[3, "cudaq.PyKernelDecorator"]], "quakevalue (class in cudaq)": [[3, "cudaq.QuakeValue"]], "rydberghamiltonian (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.RydbergHamiltonian"]], "sampleresult (class in cudaq)": [[3, "cudaq.SampleResult"]], "scalaroperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ScalarOperator"]], "schedule (class in cudaq)": [[3, "cudaq.Schedule"]], "simulationprecision (class in cudaq)": [[3, "cudaq.SimulationPrecision"]], "spinoperator (class in cudaq)": [[3, "cudaq.SpinOperator"]], "spinoperator (class in cudaq.operator.definitions)": [[3, "cudaq.operator.definitions.SpinOperator"]], "state (class in cudaq)": [[3, "cudaq.State"]], "target (class in cudaq)": [[3, "cudaq.Target"]], "tensor (class in cudaq)": [[3, "cudaq.Tensor"]], "__add__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__add__"]], "__call__() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.__call__"]], "__getitem__() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.__getitem__"]], "__getitem__() (cudaq.krauschannel method)": [[3, "cudaq.KrausChannel.__getitem__"]], "__getitem__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__getitem__"]], "__getitem__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__getitem__"]], "__init__() (cudaq.amplitudedampingchannel method)": [[3, "cudaq.AmplitudeDampingChannel.__init__"]], "__init__() (cudaq.bitflipchannel method)": [[3, "cudaq.BitFlipChannel.__init__"]], "__init__() (cudaq.depolarizationchannel method)": [[3, "cudaq.DepolarizationChannel.__init__"]], "__init__() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.__init__"]], "__init__() (cudaq.phaseflipchannel method)": [[3, "cudaq.PhaseFlipChannel.__init__"]], "__init__() (cudaq.operator.expressions.rydberghamiltonian method)": [[3, "cudaq.operator.expressions.RydbergHamiltonian.__init__"]], "__iter__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__iter__"]], "__len__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__len__"]], "__mul__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__mul__"]], "__neg__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__neg__"]], "__radd__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__radd__"]], "__rmul__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__rmul__"]], "__rsub__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__rsub__"]], "__str__() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.__str__"]], "__str__() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.__str__"]], "__sub__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__sub__"]], "add_all_qubit_channel() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.add_all_qubit_channel"]], "add_channel() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.add_channel"]], "all_gather() (in module cudaq.mpi)": [[3, "cudaq.mpi.all_gather"]], "amplitude() (cudaq.state method)": [[3, "cudaq.State.amplitude"]], "amplitudes() (cudaq.state method)": [[3, "cudaq.State.amplitudes"]], "append() (cudaq.krauschannel method)": [[3, "cudaq.KrausChannel.append"]], "argument_count (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.argument_count"]], "arguments (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.arguments"]], "broadcast() (in module cudaq.mpi)": [[3, "cudaq.mpi.broadcast"]], "clear() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.clear"]], "col_count (cudaq.krausoperator property)": [[3, "cudaq.KrausOperator.col_count"]], "compile() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.compile"]], "compute() (cudaq.gradients.centraldifference method)": [[3, "cudaq.gradients.CentralDifference.compute"]], "compute() (cudaq.gradients.forwarddifference method)": [[3, "cudaq.gradients.ForwardDifference.compute"]], "compute() (cudaq.gradients.parametershift method)": [[3, "cudaq.gradients.ParameterShift.compute"]], "count() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.count"]], "counts() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.counts"]], "cudaq": [[3, "module-cudaq"]], "define() (cudaq.operator.expressions.elementaryoperator class method)": [[3, "cudaq.operator.expressions.ElementaryOperator.define"]], "description (cudaq.target property)": [[3, "cudaq.Target.description"]], "deserialize() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.deserialize"]], "draw() (in module cudaq)": [[3, "cudaq.draw"]], "dump() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.dump"]], "dump() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.dump"]], "dump() (cudaq.state method)": [[3, "cudaq.State.dump"]], "evolve() (in module cudaq)": [[3, "cudaq.evolve"]], "evolve_async() (in module cudaq)": [[3, "cudaq.evolve_async"]], "expectation() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.expectation"]], "expectation() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.expectation"]], "expectation_values() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.expectation_values"]], "expectation_z() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.expectation_z"]], "expectation_z() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.expectation_z"]], "extract_c_function_pointer() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.extract_c_function_pointer"]], "final_expectation_values() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.final_expectation_values"]], "final_state() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.final_state"]], "finalize() (in module cudaq.mpi)": [[3, "cudaq.mpi.finalize"]], "from_data() (cudaq.state static method)": [[3, "cudaq.State.from_data"]], "from_json() (cudaq.pykerneldecorator static method)": [[3, "cudaq.PyKernelDecorator.from_json"]], "from_json() (cudaq.gradients.centraldifference static method)": [[3, "cudaq.gradients.CentralDifference.from_json"]], "from_json() (cudaq.gradients.forwarddifference static method)": [[3, "cudaq.gradients.ForwardDifference.from_json"]], "from_json() (cudaq.gradients.parametershift static method)": [[3, "cudaq.gradients.ParameterShift.from_json"]], "from_json() (cudaq.optimizers.cobyla static method)": [[3, "cudaq.optimizers.COBYLA.from_json"]], "from_json() (cudaq.optimizers.gradientdescent static method)": [[3, "cudaq.optimizers.GradientDescent.from_json"]], "from_json() (cudaq.optimizers.lbfgs static method)": [[3, "cudaq.optimizers.LBFGS.from_json"]], "from_json() (cudaq.optimizers.neldermead static method)": [[3, "cudaq.optimizers.NelderMead.from_json"]], "get() (cudaq.asyncevolveresult method)": [[3, "cudaq.AsyncEvolveResult.get"]], "get() (cudaq.asyncobserveresult method)": [[3, "cudaq.AsyncObserveResult.get"]], "get() (cudaq.asyncsampleresult method)": [[3, "cudaq.AsyncSampleResult.get"]], "get() (cudaq.asyncstateresult method)": [[3, "cudaq.AsyncStateResult.get"]], "gettensor() (cudaq.state method)": [[3, "cudaq.State.getTensor"]], "gettensors() (cudaq.state method)": [[3, "cudaq.State.getTensors"]], "get_channels() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.get_channels"]], "get_marginal_counts() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_marginal_counts"]], "get_precision() (cudaq.target method)": [[3, "cudaq.Target.get_precision"]], "get_register_counts() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_register_counts"]], "get_sequential_data() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_sequential_data"]], "get_spin() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.get_spin"]], "get_state() (in module cudaq)": [[3, "cudaq.get_state"]], "get_state_async() (in module cudaq)": [[3, "cudaq.get_state_async"]], "get_target() (in module cudaq)": [[3, "cudaq.get_target"]], "get_targets() (in module cudaq)": [[3, "cudaq.get_targets"]], "gradient (class in cudaq.gradients)": [[3, "cudaq.gradients.gradient"]], "has_target() (in module cudaq)": [[3, "cudaq.has_target"]], "initial_parameters (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.initial_parameters"]], "initial_parameters (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.initial_parameters"]], "initial_parameters (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.initial_parameters"]], "initial_parameters (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.initial_parameters"]], "initialize() (in module cudaq.mpi)": [[3, "cudaq.mpi.initialize"]], "initialize_cudaq() (in module cudaq)": [[3, "cudaq.initialize_cudaq"]], "intermediate_states() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.intermediate_states"]], "is_emulated() (cudaq.target method)": [[3, "cudaq.Target.is_emulated"]], "is_initialized() (in module cudaq.mpi)": [[3, "cudaq.mpi.is_initialized"]], "is_on_gpu() (cudaq.state method)": [[3, "cudaq.State.is_on_gpu"]], "is_remote() (cudaq.target method)": [[3, "cudaq.Target.is_remote"]], "items() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.items"]], "kernel() (in module cudaq)": [[3, "cudaq.kernel"]], "lower_bounds (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.lower_bounds"]], "lower_bounds (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.lower_bounds"]], "lower_bounds (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.lower_bounds"]], "lower_bounds (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.lower_bounds"]], "make_kernel() (in module cudaq)": [[3, "cudaq.make_kernel"]], "max_iterations (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.max_iterations"]], "max_iterations (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.max_iterations"]], "max_iterations (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.max_iterations"]], "max_iterations (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.max_iterations"]], "merge_kernel() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.merge_kernel"]], "minimal_eigenvalue() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.minimal_eigenvalue"]], "module": [[3, "module-cudaq"]], "most_probable() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.most_probable"]], "name (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.name"]], "name (cudaq.simulationprecision property)": [[3, "cudaq.SimulationPrecision.name"]], "name (cudaq.target property)": [[3, "cudaq.Target.name"]], "num_available_gpus() (in module cudaq)": [[3, "cudaq.num_available_gpus"]], "num_columns() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.num_columns"]], "num_qpus() (cudaq.target method)": [[3, "cudaq.Target.num_qpus"]], "num_qubits() (cudaq.state method)": [[3, "cudaq.State.num_qubits"]], "num_ranks() (in module cudaq.mpi)": [[3, "cudaq.mpi.num_ranks"]], "num_rows() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.num_rows"]], "observe() (in module cudaq)": [[3, "cudaq.observe"]], "observe_async() (in module cudaq)": [[3, "cudaq.observe_async"]], "optimize() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.optimize"]], "optimize() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.optimize"]], "optimize() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.optimize"]], "optimize() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.optimize"]], "optimizer (class in cudaq.optimizers)": [[3, "cudaq.optimizers.optimizer"]], "overlap() (cudaq.state method)": [[3, "cudaq.State.overlap"]], "platform (cudaq.target property)": [[3, "cudaq.Target.platform"]], "probability() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.probability"]], "qreg (in module cudaq)": [[3, "cudaq.qreg"]], "qubit (class in cudaq)": [[3, "cudaq.qubit"]], "qvector (class in cudaq)": [[3, "cudaq.qvector"]], "rank() (in module cudaq.mpi)": [[3, "cudaq.mpi.rank"]], "register_names (cudaq.sampleresult attribute)": [[3, "cudaq.SampleResult.register_names"]], "requires_gradients() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.requires_gradients"]], "requires_gradients() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.requires_gradients"]], "requires_gradients() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.requires_gradients"]], "requires_gradients() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.requires_gradients"]], "reset_target() (in module cudaq)": [[3, "cudaq.reset_target"]], "row_count (cudaq.krausoperator property)": [[3, "cudaq.KrausOperator.row_count"]], "sample() (in module cudaq)": [[3, "cudaq.sample"]], "sample() (in module cudaq.orca)": [[3, "cudaq.orca.sample"]], "sample_async() (in module cudaq)": [[3, "cudaq.sample_async"]], "serialize() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.serialize"]], "set_noise() (in module cudaq)": [[3, "cudaq.set_noise"]], "set_random_seed() (in module cudaq)": [[3, "cudaq.set_random_seed"]], "set_target() (in module cudaq)": [[3, "cudaq.set_target"]], "simulator (cudaq.target property)": [[3, "cudaq.Target.simulator"]], "slice() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.slice"]], "spin.i() (in module cudaq)": [[3, "cudaq.spin.i"]], "spin.x() (in module cudaq)": [[3, "cudaq.spin.x"]], "spin.y() (in module cudaq)": [[3, "cudaq.spin.y"]], "spin.z() (in module cudaq)": [[3, "cudaq.spin.z"]], "synthesize_callable_arguments() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.synthesize_callable_arguments"]], "to_cupy_array() (in module cudaq.operator.cudm_state)": [[3, "cudaq.operator.cudm_state.to_cupy_array"]], "to_json() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.to_json"]], "to_json() (cudaq.gradients.centraldifference method)": [[3, "cudaq.gradients.CentralDifference.to_json"]], "to_json() (cudaq.gradients.forwarddifference method)": [[3, "cudaq.gradients.ForwardDifference.to_json"]], "to_json() (cudaq.gradients.parametershift method)": [[3, "cudaq.gradients.ParameterShift.to_json"]], "to_json() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.to_json"]], "to_json() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.to_json"]], "to_json() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.to_json"]], "to_json() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.to_json"]], "to_numpy() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.to_numpy"]], "translate() (in module cudaq)": [[3, "cudaq.translate"]], "type_to_str() (cudaq.pykerneldecorator static method)": [[3, "cudaq.PyKernelDecorator.type_to_str"]], "unset_noise() (in module cudaq)": [[3, "cudaq.unset_noise"]], "upper_bounds (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.upper_bounds"]], "upper_bounds (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.upper_bounds"]], "upper_bounds (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.upper_bounds"]], "upper_bounds (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.upper_bounds"]], "values() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.values"]], "vqe() (in module cudaq)": [[3, "cudaq.vqe"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api/api", "api/default_ops", "api/languages/cpp_api", "api/languages/python_api", "applications/python/afqmc", "applications/python/bernstein_vazirani", "applications/python/cost_minimization", "applications/python/deutschs_algorithm", "applications/python/digitized_counterdiabatic_qaoa", "applications/python/divisive_clustering_coresets", "applications/python/hadamard_test", "applications/python/hybrid_qnns", "applications/python/krylov", "applications/python/logical_aim_sqale", "applications/python/qaoa", "applications/python/quantum_fourier_transform", "applications/python/quantum_teleportation", "applications/python/quantum_volume", "applications/python/readout_error_mitigation", "applications/python/shors", "applications/python/trotter", "applications/python/unitary_compilation_diffusion_models", "applications/python/vqe", "applications/python/vqe_advanced", "examples/python/executing_kernels", "examples/python/executing_photonic_kernels", "examples/python/measuring_kernels", "examples/python/noisy_simulations", "examples/python/operators", "examples/python/optimizers_gradients", "examples/python/performance_optimizations", "examples/python/visualization", "index", "releases", "specification/cudaq", "specification/cudaq/algorithmic_primitives", "specification/cudaq/control_flow", "specification/cudaq/dynamic_kernels", "specification/cudaq/examples", "specification/cudaq/kernels", "specification/cudaq/machine_model", "specification/cudaq/namespace", "specification/cudaq/operations", "specification/cudaq/operators", "specification/cudaq/patterns", "specification/cudaq/platform", "specification/cudaq/synthesis", "specification/cudaq/types", "specification/index", "specification/quake-dialect", "using/applications", "using/backends/backends", "using/backends/dynamics", "using/backends/hardware", "using/backends/nvqc", "using/backends/platform", "using/backends/simulators", "using/basics/basics", "using/basics/build_kernel", "using/basics/kernel_intro", "using/basics/run_kernel", "using/basics/troubleshooting", "using/examples/building_kernels", "using/examples/examples", "using/examples/expectation_values", "using/examples/hardware_providers", "using/examples/introduction", "using/examples/multi_control", "using/examples/multi_gpu_workflows", "using/examples/photonic_operations", "using/examples/quantum_operations", "using/extending/cudaq_ir", "using/extending/extending", "using/extending/mlir_pass", "using/extending/nvqir_simulator", "using/install/data_center_install", "using/install/install", "using/install/local_installation", "using/integration/cmake_app", "using/integration/cuda_gpu", "using/integration/integration", "using/integration/libraries", "using/quick_start", "versions"], "filenames": ["api/api.rst", "api/default_ops.rst", "api/languages/cpp_api.rst", "api/languages/python_api.rst", "applications/python/afqmc.ipynb", "applications/python/bernstein_vazirani.ipynb", "applications/python/cost_minimization.ipynb", "applications/python/deutschs_algorithm.ipynb", "applications/python/digitized_counterdiabatic_qaoa.ipynb", "applications/python/divisive_clustering_coresets.ipynb", "applications/python/hadamard_test.ipynb", "applications/python/hybrid_qnns.ipynb", "applications/python/krylov.ipynb", "applications/python/logical_aim_sqale.ipynb", "applications/python/qaoa.ipynb", "applications/python/quantum_fourier_transform.ipynb", "applications/python/quantum_teleportation.ipynb", "applications/python/quantum_volume.ipynb", "applications/python/readout_error_mitigation.ipynb", "applications/python/shors.ipynb", "applications/python/trotter.ipynb", "applications/python/unitary_compilation_diffusion_models.ipynb", "applications/python/vqe.ipynb", "applications/python/vqe_advanced.ipynb", "examples/python/executing_kernels.ipynb", "examples/python/executing_photonic_kernels.ipynb", "examples/python/measuring_kernels.ipynb", "examples/python/noisy_simulations.ipynb", "examples/python/operators.ipynb", "examples/python/optimizers_gradients.ipynb", "examples/python/performance_optimizations.ipynb", "examples/python/visualization.ipynb", "index.rst", "releases.rst", "specification/cudaq.rst", "specification/cudaq/algorithmic_primitives.rst", "specification/cudaq/control_flow.rst", "specification/cudaq/dynamic_kernels.rst", "specification/cudaq/examples.rst", "specification/cudaq/kernels.rst", "specification/cudaq/machine_model.rst", "specification/cudaq/namespace.rst", "specification/cudaq/operations.rst", "specification/cudaq/operators.rst", "specification/cudaq/patterns.rst", "specification/cudaq/platform.rst", "specification/cudaq/synthesis.rst", "specification/cudaq/types.rst", "specification/index.rst", "specification/quake-dialect.md", "using/applications.rst", "using/backends/backends.rst", "using/backends/dynamics.rst", "using/backends/hardware.rst", "using/backends/nvqc.rst", "using/backends/platform.rst", "using/backends/simulators.rst", "using/basics/basics.rst", "using/basics/build_kernel.rst", "using/basics/kernel_intro.rst", "using/basics/run_kernel.rst", "using/basics/troubleshooting.rst", "using/examples/building_kernels.rst", "using/examples/examples.rst", "using/examples/expectation_values.rst", "using/examples/hardware_providers.rst", "using/examples/introduction.rst", "using/examples/multi_control.rst", "using/examples/multi_gpu_workflows.rst", "using/examples/photonic_operations.rst", "using/examples/quantum_operations.rst", "using/extending/cudaq_ir.rst", "using/extending/extending.rst", "using/extending/mlir_pass.rst", "using/extending/nvqir_simulator.rst", "using/install/data_center_install.rst", "using/install/install.rst", "using/install/local_installation.rst", "using/integration/cmake_app.rst", "using/integration/cuda_gpu.rst", "using/integration/integration.rst", "using/integration/libraries.rst", "using/quick_start.rst", "versions.rst"], "titles": ["Code documentation", "Quantum Operations", "CUDA-Q C++ API", "CUDA-Q Python API", "Quantum Enhanced Auxiliary Field Quantum Monte Carlo", "Bernstein-Vazirani Algorithm", "Cost Minimization", "Deutsch\u2019s Algorithm", "Molecular docking via DC-QAOA", "Divisive Clustering With Coresets Using CUDA-Q", "Using the Hadamard Test to Determine Quantum Krylov Subspace Decomposition Matrix Elements", "Hybrid Quantum Neural Networks", "Multi-reference Quantum Krylov Algorithm - \\(H_2\\) Molecule", "Anderson Impurity Model ground state solver on Infleqtion\u2019s Sqale", "Max-Cut with QAOA", "Quantum Fourier Transform", "Quantum Teleporation", "Quantum Volume", "Readout Error Mitigation", "Factoring Integers With Shor\u2019s Algorithm", "Computing Magnetization With The Suzuki-Trotter Approximation", "Compiling Unitaries Using Diffusion Models", "Variational Quantum Eigensolver", "VQE with gradients, active spaces, and gate fusion", "Executing Quantum Circuits", "Executing Quantum Photonic Circuits", "Measurements", "Noisy Simulation", "Operators", "Optimizers and Gradients", "Optimizing Performance", "Visualization", "CUDA-Q", "CUDA-Q Releases", "Language Specification", "12. Quantum Algorithmic Primitives", "8. Control Flow", "9. Just-in-Time Kernel Creation", "13. Example Programs", "6. Quantum Kernels", "1. Machine Model", "2. Namespace and Standard", "5. Quantum Intrinsic Operations", "4. Quantum Operators", "10. Common Quantum Programming Patterns", "11. Quantum Platform", "7. Sub-circuit Synthesis", "3. Quantum Types", "Specifications", "Quake Dialect", "CUDA-Q Applications", "CUDA-Q Backends", "CUDA-Q Dynamics", "CUDA-Q Hardware Backends", "NVIDIA Quantum Cloud", "Multi-Processor Platforms", "CUDA-Q Simulation Backends", "CUDA-Q Basics", "Building your first CUDA-Q Program", "What is a CUDA-Q kernel?", "Running your first CUDA-Q Program", "Troubleshooting", "Building Kernels", "CUDA-Q by Example", "Computing Expectation Values", "Using Quantum Hardware Providers", "Introduction", "Multi-control Synthesis", "Multi-GPU Workflows", "Photonics 101", "Quantum Computing 101", "Working with the CUDA-Q IR", "Extending CUDA-Q", "Create your own CUDA-Q Compiler Pass", "Extending CUDA-Q with a new Simulator", "Installation from Source", "Installation Guide", "Local Installation", "CUDA-Q and CMake", "Using CUDA and CUDA-Q in a Project", "Integration with other Software Tools", "Integrating with Third-Party Libraries", "Quick Start", "CUDA-Q Versions"], "terms": {"c": [0, 1, 3, 4, 9, 12, 14, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 52, 54, 55, 56, 58, 60, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 77, 78, 79, 82, 83], "python": [0, 1, 2, 9, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 46, 47, 50, 52, 54, 55, 56, 58, 60, 61, 62, 63, 64, 65, 66, 67, 74, 81, 82, 83], "quantum": [0, 3, 8, 14, 18, 20, 21, 23, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 40, 46, 48, 49, 51, 52, 53, 56, 58, 59, 60, 62, 63, 64, 66, 68, 71, 74, 75, 77, 78, 79, 81, 82, 83], "oper": [0, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 26, 27, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 44, 46, 47, 48, 49, 53, 54, 56, 58, 60, 62, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 77, 82, 83], "cuda": [1, 6, 7, 10, 11, 12, 14, 15, 17, 20, 24, 25, 27, 30, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 54, 55, 61, 62, 64, 65, 66, 67, 68, 69, 70, 80], "q": [1, 6, 7, 10, 11, 12, 14, 15, 17, 18, 19, 20, 24, 25, 26, 27, 28, 30, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 54, 55, 61, 62, 64, 65, 66, 67, 68, 69, 70, 80], "provid": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 15, 18, 19, 20, 21, 22, 27, 28, 29, 32, 34, 35, 37, 40, 42, 43, 45, 46, 47, 49, 52, 53, 54, 55, 56, 59, 63, 64, 66, 67, 69, 71, 73, 74, 75, 77, 78, 81], "default": [1, 2, 3, 20, 23, 24, 26, 31, 35, 39, 42, 47, 52, 53, 54, 55, 60, 65, 66, 71, 74, 75, 77, 79, 81, 82], "set": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 17, 18, 21, 23, 24, 30, 31, 32, 35, 37, 39, 42, 49, 52, 54, 55, 56, 58, 60, 65, 75, 77, 81, 82], "These": [1, 2, 8, 12, 13, 14, 17, 19, 21, 23, 27, 29, 34, 39, 42, 46, 47, 49, 51, 54, 55, 56, 71, 75, 77], "can": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 49, 51, 52, 53, 54, 55, 56, 58, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83], "us": [1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 39, 42, 43, 45, 46, 49, 52, 53, 54, 55, 56, 58, 59, 60, 62, 63, 64, 66, 68, 69, 70, 71, 73, 74, 75, 78, 81, 82, 83], "kernel": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 38, 40, 42, 43, 44, 45, 46, 47, 48, 53, 54, 56, 57, 58, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 79, 81, 82, 83], "librari": [1, 2, 8, 11, 13, 19, 22, 25, 31, 32, 33, 34, 38, 39, 41, 46, 47, 52, 56, 64, 71, 73, 74, 77, 79, 80, 83], "sinc": [1, 2, 4, 5, 7, 13, 14, 15, 16, 18, 19, 21, 24, 47, 51, 55, 56, 59, 64, 65, 68, 71, 77, 78, 81], "intrins": [1, 39, 46, 47, 49], "nativ": [1, 34, 40, 42, 43, 78], "support": [1, 2, 3, 4, 18, 24, 31, 32, 33, 34, 39, 40, 42, 44, 47, 52, 53, 59, 60, 65, 66, 69, 70, 73, 81, 82, 83], "specif": [1, 2, 3, 9, 12, 21, 26, 32, 35, 39, 41, 42, 43, 44, 47, 49, 52, 53, 54, 55, 56, 59, 60, 62, 66, 70, 71, 74, 75, 77, 79, 81], "target": [1, 2, 3, 7, 8, 9, 10, 11, 12, 14, 23, 24, 25, 27, 30, 31, 33, 35, 42, 45, 49, 52, 53, 54, 55, 56, 60, 62, 64, 65, 67, 70, 71, 73, 74, 75, 77, 82, 83], "depend": [1, 3, 7, 9, 12, 14, 16, 19, 20, 21, 26, 30, 32, 35, 40, 49, 54, 55, 56, 81, 82], "backend": [1, 2, 5, 6, 8, 9, 10, 13, 17, 23, 29, 30, 32, 33, 35, 52, 55, 60, 65, 68, 71, 74, 75, 77, 81, 82, 83], "architectur": [1, 2, 11, 32, 34, 40, 49, 53, 55, 65, 68, 70, 74, 75, 77, 82], "nvq": [1, 33, 35, 38, 53, 54, 55, 56, 60, 64, 65, 66, 67, 71, 74, 77, 78, 79, 81, 82, 83], "compil": [1, 2, 3, 9, 13, 32, 33, 34, 35, 38, 39, 40, 44, 46, 47, 53, 54, 55, 56, 60, 64, 65, 66, 67, 71, 74, 75, 77, 78, 79, 82, 83], "automat": [1, 3, 13, 23, 40, 53, 55, 56, 65, 75, 77, 81], "decompos": [1, 4, 17, 21], "appropri": [1, 2, 7, 8, 9, 15, 16, 34, 42, 55, 62, 75, 77], "The": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 60, 62, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 77, 79, 81, 82, 83], "section": [1, 7, 8, 10, 13, 15, 19, 21, 23, 28, 30, 37, 55, 56, 62, 75, 77, 81, 82], "list": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 28, 29, 31, 33, 35, 39, 51, 52, 53, 54, 56, 62, 65, 68, 69, 70, 75, 77, 81, 82, 83], "implement": [1, 2, 3, 4, 7, 10, 12, 14, 15, 16, 17, 19, 20, 21, 27, 34, 35, 40, 41, 42, 44, 46, 47, 49, 53, 56, 65, 66, 69, 71, 73, 74, 75, 77, 81], "transform": [1, 4, 7, 11, 12, 21, 23, 32, 34, 38, 71, 73], "state": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 31, 32, 33, 35, 39, 40, 42, 47, 49, 52, 53, 54, 58, 60, 62, 64, 65, 66, 68, 74, 75, 81, 82, 83], "ar": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 42, 44, 46, 47, 48, 49, 52, 53, 54, 55, 56, 59, 60, 62, 63, 64, 65, 66, 68, 69, 70, 71, 74, 75, 77, 79, 81, 82, 83], "templat": [1, 2, 22, 35, 37, 38, 39, 42, 46, 47, 66, 71, 73, 74, 79, 81], "argument": [1, 2, 3, 7, 9, 14, 16, 18, 24, 26, 31, 35, 37, 39, 46, 47, 52, 53, 58, 60, 64, 67, 68, 71, 74, 77, 81], "allow": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 16, 20, 21, 23, 24, 29, 33, 35, 37, 39, 40, 52, 56, 58, 59, 60, 67, 68, 69, 70, 71, 73, 77, 78, 83], "invok": [1, 2, 3, 35, 37, 39, 44, 52, 53, 56, 66, 71, 81], "version": [1, 3, 4, 5, 11, 13, 14, 15, 19, 21, 24, 25, 32, 33, 35, 44, 51, 52, 53, 54, 55, 56, 60, 71, 74, 75, 77, 78, 81, 82], "see": [1, 2, 3, 5, 6, 7, 8, 9, 15, 16, 17, 19, 21, 23, 30, 31, 33, 35, 37, 39, 47, 49, 51, 52, 53, 54, 55, 56, 58, 60, 66, 68, 69, 70, 71, 73, 75, 77, 78, 79, 81, 82, 83], "addition": [1, 19, 33, 53, 77, 83], "overload": [1, 2, 3, 35, 42, 43, 47, 49], "broadcast": [1, 2, 3, 12, 14, 42], "singl": [1, 2, 3, 4, 5, 9, 12, 13, 15, 16, 17, 20, 22, 23, 30, 31, 35, 38, 39, 40, 42, 47, 52, 53, 54, 55, 60, 62, 64, 65, 66, 68, 69, 70, 71, 81], "across": [1, 2, 3, 7, 10, 21, 23, 33, 42, 52, 54, 55, 56, 65, 75, 77, 83], "vector": [1, 2, 3, 4, 6, 9, 10, 11, 12, 16, 17, 21, 31, 35, 37, 38, 39, 42, 45, 47, 49, 53, 54, 55, 62, 65, 66, 67, 68, 74, 75], "For": [1, 2, 3, 4, 5, 7, 9, 10, 13, 14, 15, 17, 18, 19, 21, 28, 31, 33, 35, 37, 42, 49, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 65, 67, 68, 69, 70, 74, 75, 77, 79, 81, 82, 83], "exampl": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 42, 48, 49, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 68, 69, 70, 73, 74, 75, 77, 78, 79, 81, 82, 83], "cudaq": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 36, 37, 38, 39, 41, 44, 45, 46, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 81, 82], "qvector": [1, 2, 3, 5, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 28, 29, 31, 35, 38, 39, 42, 46, 54, 55, 56, 58, 60, 62, 64, 65, 67, 68, 70, 71, 81, 82], "flip": [1, 2, 3, 6, 13, 17, 18, 27, 56, 70], "each": [1, 2, 3, 5, 7, 8, 9, 12, 14, 15, 16, 17, 18, 20, 21, 23, 24, 25, 29, 31, 33, 35, 37, 40, 45, 49, 52, 53, 54, 55, 56, 60, 65, 68, 70, 71, 75, 77, 81, 82, 83], "thi": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 37, 38, 39, 40, 41, 42, 44, 47, 49, 52, 53, 54, 55, 56, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 75, 77, 78, 79, 81, 82, 83], "pauli": [1, 2, 3, 8, 9, 10, 12, 14, 16, 20, 24, 35, 43, 52, 60, 70], "matrix": [1, 2, 3, 4, 13, 14, 16, 17, 20, 21, 24, 25, 27, 31, 32, 33, 51, 52, 54, 62, 70, 74, 83], "It": [1, 2, 4, 7, 9, 15, 16, 17, 18, 20, 23, 32, 33, 35, 42, 47, 49, 52, 55, 60, 62, 65, 69, 70, 71, 74, 77, 79, 82, 83], "i": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 47, 49, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 81, 82, 83], "also": [1, 2, 3, 7, 9, 13, 15, 18, 19, 21, 22, 24, 27, 29, 31, 33, 35, 39, 43, 52, 53, 54, 55, 56, 58, 59, 60, 62, 65, 68, 70, 71, 73, 74, 75, 77, 79, 82, 83], "known": [1, 2, 19, 21, 23, 39, 52, 66, 71], "NOT": [1, 35, 42, 70], "gate": [1, 2, 3, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 27, 31, 32, 33, 42, 46, 47, 49, 53, 56, 58, 62, 66, 67, 74, 83], "appli": [1, 2, 3, 5, 7, 8, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 27, 28, 35, 38, 39, 42, 46, 49, 54, 55, 56, 58, 62, 65, 66, 67, 69, 70, 71, 74], "0": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 35, 37, 38, 39, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 77, 79, 81, 82, 83], "1": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 52, 53, 54, 55, 56, 58, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 75, 77, 81, 82, 83], "rotat": [1, 3, 9, 10, 13, 14, 15, 18, 19, 27, 31, 42, 43, 58, 64, 74], "\u03c0": 1, "about": [1, 2, 3, 7, 9, 18, 19, 20, 21, 22, 31, 33, 35, 49, 52, 53, 54, 55, 56, 59, 60, 65, 68, 75, 77, 79, 80, 81, 82, 83], "axi": [1, 11, 21, 22, 31], "enabl": [1, 2, 3, 5, 9, 13, 15, 24, 25, 34, 35, 37, 39, 40, 42, 44, 45, 46, 47, 51, 52, 53, 55, 56, 59, 60, 64, 65, 68, 71, 74, 75, 77, 81, 82], "one": [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 19, 20, 21, 23, 24, 25, 31, 33, 35, 37, 38, 40, 42, 45, 49, 52, 53, 54, 55, 56, 61, 62, 64, 65, 67, 68, 69, 70, 71, 73, 74, 75, 77, 81, 82, 83], "superposit": [1, 5, 7, 14, 31, 35, 38, 47, 55, 58, 60, 69, 70], "comput": [1, 2, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 21, 22, 23, 24, 25, 27, 29, 31, 32, 33, 34, 35, 37, 38, 39, 45, 47, 49, 52, 54, 55, 56, 59, 60, 63, 68, 69, 74, 75, 79, 81, 82, 83], "basi": [1, 2, 3, 4, 10, 12, 13, 15, 18, 21, 23, 24, 26, 27, 47, 54, 55, 69, 70], "sqrt": [1, 3, 5, 7, 10, 12, 13, 15, 16, 18, 27, 31, 38, 52, 56, 65, 70, 82], "2": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 49, 52, 53, 54, 55, 56, 60, 62, 64, 65, 67, 68, 69, 70, 71, 75, 77, 79, 81, 82, 83], "an": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 26, 27, 28, 29, 30, 31, 32, 33, 35, 37, 39, 40, 42, 43, 45, 46, 47, 49, 50, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 77, 79, 82, 83], "arbitrari": [1, 2, 3, 21, 33, 52, 53, 67, 81, 83], "\u03bb": 1, "exp": [1, 2, 12, 19, 38, 43, 52, 69], "i\u03bb": 1, "math": [1, 4, 7, 19, 54, 69], "pi": [1, 8, 9, 11, 14, 15, 17, 19, 20, 22, 23, 25, 29, 31, 38, 39, 44, 46, 52, 53, 54, 65, 69], "std": [1, 2, 3, 35, 37, 38, 39, 42, 43, 45, 46, 47, 54, 55, 56, 60, 65, 66, 68, 73, 74, 79, 81], "number": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 23, 24, 25, 28, 29, 31, 35, 38, 43, 45, 47, 49, 52, 53, 54, 55, 56, 58, 60, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 82], "\u03b8": 1, "co": [1, 15, 20, 31, 52, 69], "isin": 1, "sin": [1, 15, 31], "its": [1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 15, 16, 17, 18, 27, 33, 34, 35, 45, 47, 49, 50, 54, 55, 56, 60, 62, 65, 66, 70, 71, 74, 75, 77, 81, 82, 83], "4": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 33, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 53, 54, 55, 56, 62, 65, 68, 69, 71, 75, 77, 81, 83], "i\u03c0": 1, "two": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 27, 29, 31, 40, 49, 52, 53, 55, 56, 60, 62, 64, 65, 67, 69, 70, 77, 81], "qubit_1": [1, 7, 14, 62], "qubit_2": [1, 16], "univers": [1, 2, 9, 16, 21, 54, 70], "three": [1, 10, 18, 19, 21, 23, 40, 53, 54, 64, 69], "paramet": [1, 2, 3, 6, 8, 9, 11, 12, 13, 14, 17, 19, 21, 22, 24, 35, 39, 42, 47, 52, 53, 54, 56, 58, 62, 64, 65, 66, 68, 74, 75], "euler": [1, 52], "angl": [1, 2, 3, 6, 10, 13, 15, 18, 19, 29, 31, 38, 39, 42, 55, 58, 64, 65, 69], "theta": [1, 8, 9, 10, 11, 14, 15, 22, 23, 27, 29, 31, 35, 37, 38, 54, 55, 62, 64, 69], "phi": [1, 3, 4, 10, 35, 37, 53, 65, 69, 71], "\u03c6": 1, "lambda": [1, 2, 8, 9, 12, 13, 14, 18, 19, 20, 23, 29, 35, 38, 39, 44, 52, 65, 67, 68, 71], "i\u03c6": 1, "np": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 31, 38, 39, 44, 46, 52, 53, 55, 56, 62, 65, 68, 75], "m_pi": [1, 38, 46, 65], "m_pi_2": [1, 38, 39, 54], "adj": [1, 42, 62], "method": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 18, 19, 20, 21, 22, 23, 28, 29, 35, 37, 42, 47, 52, 53, 55, 56, 60, 62, 65, 66], "ani": [1, 2, 3, 9, 12, 14, 19, 20, 21, 23, 24, 27, 29, 31, 35, 39, 41, 42, 44, 46, 47, 52, 53, 54, 56, 58, 60, 61, 62, 65, 66, 67, 74, 75, 77, 81, 82], "alloc": [1, 2, 3, 6, 14, 21, 35, 37, 38, 39, 40, 47, 55, 56, 58, 60, 66, 67, 74], "now": [1, 4, 5, 7, 9, 13, 14, 15, 16, 19, 21, 22, 23, 33, 49, 53, 60, 65, 66, 67, 68, 77, 82, 83], "again": [1, 5, 23, 24, 35, 49, 77, 79], "initi": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 15, 16, 19, 20, 22, 23, 29, 35, 52, 53, 55, 62, 65, 68, 69, 70, 75, 77], "ctrl": [1, 2, 5, 7, 14, 17, 19, 24, 29, 31, 35, 37, 38, 42, 54, 55, 58, 62, 64, 65, 66, 67, 70, 71, 77, 82], "condit": [1, 2, 15, 16, 21, 27, 35, 36, 37, 39, 40, 56, 59, 70, 71], "more": [1, 2, 3, 4, 5, 8, 9, 10, 12, 13, 14, 15, 18, 19, 21, 23, 28, 31, 33, 37, 40, 42, 43, 49, 53, 54, 55, 56, 59, 60, 62, 65, 68, 70, 75, 77, 79, 81, 82, 83], "wikipedia": [1, 52], "entri": [1, 3, 12, 35, 39, 55, 62, 65, 71, 77, 81], "ctrl_1": 1, "ctrl_2": 1, "00": [1, 4, 9, 13, 16, 24, 25, 27, 29, 56, 60, 68, 69, 70, 81, 82], "11": [1, 3, 4, 9, 11, 13, 16, 17, 18, 20, 21, 23, 24, 25, 27, 29, 31, 35, 52, 56, 60, 68, 69, 70, 71, 75, 77, 81, 82], "onli": [1, 2, 3, 5, 7, 9, 16, 18, 19, 21, 23, 24, 26, 31, 33, 35, 39, 40, 44, 47, 49, 52, 53, 54, 55, 59, 65, 70, 71, 73, 75, 77, 81, 82, 83], "both": [1, 3, 4, 5, 7, 11, 13, 19, 40, 49, 53, 55, 56, 70, 75, 77, 79], "000": [1, 15, 16, 18, 19, 54, 60], "111": [1, 9, 15, 16, 18, 19], "follow": [1, 2, 3, 4, 5, 7, 8, 9, 10, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26, 28, 29, 31, 33, 35, 37, 39, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 58, 60, 61, 62, 64, 65, 66, 71, 73, 74, 75, 77, 78, 79, 81, 82, 83], "common": [1, 3, 9, 10, 18, 19, 21, 22, 23, 35, 39, 42, 43, 71, 75], "convent": [1, 8, 11, 14, 24, 25], "all": [1, 2, 3, 9, 13, 16, 17, 18, 19, 20, 21, 23, 24, 25, 29, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 44, 45, 47, 49, 52, 53, 54, 55, 56, 60, 62, 64, 65, 68, 69, 70, 71, 75, 77, 78, 79, 81, 82, 83], "howev": [1, 4, 9, 13, 15, 16, 18, 21, 23, 24, 33, 49, 52, 53, 55, 81, 83], "behavior": [1, 2, 3, 9, 23, 33, 56, 83], "chang": [1, 2, 5, 9, 13, 15, 19, 30, 33, 35, 39, 52, 60, 77, 82, 83], "instead": [1, 2, 4, 9, 27, 41, 44, 53, 55, 56, 60, 75, 77, 81], "when": [1, 2, 3, 9, 12, 13, 14, 18, 19, 21, 33, 35, 40, 47, 49, 54, 55, 56, 60, 64, 65, 66, 71, 74, 75, 77, 81, 82, 83], "negat": [1, 2, 3, 42, 46, 47], "polar": [1, 42, 46, 56], "syntax": [1, 9, 33, 34, 39, 40, 42, 44, 53, 62, 65, 79, 83], "preced": [1, 42, 53], "01": [1, 4, 7, 13, 16, 21, 27, 29, 56, 69, 70], "10": [1, 4, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 23, 25, 27, 29, 31, 35, 38, 39, 56, 60, 62, 65, 66, 68, 69, 70, 71, 75, 77, 79], "notat": [1, 16, 69, 70], "context": [1, 2, 11, 40, 55, 56, 74], "valid": [1, 2, 3, 32, 39, 53, 56, 62, 65, 75, 77, 81], "either": [1, 7, 11, 14, 19, 40, 53, 55, 56, 65, 69, 70, 75, 77, 82], "similarli": [1, 7, 23, 55, 61, 70], "condition": 1, "respect": [1, 2, 3, 4, 8, 13, 14, 19, 23, 29, 35, 52, 53, 55, 60, 64, 68, 69, 70, 75, 77, 82], "e": [1, 2, 3, 4, 7, 8, 9, 10, 12, 14, 15, 16, 18, 19, 20, 21, 22, 28, 31, 34, 35, 36, 38, 39, 40, 41, 42, 43, 49, 52, 53, 54, 55, 56, 65, 71, 74, 75, 77, 81, 82], "project": [1, 56, 74, 75, 77, 78, 81], "onto": [1, 70], "eigenvector": [1, 2, 10, 12], "non": [1, 2, 3, 8, 10, 12, 18, 19, 33, 35, 39, 40, 47, 55, 56, 60, 64, 66, 83], "linear": [1, 5, 9, 11, 12, 15, 22, 27, 54, 60, 65, 69, 70], "avail": [1, 2, 3, 8, 9, 10, 21, 23, 29, 32, 33, 34, 35, 39, 40, 42, 45, 46, 47, 48, 51, 52, 53, 54, 55, 56, 59, 60, 62, 63, 64, 65, 71, 75, 77, 82, 83], "first": [1, 2, 3, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 29, 31, 32, 35, 47, 53, 54, 55, 56, 57, 62, 64, 65, 66, 67, 71, 77, 82], "api": [1, 13, 24, 28, 31, 32, 33, 35, 37, 41, 42, 45, 47, 52, 53, 54, 55, 56, 60, 62, 65, 66, 74, 75, 77, 79, 81, 83], "regist": [1, 2, 3, 5, 10, 13, 15, 19, 22, 26, 35, 38, 40, 47, 53, 55, 62, 65, 66, 67, 71, 74], "outsid": [1, 9, 33, 77, 81, 83], "Then": [1, 7, 18, 21, 26, 53, 65, 73, 74], "within": [1, 2, 3, 13, 22, 33, 35, 39, 41, 43, 47, 53, 55, 56, 59, 60, 62, 65, 66, 70, 73, 75, 77, 78, 79, 81, 82, 83], "like": [1, 2, 3, 4, 7, 8, 9, 10, 12, 13, 14, 15, 16, 19, 21, 22, 23, 24, 29, 30, 33, 35, 39, 47, 53, 55, 60, 62, 65, 66, 68, 69, 70, 71, 75, 77, 78, 81, 82, 83], "built": [1, 2, 4, 6, 8, 9, 12, 15, 23, 24, 27, 33, 53, 56, 59, 60, 75, 81, 82, 83], "abov": [1, 2, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 19, 21, 23, 24, 35, 37, 42, 52, 53, 54, 55, 56, 60, 62, 64, 65, 67, 69, 70, 71, 74, 75, 77, 79, 81, 82], "level": [1, 2, 3, 13, 23, 25, 30, 33, 34, 35, 40, 42, 52, 53, 54, 55, 56, 69, 71, 74, 78, 83], "register_oper": [1, 13, 62], "accept": [1, 2, 3, 23, 24, 58, 75, 77, 82], "identifi": [1, 2, 3, 4, 13, 14, 19, 21, 75, 77], "string": [1, 2, 3, 5, 19, 25, 28, 31, 35, 37, 38, 45, 52, 56, 60, 66, 71, 77, 81], "numpi": [1, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 31, 38, 52, 62, 65, 68, 75], "arrai": [1, 2, 3, 4, 7, 10, 12, 13, 15, 16, 17, 18, 21, 24, 25, 27, 29, 47, 49, 52, 53, 55, 56, 62, 65, 66, 68, 71], "complex": [1, 2, 3, 4, 7, 8, 12, 16, 20, 27, 43, 49, 52, 55, 60, 62, 68, 69, 70, 81], "A": [1, 2, 3, 4, 7, 8, 9, 10, 12, 14, 16, 17, 18, 19, 20, 22, 29, 30, 31, 35, 38, 39, 42, 49, 52, 53, 60, 62, 65, 67, 68, 69, 70, 73, 74, 75, 77], "1d": [1, 2], "interpret": [1, 8, 59, 65, 75], "row": [1, 2, 3, 31, 62], "major": [1, 75], "import": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 38, 43, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 68, 69, 70, 71, 75, 81, 82], "custom_h": 1, "custom_x": [1, 62], "def": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 38, 39, 44, 46, 52, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 68, 69, 70, 77, 82], "bell": [1, 13, 16, 35, 81], "sampl": [1, 2, 3, 5, 7, 8, 9, 13, 14, 17, 18, 19, 21, 27, 37, 53, 54, 55, 56, 57, 59, 62, 65, 66, 67, 68, 69, 70, 74, 77, 81, 82], "dump": [1, 2, 3, 27, 35, 38, 54, 55, 56, 60, 65, 66, 68, 81, 82], "macro": [1, 74], "cudaq_register_oper": 1, "uniqu": [1, 2, 3, 9, 14, 18, 21, 35, 40, 42, 47, 55, 79], "name": [1, 2, 3, 9, 13, 14, 16, 19, 35, 37, 42, 45, 51, 52, 53, 54, 55, 56, 64, 68, 70, 71, 74, 75, 77, 78, 81, 82], "represent": [1, 2, 3, 15, 16, 21, 24, 25, 31, 35, 39, 49, 52, 56, 71, 73, 74], "includ": [1, 2, 3, 4, 12, 13, 14, 17, 23, 33, 35, 38, 47, 52, 54, 56, 58, 59, 60, 62, 64, 65, 66, 67, 71, 73, 74, 75, 77, 79, 81, 82, 83], "m_sqrt1_2": 1, "__qpu__": [1, 2, 35, 38, 39, 46, 54, 55, 56, 58, 60, 64, 65, 66, 67, 71, 81, 82], "void": [1, 2, 3, 35, 37, 38, 39, 42, 43, 45, 46, 47, 56, 58, 60, 65, 67, 71, 73, 74, 79, 81, 82], "bell_pair": [1, 2, 3], "r": [1, 4, 13, 18, 19, 42, 47, 53, 54, 55, 56, 64, 65, 71, 77], "int": [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 27, 35, 38, 39, 46, 47, 52, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 68, 71, 74, 75, 79, 81, 82], "main": [1, 4, 5, 9, 19, 21, 33, 35, 38, 49, 54, 56, 60, 64, 65, 66, 67, 71, 75, 77, 79, 81, 82, 83], "auto": [1, 2, 35, 37, 38, 39, 43, 46, 47, 54, 55, 56, 58, 60, 64, 65, 66, 67, 71, 73, 81, 82], "count": [1, 2, 3, 5, 8, 9, 10, 12, 13, 14, 18, 19, 24, 25, 35, 37, 38, 47, 53, 54, 55, 56, 60, 65, 66, 67, 68, 71, 74], "bit": [1, 2, 3, 4, 5, 7, 13, 16, 17, 18, 19, 24, 25, 27, 35, 38, 40, 47, 49, 55, 56, 65, 66, 67, 69, 70, 74], "printf": [1, 35, 38, 47, 55, 64, 66, 67, 75], "n": [1, 2, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 23, 35, 37, 38, 39, 42, 43, 46, 52, 54, 55, 56, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 75, 79, 82], "data": [1, 2, 8, 11, 12, 13, 14, 15, 22, 32, 35, 39, 41, 43, 49, 55, 56, 64, 66, 67, 71, 74, 76, 77, 79, 81], "multi": [1, 4, 15, 16, 24, 25, 31, 32, 33, 34, 37, 40, 42, 46, 51, 53, 54, 60, 62, 63, 64, 69, 70, 74, 75, 81, 82, 83], "msb": 1, "order": [1, 2, 3, 4, 9, 12, 13, 14, 16, 31, 35, 43, 52, 53, 56, 60, 64], "big": [1, 8, 17, 24], "endian": [1, 17, 24, 25], "show": [1, 8, 9, 11, 13, 14, 15, 16, 18, 21, 22, 23, 31, 52, 55, 62, 64, 65, 75, 77], "differ": [1, 2, 3, 7, 9, 10, 11, 12, 13, 15, 16, 18, 19, 23, 24, 29, 31, 49, 53, 54, 55, 59, 60, 65, 68, 75, 77, 79, 82], "test": [1, 9, 11, 12, 17, 18, 19, 23, 32, 37, 68, 75, 77], "cnot": [1, 5, 9, 42, 58, 62, 70, 81], "my_cnot": 1, "print": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 31, 35, 38, 47, 52, 54, 55, 56, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 75, 81, 82], "500": [1, 23, 70, 82], "exact": [1, 9, 10, 13, 17, 21, 56], "random": [1, 2, 3, 4, 5, 8, 9, 13, 14, 16, 17, 18, 19, 21, 22, 23, 29, 31, 55, 56, 68], "construct": [1, 2, 8, 9, 10, 12, 17, 18, 20, 23, 29, 31, 32, 33, 35, 36, 37, 39, 47, 49, 52, 55, 58, 59, 60, 62, 63, 66, 71, 83], "second": [1, 2, 3, 4, 7, 8, 9, 12, 14, 18, 20, 47, 52, 54, 56, 60, 62, 65], "1j": [1, 12, 13], "xy": [1, 31], "kron": [1, 18], "my_xi": 1, "custom_xy_test": 1, "undo": 1, "prior": [1, 56, 65, 69, 70, 75, 77, 82], "1000": [1, 3, 9, 11, 13, 17, 18, 21, 24, 25, 27, 35, 53, 56, 60, 66, 68, 69, 70, 82], "mycnot": 1, "myxi": 1, "hardwar": [1, 9, 15, 19, 21, 24, 32, 33, 51, 56, 60, 63, 81, 83], "synthes": [1, 3, 21, 42, 46, 71], "current": [1, 2, 3, 9, 31, 33, 35, 45, 53, 55, 56, 74, 77, 81, 83], "orca": [1, 2, 25, 33, 51, 56, 69, 83], "which": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 27, 29, 31, 33, 35, 37, 40, 43, 47, 49, 52, 53, 55, 56, 62, 64, 65, 66, 68, 69, 70, 71, 74, 75, 77, 78, 81, 83], "doe": [1, 2, 3, 7, 9, 15, 16, 21, 31, 33, 35, 39, 47, 52, 54, 55, 75, 77, 79, 81, 82, 83], "increment": [1, 2, 68], "qumod": [1, 25, 69], "up": [1, 2, 3, 7, 9, 14, 15, 17, 21, 31, 37, 43, 52, 53, 56, 59, 64, 65, 68, 69, 71, 74, 77], "maximum": [1, 3, 8, 9, 21, 56, 69], "valu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 29, 31, 32, 35, 37, 39, 43, 47, 49, 52, 54, 55, 56, 60, 63, 65, 68, 69, 70, 71, 75, 81, 82], "repres": [1, 2, 3, 4, 7, 8, 9, 14, 15, 16, 21, 27, 31, 35, 49, 52, 53, 56, 65, 69, 70, 71], "If": [1, 2, 3, 5, 7, 9, 11, 15, 16, 17, 18, 19, 20, 24, 26, 31, 35, 49, 52, 53, 54, 56, 60, 65, 68, 70, 75, 77, 81, 82], "where": [1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 23, 24, 30, 31, 34, 40, 42, 43, 47, 49, 52, 53, 56, 60, 62, 65, 68, 69, 70, 74, 75, 77, 79, 82], "alreadi": [1, 2, 3, 13, 19, 31, 69, 75, 77, 82], "ha": [1, 2, 3, 4, 5, 7, 9, 13, 14, 16, 17, 18, 19, 21, 24, 27, 29, 35, 42, 49, 53, 54, 56, 59, 60, 65, 68, 69, 70, 75, 77, 81], "effect": [1, 13, 21, 49, 56, 60, 68, 69, 70, 82], "rangl": [1, 4, 15, 18, 19, 21, 35, 82], "3": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 33, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 52, 53, 54, 55, 56, 60, 62, 65, 67, 68, 69, 71, 74, 75, 77, 78, 82, 83], "cdot": [1, 5, 9, 12, 19], "d": [1, 2, 3, 9, 12, 16, 38, 39, 40, 47, 53, 65, 69, 75, 77], "reduc": [1, 2, 10, 13, 18, 19, 56], "minimum": [1, 14, 22, 54, 56, 69], "vacuum": [1, 65], "phase": [1, 2, 3, 5, 12, 15, 21, 42, 53, 65, 69], "shifter": [1, 65, 69], "add": [1, 2, 3, 9, 12, 14, 22, 27, 31, 33, 44, 52, 56, 65, 66, 69, 71, 73, 74, 75, 77, 83], "a_1": [1, 18, 19, 69], "creation": [1, 2, 4, 9, 34, 48, 52, 69, 74], "dagger": [1, 4, 10, 12, 21, 27, 44, 52, 69, 70], "shift": [1, 11, 54, 69, 77], "p": [1, 4, 8, 9, 10, 18, 27, 69, 75, 77], "left": [1, 2, 4, 5, 7, 10, 12, 13, 14, 15, 16, 24, 65, 69, 74, 77], "right": [1, 4, 10, 13, 14, 15, 25, 69], "17": [1, 9, 13, 16, 17, 18, 21, 31, 62, 71, 79], "beam": [1, 53, 65, 69], "splitter": [1, 53, 65, 69], "act": [1, 2, 3, 6, 7, 9, 14, 28, 49, 52, 56, 69, 70], "togeth": [1, 18, 32, 56, 69, 71, 82], "parameter": [1, 2, 3, 8, 9, 10, 13, 14, 20, 22, 23, 35, 37, 39, 42, 52, 54, 59, 62, 64, 66, 68, 69], "relat": [1, 2, 9, 14, 19, 21, 69, 71], "reflect": [1, 38, 56], "a_2": [1, 19, 69], "b": [1, 9, 23, 29, 35, 62, 65, 69], "_": [1, 4, 7, 11, 13, 18, 19, 21, 25, 31, 52, 69], "rang": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 33, 38, 39, 46, 47, 52, 54, 55, 58, 62, 68, 69, 77, 82, 83], "34": [1, 9, 18], "return": [1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 29, 31, 35, 37, 38, 39, 42, 47, 49, 52, 54, 55, 56, 60, 64, 65, 66, 68, 69, 71, 73, 74, 75, 79, 81], "result": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 35, 36, 37, 38, 40, 49, 52, 53, 54, 55, 56, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 81, 82], "input": [1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 15, 16, 21, 23, 28, 29, 35, 37, 38, 39, 46, 47, 55, 60, 62, 64, 65, 68], "class": [2, 3, 4, 9, 11, 21, 35, 37, 39, 43, 45, 47, 55, 56, 73, 74], "spin_op": [2, 8, 28, 35, 38, 42, 54, 55, 60, 64], "gener": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 18, 19, 22, 24, 25, 28, 31, 35, 37, 38, 39, 40, 42, 43, 46, 48, 53, 54, 56, 59, 64, 65, 66, 67, 70, 71, 73, 77, 81], "sum": [2, 3, 4, 11, 12, 13, 14, 17, 18, 21, 28, 43, 47, 65, 69, 70], "tensor": [2, 3, 11, 18, 28, 33, 43, 54, 55, 74, 83], "product": [2, 3, 5, 18, 28, 32, 33, 43, 54, 82, 83], "expos": [2, 3, 9, 13, 35, 37, 43, 45, 49, 55, 74], "typic": [2, 21, 35, 47, 54, 58, 59, 64, 71, 78, 79], "algebra": [2, 43, 64, 70], "programm": [2, 3, 35, 36, 37, 39, 40, 42, 44, 45, 47, 53, 55, 66], "defin": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 31, 33, 34, 35, 36, 37, 38, 39, 43, 44, 45, 46, 47, 52, 54, 55, 56, 58, 59, 60, 62, 64, 65, 66, 67, 69, 70, 71, 74, 75, 77, 79, 81, 83], "primit": [2, 14, 34, 37, 40, 43, 47, 48, 55, 59, 81], "them": [2, 3, 8, 9, 10, 13, 16, 18, 21, 31, 33, 49, 52, 58, 70, 71, 75, 77, 79, 81, 82, 83], "compos": [2, 3, 11, 14, 21, 39, 40, 53, 65, 71], "larger": [2, 3, 7, 9, 10, 14, 21, 54, 56], "thereof": [2, 40, 43], "public": [2, 9, 35, 37, 43, 45, 47, 55, 73, 74, 77], "type": [2, 4, 5, 6, 7, 9, 13, 14, 15, 18, 20, 28, 34, 35, 37, 39, 40, 42, 43, 48, 52, 53, 55, 56, 58, 62, 64, 66, 70, 71, 74, 77, 81], "spin_op_term": 2, "bool": [2, 3, 13, 35, 39, 42, 43, 45, 55, 74, 81], "we": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22, 24, 25, 27, 31, 33, 35, 38, 42, 44, 49, 52, 53, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78, 79, 81, 82, 83], "term": [2, 3, 4, 5, 8, 12, 13, 14, 16, 19, 20, 23, 24, 35, 42, 52, 53, 55, 56, 60, 64, 77], "binari": [2, 3, 5, 9, 11, 14, 15, 19, 24, 33, 53, 75, 79, 82, 83], "symplect": 2, "form": [2, 3, 9, 21, 23, 24, 31, 33, 35, 42, 47, 49, 52, 56, 71, 83], "size": [2, 3, 5, 8, 9, 10, 11, 12, 16, 17, 18, 19, 20, 35, 37, 38, 39, 40, 47, 54, 55, 56, 65, 66, 68, 77, 81], "nqubit": [2, 37, 38, 74], "element": [2, 3, 4, 15, 18, 19, 21, 29, 32, 35, 47, 55, 70], "x": [2, 3, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 35, 37, 38, 39, 42, 43, 44, 46, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 70, 71, 75, 77, 79, 82], "next": [2, 4, 5, 8, 9, 10, 12, 13, 17, 19, 20, 21, 23, 29, 31, 49, 65, 66, 71, 75], "z": [2, 3, 6, 8, 9, 11, 12, 13, 14, 16, 20, 21, 22, 24, 26, 27, 28, 29, 31, 35, 38, 42, 43, 52, 54, 55, 56, 60, 64, 66, 68, 75], "y": [2, 3, 5, 7, 8, 9, 11, 12, 13, 15, 18, 19, 20, 24, 26, 28, 29, 31, 35, 38, 42, 43, 52, 54, 55, 60, 64, 66, 75, 77, 79, 82], "site": [2, 3, 8, 13, 65, 82], "csr_spmatrix": 2, "tupl": [2, 3, 9, 13, 29, 35, 39, 65], "doubl": [2, 3, 22, 23, 35, 37, 38, 39, 42, 43, 46, 54, 55, 56, 60, 64, 65, 74, 75, 77], "size_t": [2, 35, 37, 39, 43, 45, 47, 55, 65, 66, 74, 79, 81], "typedef": 2, "zero": [2, 3, 5, 6, 10, 11, 12, 18, 19, 21, 40, 52, 55, 60, 69, 70], "spars": [2, 56], "function": [2, 3, 5, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 25, 27, 28, 29, 31, 33, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 52, 53, 54, 55, 56, 58, 59, 60, 64, 66, 68, 69, 71, 74, 79, 81, 83], "pair": [2, 3, 8, 12, 14, 16, 17, 39, 45, 49, 77], "const": [2, 35, 37, 38, 39, 42, 43, 45, 47, 54, 56, 65, 73, 74, 79, 81], "termdata": 2, "constructor": [2, 3], "take": [2, 3, 4, 5, 7, 9, 12, 13, 14, 15, 17, 18, 20, 23, 29, 30, 33, 35, 37, 38, 39, 42, 43, 44, 45, 46, 47, 49, 53, 56, 59, 60, 62, 64, 65, 66, 67, 68, 71, 75, 77, 82, 83], "coeffici": [2, 3, 8, 12, 20, 28, 52, 69, 70], "constant": [2, 7, 20, 47, 49, 71], "id": [2, 3, 35, 45, 47, 53, 55, 56, 75, 77], "coeff": 2, "qubit": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 35, 37, 38, 39, 40, 43, 45, 46, 49, 52, 53, 54, 55, 56, 58, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 71, 74, 77, 82], "unordered_map": [2, 35], "_term": 2, "full": [2, 3, 4, 13, 19, 30, 33, 54, 55, 56, 68, 69, 70, 71, 73, 75, 77, 78, 83], "composit": [2, 52], "spin": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 20, 23, 24, 27, 29, 35, 38, 43, 49, 52, 54, 55, 56, 60, 64, 65, 68, 71], "op": [2, 3, 12, 13, 20, 49, 64, 71], "map": [2, 3, 5, 7, 8, 9, 13, 18, 21, 23, 27, 35, 47, 52, 71, 77], "individu": [2, 3, 40, 47, 55, 56, 62], "bsf": 2, "from": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 27, 28, 29, 31, 33, 35, 36, 38, 39, 40, 43, 47, 49, 52, 54, 55, 56, 59, 60, 62, 64, 65, 68, 71, 74, 77, 78, 79, 82, 83], "creat": [2, 3, 5, 8, 9, 13, 14, 15, 16, 18, 19, 21, 22, 25, 27, 31, 32, 35, 37, 43, 46, 52, 53, 54, 55, 59, 60, 65, 66, 68, 69, 71, 72, 74, 75, 77, 78, 79, 81, 82], "ident": [2, 12, 13, 14, 18, 19, 21, 49, 52, 64, 69], "numqubit": [2, 38], "given": [2, 3, 4, 7, 8, 9, 10, 14, 18, 19, 20, 21, 23, 24, 25, 35, 47, 52, 53, 55, 56, 60, 64, 69, 74], "o": [2, 9, 10, 13, 15, 23, 38, 53, 54, 55, 56, 64, 65, 66, 67, 71, 75, 77, 79, 81, 82], "copi": [2, 16, 21, 31, 47, 49, 75, 77], "data_rep": 2, "serial": [2, 3, 12], "encod": [2, 3, 5, 9, 14, 19, 21, 35, 43, 55, 66, 70, 74], "via": [2, 3, 4, 5, 11, 13, 16, 21, 24, 27, 32, 34, 35, 37, 40, 42, 44, 46, 47, 49, 52, 53, 55, 56, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75], "real": [2, 8, 10, 12, 13, 15, 17, 20, 21, 31, 59], "imaginari": [2, 4, 12], "part": [2, 3, 4, 12, 17, 19, 23, 35, 47, 71, 73, 75, 77], "append": [2, 3, 6, 8, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 29, 31, 39, 53, 55, 56, 62, 65, 68], "larg": [2, 4, 5, 12, 18, 23, 30, 33, 42, 55, 56, 59, 69, 70, 83], "end": [2, 3, 4, 7, 10, 13, 15, 16, 17, 18, 20, 21, 24, 25, 27, 31, 35, 47, 53, 55, 56, 60, 62, 65, 69, 70, 75, 77], "total": [2, 3, 4, 8, 9, 11, 12, 13, 15, 21, 23, 54, 55, 56, 60, 65, 68, 77], "destructor": 2, "iter": [2, 3, 4, 9, 12, 19, 21, 23, 24, 28, 29, 35, 47], "begin": [2, 3, 4, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 31, 35, 47, 58, 65, 66, 69, 70], "start": [2, 3, 4, 6, 13, 15, 16, 19, 21, 24, 32, 33, 42, 47, 53, 55, 60, 62, 65, 71, 73, 79, 83], "equal": [2, 10, 21, 24, 31, 49, 55, 56, 60, 70], "v": [2, 3, 4, 8, 10, 12, 13, 14, 19, 35, 38, 39, 44, 49, 54, 68, 71, 75], "noexcept": [2, 42], "subtract": 2, "multipli": [2, 12, 13, 19], "true": [2, 3, 4, 5, 9, 11, 12, 13, 16, 17, 18, 19, 21, 23, 29, 35, 39, 52, 53, 56, 68, 75, 77, 82], "here": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15, 18, 19, 21, 22, 23, 27, 28, 32, 33, 35, 37, 38, 39, 42, 44, 52, 53, 54, 55, 62, 64, 65, 66, 67, 71, 73, 75, 77, 81, 82, 83], "consid": [2, 4, 5, 7, 9, 13, 17, 18, 19, 20, 21, 38, 40, 49, 54, 55, 71, 77], "num_qubit": [2, 3, 13, 20, 43, 54], "num_term": [2, 43], "get_coeffici": [2, 8, 12, 20, 43], "get": [2, 3, 10, 12, 13, 15, 17, 18, 19, 21, 23, 27, 29, 31, 33, 35, 37, 38, 47, 53, 54, 55, 56, 60, 64, 65, 68, 74, 75, 79, 82, 83], "throw": [2, 31], "except": [2, 3, 9, 12, 13, 21, 31, 81], "get_raw_data": 2, "is_ident": [2, 43], "standard": [2, 3, 10, 21, 23, 29, 34, 35, 36, 37, 39, 42, 48, 55, 58, 59, 71, 73, 75, 77, 79, 81], "out": [2, 3, 7, 8, 9, 11, 12, 14, 15, 16, 19, 21, 23, 27, 29, 33, 35, 40, 47, 49, 55, 56, 60, 61, 62, 64, 65, 74, 77, 78, 81, 83], "to_str": [2, 8, 12, 20, 60], "printcoeffici": 2, "getdatarepresent": 2, "getdatatupl": 2, "fulli": [2, 3, 9, 11, 13, 21, 33, 34, 53, 55, 66, 71, 75, 77, 81, 83], "distribute_term": 2, "numchunk": 2, "distribut": [2, 10, 17, 18, 21, 23, 24, 27, 33, 40, 52, 54, 56, 60, 64, 66, 75, 81, 82, 83], "chunk": [2, 40], "for_each_term": [2, 8, 12, 20, 43], "give": [2, 14, 15, 18, 24, 25, 33, 35, 50, 55, 56, 75, 77, 83], "functor": 2, "reduct": 2, "captur": [2, 14, 19, 23, 31, 33, 39, 52, 62, 83], "variabl": [2, 9, 12, 14, 16, 19, 23, 30, 33, 39, 40, 52, 53, 54, 55, 61, 65, 68, 75, 77, 82, 83], "for_each_pauli": [2, 43], "thrown": [2, 81], "than": [2, 3, 12, 13, 14, 15, 16, 17, 19, 20, 23, 24, 26, 31, 42, 49, 54, 56, 60, 62, 70, 75, 77, 81], "user": [2, 3, 4, 5, 8, 9, 13, 18, 21, 30, 33, 35, 37, 38, 40, 41, 44, 47, 52, 53, 54, 55, 56, 65, 68, 71, 74, 75, 77, 83], "should": [2, 3, 13, 15, 19, 20, 23, 34, 35, 40, 42, 43, 45, 47, 53, 55, 56, 60, 74, 75, 77, 81, 82], "pass": [2, 3, 8, 9, 11, 12, 13, 17, 20, 23, 31, 32, 33, 35, 39, 40, 43, 47, 53, 55, 56, 62, 65, 67, 71, 72, 77, 81, 83], "index": [2, 3, 5, 9, 11, 12, 17, 43, 45, 47, 49, 52, 55, 56, 74], "complex_matrix": 2, "to_matrix": [2, 10, 12, 52], "dens": 2, "to_sparse_matrix": 2, "col": 2, "static": [2, 3, 35, 42, 47, 52, 71, 75, 81], "nterm": 2, "unsign": 2, "seed": [2, 3, 4, 8, 9, 13, 14, 18, 21, 22, 23, 31, 68], "random_devic": 2, "specifi": [2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 23, 24, 26, 28, 29, 31, 35, 38, 39, 40, 42, 43, 44, 45, 47, 52, 53, 54, 55, 56, 60, 62, 65, 66, 68, 71, 74, 75, 77], "overrid": [2, 3, 35, 56, 73, 75], "repeat": [2, 17, 18, 19, 23, 35], "from_word": 2, "pauliword": 2, "word": [2, 3, 8, 12, 19, 20], "g": [2, 3, 9, 14, 19, 20, 21, 28, 34, 35, 36, 39, 40, 41, 42, 43, 49, 52, 53, 54, 55, 56, 65, 71, 74, 75, 77, 78, 81, 82], "xyx": 2, "3rd": 2, "typenam": [2, 35, 37, 38, 39, 42, 46, 47, 79, 81], "qualifiedspinop": 2, "struct": [2, 35, 37, 38, 39, 42, 46, 54, 55, 56, 64, 65, 66, 67, 71, 73, 81], "constexpr": [2, 37, 47, 54], "dyn": [2, 47], "qudit": [2, 25, 36, 40, 42, 69], "system": [2, 3, 4, 9, 12, 13, 16, 20, 22, 23, 24, 25, 30, 33, 35, 40, 45, 47, 49, 52, 53, 55, 56, 59, 60, 64, 65, 68, 69, 70, 73, 75, 78, 79, 81, 82, 83], "inlin": [2, 35, 71], "new": [2, 3, 4, 8, 9, 12, 15, 21, 32, 33, 35, 37, 49, 59, 71, 72, 75, 77, 81, 82, 83], "enable_if_t": 2, "qreg": [2, 3, 12, 14, 54], "contain": [2, 3, 4, 9, 10, 13, 14, 18, 21, 32, 33, 35, 40, 42, 45, 49, 54, 56, 59, 60, 64, 65, 71, 74, 75, 81, 82, 83], "dynam": [2, 13, 32, 33, 37, 39, 40, 47, 53, 56, 58, 59, 71, 81, 83], "time": [2, 3, 4, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 38, 40, 47, 48, 53, 54, 55, 56, 60, 65, 66, 68, 69, 70, 71, 75, 77, 82, 83], "By": [2, 9, 10, 23, 30, 35, 42, 52, 53, 54, 55, 56, 60, 65, 79], "value_typ": 2, "indic": [2, 3, 4, 8, 21, 39, 42, 43, 47, 52, 74], "underli": [2, 3, 9, 23, 35, 45, 47, 53, 55, 74], "interfac": [2, 3, 47, 56, 74, 75, 77, 79], "idx": [2, 3, 11, 13, 19, 21, 47, 52, 55], "qspan": 2, "front": [2, 38, 46, 47, 67], "back": [2, 21, 38, 47, 49, 55, 65, 66, 77], "last": [2, 18, 19, 21, 38, 47, 55, 62, 64], "slice": [2, 3, 47], "clear": [2, 3, 16, 35, 47, 74], "destroi": [2, 47], "postcondit": [2, 47], "own": [2, 3, 9, 18, 27, 40, 45, 47, 56, 71, 74, 75, 77, 81], "semant": [2, 3, 34, 39, 40, 41, 44, 46, 47, 49, 71], "held": 2, "explicit": [2, 10, 35, 46, 52, 56, 65, 81], "determin": [2, 4, 5, 7, 8, 9, 17, 20, 23, 32, 56, 60], "check": [2, 9, 19, 21, 33, 53, 54, 65, 70, 75, 77, 82, 83], "norm": [2, 18], "pre": [2, 3, 13, 21, 33, 35, 53, 56, 65, 67, 75, 81, 83], "exist": [2, 3, 8, 16, 21, 31, 33, 34, 35, 40, 41, 60, 73, 75, 77, 81, 82, 83], "could": [2, 9, 10, 12, 19, 23, 31, 33, 54, 58, 70, 75, 83], "from_data": [2, 3, 52], "retriev": [2, 3, 13, 24, 35, 52, 55, 65], "get_stat": [2, 3, 10, 15, 16, 17, 20, 21, 24, 25, 31, 55, 62], "delet": [2, 47, 53, 77, 81], "cannot": [2, 3, 15, 25, 31, 38, 39, 47, 49, 70, 77], "move": [2, 11, 47, 73, 75, 77, 82], "assign": [2, 9, 14, 45, 55, 56, 75], "qview": [2, 5, 10, 12, 15, 19, 38, 39, 46], "observe_result": [2, 3, 12, 35, 64], "encapsul": [2, 11, 35, 47, 55, 81], "observ": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 20, 22, 23, 27, 29, 38, 52, 53, 55, 56, 57, 59, 64, 66, 67, 68, 69, 70, 74, 82], "call": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 19, 21, 22, 23, 24, 25, 27, 29, 31, 37, 38, 39, 42, 46, 52, 55, 56, 59, 60, 62, 65, 66, 67, 68, 70, 71, 74, 75, 77, 79], "measur": [2, 3, 5, 7, 9, 10, 11, 12, 13, 15, 16, 18, 23, 24, 25, 27, 32, 35, 36, 38, 39, 40, 42, 49, 52, 53, 55, 56, 58, 59, 60, 63, 65, 66, 71, 74, 82], "execut": [2, 4, 9, 13, 15, 21, 31, 32, 33, 34, 35, 37, 39, 40, 45, 46, 53, 55, 56, 59, 60, 61, 63, 64, 65, 66, 68, 71, 74, 77, 78, 79, 81, 82, 83], "ansatz": [2, 4, 6, 9, 13, 14, 22, 23, 35, 38, 54, 55, 64], "circuit": [2, 3, 5, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 29, 34, 35, 39, 40, 43, 44, 48, 49, 53, 54, 55, 56, 59, 60, 62, 64, 65, 71, 73], "global": [2, 3, 9, 14, 21, 35, 39, 54, 60, 65, 75], "expect": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 20, 21, 22, 23, 24, 27, 29, 32, 35, 52, 54, 55, 56, 60, 63, 68, 75, 77, 81, 82], "h": [2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 26, 29, 31, 35, 37, 38, 42, 43, 44, 46, 47, 49, 52, 53, 54, 55, 56, 58, 60, 62, 64, 65, 66, 67, 68, 70, 71, 73, 74, 75, 77, 79, 81, 82], "precomput": 2, "psi": [2, 6, 7, 10, 12, 16, 24, 31, 35, 38, 60, 69, 70], "sample_result": [2, 3, 19, 24, 35, 65, 81], "wa": [2, 3, 4, 7, 9, 12, 21, 35, 55, 56, 66, 71, 75, 78, 82], "shot": [2, 3, 8, 9, 10, 17, 18, 19, 24, 35, 38, 53, 56, 60, 65, 66, 69, 70, 74], "base": [2, 3, 8, 9, 11, 13, 15, 18, 19, 21, 23, 28, 33, 34, 35, 37, 41, 42, 47, 52, 53, 54, 55, 56, 60, 68, 71, 74, 75, 77, 79, 83], "raw_data": [2, 9, 35], "raw": [2, 3, 9], "convers": [2, 35], "simpli": [2, 31, 70, 77, 82], "ignor": [2, 9, 19, 56], "fine": [2, 35, 66, 67, 70], "grain": [2, 35, 66, 67], "explicitli": [2, 9, 10, 49, 53, 56, 71, 79, 81], "request": [2, 3, 35, 53, 54, 55, 56, 65, 77], "oppos": [2, 81], "observe_data": 2, "spinoptyp": [2, 35], "sub": [2, 3, 34, 35, 38, 39, 47, 48, 52, 77], "id_coeffici": [2, 35], "observe_opt": [2, 35], "option": [2, 3, 4, 7, 9, 10, 12, 13, 17, 18, 22, 23, 24, 29, 30, 35, 37, 42, 45, 52, 53, 54, 55, 60, 64, 65, 67, 68, 74, 75, 77], "async_observ": 2, "param": [2, 4, 13, 14, 17, 38, 39, 42, 54, 68], "run": [2, 3, 5, 7, 8, 9, 11, 12, 17, 18, 23, 24, 32, 33, 34, 35, 38, 52, 53, 54, 55, 56, 57, 59, 64, 65, 66, 67, 68, 71, 74, 75, 77, 78, 81, 82, 83], "applic": [2, 4, 5, 7, 9, 10, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 28, 32, 35, 42, 46, 52, 53, 56, 59, 60, 62, 63, 77, 78, 81, 82], "num_trajectori": [2, 3, 56], "trajectori": [2, 3], "presenc": 2, "simul": [2, 4, 6, 8, 10, 12, 17, 18, 19, 23, 24, 25, 29, 30, 31, 32, 33, 34, 35, 51, 52, 53, 57, 59, 60, 63, 65, 66, 68, 69, 71, 72, 75, 82, 83], "noisi": [2, 17, 18, 21, 32, 63, 65], "quantumkernel": [2, 35, 46], "arg": [2, 3, 9, 11, 15, 18, 35, 37, 42, 46, 52, 55, 60, 71, 77], "is_invocable_r_v": 2, "member": [2, 3, 14, 39], "conveni": [2, 15, 28, 43, 49, 75, 77], "what": [2, 3, 4, 8, 9, 10, 14, 16, 18, 19, 23, 31, 32, 33, 57, 68, 74, 81, 83], "": [2, 3, 4, 5, 9, 10, 12, 14, 15, 16, 17, 18, 20, 21, 23, 24, 27, 29, 31, 32, 33, 35, 42, 45, 49, 52, 53, 54, 55, 56, 58, 59, 60, 64, 65, 66, 67, 68, 71, 73, 75, 77, 78, 79, 82, 83], "spinopcontain": 2, "termlist": 2, "everi": [2, 3, 14, 17, 18, 20, 33, 54, 55, 59, 60, 65, 66, 75, 82, 83], "concept": [2, 34, 35, 39, 41], "executioncontext": 2, "abstract": [2, 3, 28, 34, 35, 37, 42, 43, 45, 47, 55, 59], "how": [2, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 28, 29, 31, 33, 35, 37, 42, 52, 54, 55, 56, 59, 60, 62, 63, 65, 66, 67, 68, 71, 74, 75, 77, 78, 81, 82, 83], "shots_": 2, "basic": [2, 6, 32, 54, 62, 77, 82], "invoc": [2, 3, 37, 39, 45, 47, 55, 56, 74], "expectationvalu": 2, "nullopt": 2, "optimization_result": [2, 35], "optresult": 2, "optim": [2, 4, 6, 8, 9, 11, 12, 13, 14, 18, 19, 23, 32, 33, 34, 44, 47, 49, 52, 53, 54, 56, 63, 71, 73, 75, 77, 83], "hasconditionalsonmeasureresult": 2, "fals": [2, 3, 4, 8, 9, 12, 13, 16, 17, 19, 20, 21, 56, 75, 77], "being": [2, 3, 5, 6, 16, 27, 34, 35, 49, 56, 65, 81], "statement": [2, 7, 26, 35, 36, 59], "noise_model": [2, 3, 13, 17, 18, 27, 56], "noisemodel": [2, 3, 13, 17, 18, 27, 56], "nullptr": 2, "canhandleobserv": 2, "flag": [2, 13, 33, 39, 52, 53, 55, 56, 65, 71, 73, 77, 81, 83], "handl": [2, 3, 7, 9, 20, 52, 53, 54, 55, 56, 65, 74, 77, 81], "task": [2, 5, 9, 13, 21, 24, 25, 31, 35, 43, 55, 56, 60, 71, 74], "under": [2, 3, 13, 18, 21, 33, 52, 53, 73, 74, 75, 77, 81, 83], "asyncexec": 2, "occur": [2, 3, 7, 9, 12, 18, 26, 35, 40, 65, 70, 77], "asynchron": [2, 3, 10, 12, 13, 24, 35, 45, 55, 60, 65, 68], "detail": [2, 3, 4, 8, 10, 13, 14, 17, 33, 34, 40, 52, 53, 54, 56, 74, 75, 77, 82, 83], "futur": [2, 3, 35, 51, 53, 55, 56, 65, 75, 77], "futureresult": 2, "store": [2, 3, 4, 12, 13, 16, 20, 40, 47, 55, 60, 65, 68, 69, 70, 71], "async_result": [2, 65], "asyncresult": [2, 68], "async_sample_result": [2, 35, 55], "so": [2, 5, 8, 9, 10, 12, 13, 14, 16, 17, 18, 19, 21, 23, 25, 29, 31, 33, 35, 52, 53, 55, 56, 66, 70, 71, 73, 74, 75, 77, 81, 82, 83], "boundari": [2, 11], "unique_ptr": 2, "simulationst": 2, "pointer": [2, 3, 81], "amplitudemap": 2, "amplitud": [2, 3, 5, 15, 17, 21, 52, 53, 55, 62, 65, 68, 69, 70], "overlapcomputest": 2, "overlap": [2, 3, 12, 55], "overlapresult": 2, "trace": [2, 3, 16, 21, 27, 54], "kerneltrac": 2, "tracer": 2, "persist": [2, 35, 40, 54, 77], "resourc": [2, 4, 19, 23, 29, 45, 54, 55, 56, 60, 75, 77], "kernelnam": [2, 3], "batchiter": 2, "batch": [2, 29, 40, 56], "observe_n": 2, "sample_n": 2, "totaliter": 2, "registernam": [2, 35], "mid": [2, 3, 56], "mode": [2, 3, 9, 24, 33, 38, 40, 52, 53, 65, 71, 75, 83], "keep": [2, 5, 18, 35, 56], "track": [2, 35, 56, 69, 70], "reorderidx": 2, "inform": [2, 3, 5, 7, 9, 12, 13, 16, 19, 21, 23, 28, 33, 35, 40, 42, 45, 47, 53, 54, 55, 56, 60, 65, 68, 69, 70, 71, 75, 77, 79, 80, 82, 83], "reorder": 2, "after": [2, 3, 4, 7, 9, 13, 16, 31, 35, 53, 60, 62, 65, 71, 75, 77], "empti": [2, 3, 12, 37, 43, 56, 65, 77], "mean": [2, 3, 5, 13, 15, 16, 17, 21, 23, 42, 49, 56, 65, 68, 77, 82], "char": [2, 38, 55, 60, 75, 81, 82], "invocationresultbuff": 2, "buffer": [2, 55, 81], "note": [2, 3, 9, 10, 14, 16, 18, 19, 20, 21, 24, 31, 33, 38, 40, 49, 53, 54, 55, 60, 62, 65, 69, 70, 71, 75, 77, 81, 83], "need": [2, 3, 4, 5, 9, 13, 14, 15, 18, 19, 23, 24, 25, 27, 31, 49, 52, 53, 54, 55, 56, 60, 64, 65, 68, 74, 75, 77, 78, 81], "abl": [2, 9, 13, 24, 35, 53, 54, 55, 60, 77, 81, 82], "numbertrajectori": 2, "calcul": [2, 3, 5, 6, 7, 9, 11, 16, 19, 21, 24, 29, 52, 54, 55, 56, 60, 65, 68], "job": [2, 13, 14, 35, 53, 54, 55, 65, 77], "qpu": [2, 3, 10, 12, 13, 23, 24, 25, 29, 32, 33, 34, 35, 40, 45, 53, 55, 56, 59, 60, 64, 65, 68, 74, 81, 82, 83], "extra": [2, 11, 12, 42, 49, 53], "configur": [2, 8, 9, 13, 22, 45, 53, 54, 55, 56, 65, 68, 71, 74, 75, 77, 78, 81, 82], "later": [2, 7, 9, 12, 13, 16, 17, 35, 39, 55, 65, 75, 77], "server": [2, 53, 55, 65, 77], "file": [2, 4, 9, 13, 25, 35, 42, 53, 54, 55, 60, 61, 65, 68, 71, 73, 74, 75, 77, 78, 79, 81, 82], "read": [2, 3, 13, 14, 19, 62, 65], "wrap": [2, 35, 37, 49, 52], "t": [2, 3, 4, 7, 10, 15, 20, 21, 31, 33, 35, 38, 39, 42, 43, 52, 54, 56, 62, 65, 66, 69, 70, 75, 77, 83], "case": [2, 3, 7, 8, 9, 12, 14, 15, 16, 17, 18, 23, 26, 27, 29, 35, 49, 52, 56, 58, 62, 64, 69, 75, 79, 81], "must": [2, 3, 7, 13, 17, 18, 19, 23, 24, 34, 35, 39, 41, 44, 47, 49, 52, 53, 56, 65, 70, 73, 74, 75, 77, 81, 82], "some": [2, 4, 8, 9, 11, 13, 15, 16, 17, 19, 20, 23, 25, 26, 30, 33, 35, 49, 52, 54, 55, 56, 70, 71, 73, 74, 75, 77, 78, 81, 82, 83], "point": [2, 3, 9, 15, 31, 35, 39, 42, 55, 56, 71, 74, 75, 77], "same": [2, 3, 7, 9, 12, 13, 14, 15, 16, 17, 18, 21, 23, 29, 31, 35, 49, 53, 55, 60, 65, 67, 68, 71, 74, 75, 77, 81], "runtim": [2, 9, 34, 35, 37, 40, 53, 54, 55, 56, 64, 71, 74, 77, 79], "_job": 2, "qpunamein": 2, "config": [2, 4, 56, 74, 75, 77, 82], "info": [2, 21, 54, 56, 61, 71], "requir": [2, 3, 4, 7, 8, 9, 10, 11, 13, 15, 16, 19, 21, 23, 29, 31, 35, 39, 41, 42, 44, 46, 47, 49, 52, 53, 54, 55, 56, 65, 68, 69, 70, 75, 78, 82], "date": 2, "even": [2, 7, 9, 14, 17, 19, 24, 33, 56, 75, 77, 81, 83], "face": [2, 21, 41], "itself": [2, 46, 49, 55, 75, 77], "collect": [2, 3, 4, 8, 12, 13, 16, 60], "pertin": [2, 35, 41, 46, 47], "remot": [2, 3, 35, 40, 51, 54, 56, 61, 68], "rest": [2, 3, 5, 13, 16, 17, 34, 53, 55, 56, 65, 75, 77, 81], "wait": [2, 3, 9, 13, 24, 54, 55, 60, 65], "until": [2, 3, 9, 13, 17, 21, 24, 60, 65], "readi": [2, 19, 22, 65, 77], "executionresult": 2, "correspond": [2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 20, 21, 23, 28, 29, 35, 53, 65, 66, 75, 77, 79], "well": [2, 3, 5, 10, 12, 13, 18, 19, 20, 28, 33, 35, 38, 40, 52, 56, 74, 77, 78, 81, 83], "integ": [2, 3, 12, 14, 17, 24, 25, 32, 39, 45, 55, 56, 60, 62, 68], "1st": [2, 16, 27], "bitstr": [2, 3, 5, 9, 14, 17, 35], "m": [2, 4, 8, 9, 10, 12, 18, 31, 38, 43, 55, 56, 65, 68, 71, 75, 77, 81, 82], "tripl": [2, 71], "long": [2, 24, 35, 38, 60, 75, 77, 81, 82], "length": [2, 5, 18, 65], "deseri": [2, 3], "discuss": [2, 9, 16, 29, 73], "brief": [2, 74], "countsdictionari": [2, 35], "assum": [2, 3, 7, 8, 9, 13, 14, 16, 17, 18, 19, 40, 42, 47, 52, 55, 56, 60, 65, 74, 75, 77, 79], "expval": [2, 35], "other": [2, 3, 4, 8, 9, 12, 13, 14, 15, 16, 18, 19, 20, 22, 23, 24, 27, 31, 32, 34, 37, 39, 42, 47, 49, 52, 53, 54, 55, 56, 58, 59, 60, 65, 75, 77, 81, 82], "appendresult": 2, "globalregisternam": [2, 35], "classic": [2, 4, 7, 8, 9, 11, 12, 13, 14, 15, 16, 22, 23, 34, 36, 39, 40, 42, 43, 47, 49, 55, 59, 60, 65, 69, 70, 71, 74, 75, 78, 81], "sequentialdata": 2, "sequenti": [2, 3, 35, 54, 56, 60], "collat": [2, 3], "holist": 2, "nullari": 2, "precomputedexp": 2, "__global__": [2, 3, 35, 54, 65, 79], "has_expect": 2, "string_view": [2, 35, 74], "anoth": [2, 5, 9, 16, 17, 19, 38, 39, 49, 56, 62, 65, 67, 75], "register_nam": [2, 3, 35], "tandem": [2, 68], "to_map": [2, 35], "regnam": 2, "merg": [2, 3, 71], "necessari": [2, 12, 19, 53, 55, 56, 65, 71, 75, 77, 81], "document": [2, 3, 23, 31, 32, 33, 34, 42, 51, 53, 54, 56, 73, 74, 75, 77, 81, 83], "exp_val_z": 2, "deprec": [2, 3, 23, 51, 55, 56], "probabl": [2, 3, 17, 18, 19, 27, 35, 56, 60, 69, 70, 81], "most_prob": [2, 3, 5, 8, 19, 38, 60, 70], "most": [2, 3, 8, 9, 13, 14, 16, 19, 23, 24, 25, 33, 35, 49, 54, 60, 62, 65, 71, 75, 77, 78, 81, 83], "ostream": [2, 81], "output": [2, 3, 4, 7, 11, 16, 19, 21, 31, 39, 52, 53, 57, 60, 71, 77, 81, 82], "stream": [2, 9, 40], "extract": [2, 3, 4, 7, 9, 10, 12, 16, 19, 28, 35, 37, 38, 47, 49, 60, 71, 75, 77], "unord": 2, "get_margin": [2, 35], "marginalindic": [2, 35], "margin": [2, 18], "those": [2, 19, 33, 35, 39, 49, 52, 55, 56, 71, 83], "subset": [2, 3, 9, 11, 21, 35, 39, 47, 49], "rvalu": 2, "refer": [2, 13, 14, 16, 19, 23, 32, 35, 39, 40, 47, 49, 53, 54, 55, 56, 65, 75, 77], "newbitstr": 2, "oldbitstr": 2, "process": [2, 3, 9, 10, 15, 17, 21, 23, 24, 25, 26, 33, 34, 35, 40, 45, 52, 53, 54, 55, 56, 59, 65, 68, 69, 70, 71, 75, 81, 83], "const_iter": 2, "cbegin": 2, "cend": 2, "has_even_par": 2, "pariti": [2, 52], "sample_opt": [2, 35], "async_sampl": 2, "express": [2, 3, 13, 16, 21, 29, 33, 35, 36, 37, 38, 40, 43, 52, 55, 59, 66, 67, 71, 81, 83], "final": [2, 3, 4, 6, 9, 12, 13, 16, 20, 23, 29, 52, 55, 64, 66, 68, 71, 74, 75], "variad": [2, 35], "concret": [2, 3, 14, 35, 60, 64], "evalu": [2, 3, 7, 9, 12, 23, 29, 35, 54, 55, 56, 64], "dictionari": [2, 3, 13, 18, 35, 60, 66], "extens": [2, 31, 34, 35, 41, 47, 51, 74, 77, 79, 82], "describ": [2, 3, 5, 10, 12, 13, 16, 18, 19, 27, 45, 47, 52, 53, 67, 70, 74, 75, 77, 81], "effici": [2, 9, 13, 19, 21, 23, 30, 56], "manner": [2, 35, 55, 74], "client": [2, 35, 54, 75], "remain": [2, 3, 4, 46, 65, 75], "gpu": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 17, 20, 21, 23, 24, 29, 32, 33, 34, 40, 55, 57, 59, 63, 74, 75, 79, 81, 82, 83], "devic": [2, 3, 9, 11, 13, 17, 18, 21, 23, 24, 27, 29, 35, 38, 39, 42, 46, 53, 54, 55, 56, 60, 65, 71, 74, 77], "cpu": [2, 4, 5, 9, 11, 13, 14, 15, 16, 17, 18, 20, 21, 24, 25, 27, 31, 32, 51, 54, 55, 59, 60, 68, 71, 75, 77, 81, 82], "memori": [2, 9, 11, 20, 21, 36, 39, 40, 47, 49, 54, 55, 56, 59, 68, 71, 77], "primari": [2, 3, 5, 8, 35, 47, 74], "goal": [2, 5, 7, 9, 14, 19, 20, 23], "minim": [2, 8, 9, 13, 14, 18, 21, 22, 23, 29, 31, 32, 75, 77, 82], "transfer": [2, 55, 56], "subclass": [2, 35, 74], "cusvstat": 2, "scalartyp": [2, 81], "remotesimulationst": 2, "nvqir": [2, 32, 71, 72, 74], "mpssimulationst": 2, "tensornetsimulationst": 2, "made": [2, 14, 19, 20, 60, 77], "extent": [2, 3, 56], "enum": [2, 3, 4, 52], "precis": [2, 3, 15, 22, 23, 54, 56, 62, 70], "enumer": [2, 3, 5, 13, 18, 21, 38], "fp32": [2, 3, 23, 54, 55, 56], "fp64": [2, 3, 12, 13, 22, 30, 51, 54, 55, 56], "simulation_precis": 2, "possibl": [2, 7, 8, 9, 13, 16, 17, 18, 21, 25, 31, 34, 49, 69, 70, 77, 79, 81], "float": [2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 20, 22, 23, 28, 29, 35, 38, 39, 42, 46, 54, 55, 56, 62, 64, 74], "tensorstatedata": 2, "dimens": [2, 3, 6, 8, 9, 12, 14, 16, 21, 29, 35, 52, 56], "state_data": 2, "variant": [2, 13, 42], "custatevec": [2, 54, 55, 56, 74], "attempt": [2, 19, 81], "care": [2, 35, 81], "taken": [2, 9], "ensur": [2, 3, 12, 13, 71, 73, 75, 77, 81], "comparison": [2, 7], "compat": [2, 3, 41, 56, 75], "registeredtyp": 2, "declar": [2, 13, 35, 39, 40, 42, 71, 74, 79, 81], "themselv": [2, 53, 58], "plugin": [2, 33, 73, 75, 77, 83], "myinterfac": 2, "column": [2, 3, 31], "upon": [2, 6, 16, 24, 25, 49, 60, 65, 69, 70, 77], "destruct": 2, "rawdata": 2, "intern": [2, 3, 55], "modifi": [2, 38, 39, 42, 46, 49, 56, 77], "correct": [2, 5, 15, 16, 18, 21, 38, 59, 65, 75, 77], "j": [2, 3, 8, 9, 10, 12, 14, 15, 18, 19, 20, 21, 24, 25, 38, 39, 43, 68, 75], "minimal_eigenvalu": [2, 3], "eigenvalu": [2, 3, 10, 12, 14, 56], "thei": [2, 3, 4, 6, 9, 12, 13, 14, 16, 17, 19, 33, 39, 47, 49, 59, 69, 70, 75, 77, 83], "set_zero": 2, "seen": [2, 7, 13, 19, 21], "manag": [2, 4, 53, 54, 55, 75, 77], "instruct": [2, 13, 19, 21, 33, 40, 42, 44, 49, 53, 54, 56, 65, 66, 71, 75, 77, 81, 82, 83], "control": [2, 3, 10, 12, 14, 15, 19, 32, 33, 34, 37, 38, 39, 40, 42, 44, 46, 47, 48, 49, 52, 53, 55, 56, 58, 59, 62, 63, 65, 66, 70, 71, 74, 77, 83], "flow": [2, 11, 34, 35, 39, 48, 56, 59, 71], "path": [2, 3, 31, 53, 56, 71, 74, 75, 77], "thu": [2, 13, 16, 52, 54, 55, 56, 70, 71], "might": [2, 4, 7, 9, 12, 17, 21, 37, 42, 49, 51, 54, 55, 67], "produc": [2, 3, 4, 5, 8, 9, 10, 12, 14, 17, 19, 24, 29, 35, 38, 43, 44, 49, 58, 60, 66, 71, 74, 81], "elementtyp": 2, "is_integral_v": 2, "is_signed_v": 2, "exclus": [2, 7], "stop": [2, 13, 60, 77], "step": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 21, 23, 29, 38, 52, 65, 71, 75, 79, 82], "reach": [2, 17, 21, 68], "is_invocable_v": 2, "draw": [2, 3, 5, 6, 7, 9, 15, 18, 19, 21, 24, 27, 31, 60], "utf": [2, 3], "8": [2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 33, 35, 38, 39, 40, 51, 52, 53, 54, 55, 56, 65, 68, 69, 71, 75, 77, 82, 83], "usag": [2, 3, 55, 68], "iostream": [2, 54, 58, 60, 65, 81], "mz": [2, 3, 5, 7, 10, 13, 16, 18, 19, 24, 25, 26, 35, 37, 38, 49, 53, 54, 55, 56, 58, 60, 62, 65, 66, 67, 68, 69, 70, 71, 81, 82], "cout": [2, 54, 56, 60, 65, 81], "q0": [2, 3, 5, 6, 7, 9, 15, 17, 19, 21, 24, 27, 31, 49], "q1": [2, 3, 5, 7, 9, 15, 17, 19, 21, 24, 27, 31, 49], "ry": [2, 3, 6, 8, 9, 10, 11, 16, 29, 35, 38, 39, 42, 44, 54, 55, 62, 64], "59": [2, 3, 14, 35, 38, 55, 64], "callabl": [2, 3, 34, 35, 37, 38, 39, 58, 64, 66], "trivial": [2, 9, 17, 19, 35, 55, 64, 78], "signatur": [2, 3, 35, 37, 39, 67, 71], "without": [2, 3, 12, 21, 23, 35, 39, 46, 53, 56, 65, 75, 77, 81, 82], "regard": 2, "depth": [2, 9, 50], "etc": [2, 3, 39, 40, 52, 55, 56, 59, 65, 74, 75, 77, 82], "kraus_op": 2, "krau": [2, 3, 27, 56], "initializer_list": 2, "initlist": 2, "adjoint": [2, 15, 19, 37, 38, 42, 46, 49, 62, 71], "flatten": [2, 21, 81], "nrow": [2, 11, 31], "ncol": [2, 31], "is_same_v": 2, "kraus_channel": [2, 13], "channel": [2, 3, 13, 16, 18, 27, 56, 77], "action": [2, 4, 35, 38, 39, 77], "matric": [2, 3, 4, 12, 56], "amplitude_damping_channel": 2, "bit_flip_channel": [2, 56], "depolarization_channel": [2, 27], "phase_flip_channel": 2, "inputlist": 2, "inop": 2, "lvalu": 2, "make": [2, 3, 7, 8, 13, 15, 16, 23, 31, 35, 55, 56, 71, 74, 75, 77, 79, 82], "get_op": 2, "push_back": [2, 39], "noise_model_typ": 2, "noise_typ": 2, "unknown": [2, 16, 71, 77], "autom": [2, 74], "damp": 2, "error": [2, 9, 10, 13, 17, 27, 31, 32, 33, 42, 49, 52, 53, 54, 56, 59, 65, 75, 77, 81, 83], "depolar": [2, 3, 13, 27], "densiti": [2, 3, 13, 16, 17, 18, 27, 31, 51, 54, 56], "predicatefuncti": 2, "callback": [2, 3, 22, 23], "operand": [2, 3, 42, 55], "add_channel": [2, 3, 17, 18, 27], "quantumop": 2, "pred": [2, 71], "add_all_qubit_channel": [2, 3, 13, 56], "numcontrol": 2, "get_channel": [2, 3], "targetqubit": 2, "controlqubit": 2, "relev": [2, 4, 6, 9, 11, 18, 45, 56], "downstream": [2, 32, 74, 78, 80], "object": [2, 3, 4, 8, 9, 13, 14, 18, 20, 24, 25, 29, 31, 35, 49, 55, 56, 60, 71], "logic": [2, 7, 45, 47, 55], "kernel_build": [2, 37], "kernel_builder_bas": 2, "kernelbuildertyp": 2, "mlir": [2, 3, 13, 32, 55, 71, 72, 73, 75], "getargu": [2, 37, 73], "quakevalu": [2, 3, 37], "isargstdvec": 2, "otherwis": [2, 3, 7, 16, 17, 19, 56, 60], "getnumparam": [2, 37], "qalloc": [2, 3, 13, 37, 53, 54, 55, 68], "qvec": [2, 49, 53], "veq": [2, 3, 49, 71], "blockargu": 2, "simplic": [2, 4, 13, 17], "impli": [2, 3, 56], "goe": [2, 40], "scope": [2, 39, 40, 47, 71, 73], "befor": [2, 10, 13, 14, 20, 31, 53, 61, 65, 75, 77], "mai": [2, 3, 7, 9, 12, 13, 14, 18, 33, 35, 37, 39, 40, 42, 46, 47, 52, 53, 54, 55, 56, 59, 60, 61, 65, 67, 75, 77, 79, 81, 82, 83], "garbag": 2, "constantv": 2, "val": [2, 13, 18], "swap": [2, 4, 8, 19, 21, 31, 38, 65], "mod": [2, 5, 19, 42], "perform": [2, 3, 4, 5, 7, 9, 11, 12, 15, 16, 17, 18, 20, 21, 22, 23, 26, 32, 33, 35, 38, 52, 53, 55, 56, 60, 62, 63, 65, 67, 68, 70, 73, 74, 75, 77, 81, 82, 83], "fredkin": 2, "between": [2, 3, 5, 7, 8, 9, 10, 14, 16, 17, 18, 19, 21, 22, 24, 25, 31, 39, 49, 52, 54, 58, 59, 60, 65, 68, 77, 79], "meant": [2, 34], "thin": [2, 3], "wrapper": [2, 3, 55], "around": [2, 3, 4, 5, 7, 18, 20, 35, 82], "instanc": [2, 3, 7, 9, 16, 21, 35, 37, 42, 47, 54, 55, 56, 59, 77], "quak": [2, 3, 14, 32, 48, 71, 73], "dialect": [2, 3, 71, 73], "arithmet": [2, 39, 40], "getvalu": 2, "actual": [2, 18, 21, 35, 56, 60, 74], "implicitlocopbuild": 2, "arith": [2, 49, 71], "constantfloatop": 2, "canvalidatenumel": 2, "stdvectyp": 2, "do": [2, 3, 4, 9, 13, 15, 16, 18, 19, 21, 33, 42, 44, 47, 49, 54, 55, 56, 58, 59, 62, 66, 70, 71, 75, 77, 78, 79, 82, 83], "loop": [2, 4, 5, 8, 9, 12, 14, 17, 20, 29, 36, 47, 58, 65, 68, 71], "know": [2, 4, 5, 16, 19, 31, 33, 49, 83], "bound": [2, 3, 8, 16, 18], "startidx": [2, 3], "subscript": [2, 3, 53, 54], "stdvec": [2, 49, 71], "constants": 2, "isstdvec": 2, "getrequiredel": 2, "veqtyp": 2, "divid": [2, 14, 19], "invers": [2, 15, 21, 38, 52], "friend": [2, 16], "write": [2, 3, 13, 61, 65, 70, 73, 77, 79], "u": [2, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 19, 21, 22, 24, 25, 31, 38, 39, 43, 44, 52, 53, 58, 59, 60, 65, 67, 68, 69, 70, 71], "wai": [2, 3, 7, 12, 19, 23, 24, 25, 29, 35, 46, 49, 52, 53, 60, 62, 75], "code": [2, 3, 5, 7, 8, 9, 10, 13, 14, 15, 16, 19, 22, 23, 28, 29, 31, 33, 34, 35, 37, 38, 39, 40, 43, 44, 46, 47, 49, 52, 53, 54, 55, 56, 60, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 78, 79, 81, 82, 83], "mlircontext": 2, "ctx": [2, 11, 73], "f": [2, 5, 7, 9, 13, 16, 18, 19, 20, 21, 29, 38, 39, 52, 75, 82], "high": [2, 13, 18, 53, 68, 71, 81], "serv": [2, 3, 9, 39, 47, 54, 73, 75], "work": [2, 4, 7, 8, 9, 10, 12, 15, 18, 19, 21, 23, 32, 35, 54, 55, 68, 72, 75, 77, 78, 81, 82], "subtyp": 2, "possibli": [2, 4, 39], "deleg": [2, 54, 74, 77], "third": [2, 32, 80], "parti": [2, 16, 32, 80], "immut": 2, "mutabl": [2, 35], "gradient": [2, 6, 11, 32, 54, 63], "df": [2, 18], "dx_i": 2, "scalar": [2, 3, 35], "queri": [2, 3, 5, 7, 35, 45, 55, 64], "whether": [2, 3, 7, 19, 21, 33, 75, 77, 83], "strategi": [2, 35, 40, 46, 74], "thing": [2, 67], "max": [2, 7, 9, 13, 21, 32, 54, 56], "cobyla": [2, 3, 6, 9, 22, 23, 29, 35], "opt": [2, 39, 71, 73, 75, 77], "assert": [2, 5, 13, 19, 21, 23, 38, 39], "requiresgradi": [2, 35], "algo": 2, "opt_val": [2, 54], "opt_param": [2, 13, 35, 54], "dx": [2, 35], "virtual": [2, 4, 33, 35, 54, 55, 60, 64, 68, 74, 75, 83], "achiev": [2, 4, 13, 14, 15, 19, 35, 53, 54, 67], "dim": [2, 3, 21, 54, 56], "optimizable_funct": [2, 35], "opt_funct": [2, 35, 54], "variat": [2, 4, 6, 9, 11, 12, 14, 23, 24, 29, 32, 35], "custom": [2, 3, 13, 23, 27, 33, 35, 39, 52, 55, 56, 62, 66, 73, 75, 77, 80, 81, 83], "ptrtoown": 2, "jdx": 2, "tensoridx": 2, "get_tensor": 2, "just": [2, 7, 9, 13, 14, 19, 24, 34, 48, 55, 60, 61, 66, 69, 70, 71, 77], "rank": [2, 3, 55, 66, 68], "get_num_tensor": 2, "get_num_qubit": [2, 45], "get_precis": [2, 3], "is_on_gpu": [2, 3], "to_host": 2, "hostptr": 2, "numel": 2, "pure": [2, 27, 38, 39, 46], "basisst": 2, "host": [2, 36, 38, 39, 40, 43, 47, 54, 55, 56, 64, 81, 82], "leverag": [2, 3, 9, 12, 21, 35, 37, 39, 42, 46, 47, 56, 66, 71, 74, 78], "separ": [2, 9, 21, 56, 75, 77], "mapper": 2, "inherit": [2, 36, 40, 55], "updat": [2, 9, 23, 33, 35, 53, 65, 75, 82, 83], "protect": [2, 47, 74], "getexpectedvalu": 2, "central_differ": [2, 35], "forward_differ": 2, "parameter_shift": 2, "prescrib": 2, "kernelt": 2, "argsmapp": [2, 35], "setarg": 2, "save": [2, 3, 10, 11, 16, 17, 20, 29, 52, 54, 55, 56, 60, 68, 71, 77, 79], "nvqc": [2, 51, 54], "setkernel": 2, "been": [2, 3, 16, 19, 21, 31, 53, 54, 59, 60, 65, 75, 77], "have": [2, 5, 7, 8, 9, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 30, 31, 33, 35, 49, 52, 54, 55, 56, 60, 65, 68, 69, 70, 73, 75, 77, 78, 79, 81, 82, 83], "funcatx": [2, 3], "func": [2, 35, 49, 71, 73], "clone": [2, 11, 16, 47, 73, 75], "deriv": [2, 7, 9, 10, 19, 35, 69, 70], "exp_h": [2, 35], "forward": [2, 11, 23, 29], "approxim": [2, 8, 9, 12, 13, 14, 17, 23, 32, 56, 60], "registri": [2, 77], "unit": [2, 3, 13, 24, 25, 31, 34, 39, 40, 42, 45, 47, 53, 59, 70], "certain": [2, 3, 7, 8, 13, 21, 26, 30, 47, 54, 55, 56, 74, 77], "connect": [2, 9, 11, 14, 33, 40, 45, 47, 49, 65, 75, 83], "queue": [2, 13, 35, 54, 65], "enqueu": 2, "quantum_platform": [2, 3, 45, 55, 64, 71], "baseremoterestqpu": 2, "baseremotesimulatorqpu": 2, "orcaremoterestqpu": 2, "_qpuid": 2, "setid": 2, "thread": [2, 3, 40, 55, 56, 64, 65, 68, 74], "getexecutionthreadid": 2, "getnumqubit": 2, "getconnect": 2, "issimul": 2, "supportsconditionalfeedback": 2, "feedback": [2, 40, 59, 77], "remotecap": 2, "getremotecap": 2, "capabl": [2, 19, 20, 21, 52, 54, 56, 68, 75, 77], "setshot": 2, "_nshot": 2, "noth": [2, 16], "wish": [2, 9, 54, 55, 64, 77], "isemul": 2, "local": [2, 3, 4, 13, 25, 32, 53, 54, 55, 60, 65, 71, 75, 76, 78], "emul": [2, 3, 13, 24, 25, 53, 56, 65], "quantumtask": 2, "setexecutioncontext": 2, "resetexecutioncontext": 2, "reset": [2, 3, 35, 38, 40, 56, 74], "kernelthunkresulttyp": 2, "launchkernel": 2, "kernelthunktyp": 2, "kernelfunc": 2, "uint64_t": 2, "rawarg": 2, "launch": [2, 35, 55, 56, 77, 82], "pack": [2, 81], "launchserializedcodeexecut": 2, "serializedcodeexecutioncontext": 2, "serializecodeexecutionobject": 2, "onrandomseedset": 2, "notifi": 2, "let": [2, 5, 7, 10, 13, 14, 15, 16, 18, 19, 21, 22, 27, 31, 42, 49, 52, 56, 58, 59, 60, 64, 66, 67, 68, 70, 71, 77, 78, 79, 82], "fermioniqbaseqpu": 2, "querabaseqpu": 2, "basenvcfsimulatorqpu": 2, "submit": [2, 3, 13, 53, 54, 56, 65, 77], "nvcf": 2, "servic": [2, 53, 54, 55, 65, 77], "interact": [2, 3, 4, 8, 13, 45, 52, 77], "enough": [2, 5, 9], "moreov": [2, 16, 35, 40, 53, 55, 59, 74], "synchron": [2, 13, 39, 55, 65], "realiz": [2, 4, 20, 21, 70], "intend": [2, 34, 35, 37, 75, 79], "popul": [2, 3, 12], "platformqpu": 2, "qubitconnect": [2, 45], "fetch": [2, 9], "supports_task_distribut": 2, "multipl": [2, 3, 9, 10, 12, 18, 19, 23, 24, 25, 29, 31, 33, 42, 52, 53, 55, 56, 59, 60, 65, 67, 69, 70, 77, 83], "parallel": [2, 10, 12, 34, 40, 52, 56, 60, 77, 82], "qpu_id": [2, 3, 10, 12, 23, 24, 29, 35, 45, 54, 55, 60, 68], "get_shot": 2, "getter": 2, "onc": [2, 4, 9, 12, 15, 18, 21, 24, 37, 52, 53, 54, 59, 60, 65, 69, 75, 77, 79, 82], "set_shot": 2, "clear_shot": 2, "remov": [2, 9, 21, 49, 51, 54, 55, 56, 77], "numshot": 2, "setter": 2, "set_exec_ctx": 2, "get_exec_ctx": 2, "reset_exec_ctx": 2, "num_qpu": [2, 3, 10, 23, 29, 45, 54, 55, 64], "is_simul": [2, 45], "supports_conditional_feedback": 2, "get_current_qpu": [2, 45], "set_current_qpu": [2, 45], "device_id": [2, 45], "is_remot": [2, 3, 45], "qpuid": [2, 45, 55], "is_emul": [2, 3, 45], "set_nois": [2, 3], "get_remote_cap": 2, "reset_nois": 2, "turn": [2, 11, 15, 54, 61, 74], "off": [2, 3, 9, 11, 12, 15, 19, 54, 55, 56, 75], "enqueueasynctask": 2, "kernelexecutiontask": 2, "launchvq": 2, "kernelarg": 2, "n_param": 2, "vqe": [2, 3, 9, 14, 22, 29, 30, 32, 54, 62], "settargetbackend": 2, "resetlogstream": 2, "log": [2, 3, 33, 54, 75, 77, 83], "getlogstream": 2, "setlogstream": 2, "logstream": 2, "list_platform": 2, "structur": [2, 3, 4, 8, 9, 11, 14, 21, 23, 35, 37, 41, 43, 45, 47, 55, 56, 71, 73, 74, 79], "boolean": [2, 19, 37], "field": [2, 13, 14, 32, 52, 53, 55], "initvalu": 2, "stateoverlap": 2, "serializedcodeexec": 2, "command": [2, 8, 9, 10, 12, 23, 24, 25, 29, 30, 52, 53, 54, 55, 56, 60, 64, 65, 68, 74, 75, 77, 78, 79, 81, 82], "entir": [2, 5, 13, 17, 26, 31, 49, 66, 74], "forth": [2, 55], "commun": [2, 16, 35, 53, 55, 56, 75], "isremotesimul": 2, "ir": [2, 32, 37, 61, 72, 73, 74], "synthesi": [2, 21, 32, 34, 37, 43, 47, 48, 63, 71], "ultim": [2, 71, 74], "ad": [2, 4, 18, 23, 33, 35, 53, 54, 62, 66, 71, 75, 77, 79, 82, 83], "promis": [2, 5, 7, 12], "qubitedg": [2, 45], "thunk": 2, "num_available_gpu": [2, 3, 13, 60, 68], "set_random_se": [2, 3, 8, 11, 14, 16, 18, 19], "caller": [2, 39], "unset_nois": [2, 3], "dealloc": [2, 40, 47, 74], "mpi": [2, 33, 52, 55, 56, 66, 68, 82, 83], "against": [2, 3, 13, 33, 53, 75, 77, 79, 83], "argc": [2, 38, 60, 75, 82], "argv": [2, 38, 60, 75, 82], "program": [2, 10, 23, 24, 32, 34, 37, 39, 42, 47, 48, 52, 53, 54, 55, 56, 57, 59, 65, 66, 68, 71, 75, 77, 79, 82], "is_initi": [2, 3, 66], "num_rank": [2, 3, 68], "all_gath": [2, 3], "gather": [2, 3, 16, 24, 25, 38, 60, 69, 70], "fit": [2, 75], "come": [2, 4, 16, 40, 54, 65, 81], "all_reduc": 2, "binaryfunct": 2, "localvalu": 2, "rootrank": [2, 3], "input_st": [2, 3, 15, 21, 53, 65], "loop_length": [2, 3, 53, 65], "bs_angl": [2, 3, 53, 65], "n_sampl": [2, 3, 65], "10000": [2, 3, 14, 19, 53, 60, 65, 68], "ps_angl": [2, 3, 65], "sample_async": [2, 3, 10, 13, 24, 35, 55, 60, 65], "make_kernel": [3, 13, 37, 53, 54, 55, 68], "els": [3, 9, 11, 12, 13, 17, 19, 21, 31, 37, 55, 56, 60, 65, 75, 79, 82], "int_valu": 3, "float_valu": 3, "pykernel": 3, "argtypelist": 3, "programmat": 3, "str": [3, 5, 8, 9, 12, 13, 17, 18, 19, 20, 53, 55, 60, 65, 70, 81], "argument_count": 3, "alia": [3, 47], "pykerneldecor": 3, "verbos": [3, 4, 57, 71, 75, 78], "modul": [3, 4, 11, 52, 56, 60, 71, 75], "none": [3, 11, 13, 16, 19, 21, 38, 39, 52, 56], "funcsrc": 3, "locat": [3, 53, 55, 75, 77, 81], "overrideglobalscopedvar": 3, "decor": [3, 9, 39, 58], "lower": [3, 13, 23, 52, 71, 74], "ast": 3, "jit": [3, 9], "executionengin": 3, "__call__": 3, "__str__": 3, "extract_c_function_point": 3, "from_json": 3, "jstr": 3, "overridedict": 3, "convert": [3, 4, 9, 10, 12, 17, 19, 23, 28, 35, 52, 64, 71], "json": [3, 53, 55, 65, 77], "merge_kernel": 3, "othermod": 3, "moduleop": 3, "synthesize_callable_argu": 3, "funcnam": 3, "block": [3, 4, 8, 14, 19, 44, 62], "awai": [3, 13, 16, 49], "funcop": [3, 73], "to_json": 3, "self": [3, 9, 11, 14, 75, 77], "reconstruct": 3, "elsewher": [3, 21], "type_to_str": 3, "clean": [3, 4, 21], "kwarg": [3, 9], "languag": [3, 21, 32, 33, 36, 39, 40, 41, 42, 47, 48, 55, 59, 66, 70, 71, 74, 78, 83], "attribut": [3, 39, 66, 71], "coprocessor": [3, 35, 39], "shots_count": [3, 7, 8, 9, 10, 13, 17, 18, 19, 24, 25, 27, 53, 56, 60, 65, 66, 68], "over": [3, 5, 12, 13, 16, 17, 23, 24, 27, 29, 35, 47, 53, 60, 65, 74, 77], "ndarrai": [3, 11, 16, 27, 31, 52], "leav": [3, 16, 27, 53, 65, 69, 77], "doesn": 3, "firstfloat": 3, "secondfloat": 3, "kei": [3, 8, 10, 13, 14, 15, 18, 19, 20, 21, 23, 30, 44, 52, 53, 54, 74, 77, 82], "nois": [3, 9, 13, 17, 21, 27, 35, 45, 53, 56, 65], "model": [3, 9, 17, 20, 23, 27, 32, 33, 34, 35, 37, 39, 42, 47, 48, 49, 52, 53, 55, 56, 65, 71, 74, 77, 82, 83], "sampleresult": [3, 9, 60, 66, 74], "_mlir_lib": [3, 13], "_quakedialect": [3, 13], "cudaq_runtim": [3, 13], "asyncsampleresult": [3, 13, 65], "platform": [3, 13, 23, 24, 32, 33, 34, 42, 48, 51, 52, 53, 54, 56, 60, 64, 68, 71, 74, 75, 77, 83], "Will": [3, 44, 60], "whose": [3, 4, 11, 14, 19, 22, 35, 40, 52, 54, 55, 64, 70], "identif": 3, "spin_oper": [3, 14, 60], "spinoper": [3, 8, 9, 11, 12, 13, 14, 20, 23, 56, 60, 68], "nest": [3, 12, 55], "hermitian": [3, 12], "observeresult": [3, 56, 60], "observe_async": [3, 12, 23, 24, 29, 35, 54, 68], "asyncobserveresult": 3, "arg0": [3, 71], "prepar": [3, 5, 9, 10, 11, 12, 13, 15, 18, 20, 22, 24, 29, 62, 64, 66, 68], "select": [3, 8, 9, 11, 12, 13, 17, 19, 20, 21, 22, 23, 30, 52, 56, 60, 64, 77, 81], "get_state_async": [3, 55], "asyncstateresult": 3, "parameter_count": [3, 8, 9, 14, 22, 23, 68], "argument_mapp": [3, 14], "gradient_strategi": [3, 29], "arg1": 3, "format": [3, 11, 19, 21, 31, 35, 38, 47, 75], "ascii": [3, 31], "latex": [3, 31], "cx": [3, 9, 13, 16, 18, 21, 37, 53, 54, 68, 82], "translat": [3, 16, 19, 21, 24, 25, 35, 70, 71], "qir": [3, 71, 74], "adapt": [3, 14, 21, 33, 83], "openqasm2": 3, "openqasm": 3, "moduleid": [3, 71], "llvmdialectmodul": [3, 71], "source_filenam": [3, 71], "opaqu": [3, 47, 56, 71], "__nvqpp__mlirgen__function_variable_qreg": 3, "_z13variable_qregv": 3, "local_unnamed_addr": [3, 71], "tail": [3, 71], "__quantum__rt__qubit_allocate_arrai": [3, 71], "i64": [3, 71], "__quantum__qis__mz": [3, 71], "9": [3, 4, 8, 9, 10, 11, 12, 13, 17, 18, 20, 21, 23, 24, 29, 33, 35, 39, 40, 56, 65, 71, 75, 77, 83], "7": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 23, 24, 25, 29, 33, 35, 39, 40, 42, 47, 55, 65, 68, 71, 75, 77, 83], "__quantum__rt__qubit_release_arrai": [3, 71], "ret": [3, 71], "evolv": [3, 4, 16, 40, 52, 53, 70], "hamiltonian": [3, 6, 8, 9, 10, 11, 12, 13, 14, 20, 22, 23, 24, 27, 29, 38, 52, 53, 54, 55, 56, 60, 64], "operatorsum": 3, "productoper": 3, "elementaryoper": [3, 52], "scalaroper": [3, 52, 65], "schedul": [3, 14, 21, 52, 53, 60, 65], "initial_st": [3, 52], "union": [3, 18], "initialst": [3, 52], "sequenc": [3, 7, 13, 14, 19, 21, 49, 52, 59], "helper": [3, 13, 65], "collapse_oper": [3, 52], "store_intermediate_result": [3, 52], "integr": [3, 4, 13, 23, 32, 34, 40, 47, 53, 55, 77, 78], "baseintegr": 3, "evolveresult": 3, "evolut": [3, 4, 16, 20, 31, 33, 38, 40, 49, 52, 65, 74, 83], "degre": [3, 8, 23, 30, 52], "freedom": [3, 8, 52], "keyword": [3, 13], "access": [3, 4, 5, 7, 10, 12, 13, 15, 20, 23, 24, 25, 29, 33, 35, 40, 53, 54, 56, 66, 67, 68, 70, 74, 83], "properti": [3, 4, 7, 9, 13, 19, 49], "influenc": [3, 13, 30, 40], "dure": [3, 4, 6, 20, 21, 27, 35, 53, 56, 75, 77, 81], "evolve_async": [3, 53, 65], "asyncevolveresult": 3, "has_target": 3, "get_target": [3, 10, 23, 54, 55, 64, 82], "rais": [3, 12, 13, 52], "set_target": [3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 27, 29, 31, 52, 53, 54, 55, 56, 60, 64, 65, 68, 69, 74], "reset_target": [3, 13], "initialize_cudaq": 3, "environ": [3, 4, 9, 13, 23, 27, 30, 33, 52, 53, 54, 55, 61, 65, 73, 75, 77, 82, 83], "detect": [3, 13, 52, 60, 68, 75, 77, 81], "simulationprecis": 3, "underyl": 3, "noindex": 3, "infrastructur": [3, 33, 55, 73, 75, 83], "descript": [3, 21, 52, 54, 56, 74, 75, 77], "featur": [3, 4, 9, 15, 30, 33, 39, 52, 75, 77, 81, 82, 83], "activ": [3, 4, 8, 11, 32, 52, 55, 56, 75, 77, 82], "consist": [3, 4, 9, 17, 19, 21, 23, 29, 52, 60, 62], "physic": [3, 4, 13, 14, 16, 21, 23, 33, 34, 40, 47, 49, 53, 55, 56, 65, 70, 83], "0101": [3, 13, 17], "1010": [3, 13, 17], "consol": [3, 54, 61, 75], "cupi": [3, 25, 52, 77], "gettensor": 3, "compris": [3, 52], "tensori": 3, "mlirvalu": 3, "As": [3, 13, 14, 21, 34, 40, 41, 47, 52, 53, 55, 56, 58, 69, 70, 73], "hold": [3, 12], "__add__": 3, "runtimeerror": [3, 9], "new_valu": 3, "5": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20, 21, 22, 23, 24, 25, 27, 29, 31, 33, 35, 37, 38, 39, 40, 42, 43, 46, 47, 52, 54, 55, 56, 62, 64, 65, 68, 71, 75, 77, 79, 83], "__radd__": 3, "__sub__": 3, "__rsub__": 3, "__neg__": 3, "__mul__": 3, "__rmul__": 3, "__getitem__": 3, "you": [3, 4, 5, 7, 8, 9, 10, 12, 13, 15, 17, 18, 19, 20, 23, 30, 31, 32, 33, 35, 52, 53, 54, 56, 60, 62, 65, 66, 68, 71, 73, 74, 75, 77, 78, 79, 81, 82, 83], "complexmatrix": 3, "lowest": [3, 4, 21, 23], "num_column": 3, "num_row": 3, "to_numpi": 3, "get_valu": 3, "complexflo": [3, 52], "od": [3, 19], "master": 3, "equat": [3, 4, 5, 13, 14, 15, 19, 21, 52], "solver": [3, 12, 32, 52, 53], "expectation_valu": [3, 6, 52, 64], "intermedi": [3, 16, 52, 71], "were": [3, 5, 9, 13, 19, 23, 31, 52, 77], "final_expectation_valu": 3, "trigger": 3, "final_st": 3, "intermediate_st": 3, "elementari": 3, "operator_id": 3, "further": [3, 7, 8, 42, 49, 58, 60, 71, 74, 82], "simplifi": [3, 56], "classmethod": 3, "op_id": 3, "expected_dimens": 3, "dtype": [3, 10, 12, 13, 18, 21, 27, 52, 62], "definit": [3, 13, 15, 21, 35, 37, 39, 52, 62, 74], "instanti": [3, 31, 35, 40, 46, 47, 52, 54, 55, 81], "To": [3, 9, 13, 14, 15, 18, 19, 21, 27, 35, 39, 42, 47, 52, 53, 54, 55, 56, 59, 60, 64, 65, 66, 71, 73, 74, 75, 77, 78, 79, 81, 82], "addit": [3, 7, 8, 9, 13, 15, 19, 28, 35, 54, 58, 59, 68, 75, 81, 82], "canon": 3, "sort": [3, 8, 12, 19, 78], "neg": [3, 13, 18, 31, 42, 56], "short": [3, 10, 13, 49], "atomic_oper": 3, "rydberghamiltonian": [3, 53, 65], "atom_sit": [3, 53, 65], "delta_glob": [3, 53, 65], "atom_fil": 3, "delta_loc": 3, "quera": [3, 33, 51, 83], "aquila": [3, 53, 65], "machin": [3, 9, 13, 14, 21, 34, 48, 53, 55, 65, 77], "ref": [3, 21, 49, 71], "http": [3, 4, 5, 9, 11, 14, 15, 19, 21, 23, 24, 25, 52, 53, 55, 62, 65, 75, 77], "doc": [3, 9, 24, 33, 55, 65, 83], "aw": [3, 53, 65, 75], "amazon": [3, 33, 83], "com": [3, 4, 5, 9, 11, 13, 14, 15, 21, 24, 25, 53, 56, 65, 75, 77], "braket": [3, 4, 12, 33, 51, 83], "latest": [3, 4, 5, 14, 15, 23, 33, 55, 65, 75, 77, 83], "developerguid": [3, 65], "analog": [3, 53, 70], "html": [3, 65], "ah": [3, 65], "schema": 3, "__init__": [3, 4, 9, 11], "consum": [3, 49, 81], "suppli": [3, 24, 53, 65], "coordin": [3, 31], "tweezer": 3, "trap": [3, 70], "atom": [3, 4, 13, 22, 52, 53, 65, 70], "drive": [3, 4, 8, 40, 52], "omega": [3, 20, 52, 53, 65], "detun": [3, 65], "mark": [3, 9, 81], "occupi": [3, 23, 55], "fill": [3, 39, 65, 74], "factor": [3, 15, 18, 32], "magnitud": [3, 11, 21], "h_k": 3, "dimensionless": 3, "parameter_info": 3, "cudm_stat": 3, "cudensitymatst": 3, "try_init_st": 3, "shape": [3, 4, 11, 16, 21, 23, 29, 68], "try": [3, 9, 10, 13, 15, 17, 19, 21, 23, 31, 68, 77], "accord": [3, 9, 56], "to_cupy_arrai": 3, "termin": [3, 29, 65, 68, 77], "At": [3, 4, 20, 75, 77], "directli": [3, 34, 35, 40, 47, 49, 56, 71, 77, 81, 82], "through": [3, 5, 7, 9, 11, 12, 16, 19, 20, 23, 27, 28, 35, 53, 58, 61, 62, 66, 74, 75, 77, 82], "c_if": [3, 37], "__iter__": 3, "__len__": 3, "equival": [3, 14, 52, 55, 56, 60, 62], "metadata": [3, 22, 71], "experi": [3, 9, 18, 30, 53, 65, 75, 77], "adher": [3, 11, 16, 39, 41, 47, 70, 74], "implicit": [3, 35, 47, 49, 52], "expectation_z": 3, "get_marginal_count": [3, 18], "marginal_indic": 3, "get_register_count": 3, "get_sequential_data": 3, "item": [3, 4, 11, 13, 18, 19, 81], "frequent": 3, "proport": 3, "kick": [3, 55], "pattern": [3, 9, 21, 34, 35, 39, 48, 71, 73], "sub_term": 3, "favor": 3, "get_spin": 3, "accessor": [3, 55], "optimizationresult": 3, "gradientdesc": 3, "initial_paramet": [3, 6, 8, 9, 14], "lower_bound": 3, "max_iter": [3, 9], "requires_gradi": 3, "upper_bound": 3, "upper": [3, 13], "neldermead": [3, 8, 14], "lbfg": [3, 35, 54], "centraldiffer": [3, 29], "parameter_vector": [3, 9, 14, 23, 29, 54], "loss": 3, "forwarddiffer": 3, "parametershift": 3, "krauschannel": [3, 13, 27], "num_control": 3, "bitflipchannel": [3, 13, 17, 18, 27, 56], "decoher": [3, 27, 52], "Its": [3, 47, 56, 70, 71], "vice": 3, "versa": 3, "180": 3, "therebi": [3, 35, 55, 71], "k_0": [3, 27], "k_1": [3, 27], "therefor": [3, 4, 8, 12, 14, 15, 16, 19, 21, 23, 47, 71, 73], "phaseflipchannel": [3, 27], "untouch": 3, "depolarizationchannel": [3, 13, 27], "mixtur": 3, "k_2": 3, "k_3": 3, "2x2": [3, 56], "decai": [3, 27], "And": [3, 13, 14, 49], "behav": 3, "free": [3, 6, 9, 14, 21, 35, 37, 38, 39, 40, 42, 44, 46, 53, 54, 58, 66, 71, 74, 77], "75": [3, 9, 15], "uniform": [3, 8, 9, 14, 17, 18, 35, 38, 60, 68], "amplitudedampingchannel": [3, 27], "dissip": 3, "energi": [3, 4, 9, 10, 13, 22, 23, 29, 35, 54, 64], "due": [3, 9, 13, 22, 27, 31, 35, 53, 56, 60, 81], "ii": [3, 12, 14], "ground": [3, 4, 8, 9, 10, 22, 23, 32, 52, 53, 54, 65, 69, 70], "krausoper": 3, "ki": [3, 12], "dag": [3, 31, 44], "col_count": 3, "row_count": 3, "scatter": [3, 9], "concaten": 3, "arg2": 3, "bin": [3, 17, 21, 53, 55, 65, 75, 77], "interferomet": [3, 53, 65], "tbi": [3, 4, 53, 65], "boson": [3, 52, 53, 65], "done": [4, 9, 12, 13, 19, 23, 31, 47, 61, 75, 77], "collabor": 4, "team": [4, 9], "basf": 4, "In": [4, 5, 7, 8, 9, 12, 13, 14, 16, 17, 18, 19, 21, 24, 25, 26, 27, 29, 31, 35, 39, 49, 52, 53, 55, 56, 58, 60, 62, 64, 65, 66, 69, 73, 74, 75, 81], "tutori": [4, 8, 9, 10, 12, 13, 14, 17, 18, 20, 21, 23, 77], "hybrid": [4, 6, 13, 23, 32, 53, 78, 82], "workflow": [4, 6, 8, 11, 32, 35, 52, 53, 63, 71, 75, 78], "strongli": [4, 8, 13, 75], "algorithm": [4, 6, 8, 9, 10, 13, 14, 15, 20, 22, 23, 29, 32, 34, 37, 39, 48, 49, 54, 55, 56, 60, 62, 64, 67, 77], "eigensolv": [4, 23, 32], "preserv": [4, 16, 27], "propos": [4, 21], "anselmetti": 4, "et": [4, 14, 21], "al": [4, 14, 21], "2021": 4, "psi_t": 4, "estim": [4, 10, 12, 13, 18, 19, 20, 22, 23, 29, 56, 60], "packag": [4, 6, 7, 9, 11, 12, 13, 18, 25, 52, 75, 77, 81, 82], "instal": [4, 9, 11, 12, 13, 18, 19, 21, 22, 31, 32, 33, 52, 53, 56, 71, 73, 74, 78, 79, 81, 83], "pip": [4, 9, 11, 12, 13, 18, 19, 21, 22, 23, 31, 52, 55, 56, 75, 77, 82], "pyscf": [4, 12, 23], "6": [4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 33, 35, 38, 39, 40, 42, 43, 47, 53, 54, 55, 56, 64, 65, 71, 75, 77, 83], "openfermion": [4, 12, 23], "ipi": 4, "warn": [4, 9, 23, 25, 53], "39": [4, 6, 8, 13, 16, 17, 18, 19, 23, 75, 77], "root": [4, 75, 77], "broken": 4, "permiss": [4, 75, 77], "conflict": [4, 75, 77, 82], "behaviour": 4, "render": [4, 31], "your": [4, 5, 8, 9, 23, 24, 31, 32, 35, 52, 53, 54, 55, 56, 57, 64, 65, 68, 74, 75, 77, 81], "unus": 4, "recommend": [4, 13, 21, 35, 65, 75, 77, 82], "pypa": 4, "io": [4, 23, 62, 77], "venv": 4, "want": [4, 9, 10, 13, 14, 16, 18, 19, 21, 31, 49, 52, 54, 55, 71, 74, 75, 77, 79, 82], "suppress": 4, "matplotlib": [4, 6, 8, 9, 11, 13, 18, 19, 22, 23, 31, 52], "pyplot": [4, 6, 8, 9, 11, 13, 18, 19, 22, 23, 31, 52], "plt": [4, 6, 8, 9, 11, 13, 18, 19, 21, 22, 23, 31, 52], "gto": 4, "scf": 4, "ao2mo": 4, "mcscf": 4, "afqmc_src": 4, "vqe_cudaq_qnp": 4, "get_cudaq_hamiltonian": 4, "utils_ipi": 4, "get_coeff_wf": 4, "gen_ipie_input_from_pyscf_chk": 4, "hamgener": 4, "qmc": 4, "trial_wavefunct": 4, "particle_hol": 4, "particlehol": 4, "analysi": [4, 8, 9, 49, 71], "extract_observ": 4, "nvidia": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 21, 22, 23, 24, 25, 29, 30, 32, 33, 34, 40, 51, 52, 56, 60, 62, 64, 68, 74, 75, 77, 79, 82, 83], "recent": [4, 9, 19, 21], "tricki": 4, "manual": [4, 24, 53, 55, 75, 77], "sever": [4, 9, 66], "streamlin": [4, 32, 82], "update_opt": 4, "use_gpu": 4, "usr": [4, 25, 71, 75, 77, 81], "lib": [4, 25, 71, 73, 74, 75, 77, 78, 81, 82], "python3": [4, 9, 25, 52, 55, 56, 60, 61, 68, 75, 77, 82], "dist": [4, 9, 18, 25, 81], "qutip": [4, 31], "py": [4, 9, 25, 30, 52, 55, 56, 60, 61, 68, 77, 82], "66": [4, 8, 9], "userwarn": [4, 25], "cython": 4, "gt": [4, 16, 21, 24, 29, 75, 77], "molecul": [4, 22, 23, 32], "build": [4, 6, 9, 10, 12, 13, 14, 17, 18, 22, 23, 29, 31, 32, 33, 37, 42, 43, 52, 57, 59, 60, 63, 64, 70, 73, 74, 77, 78, 79, 81, 83], "preliminari": [4, 19], "hartre": [4, 12, 22, 23], "fock": [4, 12, 22, 23, 52], "choos": [4, 17, 19, 27, 60, 65, 77], "chelat": 4, "agent": [4, 75], "substanc": 4, "industri": [4, 13], "scale": [4, 5, 18, 19, 21, 42, 52, 56, 68, 70], "Their": [4, 53, 75], "among": [4, 14, 55], "water": [4, 23], "soften": 4, "redox": 4, "oxid": 4, "bleach": 4, "soil": 4, "remedi": 4, "ligand": [4, 8], "catalyst": 4, "particular": [4, 5, 14, 17, 31, 33, 52, 53, 77, 81, 83], "focu": [4, 19, 21, 30], "fe": 4, "iii": 4, "nta": 4, "below": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 28, 29, 30, 31, 33, 35, 52, 53, 54, 55, 56, 60, 62, 65, 68, 69, 71, 75, 77, 81, 82, 83], "fenta": 4, "geo_fenta": 4, "xyz": [4, 28], "cc": [4, 49, 71, 75], "pvtz": 4, "num_active_orbit": 4, "num_active_electron": 4, "o3": 4, "smaller": [4, 8, 9, 10, 12, 56], "less": [4, 9, 19, 56, 75], "geo_o3": 4, "12": [4, 9, 11, 13, 16, 17, 18, 21, 23, 25, 29, 35, 54, 69, 71, 75, 77, 82], "help": [4, 8, 12, 13, 17, 18, 24, 26, 31, 61, 62, 77], "restric": 4, "open": [4, 13, 25, 53, 55, 65, 71, 75, 77], "shell": [4, 31, 75, 77, 82], "hf": 4, "hartee_fock": 4, "rohf": 4, "chkfile": 4, "chk": 4, "224": [4, 18], "34048064812222": 4, "600": [4, 77], "orbit": [4, 23], "would": [4, 5, 9, 12, 13, 14, 15, 16, 17, 19, 23, 24, 30, 33, 49, 52, 68, 69, 70, 75, 77, 79, 81, 83], "1200": 4, "143": 4, "electron": [4, 13, 22, 23], "imposs": 4, "statevector": [4, 6, 15, 16, 24, 25, 68, 70, 82], "space": [4, 5, 10, 12, 31, 32, 40, 47, 52, 55, 65], "fewer": [4, 8, 9, 19, 20, 23, 56], "contribut": [4, 23, 29, 33, 77, 83], "whole": 4, "post": [4, 13, 21, 35, 53, 77], "casci": 4, "obtain": [4, 9, 12, 13, 17, 18, 22, 23, 31, 33, 53, 54, 75, 83], "bodi": [4, 39, 52, 56], "t_": 4, "pq": 4, "v_": [4, 12], "prq": 4, "sum_": [4, 5, 8, 12, 14, 15, 20, 27, 43, 70], "hat": [4, 12, 82], "pqr": 4, "a_": 4, "tag": [4, 7, 15, 19, 75, 77], "jordan_wign": [4, 23], "generate_hamiltonian": 4, "fix_spin_": 4, "ss": 4, "h1": [4, 52, 53, 65], "shown": [4, 7, 10, 12, 13, 16, 53, 55, 56], "energy_cor": 4, "get_h1eff": 4, "h2": [4, 12], "get_h2eff": 4, "h2_no_symmetri": 4, "restor": 4, "v_pqr": 4, "asarrai": 4, "transpos": [4, 12], "mol_ham": 4, "jw_hamiltonian": 4, "constant_term": 4, "guess": [4, 5, 12, 19], "n_vqe_lay": 4, "maxit": [4, 18, 22, 23, 29], "100": [4, 5, 9, 11, 16, 17, 18, 19, 20, 27, 38, 52, 53], "return_final_state_vec": 4, "n_qubit": [4, 13, 16, 18, 38], "best": [4, 8, 9, 15, 21, 23, 75, 77], "optimized_energi": 4, "energy_optim": 4, "final_state_vector": 4, "state_vec": 4, "vqe_energi": 4, "callback_energi": 4, "num": [4, 10], "16": [4, 8, 9, 13, 17, 18, 19, 21, 23, 24, 29, 31, 54, 56, 62, 71], "18": [4, 9, 13, 17, 18, 21, 31, 62, 71], "n_layer": 4, "3881035525103": 4, "numer": [4, 19, 32], "combin": [4, 5, 10, 12, 18, 19, 23, 28, 30, 32, 52, 59, 60, 69, 70, 80, 81], "walk": [4, 9, 23, 74, 75, 77], "accur": [4, 18, 56], "wide": [4, 14, 21, 49, 71, 81], "solid": 4, "summar": [4, 15, 77], "while": [4, 17, 19, 21, 23, 24, 33, 39, 59, 60, 62, 65, 71, 75, 77, 81, 83], "introduct": [4, 32, 48, 63, 79, 82], "found": [4, 8, 9, 10, 12, 13, 19, 24, 31, 33, 35, 38, 42, 52, 53, 60, 62, 74, 75, 77, 79, 80, 82, 83], "quantiz": [4, 15], "_1": [4, 18], "_2": 4, "h_": [4, 12, 13, 16], "frac": [4, 5, 7, 8, 10, 12, 14, 15, 18, 19, 20, 31, 52], "_r": 4, "fermion": 4, "annihil": [4, 52, 69], "h_1": [4, 52], "h_2": [4, 22, 32], "omit": [4, 75], "propag": 4, "chosen": [4, 23, 56, 68, 75], "slater": [4, 12], "ket": [4, 5, 6, 7, 10, 12, 15, 16, 24, 31, 60, 69, 70], "psi_": [4, 7, 12, 16], "toward": [4, 10, 13], "psi_0": [4, 7, 16], "sim": [4, 13, 53, 65], "lim_": 4, "infti": 4, "delta": [4, 53, 65], "tau": 4, "reli": [4, 21, 42, 71, 77, 79, 81], "squar": [4, 17, 18, 47, 70], "gamma": 4, "becom": [4, 5, 9, 18, 23, 64, 77, 78], "v_0": [4, 14], "n_": [4, 56], "nbsphinx": [4, 19], "l": [4, 9, 19, 23, 29, 35, 71, 79, 81], "choleski": 4, "decomposit": [4, 17, 32, 56], "pr": [4, 32], "ensembl": [4, 60], "walker": 4, "mathcal": [4, 12], "text": [4, 6, 7, 15, 18, 21, 24, 25, 31], "loc": [4, 13], "bra": [4, 6, 10, 24, 60], "mathrm": 4, "mix": [4, 27, 52, 65], "wavefunct": [4, 23, 70], "checkpoint": 4, "ipie_hamiltonian": 4, "chol_cut": 4, "1e": [4, 12, 13, 23, 29, 56, 65], "h1e": 4, "cholesky_vector": 4, "e0": 4, "num_basi": 4, "num_chol": 4, "nelec": 4, "afqmc_hamiltonian": 4, "reshap": [4, 11, 16], "n_active_elec": 4, "num_dets_for_prop": 4, "len": [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 28, 29, 38, 47, 52, 55, 60, 65, 68, 82], "compute_trial_energi": 4, "half_rot": 4, "timestep": 4, "num_walk": 4, "num_block": 4, "afqmc_msd": 4, "num_steps_per_block": 4, "25": [4, 9, 11, 13, 15, 18, 19, 20, 26, 38, 54, 55, 56, 60, 62, 68, 77], "005": 4, "stabilize_freq": 4, "96264512": 4, "pop_control_freq": 4, "estimator_filenam": 4, "h5": 4, "finalis": 4, "qmc_data": 4, "filenam": [4, 68], "weight": [4, 8, 9, 21], "weightfactor": 4, "hybridenergi": 4, "edenom": 4, "etot": 4, "e1bodi": 4, "e2bodi": 4, "0000000000000000e": 4, "02": [4, 13, 25, 69, 75, 77], "2437583763935545e": 4, "04": [4, 75, 77], "2437583763935547e": 4, "7639365190228011e": 4, "5201781426292453e": 4, "2276634193515412e": 4, "4127560668989827e": 4, "03": [4, 9, 54], "1711742028818304e": 4, "2473358126540003e": 4, "9999999999999986e": 4, "2473358126540006e": 4, "7646854013277283e": 4, "5173495886737268e": 4, "0031922288872407e": 4, "8320523739865604e": 4, "1743088014788954e": 4, "2489226882493567e": 4, "0000000000000001e": 4, "2489226882493563e": 4, "7650504938463922e": 4, "5161278055970348e": 4, "9900990681040355e": 4, "0008400623205630e": 4, "1736864885170948e": 4, "2495677577437204e": 4, "9999999999999972e": 4, "2495677577437212e": 4, "7659644834889821e": 4, "5163967257452603e": 4, "0009188692360159e": 4, "0005173726372723e": 4, "1748969527283802e": 4, "2495531836556856e": 4, "2495531836556853e": 4, "7675907314082951e": 4, "5180375477526098e": 4, "9997269300807844e": 4, "0010618465796188e": 4, "1752703012577417e": 4, "2502732667629320e": 4, "2502732667629317e": 4, "7663343013337044e": 4, "5160610345707727e": 4, "0012131352337956e": 4, "0019003056579172e": 4, "1770170647504112e": 4, "2513369839216481e": 4, "2513369839216480e": 4, "7660812717909516e": 4, "5147442878693036e": 4, "9936984461419740e": 4, "9929966800671224e": 4, "1765353928750643e": 4, "2516138533920657e": 4, "2516138533920659e": 4, "7660292355465600e": 4, "5144153821544941e": 4, "9902337463172714e": 4, "9910800755312891e": 4, "1761532255317621e": 4, "2518524275281430e": 4, "2518524275281433e": 4, "7674246483479845e": 4, "5155722208198404e": 4, "0012943675389775e": 4, "0013880643723378e": 4, "1780913595074867e": 4, "2512465963277762e": 4, "7677999264623367e": 4, "5165533301345607e": 4, "9628730363609819e": 4, "9223106824565718e": 4, "1749814144939067e": 4, "2517668156221851e": 4, "2517668156221850e": 4, "7688306341863290e": 4, "5170638185641434e": 4, "plot": [4, 6, 8, 9, 11, 13, 18, 20, 21, 22, 23, 52], "vqe_i": 4, "vqe_x": 4, "label": [4, 8, 9, 11, 13, 18, 21, 71, 75, 82], "afqmc_i": 4, "afqmc_x": 4, "xlabel": [4, 6, 8, 9, 11, 21, 22, 23, 52], "ylabel": [4, 6, 8, 9, 11, 21, 22, 23, 52], "legend": [4, 9, 11, 13, 52], "lt": [4, 9, 24, 29], "0x7fea847f35e0": 4, "__version__": [4, 5, 11, 14, 15, 21, 24, 25], "github": [4, 5, 9, 11, 14, 15, 21, 23, 24, 25, 33, 53, 56, 62, 75, 77, 82, 83], "176f1e7df8a58c2dc3d6b1b47bf7f63b4b8d3b63": [4, 5], "bv": 5, "demonstr": [5, 6, 7, 8, 10, 12, 13, 15, 17, 19, 20, 21, 22, 28, 29, 34, 35, 37, 52, 55, 60, 67, 71], "exponenti": [5, 10, 12, 15, 18, 20, 43, 68], "speedup": [5, 20, 23, 54, 68], "suppos": [5, 7, 78], "oracl": [5, 38], "longrightarrow": [5, 7], "dot": [5, 10, 12, 14, 18, 69], "secret": [5, 38, 77], "x_1s_1": 5, "x_2s_2": 5, "x_ns_n": 5, "our": [5, 6, 7, 9, 13, 14, 16, 19, 21, 27, 31, 33, 49, 52, 53, 56, 58, 60, 65, 66, 67, 68, 71, 75, 77, 78, 79, 82, 83], "find": [5, 7, 8, 9, 12, 14, 18, 21, 22, 23, 32, 53, 54, 55, 56, 70, 71, 75, 77], "101": [5, 9, 15, 16, 18, 19, 38], "henc": [5, 15, 16, 24, 25, 49, 52, 53, 55, 56, 60, 68, 69, 70, 75, 77, 81], "dont": [5, 24], "x_3s_3": 5, "strateg": 5, "st": 5, "001": [5, 11, 15, 16, 18, 19, 77], "nd": 5, "010": [5, 15, 16, 18, 19], "rd": 5, "rememb": [5, 7, 9, 24], "perspect": 5, "inner": [5, 16, 47, 55], "mechan": [5, 7, 16, 35, 37, 43, 47, 49, 52, 55, 61, 70, 73], "hidden": [5, 40], "why": [5, 15], "did": [5, 19, 75, 77], "011": [5, 16, 18, 19, 38], "s_3": 5, "isol": [5, 60], "s_2": 5, "difficult": [5, 8, 35], "speak": 5, "advantag": [5, 7, 20, 21, 23, 30, 77], "entangl": [5, 16, 27, 31, 40, 54, 58, 65], "problem": [5, 7, 9, 10, 12, 14, 15, 22, 23, 49, 52, 56, 59], "answer": [5, 15], "black": [5, 7, 9, 13], "box": [5, 7, 27, 81], "setup": [5, 8, 33, 52, 56, 65, 77, 83], "auxiliari": [5, 32], "kickback": 5, "hadamard": [5, 12, 15, 16, 19, 26, 32, 37, 42, 47, 49, 66, 70, 73], "sum_x": 5, "u_f": [5, 7], "oplu": 5, "neq": [5, 7, 8, 19], "chanc": [5, 17, 19, 81], "cell": [5, 8, 12, 13, 16, 17, 23, 28, 31], "small": [5, 9, 10, 18, 19, 23, 56, 81], "increas": [5, 8, 10, 12, 20, 30, 33, 52, 56, 60, 68, 69, 77, 82, 83], "30": [5, 9, 11, 13, 16, 18, 21, 55, 68], "qpp": [5, 9, 11, 13, 14, 15, 16, 21, 24, 51, 54, 56, 60, 68, 71, 74, 77, 82], "qubit_count": [5, 7, 11, 14, 15, 19, 22, 23, 24, 27, 55, 56, 58, 60, 68, 82], "secret_str": 5, "whatev": 5, "prefer": [5, 75, 77], "insid": [5, 9, 13, 55, 77], "auxiliary_qubit": 5, "verifi": [5, 7, 15, 19, 26, 52, 70], "procedur": [5, 6, 8, 9, 12, 17, 21, 22, 23, 29], "bernstein_vazirani": [5, 77], "auxillari": [5, 9, 12, 17], "place": [5, 14, 16, 23, 24, 25, 30, 55, 58, 60], "success": [5, 29, 65, 73], "join": [5, 13, 18, 19], "q2": [5, 9, 15, 19, 21, 31], "q3": [5, 9, 19, 31], "q4": [5, 9, 19], "q5": [5, 19], "11010": [5, 14, 19], "involv": [6, 8, 19, 56, 68, 71, 81], "bloch": [6, 31], "rx": [6, 8, 9, 10, 11, 13, 14, 16, 18, 31, 42, 46, 62, 68], "intial": 6, "cost_valu": [6, 8], "initial_cost_valu": 6, "suit": [6, 21, 77], "alogrithm": 6, "decreas": [6, 52, 69], "x_valu": [6, 8], "y_valu": [6, 8], "epoch": [6, 8, 11, 22, 23], "concis": 7, "desutch": 7, "balanc": [7, 69], "regardless": [7, 12, 16, 33, 81, 83], "ouput": 7, "carri": [7, 19], "treat": [7, 55], "snippet": [7, 52, 54, 55, 64, 71, 77], "don": [7, 15, 33, 35, 54, 83], "elif": [7, 13], "notic": [7, 9, 14, 16, 19, 21, 23, 49, 68, 71, 78], "That": [7, 13, 24, 25, 35, 82], "twice": [7, 23], "claim": [7, 17], "evalul": 7, "outlin": [7, 13, 19, 81], "symbol": [7, 75, 81], "OR": [7, 65], "rule": [7, 19, 23, 52], "modulo": [7, 19], "oplus5": 7, "8_": 7, "oplus4": 7, "9_": 7, "quick": [7, 16, 32, 53, 79], "yield": [7, 16, 24, 25, 56, 69, 70, 82], "align": [7, 15, 16, 71, 81], "remark": [7, 21], "becaus": [7, 18, 19, 21, 49, 56, 65, 75, 77, 82], "overlin": 7, "bar": [7, 14, 15, 18, 31], "top": [7, 9, 13, 18, 19, 55, 62, 69, 74, 78], "denot": [7, 15, 17, 39, 41], "prove": [7, 70], "shall": [7, 16, 70], "tfrac": [7, 16, 70], "summari": 7, "unchang": [7, 27, 71], "simultan": [7, 54, 56], "exploit": [7, 56], "abil": [7, 17, 20, 21, 40, 71], "aim": [7, 9, 14, 19], "diagram": [7, 8, 14, 15, 16, 19, 53, 65], "psi_1": 7, "h_1h_0": 7, "psi_2": 7, "drop": [7, 13], "figur": [7, 8, 9, 10, 11, 15, 16, 17, 19, 20, 21, 23, 30, 71], "pm": 7, "practic": [7, 9, 10, 12, 17, 18, 21, 23], "fx": 7, "qubit_0": [7, 14, 16, 62], "half": [7, 65], "neither": 7, "nor": 7, "b_0": 7, "b_1": 7, "hint": 7, "approach": [7, 8, 9, 15, 18, 19, 35, 39, 56, 71], "solv": [7, 8, 12, 14, 15, 52, 59], "drug": 8, "often": [8, 19, 23, 35, 49, 62, 75, 77], "bind": [8, 34, 37, 39, 42, 75], "protein": [8, 21], "inhibit": 8, "therapeut": 8, "purpos": [8, 12, 19, 40, 49, 52, 77], "candid": 8, "extrem": [8, 35], "studi": [8, 16, 21], "guid": [8, 33, 53, 75, 77, 79, 82, 83], "search": [8, 19, 21, 75, 77], "predict": [8, 13, 70], "usual": [8, 9, 75, 77, 81], "One": [8, 15, 19, 21, 23, 24, 35, 49, 53, 55, 56, 61, 64], "challeng": [8, 9, 19], "aris": [8, 21, 27], "mani": [8, 9, 15, 16, 17, 19, 21, 23, 24, 25, 28, 29, 33, 42, 45, 52, 55, 56, 60, 62, 68, 82, 83], "geometr": 8, "present": [8, 9, 14, 18, 21, 24, 29, 60, 75, 78], "orient": 8, "assess": [8, 13], "good": [8, 12, 23], "solut": [8, 14, 19], "formul": [8, 49], "mathemat": [8, 16, 52, 69, 70], "paper": [8, 9, 10, 12, 13, 17, 19], "digit": [8, 11, 25], "counteradiabat": 8, "understand": [8, 9, 12, 13, 16, 18, 34, 77], "pleas": [8, 9, 12, 23, 31, 33, 54, 55, 56, 65, 68, 73, 75, 77, 82, 83], "maxcut": 8, "There": [8, 9, 16, 24, 28, 35, 37, 53, 54, 55, 62, 68, 77], "experiment": [8, 13, 33, 77, 83], "pharmacor": 8, "chemic": [8, 13, 22], "group": [8, 9, 47, 56], "govern": [8, 20], "distanc": [8, 9, 16, 18, 22], "graph": [8, 9, 14], "lag": 8, "node": [8, 9, 12, 14, 32, 34, 55, 68, 75], "edg": [8, 9, 14], "feesibli": 8, "coexist": 8, "cliqu": 8, "mutual": 8, "comment": [8, 14], "discret": [8, 21, 47], "natur": [8, 9, 16, 31, 53, 56, 70], "qubit_num": [8, 10, 23], "non_edg": 8, "6686": 8, "1453": 8, "penalti": [8, 9], "num_lay": 8, "expens": [8, 23, 56], "6886": 8, "1091": 8, "0770": 8, "w_i": 8, "sigma": [8, 12, 20, 52], "z_i": 8, "notin": 8, "z_j": [8, 20], "concern": [8, 70, 75], "vertic": [8, 14], "penal": 8, "ham_cliqu": 8, "spin_ham": [8, 23], "wt": 8, "zip": [8, 12, 75], "strip": [8, 12, 20, 75], "term_coeffici": 8, "ham": [8, 10, 12, 20], "term_word": 8, "coef": [8, 12], "0j": [8, 10, 14, 60, 62], "iiziiz": 8, "ziizii": 8, "1657": 8, "iziiii": 8, "iziizi": 8, "42735": 8, "iiizii": 8, "2791499999999996": 8, "iiiiii": 8, "iiziii": 8, "iiiiiz": 8, "ziiiii": 8, "iiiizi": 8, "inclus": [8, 23], "better": [8, 9, 13, 14, 18, 21, 54, 56, 75], "layer": [8, 9, 11, 13, 14, 17, 39, 53], "hopefulli": 8, "offset": 8, "dc_qaoa": 8, "pauli_word": [8, 12, 20, 28, 55], "exp_pauli": [8, 12, 20, 28], "k": [8, 10, 12, 13, 15, 19, 39], "nelder": 8, "mead": 8, "line": [8, 9, 10, 14, 19, 23, 30, 31, 53, 55, 56, 65, 71, 74, 75, 77], "13": [8, 9, 11, 13, 14, 17, 18, 19, 21, 22, 23, 29, 31, 68, 71, 77], "21810696323572243": [8, 14], "20613464375211488": [8, 14], "2546877639814583": [8, 14], "3657985647468064": [8, 14], "37118004688049144": 8, "03656087558321203": 8, "08564174998504231": 8, "21639801853794682": 8, "11122286088634259": 8, "1743727097033635": 8, "36518146001762486": 8, "15829741539542244": 8, "3467434780387345": 8, "28043500852894776": 8, "09986021299050934": 8, "14125225086023052": 8, "19141728018199775": 8, "11970943368650361": 8, "3853063093646483": 8, "1112643868789806": 8, "3527177454825464": 8, "22156160012057186": 8, "1418496891385843": 8, "32811766468303116": 8, "367642000671186": 8, "34158180583996006": 8, "10196745745501312": 8, "29359239180502594": 8, "3858537615546677": 8, "19366130907065582": 8, "24570488114056754": 8, "3332307385378807": 8, "12287973244618389": 8, "007274514934614895": 8, "015799547372526146": 8, "3578070967202224": 8, "39268963055535144": 8, "19872246354138554": 8, "16668715544467982": 8, "13777293592446055": 8, "17514665212709513": 8, "15350249947988204": 8, "32872977428061945": 8, "20068831419712105": 8, "032919322131134854": 8, "19399909325771983": 8, "09477141125241506": 8, "08210460401106645": 8, "21392577760158515": 8, "3393568044538389": 8, "14615087942938465": 8, "03790339186006314": 8, "2843250892879255": 8, "3151384847055956": 8, "19983741137121905": 8, "27348611567665115": 8, "33457528180906904": 8, "14145414847455462": 8, "20604220093940323": 8, "05410235084309195": 8, "04447870918600966": 8, "3355714098595045": 8, "266806440171265": 8, "07436189654442632": 8, "2789176729721685": 8, "2427508182662484": 8, "cost": [8, 9, 11, 12, 14, 22, 23, 29, 32, 35, 54, 65], "optimal_expect": [8, 14], "optimal_paramet": [8, 9, 14, 54], "0057493966746804": 8, "0508763934174787": 8, "013930789730781493": 8, "5793211220774144": 8, "878009560684498": 8, "5277129177248182": 8, "4404810513078178": 8, "5755552245467919": 8, "14125558672355468": 8, "3724262117066903": 8, "1318978057007808": 8, "1228708513911436": 8, "932342804955409": 8, "8478237950658537": 8, "46345886313018125": 8, "5809397306340341": 8, "2408342488137229": 8, "11216088888484882": 8, "009704173265255175": 8, "4757346661223584": 8, "7281211610985926": 8, "06051951319169091": 8, "7794512146826196": 8, "09249435261907034": 8, "09998378319110682": 8, "255349350720572": 8, "2607038244228248": 8, "2060124032311757": 8, "13991934581192997": 8, "9874814082082164": 8, "1591291464755939": 8, "30815482837046393": 8, "9701804681517978": 8, "002609462845755913": 8, "43533533568363353": 8, "642630110681613": 8, "6137063363954748": 8, "7204687246344496": 8, "08390768435524378": 8, "5480630700433249": 8, "38905723227347905": 8, "6837811162838194": 8, "17239016898719284": 8, "1649341118754853": 8, "46771209183422724": 8, "008565327035838663": 8, "982230359328883": 8, "4232972687799105": 8, "22765896988428905": 8, "04207923928239914": 8, "36758378917672285": 8, "01825447063622079": 8, "059755059728027485": 8, "6849697218162497": 8, "2711684382411018": 8, "2904257415666667": 8, "16359529445017368": 8, "09168623367396612": 8, "5786087806926155": 8, "3476755367718726": 8, "1209273564533628": 8, "605136043801364": 8, "19128215816141694": 8, "16756583092588012": 8, "0715488214105267": 8, "5269641128095075": 8, "3029128369198704": 8, "reveal": 8, "bitst": 8, "ideal": [8, 13, 17, 27, 53, 54, 65], "partit": [8, 9, 14, 54, 55, 77], "200000": 8, "mvwcp": 8, "110001": 8, "011100": 8, "111000": 8, "199979": 8, "011000": 8, "converg": [8, 10, 19, 23], "explor": [9, 13, 17, 19, 23, 68, 70, 77], "research": [9, 13, 54], "arxiv": [9, 19], "org": [9, 11, 19, 52, 75, 77], "pdf": [9, 19, 31], "2402": 9, "01529": 9, "edinburgh": 9, "jointli": [9, 21], "develop": [9, 11, 12, 21, 32, 39, 40, 53, 54, 56, 63, 70, 73, 74, 75, 78, 82], "author": 9, "barrier": 9, "mit": 9, "licens": [9, 75, 77], "boniface316": 9, "bigdata_vqa": 9, "unsupervis": 9, "learn": [9, 11, 14, 19, 21, 31, 33, 53, 54, 59, 60, 81, 82, 83], "techniqu": [9, 19, 23, 29, 30, 56, 60], "similar": [9, 24, 35, 55, 60, 75], "characterist": 9, "enhanc": [9, 13, 16, 32], "reliabl": [9, 81], "todai": 9, "limit": [9, 16, 52, 55, 56, 60, 68, 81], "far": [9, 13, 16], "too": [9, 31, 70], "extend": [9, 15, 17, 32, 33, 34, 80, 83], "harrow": 9, "emphas": 9, "util": [9, 11, 21, 27, 35, 47, 54, 55, 56, 68, 71, 74], "bipartit": 9, "branch": [9, 33, 37, 56, 75, 77, 83], "directori": [9, 13, 25, 73, 75, 77, 81], "tree": 9, "uncom": [9, 12, 14, 75, 77], "skip": [9, 31, 75], "mkdir": [9, 74, 75, 78], "divisive_clustering_src": 9, "wget": [9, 75, 77], "githubusercont": 9, "sphinx": 9, "divisive_clust": 9, "main_divisive_clust": 9, "mpi4pi": [9, 56, 82], "networkx": 9, "panda": [9, 18], "scikit": [9, 11], "tqdm": [9, 21], "nx": 9, "pd": [9, 18], "divisiveclust": 9, "dendrogram": 9, "voironi_tessal": 9, "filterwarn": 9, "toggl": 9, "circuit_depth": 9, "max_shot": 9, "x_1": 9, "x_2": [9, 13], "x_n": 9, "much": [9, 10, 13, 23, 74], "w": [9, 13, 44, 56, 65], "reason": [9, 17, 49], "conclus": 9, "variou": [9, 13, 24, 33, 53, 55, 58, 66, 71, 74, 83], "1703": 9, "06476": 9, "essenti": 9, "boil": 9, "down": [9, 16, 55, 65], "toler": [9, 13], "constraint": [9, 18, 21, 39, 40, 41, 56, 60, 65, 70], "priori": 9, "load": [9, 11, 35, 40, 53, 54, 65, 71, 73], "frame": 9, "imag": [9, 11, 12, 14, 16, 19, 21, 31, 33, 52, 65, 75, 82, 83], "star": 9, "create_dataset": 9, "number_of_sampling_for_centroid": 9, "coreset_s": 9, "number_of_coresets_to_evalu": 9, "coreset_method": 9, "bfl2": 9, "coreset_vector": 9, "coreset_weight": 9, "get_best_coreset": 9, "coreset_df": 9, "datafram": [9, 18], "chr": 9, "65": [9, 14, 18, 19, 27], "028364": 9, "669787": 9, "234": [9, 18], "230716": 9, "167441": 9, "354792": 9, "319288": 9, "022889": 9, "921443": 9, "125": [9, 29, 35, 38, 43, 54, 55, 64], "158339": 9, "706134": 9, "636852": 9, "650774": 9, "998497": 9, "455847": 9, "116": 9, "758239": 9, "507918": 9, "630311": 9, "120": [9, 19, 77], "727176": 9, "102508": 9, "297727": 9, "53": [9, 18], "294127": 9, "722463": 9, "400433": 9, "77": [9, 18], "415840": 9, "425868": 9, "341136": 9, "42": [9, 11, 13, 18, 19, 22, 23], "847985": 9, "985373": 9, "063209": 9, "240": 9, "116237": 9, "7eba00": 9, "color": [9, 13, 14], "marker": 9, "titl": [9, 21, 22, 23, 53, 77, 82], "cast": 9, "routin": [9, 14, 35], "e_": 9, "ij": [9, 21], "w_iw_jd_": 9, "d_": [9, 12], "euclidean": 9, "coreset_to_graph": 9, "vqa": 9, "src": [9, 53, 56, 75], "motiv": [9, 48, 75], "cut": [9, 32, 75, 77], "get_k2_hamiltonian": 9, "k2": [9, 13], "r_z": 9, "r_y": 9, "cascad": 9, "benefit": [9, 13, 17, 33, 60, 82, 83], "get_vqe_circuit": 9, "number_of_qubit": 9, "theta_posit": 9, "rz": [9, 13, 14, 16, 31, 38, 42], "visual": [9, 13, 14, 32, 49, 63], "rand": 9, "8904": 9, "7335": 9, "4343": 9, "2236": 9, "7937": 9, "9981": 9, "3945": 9, "696": 9, "3352": 9, "6658": 9, "05277": 9, "791": 9, "003569": 9, "4119": 9, "3205": 9, "3504": 9, "3913": 9, "7392": 9, "3171": 9, "0008056": 9, "proper": 9, "get_optim": 9, "initial_param": [9, 29], "divisiveclusteringvqa": 9, "run_divisive_clust": 9, "get_counts_from_simul": 9, "acceler": [9, 11, 12, 13, 23, 32, 33, 54, 56, 60, 68, 74, 75, 77, 82, 83], "associ": [9, 13, 14, 17, 24, 25, 40, 55, 69, 70], "super": [9, 11, 23], "coreset_vectors_df_for_iter": 9, "coreset_vectors_for_iteration_np": 9, "coreset_weights_for_iteration_np": 9, "_get_iteration_coreset_vectors_and_weight": 9, "metric": [9, 13, 17], "coreset_to_graph_metr": 9, "_get_best_bitstr": 9, "create_hamiltonian": 9, "optimizer_funct": 9, "create_circuit": 9, "objective_funct": [9, 23, 29], "get_result": [9, 23, 29, 52], "mostli": 9, "previous": [9, 29, 33, 53, 77, 83], "threshold_for_max_cut": 9, "percent": [9, 17], "advanc": [9, 19, 23, 30], "normal": [9, 11, 16, 22, 23, 29, 70], "get_divisive_sequ": 9, "analyz": [9, 13, 21, 73], "postprocess": 9, "sourc": [9, 10, 13, 14, 18, 27, 33, 49, 52, 56, 71, 74, 77, 78, 79, 82, 83], "normalize_vector": 9, "sort_by_descend": 9, "hierarchial_clustering_sequ": 9, "129": [9, 19], "12075": 9, "19it": 9, "35025": 9, "50it": 9, "44254": 9, "09it": 9, "15827": 9, "56it": 9, "13617": 9, "87it": 9, "nice": 9, "earli": [9, 54, 77], "split": [9, 13, 68], "least": [9, 14, 19, 20, 21, 24, 25, 55, 75], "dendo": 9, "plot_dendrogram": 9, "plot_titl": 9, "complic": [9, 43], "occasion": 9, "especi": 9, "puzzl": 9, "glanc": [9, 16], "seem": [9, 70, 77, 82], "strai": 9, "belong": 9, "wrong": 9, "explan": 9, "stochast": [9, 35], "few": [9, 14, 19, 21, 23, 56, 62], "pai": [9, 15], "exclud": [9, 54, 60, 75], "proxim": 9, "impact": [9, 23, 27, 56], "look": [9, 16, 30, 31, 33, 49, 52, 53, 55, 59, 60, 64, 65, 66, 67, 68, 71, 75, 77, 83], "unusu": 9, "go": [9, 21, 31, 47, 55, 66, 75, 77], "origin": [9, 12, 16, 27, 49, 71], "14": [9, 10, 11, 13, 16, 17, 18, 19, 21, 23, 31, 54, 62, 65, 71], "plot_hierarchial_split": 9, "hierarch": 9, "flat": [9, 55], "perpendicular": 9, "intersect": 9, "threshold": [9, 12, 13, 19, 56], "height": 9, "get_clusters_using_k": 9, "desir": [9, 19, 21, 45, 52, 55, 60, 74, 75, 77, 79], "15": [9, 11, 13, 17, 18, 21, 23, 31, 56, 62, 68, 71, 75, 77], "threshold_height": 9, "get_clusters_using_height": 9, "red": [9, 18, 24, 25], "blue": [9, 24, 25], "green": [9, 14], "purpl": 9, "orang": 9, "yellow": 9, "color_threshold": 9, "plot_clust": 9, "show_annot": 9, "get_voronoi_tessal": 9, "region": [9, 53], "centroid": 9, "tesslation_by_clust": 9, "complet": [9, 10, 12, 13, 16, 20, 27, 35, 52, 53, 75, 77, 81, 82], "plot_voironi": 9, "overlai": 9, "vt": 9, "voironi": 9, "tessal": 9, "design": [9, 14, 23, 30, 32, 34, 52, 55, 62, 82], "flexibl": [9, 58, 75], "tool": [9, 13, 18, 24, 28, 29, 31, 33, 49, 71, 73, 75, 79, 81, 83], "get_qaoa_circuit": 9, "3527": 9, "19": [9, 13, 17, 18, 19, 21, 31, 54, 62, 71], "20": [9, 12, 13, 17, 18, 19, 21, 25, 31, 41, 47, 56, 62, 69, 71, 79, 82], "484": 9, "12163": 9, "89it": 9, "52703": 9, "30it": 9, "48": 9, "31987": 9, "07it": 9, "36393": 9, "37957": 9, "42473": 9, "96it": 9, "quickli": [9, 10, 35, 77], "encount": [9, 54, 56, 65, 75, 77, 82], "port": [9, 55, 77], "hpc": [9, 33, 77, 83], "becam": 9, "massiv": [9, 20], "compar": [9, 13, 23, 28, 59, 60, 77, 82], "100000": [9, 10, 68], "slightli": [9, 23], "751": 9, "3460": 9, "26it": 9, "42771": 9, "74it": 9, "4064": 9, "6862": 9, "37it": 9, "56871": 9, "92it": 9, "44979": 9, "13it": 9, "128": [9, 11, 21, 71], "19366": 9, "94it": 9, "53773": 9, "54648": 9, "91it": 9, "51941": 9, "85it": 9, "56111": 9, "461": 9, "866833317": 9, "spent": 9, "452308367999706": 9, "oner": 9, "feel": 9, "interrupt": 9, "patienc": 9, "worn": 9, "still": [9, 16, 17, 20, 24, 39, 49, 60, 65, 69, 70, 77, 81], "easili": [9, 10, 13, 14, 20, 60, 75, 77, 81], "27": [9, 13, 18, 19, 60], "7352": 9, "2063": 9, "82it": 9, "16492": 9, "4739": 9, "44it": 9, "256": [9, 11, 53], "15185": 9, "58it": 9, "64": [9, 11, 55, 56, 71, 75, 77], "23728": 9, "05it": 9, "15437": 9, "97it": 9, "50840": 9, "32": [9, 11, 18, 53, 56, 71, 77], "33562": 9, "54120": 9, "54560": 9, "55924": 9, "42717": 9, "29it": 9, "55007": 9, "27it": 9, "53601": 9, "33it": 9, "47127": 9, "01it": 9, "67": 9, "61674502899999": 9, "21": [9, 13, 17, 18, 21, 31, 62, 69, 71], "439895901": 9, "push": [9, 81], "a100": 9, "yourself": [9, 75], "28": [9, 11, 13, 18, 33, 55, 75, 77, 82, 83], "nlopt": [9, 71], "failur": [9, 81], "pool": [9, 54, 68], "finish": [9, 13, 24, 60, 71], "fail": [9, 17, 25, 56, 73, 77, 81], "immedi": [9, 55, 74], "issu": [9, 35, 56, 75, 77, 81, 82], "mgpu": [9, 12, 15, 23, 30, 33, 51, 54, 55, 56, 68, 83], "gpu_count": 9, "smi": [9, 75, 77], "wc": 9, "mpirun": [9, 55, 56, 68], "Not": [9, 39, 52, 53, 54, 77], "subroutin": [10, 23, 59, 62], "molecular": [10, 13, 22, 23, 32], "semidefinit": 10, "briefli": 10, "introduc": [10, 14, 17, 19, 35], "ancilla": [10, 12, 35, 37], "insight": 10, "re": [10, 13, 18, 19, 35, 49, 52, 66, 68, 75, 77], "x_1x_2": 10, "fact": [10, 15, 19, 49, 81], "u_": [10, 21], "qquad": 10, "repeatedli": [10, 17, 19, 60], "pmatrix": [10, 27], "functool": [10, 18], "psi_stat": 10, "phi_stat": 10, "sv": [10, 17, 79], "707107": 10, "ham_matrix": 10, "exp_val": [10, 11, 22, 23, 29, 52, 55, 64], "conj": [10, 12, 16, 21], "7071067690849304": 10, "fourth": [10, 52], "u_psi": 10, "u_phi": 10, "ham_cir": 10, "mean_val": 10, "qc": [10, 53], "85281": 10, "14719": 10, "70562": 10, "0015844563982640861": 10, "hilbert": [10, 47, 52], "orthogon": [10, 12], "easi": [10, 14, 19, 52, 79], "mqpu": [10, 12, 23, 24, 29, 51, 56, 60, 64, 68], "sake": 10, "qpu_count": [10, 23, 29, 55], "four": [10, 13, 17, 29, 55, 64, 70], "i_result": 10, "49865": 10, "50135": 10, "0027": 10, "0022360598270171573": 10, "49796": 10, "50204": 10, "00408": 10, "002236049366181346": 10, "49695": 10, "50305": 10, "0061": 10, "002236026375068058": 10, "49972": 10, "50028": 10, "00056": 10, "002236067626884303": 10, "my_mat": 10, "linalg": [10, 12, 18, 52], "eigh": 10, "00782313": 10, "00456313": 10, "76575845": 10, "64312829": 10, "highlight": [11, 30, 33, 83], "pytorch": 11, "maximis": 11, "classif": 11, "mnist": 11, "dataset": 11, "classifi": [11, 21], "hand": [11, 16, 54, 55, 56, 77, 81], "written": [11, 18, 31, 35, 69, 70, 75, 79], "torch": [11, 21, 52], "cu118": 11, "torchvis": 11, "url": [11, 53, 55, 65, 75, 77], "download": [11, 21, 75, 77, 82], "whl": [11, 75], "autograd": 11, "nn": 11, "sklearn": 11, "model_select": 11, "train_test_split": 11, "manual_se": [11, 21], "22": [11, 13, 18, 19, 21, 31, 60, 62, 69, 71, 75, 77], "44": [11, 18], "prepare_data": 11, "target_digit": 11, "sample_count": [11, 68], "test_siz": 11, "percentag": 11, "remaind": [11, 14], "train": [11, 13, 21], "totensor": 11, "1307": 11, "3081": 11, "filter": 11, "datapoint": 11, "subset_indic": 11, "randperm": 11, "unsqueez": 11, "relabel": 11, "min": [11, 12, 19], "x_train": 11, "x_test": 11, "y_train": 11, "y_test": 11, "shuffl": 11, "random_st": 11, "classification_threshold": 11, "accuraci": [11, 13, 19, 21, 56], "parmet": 11, "visualis": 11, "sample_to_plot": 11, "grid_img": 11, "make_grid": 11, "pad": 11, "imshow": 11, "permut": [11, 17], "quantumfunct": 11, "finit": [11, 23, 29], "theta_v": 11, "excetut": 11, "live": 11, "tolist": [11, 17], "staticmethod": 11, "quantum_circuit": 11, "backward": [11, 23, 29, 41], "save_for_backward": 11, "grad_output": 11, "saved_tensor": 11, "thetas_plu": 11, "exp_vals_plu": 11, "thetas_minu": 11, "exp_vals_minu": 11, "mul": 11, "quantumlay": 11, "hybrid_qnn": 11, "fc1": 11, "fc2": 11, "dropout": 11, "fc3": 11, "fc4": 11, "fc5": 11, "feed": [11, 14], "view": [11, 40, 50, 53, 77], "relu": 11, "fed": 11, "sigmoid": 11, "accuracy_scor": 11, "y_hat": 11, "hybrid_model": 11, "adadelta": 11, "lr": [11, 71], "weight_decai": 11, "loss_funct": 11, "bceloss": 11, "training_cost": 11, "testing_cost": 11, "training_accuraci": 11, "testing_accuraci": 11, "zero_grad": 11, "y_hat_train": 11, "train_cost": 11, "eval": [11, 12], "no_grad": 11, "y_hat_test": 11, "test_cost": 11, "figsiz": [11, 13, 18, 21], "subplot": [11, 13, 18], "tight_layout": [11, 13], "proto": [11, 21], "018ba9130a0e5800b93e86d0096a22daf7a132f8": [11, 21], "multirefer": 12, "mrsqk": 12, "low": [12, 13, 18, 42, 53, 68], "altern": [12, 14, 20, 53, 65, 67, 75, 77, 82], "background": [12, 55], "trotter": [12, 32, 43], "diagon": [12, 56], "heurist": 12, "cisd": 12, "veri": [12, 21, 33, 55, 66, 73, 81, 83], "unitari": [12, 15, 22, 23, 32, 38, 42, 49, 62, 67, 70], "lcu": 12, "avoid": [12, 21, 75, 81, 82], "dimension": [12, 13, 16, 21, 31, 47, 52, 62, 65], "phi_0": 12, "phi_d": 12, "phi_i": 12, "mu": 12, "phi_": 12, "famili": 12, "alpha": [12, 14, 16, 52, 70], "equiv": [12, 19, 70], "psi_i": 12, "_n": 12, "c_": 12, "c_i": 12, "boldsymbol": 12, "hc": 12, "sc": [12, 53], "s_": 12, "beta": [12, 16, 70, 71], "_m": 12, "phi_j": 12, "sigma_": [12, 52], "question": 12, "scipi": [12, 13, 18, 22, 23, 29, 52], "openfermionpyscf": [12, 22, 23], "multi_gpu": 12, "geometri": [12, 22, 23], "7474": [12, 22], "chemistri": [12, 13, 22, 23], "create_molecular_hamiltonian": [12, 22], "sto": [12, 22, 23], "3g": [12, 22, 23], "electron_count": [12, 22, 23], "n_electron": [12, 22], "qubits_num": 12, "n_orbit": [12, 22], "spin_ham_matrix": 12, "eig": 12, "argmin": [12, 21], "min_indic": 12, "vec": [12, 62], "termcoeffici": [12, 20], "termword": [12, 20], "pauli_str": 12, "potenti": [12, 16, 19, 23, 24, 35, 60], "improv": [12, 19, 23, 30, 33, 56, 68, 77, 83], "higher": [12, 34, 56], "receiv": [12, 35], "compon": [12, 14, 19, 21, 52, 75, 77, 81, 82], "um": 12, "u_m": 12, "dt": [12, 20], "un": 12, "u_n": 12, "apply_pauli": 12, "qfd_kernel": 12, "dt_alpha": 12, "dt_beta": 12, "word_list": 12, "my_list": 12, "x_0": [12, 13], "y_0": 12, "m_qfd": 12, "wf_overlap": 12, "accomplish": [12, 26], "along": [12, 22, 28, 35, 53, 54, 56, 60, 62, 81], "observe_op": 12, "identity_word": 12, "pauli_list": 12, "dt_m": 12, "dt_n": 12, "temp": [12, 71], "collect_overlap_r": 12, "collect_overlap_img": 12, "sent": [12, 53, 55, 65], "count_id": 12, "tot_dim": 12, "real_val": 12, "img_val": 12, "ham_matrx": 12, "tot_": 12, "accumul": [12, 65], "ham_matrix_r": 12, "ham_matrix_imag": 12, "enter": [12, 65, 77], "eigenvaulu": 12, "sum_k": 12, "s_k": 12, "kj": 12, "hx": 12, "sce": 12, "s_diag": 12, "s_prime": 12, "sii": 12, "valueerror": [12, 13, 52], "x_prime": 12, "h_prime": 12, "conjug": [12, 17, 52], "e_prim": 12, "c_prime": 12, "eigen_valu": 12, "eigen_vect": 12, "qfd": 12, "perhap": 13, "highli": [13, 75, 77], "tout": 13, "fault": [13, 82], "correl": [13, 18], "materi": [13, 65, 70], "particularli": [13, 19, 21, 23, 56, 59, 62], "interest": [13, 15, 16, 17, 19, 21, 22, 23, 64, 66], "theori": [13, 69, 70], "dmft": 13, "account": [13, 19, 53, 54, 65, 77], "strong": 13, "bath": 13, "encompass": 13, "tough": 13, "notebook": [13, 16, 21, 31, 33, 53, 83], "showcas": [13, 31], "siam": 13, "realist": 13, "neutral": [13, 53], "appar": 13, "demo": [13, 53], "cudaq_solv": 13, "importerror": [13, 31], "quiet": 13, "restart": [13, 31], "newli": [13, 56, 77], "abc": 13, "restrict": [13, 14, 16, 21, 23, 55], "z_0": 13, "z_2": 13, "coulomb": 13, "strength": [13, 52], "grid": 13, "ev": 13, "trainabl": 13, "absenc": 13, "paramterized_ansatz": 13, "variational_angl": 13, "run_logical_vq": 13, "cudaq_hamiltonian": 13, "easier": [13, 15, 35, 71, 74], "reproduct": 13, "init_angl": 13, "get_qubit_count": 13, "variational_kernel": 13, "slsqp": [13, 18], "tol": [13, 23, 29], "bare": 13, "unencod": 13, "earlier": [13, 14, 21, 56, 60], "gateset": [13, 21], "readout": [13, 32], "meas_id": 13, "aim_physical_circuit": 13, "ignore_meas_id": 13, "prep": [13, 39], "zz": 13, "z_basi": 13, "for_loop": 13, "q_idx": 13, "getattr": 13, "x_basi": 13, "unsupport": 13, "aim_logical_circuit": 13, "teleport": 13, "With": [13, 32, 33, 55, 60, 71, 78, 83], "noisili": [13, 53], "generate_circuit_set": 13, "u_val": 13, "v_val": 13, "circuit_dict": 13, "qubit_hamiltonian": [13, 23], "tmp_physical_dict": 13, "tmp_logical_dict": 13, "nfinish": 13, "sim_circuit_dict": 13, "circuit_lay": 13, "5846845738799267": 13, "5707961678256028": 13, "588033710930825": 13, "712388365176642": 13, "588651490745171": 13, "5707962742876598": 13, "64012940802256": 13, "5707963354922125": 13, "1293956916868737": 13, "5707963294715355": 13, "6598458659836037": 13, "570796331040382": 13, "695151467539617": 13, "5707960973500679": 13, "4149519241823376": 13, "5707928509325972": 13, "7301462729177735": 13, "570796033796985": 13, "plai": [13, 15], "role": [13, 15], "_num_qubit": 13, "isdecim": 13, "process_count": 13, "data_qubit": 13, "flag_qubit": 13, "dict": [13, 18, 19], "new_data": 13, "continu": [13, 15, 16, 19, 21, 60, 65, 71], "new_kei": 13, "issuperset": 13, "setdefault": 13, "physical_to_log": 13, "0000": [13, 17, 55], "1111": [13, 55], "0011": [13, 17], "1100": 13, "0110": 13, "1001": 13, "physical_kei": 13, "logical_kei": 13, "ev_x": 13, "ev_xx": 13, "ev_zz": 13, "aim_logical_energi": 13, "data_ord": 13, "counts_list": 13, "counts_data": 13, "_aim_energi": 13, "aim_physical_energi": 13, "evx": 13, "evxx": 13, "evzz": 13, "h_param": 13, "key_a": 13, "key_b": 13, "startswith": 13, "uncertainti": 13, "string_kei": 13, "uncertainty_xx": 13, "uncertainty_zz": 13, "_get_energy_diff": 13, "bf_energi": 13, "physical_energi": 13, "logical_energi": 13, "physical_energy_diff": 13, "logical_energy_diff": 13, "physical_sim_energi": 13, "logical_sim_energi": 13, "true_energi": 13, "brute": 13, "forc": [13, 22, 33, 55, 81, 83], "got": 13, "72": 13, "submit_aim_circuit": 13, "folder_path": 13, "future_aim_result": 13, "run_async": 13, "makedir": 13, "exist_ok": 13, "aim_result": 13, "tmp_physical_result": 13, "physical_": 13, "_job_u": 13, "_v": 13, "_result": 13, "txt": [13, 65, 73, 74, 77, 78], "close": [13, 16, 21, 60, 65], "tmp_logical_result": 13, "logical_": 13, "ncomplet": 13, "nall": 13, "async": 13, "_get_async_result": 13, "physical_count": 13, "logical_count": 13, "nobtain": 13, "domin": 13, "Such": [13, 49, 60], "get_device_nois": 13, "depolar_prob_1q": 13, "depolar_prob_2q": 13, "readout_error_prob": 13, "custom_g": 13, "depolar_nois": 13, "noisy_op": 13, "custom_depolar_channel": 13, "p_0": 13, "p_1": 13, "k0": 13, "complex128": [13, 21, 27, 52], "k1": 13, "k3": 13, "cz": 13, "bit_flip": [13, 18, 27, 56], "cudaq_noise_model": 13, "rate": [13, 17, 54], "fidel": 13, "99": [13, 18], "98": 13, "002": 13, "aim_sim_data": 13, "sim_physical_energi": 13, "sim_physical_uncertainti": 13, "sim_logical_energi": 13, "sim_logical_uncertainti": 13, "251736027394713": 13, "265564437074638": 13, "252231964940428": 13, "293350575766127": 13, "608495283014149": 13, "305692796870582": 13, "39007993367173": 13, "260398644698076": 13, "429650912487233": 13, "deviat": [13, 75], "sim_physical_energy_diff": 13, "sim_logical_energy_diff": 13, "929": 13, "46016175277361": 13, "97": 13, "176531948420889": 13, "268": 13, "26321740664324": 13, "8495": 13, "46681284816878": 13, "1965000000000003": 13, "4531715120183297": 13, "336": 13, "341784541550897": 13, "802": 13, "339249509416753": 13, "8580000000000005": 13, "1227150992242025": 13, "3635": 13, "448422736181264": 13, "subject": 13, "overcom": 13, "preview": 13, "offer": [13, 32, 54, 56, 82], "fig": [13, 18], "ax": [13, 16, 18, 19], "dpi": 13, "200": [13, 19, 35], "layer_label": 13, "plot_label": 13, "errorbar": 13, "yerr": 13, "ecolor": 13, "255": 13, "26": [13, 18, 19, 54, 62], "94": [13, 18], "capsiz": 13, "elinewidth": 13, "fmt": 13, "markers": 13, "markeredgewidth": 13, "177": 13, "152": [13, 18], "set_xlabel": [13, 18], "fontsiz": [13, 18, 21], "set_ylabel": [13, 18], "set_titl": [13, 18], "xtick": 13, "ytick": 13, "axhlin": 13, "linestyl": 13, "linewidth": [13, 21], "ylim": 13, "bottom": [13, 62], "ve": [13, 33, 66, 79, 83], "seamlessli": 13, "cross": [13, 53], "superstaq": [13, 33, 53, 65, 83], "hood": [13, 81], "inde": [13, 21, 75], "gain": 13, "registr": [13, 53, 73, 74], "reproduc": [13, 21], "23": [13, 16, 18, 19, 21, 31, 62], "device_circuit_dict": 13, "7301462945564499": 13, "570796044872433": 13, "24": [13, 18, 30, 31, 52, 62, 74, 75, 77, 78, 82], "superstaq_api_kei": [13, 53], "api_kei": [13, 54], "cq_sqale_qpu": [13, 53, 65], "dry": [13, 53, 65], "simpl": [13, 27, 29, 37, 40, 52, 54, 55, 56, 58, 60, 64, 65, 66, 71, 73, 77, 78, 82], "meantim": [13, 65, 77], "hardware_aim_future_result": 13, "aim_device_data": 13, "physical_uncertainti": 13, "29": [13, 18, 19, 55], "logical_uncertainti": 13, "626499999999997": 13, "69666562801761": 13, "1415": 13, "2032104443266585": 13, "9955": 13, "76919450035401": 13, "331": 13, "85730052910377": 13, "476": [13, 18], "5425689231532203": 13, "043500000000002": 13, "795918428433312": 13, "4715": 13, "96524696701215": 13, "973": 13, "207315773582224": 13, "182": 13, "241375689575516": 13, "yet": [13, 18, 23, 24, 33, 53, 55, 77, 83], "afford": 13, "closer": [13, 59, 66, 71], "outperform": 13, "power": [13, 17, 21, 31, 33, 52, 54, 56, 68, 83], "31": [13, 18, 54, 68], "farhi": 14, "dive": [14, 31, 33, 77, 83], "ll": [14, 15, 19, 66, 71, 74, 78], "maxim": [14, 16, 54, 56, 58, 65, 68], "although": [14, 69, 70], "rel": [14, 56, 69], "hard": 14, "statist": [14, 24, 25, 35, 38, 56, 60, 69, 70], "furthermor": [14, 33, 83], "wider": [14, 55], "portfolio": 14, "shop": 14, "vertex": 14, "subseteq": 14, "mathbb": [14, 27, 69, 70], "interchang": [14, 56], "undirect": 14, "v_1": 14, "exactli": [14, 21], "bigcup": 14, "bigcap": 14, "emptyset": 14, "illustr": [14, 21, 35, 52, 53, 55, 63, 65, 66, 69], "disjoint": 14, "grai": 14, "depict": [14, 16, 19, 31], "distinct": [14, 21, 31, 49], "substack": 14, "sometim": [14, 16, 53], "01100": [14, 19, 55], "01011": [14, 19], "v1": [14, 53], "v2": 14, "v0": 14, "v3": [14, 75, 77], "v4": [14, 77], "10100": [14, 19], "01010": [14, 19], "10101": [14, 19], "edges_src": 14, "edges_tgt": 14, "algortihm": 14, "hamilitonian": 14, "distinguish": [14, 49], "mixer": 14, "posit": [14, 18, 19, 21, 23, 27, 42, 52, 56], "deeper": [14, 31], "layer_count": 14, "qaoaproblem": 14, "subcircuit": [14, 59], "kernel_qaoa": 14, "plaehold": 14, "qubitu": 14, "qubitv": 14, "mention": [14, 21], "z_v": 14, "vale": 14, "arbirtrari": 14, "formula": 14, "z_uz_v": 14, "refram": 14, "promot": [14, 32, 82], "replac": [14, 19, 53, 54, 71, 73, 75, 77], "lead": [14, 16, 27, 33, 83], "reformul": 14, "hamiltonian_max_cut": 14, "inititi": 14, "iiziz": 14, "izzii": 14, "iiiii": 14, "zziii": 14, "iiizz": 14, "iizzi": 14, "ziizi": 14, "495973826282007": 14, "51349181993727": 14, "21299416361632417": 14, "3250526425808945": 14, "886630847343767": 14, "outcom": [14, 16, 17, 19], "max_cut": 14, "11111": [14, 19], "11110": [14, 19], "01101": [14, 19], "148": 14, "01110": [14, 19], "47": [14, 18, 19, 31], "01000": [14, 19], "00110": [14, 19], "54": [14, 18], "165": 14, "00101": [14, 19], "154": 14, "00100": [14, 19], "01001": [14, 19], "41": [14, 19], "00000": [14, 19], "00011": [14, 19], "10011": [14, 19, 55], "00010": [14, 19], "01111": [14, 19], "11011": [14, 19], "00111": [14, 19], "11100": [14, 19], "10001": [14, 19], "10010": [14, 19], "144": [14, 18], "10110": [14, 19], "40": [14, 16, 18, 21, 22, 29, 68], "10111": [14, 19], "11000": [14, 19], "11101": [14, 19], "11001": [14, 19], "a726804916fd397408cbf595ce6fe5f33dcd8b4c": [14, 15], "aid": [15, 34], "area": [15, 55], "signal": [15, 40, 52], "compress": 15, "qft": 15, "ingredi": 15, "shor": [15, 32], "faster": [15, 16, 19, 21, 23, 56], "prime": [15, 19], "vital": 15, "idea": [15, 19], "frequenc": [15, 65], "domain": 15, "analogi": 15, "ixi": 15, "5i": 15, "35": [15, 16, 18, 19], "0i": 15, "25i": 15, "35i": 15, "r_k": 15, "bmatrix": [15, 18, 69, 70], "ciruit": 15, "quantum_fourier_transform": [15, 19], "cr1": [15, 19, 38], "zeroth": 15, "decim": 15, "round": [15, 21, 29, 38], "r1": [15, 19, 31, 38, 42, 49], "571": [15, 19], "7854": [15, 19], "25j": 15, "35j": 15, "seri": [15, 53, 65], "fast": [15, 21, 40, 56, 59], "n2": 15, "life": [15, 54], "li": [15, 19, 71], "invert": [15, 21], "revers": [15, 19, 46], "quantum_fourier_transform2": 15, "attent": 15, "inverse_qft": [15, 19], "verification_exampl": 15, "phenomena": [16, 69, 70], "implic": 16, "initialis": 16, "unless": [16, 75, 77], "0th": [16, 27], "arbitari": 16, "2nd": 16, "beta_": 16, "replic": 16, "stage": 16, "psi0": [16, 52], "psi4": 16, "71": 16, "62": [16, 23], "psi1": 16, "psi2": 16, "psi3": 16, "m1": 16, "m2": 16, "psi_4": 16, "multipartit": 16, "partial": 16, "subsystem": 16, "partial_trac": 16, "state_vector": 16, "trace_system": 16, "particl": [16, 49], "log2": [16, 19], "rho": 16, "tensordot": 16, "prod": 16, "state_of_q0": 16, "state_of_q2": 16, "allclos": [16, 21], "happen": [16, 19, 49, 77], "portion": 16, "lab": [16, 77], "infinit": [16, 21, 40, 47, 60], "apart": 16, "obei": [16, 70], "theorem": [16, 47], "longer": [16, 27, 56, 75], "violat": 16, "travel": 16, "speed": 16, "light": [16, 52], "experimentalist": 16, "cx_": 16, "alic": 16, "bob": 16, "safekeep": 16, "moon": 16, "posess": 16, "she": 16, "send": 16, "who": 16, "mile": 16, "entail": 16, "collaps": [16, 24, 25, 60, 69, 70, 74], "seper": [16, 22], "poss": 16, "expand": [16, 56, 71], "bracket": 16, "110": [16, 18, 19], "whilst": 16, "maintain": 16, "break": [16, 19, 33, 83], "ask": [16, 77], "her": 16, "unmeasur": 16, "determinist": [16, 60, 69], "tell": [16, 18, 69, 70], "summaris": 16, "psi_3": 16, "nearli": 16, "pend": 16, "minor": 16, "fulfil": 16, "protocol": [16, 75], "m1m2": 16, "recov": 16, "ambit": 16, "instantli": 16, "appear": [16, 21, 35, 77], "he": 16, "rather": [16, 20, 24, 26, 54, 56, 60, 70, 81], "transmit": 16, "courtesei": 16, "textbook": 16, "nielsen": 16, "chuang": 16, "qv": 17, "greatest": [17, 19], "score": 17, "though": [17, 75], "imperfect": [17, 18], "usabl": 17, "special": [17, 18, 39, 44, 71, 79], "median": 17, "greater": [17, 19, 49, 54, 56, 70], "heavi": 17, "averag": [17, 20, 82], "su4": 17, "kak": 17, "conclud": 17, "su4_per_circuit": 17, "n_params_in_su4": 17, "su4_gat": 17, "u3": 17, "reg": [17, 62], "param_index": 17, "randomli": [17, 19], "generate_random_param": 17, "params_list": 17, "generate_random_permut": 17, "circuit_permut": 17, "astyp": 17, "int64": 17, "make_bitstr": 17, "zfill": 17, "percent_heavy_sampl": 17, "error_r": 17, "noiseless": [17, 27], "circuit_param": 17, "layer_permut": 17, "print_output": 17, "bf": 17, "clean_result": 17, "noisy_result": [17, 27], "prob": [17, 18], "cutoff": [17, 56], "circuit_prob": 17, "outcome_prob": 17, "havi": 17, "prob_heavy_in_noisi": 17, "heavy_bitstr": 17, "04363711": 17, "0100": 17, "0010": 17, "1101": 17, "0111": 17, "8153219893574715": 17, "488": 17, "detemin": 17, "_heavy_sampl": 17, "n_circuit": 17, "calc_qv": 17, "circuit_s": 17, "prob_of_error": 17, "number_of_circuit": 17, "counter": 17, "circuit_result": 17, "7280300000000003": 17, "affect": [17, 18, 56, 74], "relationship": 17, "caus": [18, 82], "properli": [18, 60, 75, 77, 81], "character": [18, 27], "independ": [18, 23, 35, 40, 52, 55, 56, 75], "pseudoinvers": 18, "p_": 18, "adjust": [18, 56, 75, 81], "quasi": 18, "impract": 18, "seaborn": 18, "sn": 18, "itertool": 18, "set_styl": 18, "dark": 18, "bitflip": [18, 23, 27, 56], "principl": 18, "get_nois": 18, "isinst": 18, "state_label": 18, "ghz": [18, 24, 54, 55, 58, 60, 65, 66, 68, 71, 78], "ghz_kernel": 18, "plot_cmat": 18, "mat": 18, "im2": 18, "matshow": 18, "cmap": 18, "cm": 18, "vmin": 18, "vmax": 18, "set_ytick": 18, "arang": 18, "set_xtick": 18, "set_yticklabel": 18, "set_xticklabel": 18, "xaxi": 18, "set_label_posit": 18, "colorbar": 18, "closest": 18, "min_": 18, "rm": [18, 75, 77], "find_closest_distribut": 18, "empirical_dist": 18, "empir": 18, "l1": 18, "ord": 18, "con": 18, "ineq": 18, "fun": [18, 23, 29], "eq": [18, 71], "bnd": 18, "initial_valu": 18, "get_counts_from_distribut": 18, "drawn": [18, 19], "choic": [18, 19, 23, 56], "return_count": 18, "1024": [18, 56], "noise_1": 18, "ghz_result": 18, "noisy_dict_1": 18, "noisy_res_1": 18, "352": 18, "43": 18, "367": 18, "61": [18, 19], "noise_2": 18, "noisy_dict_2": 18, "noisy_res_2": 18, "149816047538945": 18, "3802857225639665": 18, "292797576724562": 18, "212": 18, "122": 18, "189": 18, "87": 18, "78": 18, "131": [18, 19], "otim": 18, "single_qubit_label": 18, "single_qubit_st": 18, "924": 18, "104": 18, "920": 18, "true_stat": 18, "observed_st": 18, "90234375": 18, "1015625": 18, "09765625": 18, "8984375": 18, "joint": [18, 65], "a_pinv": 18, "pinv": 18, "positive_dist": 18, "ncorrect": [18, 38], "501": [18, 35], "mitigated_sg": 18, "kind": [18, 60], "bar_label": 18, "assumpt": 18, "a_n": 18, "local_label": 18, "local_st": 18, "388": 18, "235": 18, "174": 18, "79": [18, 19, 54], "58": 18, "38": [18, 19, 75, 77], "370": [18, 25], "60": [18, 77], "107": 18, "162": 18, "marginalized_count": 18, "total_shot": 18, "marginal_ct": 18, "85546875": 18, "15722656": 18, "14453125": 18, "84277344": 18, "6328125": 18, "38476562": 18, "3671875": 18, "61523438": 18, "70800781": 18, "32226562": 18, "29199219": 18, "67773438": 18, "pinv_confusion_matric": 18, "a_joint": 18, "559": 18, "510": [18, 68], "521": 18, "446": 18, "mitigated_k_loc": 18, "248": 18, "159": [18, 19], "83": 18, "68": 18, "161": [18, 19], "93": 18, "46": 18, "363": 18, "253": 18, "76": 18, "378": 18, "150": [18, 70], "36": [18, 68], "74": [18, 23], "106": 18, "145": 18, "251": 18, "386": 18, "229": 18, "247": 18, "70": [18, 23], "163": 18, "371": 18, "95": 18, "157": [18, 19], "233": 18, "85": [18, 68], "396": 18, "393": 18, "160": [18, 19], "a_ful": 18, "09734490298929": 18, "714": 18, "211": 18, "49": 18, "63": 18, "422": 18, "683": 18, "302": 18, "mitigated_ful": 18, "famou": 19, "signific": [19, 20, 23, 24, 25, 30, 33, 83], "modern": 19, "asymmetr": 19, "encrypt": [19, 77], "scheme": [19, 56], "rsa": [19, 77], "proce": [19, 20, 77, 82], "explain": [19, 21, 55, 69, 70], "contfrac": 19, "156": 19, "gcd": 19, "ceil": 19, "fraction": [19, 56], "satisfi": [19, 27, 47, 65, 75], "share": [19, 25, 33, 56, 74, 77, 81, 83], "divisor": 19, "smallest": 19, "shors_algorithm": 19, "investig": 19, "terminologi": 19, "literatur": 19, "period": 19, "recast": 19, "a1": 19, "a2": 19, "divisor1": 19, "divisor2": 19, "find_order_quantum": 19, "find_order_class": 19, "test_ord": 19, "retri": [19, 31], "establish": 19, "rewritten": [19, 31], "rewrit": [19, 73], "peter": 19, "50": [19, 23, 60, 69, 70, 81], "possible_factor": 19, "test_factor": 19, "No": [19, 25, 65, 68, 77], "straightforward": 19, "notabl": 19, "ineffici": 19, "158": 19, "naiv": [19, 49], "interv": [19, 22], "my_integ": 19, "123": 19, "edit": [19, 77], "initial_value_to_start": 19, "central": 19, "lceil": 19, "rceil": 19, "phase_kernel": 19, "ai": 19, "exponent": 19, "provabl": 19, "hefti": 19, "5l": 19, "algoirthm": 19, "72l": 19, "exponentiaion": 19, "beckman": 19, "chari": 19, "devabhaktuni": 19, "preskil": 19, "1996": 19, "beyond": [19, 54, 56, 68, 73], "difficulti": 19, "report": 19, "modular_mult_5_21": 19, "physlab": 19, "wp": 19, "content": [19, 35, 53, 65, 74, 77], "upload": 19, "2023": 19, "05": [19, 20, 54], "shor_s_algorithm_23100113_fin": 19, "modif": [19, 23, 56, 60, 66], "modular_exp_5_21": 19, "expon": 19, "control_s": 19, "ctrl_qubit": [19, 46], "198": 19, "5y": 19, "demonstrate_mod_exponenti": 19, "init": 19, "integer_result": 19, "previou": [19, 20, 23, 26, 33, 41, 47, 52, 77, 83], "199": 19, "modular_exp_4_21": 19, "ab": [19, 21], "2103": 19, "13855": 19, "control_register_s": 19, "work_register_s": 19, "control_regist": 19, "work_regist": 19, "201": 19, "values_for_a": 19, "15000": 19, "q6": 19, "q7": 19, "2843": 19, "913": 19, "1850": 19, "1935": 19, "1830": 19, "2846": 19, "1861": 19, "922": 19, "top_result": 19, "202": 19, "results_dictionari": 19, "pop": [19, 77, 81], "sorted_result": 19, "top_kei": 19, "max_valu": 19, "top_results_dictionari": 19, "203": 19, "750": 19, "lectur": 19, "scott": 19, "aaronson": 19, "204": 19, "get_order_from_phas": 19, "phase_nbit": 19, "eigenphas": 19, "from_float": 19, "limit_denomin": 19, "denomin": 19, "coefficients_continued_fract": 19, "continued_fract": 19, "convergents_continued_fract": 19, "algoithm": 19, "205": 19, "zero_result": 19, "elem": 19, "most_probable_bitpattern": 19, "reverse_result": 19, "nonzero": 19, "bitpattern": 19, "206": 19, "452": 19, "92": [19, 56], "2485": 19, "96": 19, "1747": 19, "1654": 19, "1736": 19, "475": [19, 68], "420": 19, "00001": 19, "1710": 19, "113": 19, "467": 19, "2536": 19, "81": [19, 56], "8125": 19, "8421052631578947": 19, "regev": 19, "heisenberg": 20, "chain": [20, 22, 49], "recurs": [20, 39], "fo": 20, "iht": 20, "approx": [20, 70], "prod_": [20, 43], "predefin": [20, 37, 62], "jx": 20, "jy": 20, "n_step": [20, 52], "n_spin": 20, "j_x": 20, "x_j": 20, "x_": 20, "y_j": 20, "y_": 20, "z_": 20, "jz": 20, "heisenbergmodelham": 20, "tdop": 20, "getinitst": 20, "numspin": 20, "qid": 20, "average_magnet": 20, "start_tim": [20, 23], "magnetization_exp_v": 20, "steptim": 20, "03444695472717285": 20, "09042024163828166": 20, "0026793479919433594": 20, "08898564687193886": 20, "002758026123046875": 20, "08698024360923415": 20, "002524852752685547": 20, "08507694741170907": 20, "0026259422302246094": 20, "08394118068746997": 20, "002542734146118164": 20, "08394076573115139": 20, "0027430057525634766": 20, "08502222139504187": 20, "0025305747985839844": 20, "08677832064885871": 20, "003045797348022461": 20, "08863390649349775": 20, "0025949478149414062": 20, "09005513983609514": 20, "boost": [20, 30], "resimul": 20, "24x": 20, "florian": 21, "f\u00fcrrutter": 21, "gorka": 21, "mu\u00f1oz": 21, "gil": 21, "han": 21, "briegel": 21, "nat": 21, "mach": 21, "intel": [21, 82], "515": 21, "524": 21, "2024": [21, 54], "viabl": 21, "commonli": [21, 27, 52, 75, 77], "dm": [21, 54], "deliv": [21, 54], "fold": 21, "prompt": [21, 77], "thoroughli": 21, "overview": 21, "neural": [21, 32], "network": [21, 32, 33, 53, 54, 55, 65, 74, 77, 83], "crucial": 21, "emploi": [21, 27], "de": 21, "genqc": 21, "diffusion_pipelin": 21, "diffusionpipelin": 21, "infer": [21, 69, 70], "export_cudaq": 21, "genqc_to_cudaq": 21, "infer_compil": 21, "infer_comp": 21, "fix": [21, 22, 33, 56, 83], "infer_torch_devic": 21, "memoryclean": 21, "purge_mem": 21, "tf32": 21, "matmul": 21, "from_pretrain": 21, "floki00": 21, "qc_unitary_3qubit": 21, "hug": 21, "set_timestep": 21, "vocab": 21, "gate_pool": 21, "decod": 21, "num_of_qubit": 21, "max_gat": 21, "nonetheless": 21, "stai": 21, "tune": [21, 56], "bigger": 21, "70710678": [21, 24, 62], "ccx": 21, "scenario": [21, 33, 67, 77, 83], "miss": [21, 49, 56, 75], "u_r": 21, "u_i": 21, "u_tensor": 21, "stack": [21, 39], "out_tensor": 21, "generate_comp_tensor": 21, "system_s": 21, "guidanc": [21, 77], "cfg": [21, 71], "kernel_list": 21, "valid_tensor": 21, "invalid_tensor": 21, "out_tensors_i": 21, "catch": [21, 81], "invalid": [21, 56], "rapidli": 21, "successfulli": [21, 29], "transit": 21, "langl": [21, 35], "th": [21, 43], "got_unitari": 21, "basis_state_j": 21, "set_printopt": 21, "7071": 21, "infidel": 21, "ones": [21, 35, 52], "want_unitari": 21, "histogram": 21, "hist": 21, "almost": [21, 75], "min_index": 21, "4e": [21, 65], "09": 21, "valuabl": 21, "deal": [21, 47], "fewest": 21, "toffoli": [21, 46, 56], "token": [21, 53, 77], "duplic": 21, "pick": [21, 74, 75], "idx_uniqu": 21, "return_index": 21, "unique_tensor": 21, "unique_infidel": 21, "unique_kernel": 21, "idx_correct": 21, "argwher": 21, "correct_tensor": 21, "num_ccx": 21, "correct_kernel": 21, "correct_kernels_ccx1": 21, "preprocess": [22, 23], "uccsd": [22, 23], "hydrogen": 22, "bond": [22, 56], "interatom": 22, "electrostat": 22, "proton": 22, "shield": 22, "neutron": 22, "minimis": 22, "stabl": [22, 77], "hydrogen_count": 22, "angstrom": 22, "bond_dist": 22, "coupl": [22, 23, 40, 52, 56, 65, 77], "cluster": [22, 23, 32, 55, 56], "uccsd_num_paramet": [22, 23], "builtin": [22, 71], "1371744305855906": 22, "popular": [22, 77], "xk": [22, 23], "x0": [22, 23, 35], "aspect": [23, 34, 35, 56, 81], "topic": [23, 62], "tradit": 23, "variation": 23, "elabor": 23, "get_fermion_oper": 23, "timeit": [23, 60, 68], "charg": 23, "1173": 23, "4691": 23, "7570": 23, "sto3g": 23, "run_pyscf": 23, "moleculardata": 23, "get_molecular_hamiltonian": 23, "jordan": 23, "wigner": 23, "molecular_hamiltonian": 23, "fermion_hamiltonian": 23, "spatial": 23, "theoret": 23, "excit": [23, 33, 70, 83], "hate": 23, "electron_num": 23, "molecuul": 23, "140": 23, "default_tim": 23, "end_tim": 23, "get_term_count": 23, "elaps": 23, "21455023422772": 23, "1086": 23, "9171073289999185": 23, "perfect": [23, 56], "greatli": [23, 33, 83], "minut": [23, 77], "drastic": 23, "side": [23, 31, 49, 77], "ith": [23, 29], "prohibit": 23, "observe_asynch": 23, "epsilon": [23, 27, 29], "batched_gradient_funct": [23, 29], "tile": [23, 29], "xplu": [23, 29], "ey": [23, 29], "xminu": [23, 29], "g_plu": [23, 29], "g_minu": [23, 29], "bfg": [23, 29, 35], "gradient_vector": [23, 29], "init_param": 23, "result_vq": [23, 29], "jac": [23, 29], "73": 23, "19471262288755": 23, "57": [23, 75, 77], "27010986900132": 23, "thank": [23, 33, 56, 83], "unnecessari": 23, "highest": 23, "unoccupi": 23, "shallow": 23, "nele_ca": 23, "norb_ca": 23, "ncore": 23, "constrcut": 23, "occupied_indic": 23, "active_indic": 23, "96341992791962": 23, "754178541001238": 23, "consecut": [23, 30], "cudaq_mgpu_fus": [23, 30, 33, 56, 83], "506": 24, "494": 24, "subtl": [24, 60], "rebuilt": [24, 60], "feasibl": [24, 69, 70], "signinific": 24, "textcolor": [24, 25], "intens": [24, 25, 60], "respons": [24, 60], "event": [24, 60, 75], "hamiltonian_1": 24, "hamiltonian_2": 24, "result_1": [24, 60], "result_2": [24, 60], "220446049250313e": 24, "obver": 24, "0eb6b444eb5b3a687e6fd64529ee9223aaa2870": 24, "qumode_count": 25, "beam_splitt": [25, 69], "_environ": 25, "preload": 25, "cutensor": [25, 75], "libcutensor": [25, 75], "oserror": 25, "libcublaslt": [25, 75], "msg": 25, "348": 25, "282": 25, "61237244": 25, "littl": 25, "718d9ed0b22d4bb71e80cbf43a2d52c3a828cef": 25, "mx": 26, "my": [26, 54, 74, 77], "qubits_a": 26, "qubit_b": 26, "savig": 26, "b0": 26, "coher": [27, 39, 53], "incoher": 27, "systemat": 27, "miscalibr": 27, "formal": 27, "k_i": 27, "ideal_count": 27, "error_prob": [27, 56], "phase_flip": 27, "amplitude_damp": 27, "kraus_0": 27, "kraus_1": 27, "bitflip_channel": 27, "uniformli": [27, 56], "noisy_count": [27, 56], "844": 27, "88": 27, "8666666666666666": 27, "cover": [28, 62], "sophist": 28, "2xyx": 28, "3zzy": 28, "referenc": 28, "xyxz": 28, "432xzy": 28, "324ixx": 28, "ixx": 28, "432": 28, "324": 28, "907": [29, 35, 38, 43, 54, 55, 64], "1433": [29, 35, 38, 43, 54, 55, 64], "21829": [29, 35, 38, 43, 54, 55, 64], "adam": [29, 52], "nminim": 29, "748382901613712": 29, "58409164053813": 29, "accomplis": 29, "fucntion": 29, "messag": [29, 40, 54, 75, 77], "statu": 29, "7488646919931474": 29, "944e": 29, "288e": 29, "nfev": 29, "33": [29, 55, 77], "maxcv": 29, "plu": [29, 52], "minu": [29, 31, 52], "situat": 30, "c2h2vqe": 30, "cue": 31, "sens": [31, 71], "2d": 31, "plane": 31, "3d": 31, "varphi": 31, "direct": [31, 71, 81], "spheric": 31, "sphere": 31, "sure": [31, 55, 75, 77, 79, 82], "jupyt": [31, 53, 77], "menu": 31, "vscode": [31, 77], "click": [31, 77], "button": 31, "toolbar": 31, "misunderstand": 31, "qualifi": 31, "bash": [31, 54, 75, 77, 82], "pipe": [31, 71], "sy": [31, 60, 82], "nnew": 31, "subsequ": [31, 35, 40, 43, 45, 75, 77], "add_to_bloch_spher": 31, "rng": 31, "default_rng": [31, 68], "blochspherelist": 31, "anglelist": 31, "sph": 31, "displai": [31, 34], "accordingli": [31, 56, 81], "absolut": [31, 47, 71], "had": 31, "toolbox": 31, "blochspher": 31, "unfortun": 31, "handi": 31, "kernel_to_draw": 31, "14159": 31, "tdg": [31, 42], "142": 31, "documentclass": 31, "usepackag": 31, "quantikz": 31, "lstick": 31, "q_0": 31, "amp": 31, "r_1": 31, "qw": 31, "q_1": 31, "targx": 31, "q_2": 31, "q_3": 31, "editor": 31, "export": [31, 53, 54, 55, 74, 75, 82], "welcom": [32, 54, 66, 77], "page": [32, 60, 64, 66, 75, 77, 82], "scalabl": [32, 54, 82], "unifi": [32, 51, 82], "brows": 32, "amd64": [32, 33, 83], "2458": 32, "releas": [32, 51, 55, 56, 71, 77, 82, 83], "toolchain": [32, 48, 53, 60, 71, 77, 78, 79, 80, 82], "heterogen": [32, 34, 59, 75], "troubleshoot": [32, 57], "photon": [32, 52, 53, 63, 65, 70], "bernstein": [32, 77], "vazirani": [32, 77], "diffus": 32, "magnet": 32, "suzuki": 32, "deutsch": 32, "divis": 32, "coreset": 32, "qaoa": 32, "dock": 32, "dc": 32, "krylov": 32, "mont": 32, "carlo": 32, "fourier": [32, 38], "telepor": 32, "volum": 32, "mitig": 32, "fusion": [32, 33, 56, 83], "subspac": 32, "anderson": [32, 53], "impur": [32, 53], "infleqt": [32, 51], "sqale": [32, 53], "cloud": [32, 33, 51, 53, 56, 65, 83], "processor": [32, 33, 35, 40, 51, 60, 77, 81, 82, 83], "center": [32, 76, 77], "cmake": [32, 73, 74, 80], "repositori": [33, 52, 73, 74, 75, 77, 83], "docker": [33, 52, 75, 82, 83], "nightli": [33, 77, 83], "infeqt": [33, 83], "offici": [33, 42, 75, 77, 83], "wherea": [33, 81, 83], "never": [33, 47, 83], "wheel": [33, 55, 56, 75, 83], "toolset": [33, 75, 81, 83], "manipul": [33, 69, 70, 83], "anyon": [33, 51, 83], "technologi": [33, 83], "ferimioniq": [33, 83], "oqc": [33, 51, 83], "hope": [33, 83], "enjoi": [33, 83], "eas": [33, 83], "think": [33, 55, 70, 83], "great": [33, 83], "extern": [33, 56, 71, 73, 75, 81, 83], "contributor": [33, 83], "bug": [33, 83], "frontend": [33, 83], "blog": [33, 83], "workload": [33, 55, 77, 83], "gnu": [33, 71, 75, 77, 81, 83], "older": [33, 75, 77, 83], "glibc": [33, 75, 77, 83], "iqm": [33, 51, 83], "publish": [33, 77, 83], "arm": [33, 75, 77, 82, 83], "aarch64": [33, 52, 82, 83], "pypi": [33, 75, 82, 83], "quantinuum": [33, 51, 83], "ionq": [33, 51, 83], "linux": [33, 71, 75, 77, 83], "coprocess": 34, "annot": [34, 39, 58, 66], "core": [34, 35, 56, 68, 71], "namespac": [34, 35, 37, 38, 39, 42, 43, 45, 47, 48, 54, 55, 60, 64, 65, 73, 74, 79, 81], "philosophi": 35, "stand": 35, "alon": 35, "adaptor": 35, "returntyp": 35, "hasvoidreturntyp": 35, "is_void_v": 35, "bel": 35, "lu": [35, 38, 47, 66, 67], "sequential_data": 35, "reg1": 35, "499": 35, "alwai": [35, 56, 77], "middl": 35, "implicitli": [35, 40, 49], "discern": 35, "silent": 35, "discard": 35, "ancillari": 35, "varieti": [35, 60], "enforc": 35, "sample_async_result": 35, "\ud835\udeb9": 35, "retain": [35, 41], "measurecount": 35, "spinop": 35, "x0x1exp": 35, "x0x1data": 35, "qarrai": [35, 38, 39, 46, 66, 71], "lf": [35, 38, 55, 64], "analyt": 35, "async_observe_result": 35, "broader": [35, 55], "dictat": 35, "safe": 35, "providesgradi": 35, "_providesgradi": 35, "someth": [35, 47, 75, 77, 81], "max_ev": 35, "opt_energi": 35, "grad_vec": 35, "\ud835\udeb9_i": 35, "address": [35, 55, 75], "overal": [35, 56, 71, 74], "deuteron_n3_ansatz": 35, "x1": 35, "vctrl": 35, "h3": 35, "625": 35, "913119": 35, "make_tupl": 35, "min_val": 35, "permit": 36, "facilit": [37, 77], "privat": [37, 47], "thenfunctor": 37, "otherkernelbuild": 37, "kerneltocal": 37, "kerneltocontrol": 37, "kerneltoadjoint": 37, "argsarrai": 37, "decltyp": 37, "tuple_s": 37, "integral_const": 37, "sizeof": [37, 79], "tuple_el": 37, "conditional_t": [37, 47], "factori": 37, "xprep": 37, "qubitin": 37, "hadamardtest": 37, "num_it": 38, "c_str": [38, 81], "phase_estim": 38, "cpp": [38, 53, 54, 55, 56, 60, 64, 65, 66, 67, 71, 73, 74, 75, 77, 78, 79, 81, 82], "qpe": 38, "stdio": [38, 75], "cmath": 38, "iqft": 38, "denom": 38, "1ul": 38, "eigenst": 38, "stateprep": [38, 39], "ncountingqubit": 38, "state_prep": 38, "counting_qubit": 38, "state_regist": 38, "put": [38, 47, 70], "r1pigat": 38, "mostprob": 38, "to_integ": 38, "piestim": 38, "tgate": 38, "xgate": 38, "eigen": [38, 74], "nc": 38, "nq": 38, "countingqubit": 38, "stateregist": 38, "deuteron_n2_ansatz": 38, "param_spac": 38, "linspac": [38, 52, 65], "energy_at_param": 38, "energyatparam": 38, "reflect_about_uniform": 38, "ctrlqubit": 38, "lastqubit": 38, "compute_act": [38, 44], "run_grov": 38, "callablekernel": 38, "n_iter": 38, "target_st": 38, "target_bit_set": 38, "strtol": 38, "null": [38, 52, 77], "0b1011": 38, "compute_oracl": 38, "iterative_qp": 38, "iqp": 38, "cr0": 38, "cr2": 38, "m_pi_4": 38, "differenti": [39, 52], "former": 39, "latter": [39, 52, 71], "my_first_entry_point_kernel": 39, "my_second_entry_point_kernel": 39, "my_first_pure_device_kernel": 39, "parent": 39, "boolexprfromqubitmeasur": 39, "another_qubit": 39, "uncomput": [39, 40], "is_arithmetic_v": 39, "span": [39, 47], "mycustomsimplestruct": 39, "recursivevec": 39, "var": [39, 82], "kernelthatreturn": 39, "dataclass": 39, "mysimplestruct": 39, "recursivelist": 39, "1415926": 39, "kernellambda": 39, "mystateprep": 39, "mygenericalgorithm": 39, "placehold": [39, 56], "mygenericalgorithm2": 39, "callkernel": 39, "anothervers": 39, "constrain": [39, 67], "is_convertible_v": 39, "takes_qubit": [39, 67], "mygenericalgorithmonqarrai": 39, "mygenericalgorithmonqubit": 39, "presum": 40, "graphic": 40, "fpga": 40, "concurr": [40, 54], "inter": [40, 56], "fabric": 40, "novel": 40, "placement": 40, "copyabl": [40, 47], "flavor": 40, "tightli": 40, "modal": 40, "sfina": 41, "foundat": 42, "inst_nam": 42, "header": [42, 75, 77, 79, 81], "qubitarg": 42, "qr": [42, 56], "scalarangl": 42, "rotation_nam": 42, "measure_op": 42, "convei": 42, "p_i": 43, "sigma_j": 43, "intent": 44, "u_cod": 44, "v_code": 44, "computef": 44, "actionf": 44, "computel": 44, "segment": [44, 82], "effort": 45, "get_platform": [45, 55, 64], "quantumregist": 46, "x_gate": 46, "ctrl_bit": 46, "rx_and_h_gat": 46, "kerneltestcontrol": 46, "kerneltestadjoint": 46, "aggreg": [46, 65], "qubit0": [46, 56], "qubit1": [46, 56], "kernel_arg": 46, "fundament": [47, 70, 77, 82], "movabl": 47, "n_level": 47, "adl": 47, "familiar": 47, "stride": 47, "first_5": 47, "qb": 47, "knowledg": 47, "ahead": 47, "storag": [47, 70], "fivecompiletimequbit": 47, "conceptu": 49, "sai": [49, 52], "embodi": 49, "behind": 49, "dataflow": 49, "contrast": 49, "truli": 49, "ssa": 49, "clarifi": 49, "toi": 49, "foo": 49, "boilerpl": [49, 74], "c0": 49, "c1": 49, "extract_ref": [49, 71], "bunch": 49, "decid": 49, "i1": [49, 71], "imagin": 49, "adjac": [49, 53], "Of": 49, "cours": 49, "correctli": [49, 75, 79, 81], "quit": [49, 60], "prone": 49, "analys": 49, "q0_1": 49, "q0_0": 49, "wire": 49, "q0_z": 49, "elimin": [49, 55], "r0": 49, "qref": 49, "unwrap": 49, "misc": 49, "q0_m": 49, "q0_l": 49, "q1_x": 49, "q0_p": 49, "q0_y": 49, "straightforwardli": 49, "cancel": [49, 77, 82], "mmeori": 49, "comprehens": [51, 53, 56], "fermioniq": 51, "stim": 51, "tensornet": [51, 54, 55, 56], "mp": [51, 54, 56], "cuquantum": [52, 56, 68, 74, 75], "superconduct": [52, 70], "transmon": 52, "omega_z": 52, "sigma_z": 52, "omega_x": 52, "omega_d": 52, "sigma_x": 52, "cp": [52, 77], "rho0": 52, "t_final": 52, "evolution_result": [52, 53], "aka": [52, 56], "ladder": 52, "harmon": 52, "oscil": 52, "displac": 52, "squeez": 52, "momentum": 52, "sigma_i": 52, "jayn": 52, "cum": 52, "omega_c": 52, "omega_a": 52, "caviti": 52, "consider": 52, "h_0": 52, "drift": 52, "h0": 52, "displacement_matrix": 52, "numerictyp": 52, "en": 52, "wiki": 52, "displacement_oper": 52, "term1": 52, "term2": 52, "expm": 52, "system_dimens": 52, "system_oper": 52, "linearli": [52, 70], "time_depend": 52, "vari": 52, "parameter_valu": 52, "time_step": 52, "compute_valu": 52, "param_nam": 52, "step_idx": 52, "match": [52, 53, 75, 77, 81], "undefin": [52, 81], "rungekuttaintegr": 52, "4th": 52, "rung": 52, "kutta": 52, "scipyzvodeintegr": 52, "ordinari": 52, "cudatorchdiffeqdopri5integr": 52, "dormand": 52, "princ": 52, "shampin": 52, "torchdiffeq": 52, "cudatorchdiffeqadaptiveheunintegr": 52, "cudatorchdiffeqbosh3integr": 52, "bogacki": 52, "cudatorchdiffeqdopri8integr": 52, "cudatorchdiffeqeulerintegr": 52, "cudatorchdiffeqexplicitadamsintegr": 52, "bashforth": 52, "cudatorchdiffeqimplicitadamsintegr": 52, "moulton": 52, "cudatorchdiffeqmidpointintegr": 52, "midpoint": 52, "cudatorchdiffeqrk4integr": 52, "mpiexec": [52, 55, 56, 75], "launcher": [52, 55], "per": [52, 55, 56, 68], "secur": [53, 55, 77], "demand": [53, 55], "simplest": 53, "cli": [53, 77], "aws_default_region": 53, "aws_access_key_id": 53, "key_id": 53, "aws_secret_access_kei": 53, "access_kei": 53, "aws_session_token": 53, "sv1": [53, 65], "arn": [53, 65], "eu": [53, 65], "north": [53, 65], "garnet": [53, 65], "device_arn": 53, "softwar": [53, 75, 77], "authent": [53, 55, 56, 77], "emit": [53, 71], "diagnost": 53, "ionq_api_kei": 53, "ionq_generated_api_kei": 53, "aria": [53, 65], "login": [53, 77], "usernam": 53, "password": [53, 77], "refresh": 53, "echo": [53, 54, 75, 77, 81], "home": [53, 54, 77], "anyon_config": 53, "apt": [53, 77], "curl": [53, 75], "jq": 53, "5000": 53, "id_token": 53, "cat": [53, 77], "refresh_token": 53, "cudaq_anyon_credenti": 53, "telegraph": 53, "8q": 53, "berkelei": 53, "25q": 53, "inject": [53, 65, 71, 77], "cortex": 53, "cach": 53, "iqm_tokens_fil": 53, "mandatori": 53, "coco": [53, 65], "adoni": [53, 65], "iqm_server_url": 53, "fi": [53, 75, 77], "apollo": 53, "oxford": 53, "ring": 53, "topologi": 53, "luci": 53, "kagom": 53, "lattic": 53, "toshiko": 53, "contact": [53, 56, 65], "oqc_qcaas_support": [53, 65], "oxfordquantumcircuit": [53, 65], "email": [53, 54], "oqc_url": [53, 65], "oqc_email": [53, 65], "oqc_password": [53, 65], "qcaa": 53, "assembli": 53, "qat": 53, "pt": [53, 65, 77], "interf": [53, 65], "detector": [53, 65], "delai": [53, 65], "orca_access_url": [53, 65], "orca_auth_token": 53, "abcdef123456": 53, "orca_url": [53, 65], "getenv": [53, 65], "localhost": [53, 55, 65, 77], "your_alia": 53, "your_password": 53, "qapi": 53, "quantinuum_config": 53, "cudaq_quantinuum_credenti": 53, "checker": [53, 65], "mere": [53, 75], "2e": [53, 65], "1sc": 53, "navig": [53, 77], "tab": [53, 77], "tabl": [53, 54, 55, 74, 77], "east": 53, "whitepap": 53, "world": [54, 59, 66], "visit": [54, 60], "link": [54, 71, 75, 77, 78, 79, 81], "approv": 54, "nvqc_api_kei": 54, "session": [54, 55, 77], "bashrc": [54, 77], "438": 54, "3600": 54, "h100": 54, "80gb": 54, "hbm3": 54, "driver": [54, 75, 77], "gb": [54, 56, 68], "clock": 54, "mhz": 54, "2619": 54, "1980": 54, "1111111111111111111111111": [54, 68], "486": 54, "0000000000000000000000000": [54, 68], "514": 54, "nvqc_intro": 54, "545": 54, "487": 54, "513": 54, "nvqc_sampl": 54, "grow": [54, 74], "ngpu": 54, "unabl": [54, 77], "deploy": 54, "ye": [54, 77], "cutensornet": [54, 56], "contract": [54, 56], "wherebi": [54, 55, 56], "worker": 54, "nqpu": 54, "opt_gradi": 54, "submiss": [54, 61, 65], "energy_futur": 54, "plus_futur": 54, "minus_futur": 54, "optimal_valu": 54, "grad": 54, "paramshift": 54, "74886": 54, "nvqc_vqe": 54, "incom": [54, 67], "attain": 54, "On": [54, 55, 56, 66, 77, 82], "busi": 54, "substanti": 54, "nvqc_log_level": 54, "disabl": [54, 56, 75], "credenti": [54, 56, 65], "lieu": 54, "nvqc_config": 54, "elucid": 55, "unlik": [55, 60], "opportun": 55, "count_futur": 55, "kerneltobesampl": 55, "runtimeparam": 55, "singleton": [55, 64], "zu": [55, 64], "countfutur": 55, "emplace_back": 55, "gpuemulatedqpu": 55, "37": 55, "cudaq_mqpu_ngpu": 55, "bellow": 55, "state_futur": 55, "kerneltorun": 55, "async_state_result": 55, "statefutur": 55, "suffici": [55, 75, 77, 82], "script": [55, 60, 75, 77], "srun": 55, "controls_count": 55, "auto_launch": 55, "isdigit": 55, "nrcontrol": 55, "tidx": 55, "daemon": 55, "qpud": 55, "shut": 55, "cudaq_loc": 55, "grep": [55, 75], "qpud_pi": 55, "cuda_visible_devic": [55, 56], "tcp": [55, 77], "ip": 55, "ld_library_path": [55, 75, 82], "app": 55, "firewal": 55, "port1": 55, "port2": 55, "port3": 55, "port4": 55, "resolv": 55, "contigu": 55, "byte": [55, 68, 81], "memcpi": 55, "ixiz": 55, "charact": 55, "incur": 55, "overhead": 55, "defer": 55, "rtti": 55, "standalon": [55, 74], "accommod": 56, "switch": [56, 68], "cudaq_fusion_max_qubit": 56, "cudaq_fusion_diagonal_gate_max_qubit": 56, "cudaq_fusion_num_host_thread": 56, "cudaq_max_cpu_memory_gb": 56, "migrat": [56, 75], "unlimit": 56, "0gb": 56, "cudaq_max_gpu_memory_gb": 56, "exce": 56, "cudaq_mgpu_lib_mpi": 56, "libmpi": [56, 77], "cudaq_mgpu_comm_plugin_typ": 56, "openmpi": [56, 75, 77, 82], "mpich": [56, 75], "commplugin": 56, "cudaq_mgpu_nqubits_thresh": 56, "cudaq_mgpu_p2p_device_bit": 56, "gpudirect": 56, "p2p": 56, "cudaq_gpu_fabr": 56, "mnnvl": 56, "nvl": 56, "nvlink": 56, "cudaq_global_index_bit": 56, "comma": 56, "slower": 56, "cudaq_host_device_migration_level": 56, "insert": [56, 73], "interconnect": 56, "infiniband": 56, "fuse": 56, "4x4": 56, "bandwidth": 56, "significantli": 56, "incorpor": 56, "812": 56, "xop": 56, "asymptot": 56, "noisy_exp_v": 56, "rerun": 56, "8192": 56, "810546875": 56, "800048828125": 56, "810547": 56, "800049": 56, "cudaq_observe_num_trajectori": 56, "cudaq_batch_s": 56, "cudaq_batched_sim_max_branch": 56, "cudaq_batched_sim_max_qubit": 56, "cudaq_batched_sim_min_batch_s": 56, "suitabl": [56, 75, 77, 81], "despit": [56, 65], "poor": 56, "visibl": [56, 77], "cutensornet_comm_lib": 56, "libcutensornet_distributed_interface_mpi": 56, "dedic": 56, "dgx": 56, "omp_plac": 56, "omp_num_thread": 56, "number_of_cores_per_nod": 56, "number_of_gpus_per_nod": 56, "cudaq_tensornet_controlled_rank": 56, "cudaq_tensornet_observe_contract_path_reus": 56, "ON": 56, "reus": 56, "wave": [56, 69], "sparsiti": 56, "svd": 56, "singular": [56, 75], "truncat": 56, "tractabl": 56, "footprint": 56, "cudaq_mps_max_bond": 56, "cudaq_mps_abs_cutoff": 56, "largest": 56, "trim": 56, "cudaq_mps_relative_cutoff": 56, "cudaq_mps_svd_algo": 56, "gesvd": 56, "gesvdj": 56, "jacobi": 56, "gesvdp": 56, "gesvdr": 56, "medium": 56, "ava": 56, "onlin": [56, 75, 77], "fermioniq_access_token_id": 56, "fermioniq_access_token_secret": 56, "remote_config": 56, "remote_config_id": 56, "organ": 56, "project_id": 56, "bond_dim": 56, "overridden": [56, 74], "cudaq_default_simul": 56, "debug": [57, 71, 75, 77], "amongst": 58, "roughli": [60, 68, 69, 70], "505": 60, "495": 60, "result_0": 60, "5005": 60, "4995": 60, "most_probable_result": 60, "kernel2": 60, "num_gpu": [60, 68], "confirm": [60, 65, 75, 77, 82], "025": 60, "million": 60, "35x": 60, "code_to_tim": 60, "1000000": 60, "57462": 60, "stmt": 60, "773286": 60, "atoi": [60, 82], "chrono": [60, 65], "high_resolution_clock": 60, "durat": 60, "took": 60, "8337": 60, "18988": 60, "cudaq_log_level": 61, "prepend": 61, "cudaq_dump_jit_ir": 61, "output_filenam": 61, "agnost": 62, "707": 62, "707j": 62, "kernel_initi": 62, "state_to_pass": 62, "default_op": 62, "Or": 62, "x_kernel": [62, 67], "control_vector": [62, 67], "blow": 62, "kernel_a": 62, "kernel_b": 62, "024": 62, "543": 62, "d2": 64, "observe_mqpu": 64, "async_count": 65, "fstream": 65, "proceed": [65, 75], "redefin": 65, "same_fil": 65, "retrieved_async_result": 65, "cq_sqale_simul": 65, "ofstream": 65, "savem": 65, "readin": 65, "ifstream": 65, "flight": 65, "mimic": 65, "dashboard": 65, "qb1": 65, "qb2": 65, "qb3": 65, "qb4": 65, "qb5": 65, "adonis_ghz": 65, "transpar": 65, "worri": 65, "schemat": 65, "optic": 65, "reconfigur": 65, "indistinguish": 65, "interfer": [65, 69, 75, 77], "exit": [65, 68, 77], "n_beam_splitt": 65, "sleep": 65, "this_thread": 65, "sleep_for": 65, "sleep_until": 65, "chrono_liter": 65, "sum_loop_length": 65, "static_cast": [65, 79], "n_loop": 65, "n_mode": [65, 69], "endl": [65, 81], "200m": 65, "endpoint": 65, "syntax_check": 65, "hello": [65, 66, 77], "arrang": 65, "7e": 65, "time_max": 65, "time_ramp": 65, "omega_max": 65, "6300000": 65, "rad": 65, "sec": 65, "delta_start": 65, "delta_end": 65, "piec": [65, 75], "wise": 65, "waveform": 65, "rabi": 65, "12121222": 65, "21202221": 65, "21212121": 65, "21212122": 65, "21221212": 65, "21221221": 65, "22121221": 65, "22221221": 65, "post_sequ": 65, "01010111": 65, "10101010": 65, "10101011": 65, "10101110": 65, "10110101": 65, "10110110": 65, "11010110": 65, "11110110": 65, "pre_sequ": 65, "11101111": 65, "11111111": 65, "rydberg": 65, "gotten": 66, "static_kernel": 66, "multi_controlled_oper": 67, "ccnot": 67, "applyx": 67, "ccnot_test": 67, "apply_x": 67, "counts2": 67, "seamless": [68, 77], "multithread": 68, "ghz_state": 68, "sample_ghz_st": 68, "cpu_result": 68, "525": [68, 77], "2500x": 68, "gpu_result": 68, "490": 68, "8700": 68, "freeli": [68, 75, 77], "term_count": 68, "qubits_list": 68, "990": 68, "dev": [68, 75, 77], "xi": 68, "2500": 68, "4x": 68, "dirac": [69, 70], "vdot": 69, "alpha_0": 69, "alpha_1": 69, "alpha_2": 69, "alpha_d": 69, "alpha_i": 69, "ddot": 69, "transmiss": [69, 70], "hong": 69, "ou": 69, "mandel": 69, "491": 69, "509": 69, "probabilist": [69, 70], "devis": [69, 70], "lvert": [69, 70], "rvert": [69, 70], "counterpart": 70, "transistor": 70, "alter": 70, "ion": 70, "ourselv": 70, "law": 70, "physicist": 70, "logarithm": 70, "correspondingli": [70, 81], "art": [70, 81], "offload": 70, "502": 70, "498": 70, "modulu": 70, "conserv": 70, "uphold": 70, "postul": 70, "alpha_": 70, "llvm": [71, 73, 74, 75, 79], "qke": [71, 73], "pipelin": 71, "canonic": 71, "lift": 71, "indirect": 71, "loader": 71, "cse": 71, "lpsxpu": 71, "p3de4l": 71, "fixup": 71, "linkag": 71, "pl": [71, 75], "llc": [71, 75], "reloc": 71, "pic": 71, "filetyp": 71, "obj": 71, "o2": 71, "clang": [71, 75, 81], "gcc": [71, 75, 77, 81], "x86_64": [71, 75, 77, 82], "lib64": [71, 77, 79], "stub": 71, "wl": [71, 75, 81], "rpath": [71, 81], "llib": 71, "lcudaq": 71, "builder": 71, "ensmallen": 71, "em": 71, "lnvqir": 71, "orchestr": 71, "qtx": 71, "mangled_name_map": 71, "__nvqpp__mlirgen__ghz": 71, "_zn3ghzclei": 71, "i32": 71, "entrypoint": 71, "alloca": 71, "memref": 71, "extsi": 71, "c0_i32": 71, "c0_i32_0": 71, "alloca_1": 71, "c1_i32": 71, "subi": 71, "cmpi": 71, "slt": 71, "addi": 71, "unoptim": 71, "mangl": 71, "introspect": 71, "overwrit": 71, "libcudaq": 71, "libnvqir": [71, 74], "robust": 71, "depart": 71, "recal": 71, "datalayout": 71, "p270": 71, "p271": 71, "p272": 71, "f80": 71, "n8": 71, "s128": 71, "invokewithcontrolqubit": 71, "__quantum__qis__x__ctl": 71, "__quantum__rt__array_get_size_1d": 71, "__quantum__qis__h": 71, "i8": 71, "__quantum__rt__array_get_element_ptr_1d": 71, "sext": 71, "bitcast": 71, "icmp": 71, "sgt": 71, "br": 71, "ph": 71, "prehead": 71, "_crit_edg": 71, "trip": 71, "zext": 71, "indvar": 71, "iv": 71, "nuw": 71, "nsw": 71, "nonnul": 71, "exitcond": 71, "ph3": 71, "_crit_edge4": 71, "exitcond5": 71, "mycustomplugin": 73, "cmakelist": [73, 74, 78], "add_llvm_pass_plugin": 73, "operationpass": 73, "quakedialect": 73, "quakeop": 73, "frozenrewritepatternset": 73, "dialectconvers": 73, "replaceh": 73, "oprewritepattern": 73, "hop": 73, "logicalresult": 73, "matchandrewrit": 73, "patternrewrit": 73, "replaceopwithnewop": 73, "sop": 73, "isadj": 73, "getparamet": 73, "getcontrol": 73, "gettarget": 73, "custompassplugin": 73, "passwrapp": 73, "mlir_define_explicit_internal_inline_type_id": 73, "stringref": 73, "runonoper": 73, "getoper": 73, "getcontext": 73, "rewritepatternset": 73, "conversiontarget": 73, "addlegaldialect": 73, "addillegalop": 73, "applypartialconvers": 73, "emitoperror": 73, "signalpassfailur": 73, "cudaq_register_mlir_pass": 73, "add_subdirectori": 73, "circuitsimulatorbas": 74, "lot": 74, "qppcircuitsimul": 74, "custateveccircuitsimul": 74, "openmp": [74, 75, 82], "addqubittost": 74, "addqubitstost": 74, "resetqubit": 74, "qubitidx": 74, "resetqubitstateimpl": 74, "applyg": 74, "gateapplicationtask": 74, "measurequbit": 74, "floattyp": 74, "mysimul": 74, "nvqir_register_simul": 74, "mysimulatorclassnam": 74, "dylib": 74, "nvqir_simulation_backend": 74, "cuda_quantum_path": [74, 75, 77, 78], "find_packag": [74, 78], "nvqir_add_backend": 74, "folder": [74, 75, 77, 78], "cmake_minimum_requir": [74, 78], "fatal_error": [74, 78], "democreatenvqirbackend": 74, "cxx": [74, 75, 78, 82], "measuredbit": 74, "cuda_quantum": [74, 75], "cd": [74, 75, 77, 78], "ninja": [74, 78], "dnvqir_dir": 74, "rootless": 75, "admin": [75, 77], "meet": 75, "carefulli": 75, "requisit": 75, "almalinux": 75, "manylinux_2_28": 75, "cento": [75, 77], "debian": [75, 77], "fedora": [75, 77], "opensus": [75, 77], "sled": [75, 77], "sle": [75, 77], "rhel": [75, 77], "rocki": [75, 77], "ubuntu": [75, 77], "newer": [75, 77, 82], "x86": [75, 77], "arm64": [75, 77], "v8": [75, 77], "volta": [75, 77], "ture": [75, 77], "amper": [75, 77], "ada": [75, 77], "hopper": [75, 77], "470": [75, 77], "git": 75, "unzip": 75, "web": [75, 77], "cudaq_install_prefix": 75, "cuquantum_install_prefix": 75, "cutensor_install_prefix": 75, "llvm_install_prefix": 75, "blas_install_prefix": 75, "bla": 75, "zlib_install_prefix": 75, "zlib": 75, "openssl_install_prefix": 75, "openssl": 75, "curl_install_prefix": 75, "aws_install_prefix": 75, "toolkit": [75, 77, 79, 82], "cuda_vers": [75, 77, 82], "cuda_download_url": [75, 77], "repo": [75, 77], "subfold": [75, 77], "rhel8": [75, 77], "cuda_arch_fold": [75, 77], "dnf": [75, 77], "nobest": [75, 77], "setopt": [75, 77], "install_weak_dep": [75, 77], "tr": [75, 77], "gcc_version": 75, "assembl": 75, "enable_script": 75, "gcc_toolchain": 75, "rh": 75, "cudacxx": 75, "nvcc": [75, 77, 79], "cudahostcxx": 75, "commit": 75, "checkout": 75, "archiv": [75, 77, 81], "subsect": 75, "devel": [75, 77], "suffix": [75, 82], "conda": [75, 82], "auditwheel": 75, "patchelf": 75, "pyproject": 75, "toml": 75, "llvm_project": 75, "flang": 75, "lld": 75, "install_prerequisit": [75, 77], "sh": [75, 77, 82], "fc": 75, "histori": 75, "setuptools_scm_pretend_vers": 75, "cudaq_wheel": 75, "manylinux_platform": 75, "linux_": 75, "sed": [75, 77], "manylinux_2_28_": 75, "pwd": [75, 81], "_skbuild": 75, "repair": 75, "plat": 75, "libcubla": [75, 77], "libcusolv": [75, 77], "libcutensornet": 75, "libcustatevec": 75, "libcudart": 75, "libnvtoolsext": 75, "libnvidia": 75, "ml": 75, "libcuda": 75, "wheelhous": 75, "cudaq_enable_static_link": 75, "cudaq_require_openmp": 75, "cudaq_werror": 75, "cudaq_python_support": 75, "build_cudaq": 75, "primarili": 75, "linker": [75, 81], "makeself": 75, "cuda_quantum_asset": 75, "mv": 75, "ld": 75, "build_config": 75, "xml": 75, "gzip": [75, 77], "sha256": 75, "install_cuda_quantum": [75, 77, 82], "unam": [75, 77, 82], "migrate_asset": 75, "libc6": [75, 77], "sudo": [75, 77, 82], "set_env": [75, 77], "asset": [75, 77, 82], "profil": [75, 77, 82], "version_suffix": [75, 77], "cudart": [75, 77], "nvrtc": [75, 77], "f1": [75, 77], "libnvjitlink": [75, 77], "awar": 75, "autoconf": 75, "libtool": 75, "flex": 75, "openmpi_vers": 75, "openmpi_download_url": 75, "ompi": 75, "tar": [75, 77], "gz": [75, 77], "tmp": 75, "xf": 75, "rf": [75, 77], "autogen": 75, "ldflag": 75, "prefix": [75, 77], "getpwuid": 75, "mem": 75, "memcheck": 75, "verb": 75, "nproc": 75, "mpic": 75, "mpi_cuda_check": 75, "__has_includ": 75, "ext": 75, "endif": 75, "mpi_init": 75, "exit_cod": 75, "mpix_query_cuda_support": 75, "mpi_fin": 75, "mca": 75, "plm_rsh_agent": 75, "ssh": 75, "rsh": 75, "slurm": 75, "mpi_path": [75, 77, 82], "distributed_interfac": [75, 77, 82], "activate_custom_mpi": [75, 77, 82], "bundl": 77, "deploi": 77, "unsur": 77, "engin": 77, "desktop": 77, "administr": 77, "ngc": 77, "whenev": 77, "pull": 77, "nvcr": 77, "cu12": [77, 82], "prototyp": 77, "tri": 77, "readm": 77, "appreci": 77, "insuffici": 77, "hover": 77, "id_rsa": 77, "pub": 77, "itd": 77, "2222": 77, "exec": 77, "openssh": 77, "usepam": 77, "sshd_config": 77, "authorized_kei": 77, "sbin": 77, "sshd": 77, "stricthostkeycheck": 77, "userknownhostsfil": 77, "globalknownhostsfil": 77, "relocat": 77, "wsl": 77, "prerequisit": 77, "sylab": 77, "ce": 77, "xzf": 77, "mconfig": 77, "suid": 77, "builddir": 77, "bootstrap": 77, "runscript": 77, "mount": 77, "devpt": 77, "fakeroot": 77, "sif": 77, "writabl": 77, "nv": 77, "conf": 77, "ldd": [77, 81], "privileg": 77, "revis": 77, "upvot": 77, "posix": 77, "browser": 77, "palett": 77, "attach": 77, "window": 77, "reload": 77, "microsoft": 77, "sandbox": 77, "portmap": 77, "sshd_output": 77, "listen": 77, "1025": 77, "65535": 77, "ui": 77, "aren": 77, "icon": 77, "sidebar": 77, "workspac": 77, "remotecommand": 77, "requesttti": 77, "hostnam": 77, "enableremotecommand": 77, "uselocalserv": 77, "remoteserverlistenonsocket": 77, "connecttimeout": 77, "serverinstallpath": 77, "sign": 77, "upgrad": 77, "ac": 77, "ace_nam": 77, "instance_nam": 77, "commandlin": 77, "job_id": 77, "8888": 77, "portal": 77, "404": 77, "patient": 77, "happi": 77, "cuda12x": 77, "ship": 77, "vendor": 77, "prebuilt": 77, "guarante": 77, "libcudaq_distributed_interface_mpi": 77, "cudaq_mpi_comm_lib": 77, "cu11": [77, 82], "uninstal": [77, 82], "supersed": 77, "dsize": 77, "fairli": 77, "succe": 77, "hang": [77, 82], "imper": 78, "mycudaqapp": 78, "add_execut": 78, "ghz_ex": 78, "dcudaq_dir": 78, "cu": 79, "my_proj": 79, "conform": 79, "my_proj_quantum": 79, "libc": 79, "cudadatatyp": [79, 81], "cudasetfirstnel": 79, "__restrict__": 79, "sv2": 79, "int64_t": 79, "blockidx": 79, "blockdim": 79, "threadidx": 79, "setfirstnel": 79, "uint32_t": [79, 81], "n_block": [79, 81], "int32_t": [79, 81], "threads_per_block": [79, 81], "newdevicestatevector": 79, "devicestatevector": [79, 81], "previousstatedimens": 79, "reinterpret_cast": [79, 81], "cufloatcomplex": [79, 81], "cudoublecomplex": [79, 81], "cucomplex": 79, "cuda_runtim": 79, "device_launch_paramet": 79, "my_kernel": 79, "cudamalloc": 79, "xcompil": 79, "fpic": [79, 81], "cuda_hom": 79, "lcudart": 79, "my_execut": 79, "quantum_kernel": 81, "sstream": 81, "bell_distribut": 81, "stringbuf": 81, "ptr": 81, "strcpy": 81, "libstdc": 81, "libquantum_kernel": 81, "bell_dist": 81, "lquantum_kernel": 81, "abi": 81, "incompat": 81, "watch": 81, "surround": 81, "third_party_librari": 81, "libexternal_librari": 81, "my_cod": 81, "bstatic": 81, "lexternal_librari": 81, "bdynam": 81, "crut": 81, "libexternal_library_complet": 81, "naddlib": 81, "nsave": 81, "nend": 81, "lexternal_library_complet": 81, "shim": 81, "pragma": 81, "is_integr": 81, "initializedevicestatevector": 81, "statedimens": 81, "cudainitializedevicestatevector": 81, "cumbersom": 81, "necessarili": 81, "recogn": 81, "env": 82, "forg": 82, "conda_prefix": 82, "ompi_mca_opal_cuda_support": 82, "ompi_mca_btl": 82, "openib": 82, "bash_profil": 82, "bash_login": 82, "_cu11": 82, "_cu12": 82, "amd": 82}, "objects": {"": [[2, 0, 1, "_CPPv45cudaq", "cudaq"], [2, 1, 1, "_CPPv4N5cudaq20BaseNvcfSimulatorQPUE", "cudaq::BaseNvcfSimulatorQPU"], [2, 1, 1, "_CPPv4N5cudaq17BaseRemoteRESTQPUE", "cudaq::BaseRemoteRESTQPU"], [2, 1, 1, "_CPPv4N5cudaq22BaseRemoteSimulatorQPUE", "cudaq::BaseRemoteSimulatorQPU"], [2, 1, 1, "_CPPv4I0EN5cudaq9CusvStateE", "cudaq::CusvState"], [2, 2, 1, "_CPPv4I0EN5cudaq9CusvStateE", "cudaq::CusvState::ScalarType"], [2, 1, 1, "_CPPv4N5cudaq16ExecutionContextE", "cudaq::ExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE", "cudaq::ExecutionContext::ExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE", "cudaq::ExecutionContext::ExecutionContext::n"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext::n"], [2, 4, 1, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE", "cudaq::ExecutionContext::ExecutionContext::shots_"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13amplitudeMapsE", "cudaq::ExecutionContext::amplitudeMaps"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext9asyncExecE", "cudaq::ExecutionContext::asyncExec"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext11asyncResultE", "cudaq::ExecutionContext::asyncResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext14batchIterationE", "cudaq::ExecutionContext::batchIteration"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext16canHandleObserveE", "cudaq::ExecutionContext::canHandleObserve"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext16expectationValueE", "cudaq::ExecutionContext::expectationValue"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext12futureResultE", "cudaq::ExecutionContext::futureResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext31hasConditionalsOnMeasureResultsE", "cudaq::ExecutionContext::hasConditionalsOnMeasureResults"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext22invocationResultBufferE", "cudaq::ExecutionContext::invocationResultBuffer"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10kernelNameE", "cudaq::ExecutionContext::kernelName"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext11kernelTraceE", "cudaq::ExecutionContext::kernelTrace"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext4nameE", "cudaq::ExecutionContext::name"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10noiseModelE", "cudaq::ExecutionContext::noiseModel"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext18numberTrajectoriesE", "cudaq::ExecutionContext::numberTrajectories"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext9optResultE", "cudaq::ExecutionContext::optResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext20overlapComputeStatesE", "cudaq::ExecutionContext::overlapComputeStates"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13overlapResultE", "cudaq::ExecutionContext::overlapResult"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext13registerNamesE", "cudaq::ExecutionContext::registerNames"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext10reorderIdxE", "cudaq::ExecutionContext::reorderIdx"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext6resultE", "cudaq::ExecutionContext::result"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext5shotsE", "cudaq::ExecutionContext::shots"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext15simulationStateE", "cudaq::ExecutionContext::simulationState"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext4spinE", "cudaq::ExecutionContext::spin"], [2, 5, 1, "_CPPv4N5cudaq16ExecutionContext15totalIterationsE", "cudaq::ExecutionContext::totalIterations"], [2, 1, 1, "_CPPv4N5cudaq15ExecutionResultE", "cudaq::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd", "cudaq::ExecutionResult::ExecutionResult"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEv", "cudaq::ExecutionResult::ExecutionResult"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult::c"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd", "cudaq::ExecutionResult::ExecutionResult::e"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd", "cudaq::ExecutionResult::ExecutionResult::expVal"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE", "cudaq::ExecutionResult::ExecutionResult::name"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE", "cudaq::ExecutionResult::ExecutionResult::name"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult", "cudaq::ExecutionResult::ExecutionResult::other"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult::bitString"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE", "cudaq::ExecutionResult::appendResult::count"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::ExecutionResult::deserialize"], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::ExecutionResult::deserialize::data"], [2, 3, 1, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult", "cudaq::ExecutionResult::operator="], [2, 4, 1, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult", "cudaq::ExecutionResult::operator=::other"], [2, 3, 1, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult", "cudaq::ExecutionResult::operator=="], [2, 4, 1, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult", "cudaq::ExecutionResult::operator==::result"], [2, 5, 1, "_CPPv4N5cudaq15ExecutionResult12registerNameE", "cudaq::ExecutionResult::registerName"], [2, 5, 1, "_CPPv4N5cudaq15ExecutionResult14sequentialDataE", "cudaq::ExecutionResult::sequentialData"], [2, 3, 1, "_CPPv4NK5cudaq15ExecutionResult9serializeEv", "cudaq::ExecutionResult::serialize"], [2, 1, 1, "_CPPv4N5cudaq16FermioniqBaseQPUE", "cudaq::FermioniqBaseQPU"], [2, 0, 1, "_CPPv4N5cudaq19KernelExecutionTaskE", "cudaq::KernelExecutionTask"], [2, 1, 1, "_CPPv4N5cudaq21KernelThunkResultTypeE", "cudaq::KernelThunkResultType"], [2, 0, 1, "_CPPv4N5cudaq15KernelThunkTypeE", "cudaq::KernelThunkType"], [2, 1, 1, "_CPPv4N5cudaq17OrcaRemoteRESTQPUE", "cudaq::OrcaRemoteRESTQPU"], [2, 1, 1, "_CPPv4N5cudaq3QPUE", "cudaq::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE", "cudaq::QPU::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUERR3QPU", "cudaq::QPU::QPU"], [2, 3, 1, "_CPPv4N5cudaq3QPU3QPUEv", "cudaq::QPU::QPU"], [2, 4, 1, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE", "cudaq::QPU::QPU::_qpuId"], [2, 3, 1, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask", "cudaq::QPU::enqueue"], [2, 4, 1, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask", "cudaq::QPU::enqueue::task"], [2, 3, 1, "_CPPv4N5cudaq3QPU15getConnectivityEv", "cudaq::QPU::getConnectivity"], [2, 3, 1, "_CPPv4NK5cudaq3QPU20getExecutionThreadIdEv", "cudaq::QPU::getExecutionThreadId"], [2, 3, 1, "_CPPv4N5cudaq3QPU12getNumQubitsEv", "cudaq::QPU::getNumQubits"], [2, 3, 1, "_CPPv4NK5cudaq3QPU21getRemoteCapabilitiesEv", "cudaq::QPU::getRemoteCapabilities"], [2, 3, 1, "_CPPv4N5cudaq3QPU10isEmulatedEv", "cudaq::QPU::isEmulated"], [2, 3, 1, "_CPPv4N5cudaq3QPU11isSimulatorEv", "cudaq::QPU::isSimulator"], [2, 3, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel"], [2, 3, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::args"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::kernelFunc"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::rawArgs"], [2, 4, 1, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE", "cudaq::QPU::launchKernel::rawArgs"], [2, 3, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution"], [2, 4, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution::name"], [2, 4, 1, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE", "cudaq::QPU::launchSerializedCodeExecution::serializeCodeExecutionObject"], [2, 3, 1, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE", "cudaq::QPU::onRandomSeedSet"], [2, 4, 1, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE", "cudaq::QPU::onRandomSeedSet::seed"], [2, 3, 1, "_CPPv4N5cudaq3QPU21resetExecutionContextEv", "cudaq::QPU::resetExecutionContext"], [2, 3, 1, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext", "cudaq::QPU::setExecutionContext"], [2, 4, 1, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext", "cudaq::QPU::setExecutionContext::context"], [2, 3, 1, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE", "cudaq::QPU::setId"], [2, 4, 1, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE", "cudaq::QPU::setId::_qpuId"], [2, 3, 1, "_CPPv4N5cudaq3QPU8setShotsEi", "cudaq::QPU::setShots"], [2, 4, 1, "_CPPv4N5cudaq3QPU8setShotsEi", "cudaq::QPU::setShots::_nShots"], [2, 3, 1, "_CPPv4N5cudaq3QPU27supportsConditionalFeedbackEv", "cudaq::QPU::supportsConditionalFeedback"], [2, 3, 1, "_CPPv4N5cudaq3QPUD0Ev", "cudaq::QPU::~QPU"], [2, 1, 1, "_CPPv4N5cudaq12QuEraBaseQPUE", "cudaq::QuEraBaseQPU"], [2, 1, 1, "_CPPv4N5cudaq10QuakeValueE", "cudaq::QuakeValue"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue::builder"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue::builder"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE", "cudaq::QuakeValue::QuakeValue::v"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd", "cudaq::QuakeValue::QuakeValue::v"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue22canValidateNumElementsEv", "cudaq::QuakeValue::canValidateNumElements"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue12constantSizeEv", "cudaq::QuakeValue::constantSize"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4dumpERNSt7ostreamE", "cudaq::QuakeValue::dump"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4dumpEv", "cudaq::QuakeValue::dump"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue19getRequiredElementsEv", "cudaq::QuakeValue::getRequiredElements"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValue8getValueEv", "cudaq::QuakeValue::getValue"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValue7inverseEv", "cudaq::QuakeValue::inverse"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue8isStdVecEv", "cudaq::QuakeValue::isStdVec"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue", "cudaq::QuakeValue::operator*"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemlEKd", "cudaq::QuakeValue::operator*"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue", "cudaq::QuakeValue::operator*::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue", "cudaq::QuakeValue::operator+"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplEKd", "cudaq::QuakeValue::operator+"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueplEKi", "cudaq::QuakeValue::operator+"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue", "cudaq::QuakeValue::operator+::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiEKd", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuemiEKi", "cudaq::QuakeValue::operator-"], [2, 3, 1, "_CPPv4NK5cudaq10QuakeValuemiEv", "cudaq::QuakeValue::operator-"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue", "cudaq::QuakeValue::operator-::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue", "cudaq::QuakeValue::operator/"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValuedvEKd", "cudaq::QuakeValue::operator/"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue", "cudaq::QuakeValue::operator/::other"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE", "cudaq::QuakeValue::operator[]"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue", "cudaq::QuakeValue::operator[]"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE", "cudaq::QuakeValue::operator[]::idx"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue", "cudaq::QuakeValue::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue4sizeEv", "cudaq::QuakeValue::size"], [2, 3, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice::count"], [2, 4, 1, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE", "cudaq::QuakeValue::slice::startIdx"], [2, 0, 1, "_CPPv4N5cudaq11QuantumTaskE", "cudaq::QuantumTask"], [2, 0, 1, "_CPPv4N5cudaq17QubitConnectivityE", "cudaq::QubitConnectivity"], [2, 0, 1, "_CPPv4N5cudaq9QubitEdgeE", "cudaq::QubitEdge"], [2, 1, 1, "_CPPv4N5cudaq18RemoteCapabilitiesE", "cudaq::RemoteCapabilities"], [2, 3, 1, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb", "cudaq::RemoteCapabilities::RemoteCapabilities"], [2, 4, 1, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb", "cudaq::RemoteCapabilities::RemoteCapabilities::initValue"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities17isRemoteSimulatorE", "cudaq::RemoteCapabilities::isRemoteSimulator"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities18serializedCodeExecE", "cudaq::RemoteCapabilities::serializedCodeExec"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities12stateOverlapE", "cudaq::RemoteCapabilities::stateOverlap"], [2, 5, 1, "_CPPv4N5cudaq18RemoteCapabilities3vqeE", "cudaq::RemoteCapabilities::vqe"], [2, 1, 1, "_CPPv4N5cudaq21RemoteSimulationStateE", "cudaq::RemoteSimulationState"], [2, 1, 1, "_CPPv4N5cudaq9ResourcesE", "cudaq::Resources"], [2, 1, 1, "_CPPv4N5cudaq30SerializedCodeExecutionContextE", "cudaq::SerializedCodeExecutionContext"], [2, 1, 1, "_CPPv4N5cudaq15SimulationStateE", "cudaq::SimulationState"], [2, 1, 1, "_CPPv4N5cudaq15SimulationState6TensorE", "cudaq::SimulationState::Tensor"], [2, 6, 1, "_CPPv4N5cudaq15SimulationState9precisionE", "cudaq::SimulationState::precision"], [2, 7, 1, "_CPPv4N5cudaq15SimulationState9precision4fp32E", "cudaq::SimulationState::precision::fp32"], [2, 7, 1, "_CPPv4N5cudaq15SimulationState9precision4fp64E", "cudaq::SimulationState::precision::fp64"], [2, 0, 1, "_CPPv4N5cudaq15TensorStateDataE", "cudaq::TensorStateData"], [2, 1, 1, "_CPPv4N5cudaq5TraceE", "cudaq::Trace"], [2, 1, 1, "_CPPv4N5cudaq25amplitude_damping_channelE", "cudaq::amplitude_damping_channel"], [2, 1, 1, "_CPPv4I0EN5cudaq12async_resultE", "cudaq::async_result"], [2, 2, 1, "_CPPv4I0EN5cudaq12async_resultE", "cudaq::async_result::T"], [2, 3, 1, "_CPPv4N5cudaq12async_result3getEv", "cudaq::async_result::get"], [2, 0, 1, "_CPPv4N5cudaq19async_sample_resultE", "cudaq::async_sample_result"], [2, 1, 1, "_CPPv4N5cudaq16bit_flip_channelE", "cudaq::bit_flip_channel"], [2, 0, 1, "_CPPv4N5cudaq7complexE", "cudaq::complex"], [2, 1, 1, "_CPPv4N5cudaq14complex_matrixE", "cudaq::complex_matrix"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4colsEv", "cudaq::complex_matrix::cols"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::cols"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::cols"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rawData"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rows"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE", "cudaq::complex_matrix::complex_matrix::rows"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4dataEv", "cudaq::complex_matrix::data"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE", "cudaq::complex_matrix::dump"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix4dumpEv", "cudaq::complex_matrix::dump"], [2, 4, 1, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE", "cudaq::complex_matrix::dump::os"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix11eigenvaluesEv", "cudaq::complex_matrix::eigenvalues"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix12eigenvectorsEv", "cudaq::complex_matrix::eigenvectors"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix18minimal_eigenvalueEv", "cudaq::complex_matrix::minimal_eigenvalue"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()::i"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE", "cudaq::complex_matrix::operator()::j"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix", "cudaq::complex_matrix::operator*"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE", "cudaq::complex_matrix::operator*"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix", "cudaq::complex_matrix::operator*::other"], [2, 4, 1, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE", "cudaq::complex_matrix::operator*::other"], [2, 3, 1, "_CPPv4NK5cudaq14complex_matrix4rowsEv", "cudaq::complex_matrix::rows"], [2, 3, 1, "_CPPv4N5cudaq14complex_matrix8set_zeroEv", "cudaq::complex_matrix::set_zero"], [2, 0, 1, "_CPPv4N5cudaq14complex_matrix10value_typeE", "cudaq::complex_matrix::value_type"], [2, 1, 1, "_CPPv4N5cudaq22depolarization_channelE", "cudaq::depolarization_channel"], [2, 0, 1, "_CPPv4N5cudaq7detailsE", "cudaq::details"], [2, 1, 1, "_CPPv4N5cudaq7details17KernelBuilderTypeE", "cudaq::details::KernelBuilderType"], [2, 3, 1, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE", "cudaq::details::KernelBuilderType::KernelBuilderType"], [2, 4, 1, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE", "cudaq::details::KernelBuilderType::KernelBuilderType::f"], [2, 3, 1, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE", "cudaq::details::KernelBuilderType::create"], [2, 4, 1, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE", "cudaq::details::KernelBuilderType::create::ctx"], [2, 1, 1, "_CPPv4N5cudaq7details6futureE", "cudaq::details::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureERR6future", "cudaq::details::future::future"], [2, 3, 1, "_CPPv4N5cudaq7details6future6futureEv", "cudaq::details::future::future"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::_jobs"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::config"], [2, 4, 1, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE", "cudaq::details::future::future::qpuNameIn"], [2, 1, 1, "_CPPv4N5cudaq7details19kernel_builder_baseE", "cudaq::details::kernel_builder_base"], [2, 3, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<"], [2, 4, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<::builder"], [2, 4, 1, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base", "cudaq::details::kernel_builder_base::operator<<::stream"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::QuantumKernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args", "cudaq::draw::kernel"], [2, 5, 1, "_CPPv4N5cudaq3dynE", "cudaq::dyn"], [2, 3, 1, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args", "cudaq::get_state"], [2, 2, 1, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args", "cudaq::get_state::Args"], [2, 2, 1, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args", "cudaq::get_state::QuantumKernel"], [2, 4, 1, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args", "cudaq::get_state::args"], [2, 4, 1, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args", "cudaq::get_state::kernel"], [2, 1, 1, "_CPPv4N5cudaq8gradientE", "cudaq::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient5cloneEv", "cudaq::gradient::clone"], [2, 3, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute"], [2, 3, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::func"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::h"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradient::compute::x"], [2, 4, 1, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradient::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradient::gradient"], [2, 3, 1, "_CPPv4N5cudaq8gradient8gradientEv", "cudaq::gradient::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradient::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradient::gradient::kernel"], [2, 3, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs"], [2, 2, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::Args"], [2, 2, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::QuantumKernel"], [2, 4, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::args"], [2, 4, 1, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args", "cudaq::gradient::setArgs::kernel"], [2, 3, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel"], [2, 2, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel::QuantumKernel"], [2, 4, 1, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel", "cudaq::gradient::setKernel::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients18central_differenceE", "cudaq::gradients::central_difference"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference5cloneEv", "cudaq::gradients::central_difference::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::exp_h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::central_difference::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::central_difference::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::central_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientEv", "cudaq::gradients::central_difference::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::central_difference::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::central_difference::gradient::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients18forward_differenceE", "cudaq::gradients::forward_difference"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference5cloneEv", "cudaq::gradients::forward_difference::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::forward_difference::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::forward_difference::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::forward_difference::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientEv", "cudaq::gradients::forward_difference::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::forward_difference::gradient::kernel"], [2, 1, 1, "_CPPv4N5cudaq9gradients15parameter_shiftE", "cudaq::gradients::parameter_shift"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift5cloneEv", "cudaq::gradients::parameter_shift::clone"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::dx"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::exp_h"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::func"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::funcAtX"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::h"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd", "cudaq::gradients::parameter_shift::compute::x"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd", "cudaq::gradients::parameter_shift::compute::x"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::parameter_shift::gradient"], [2, 3, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientEv", "cudaq::gradients::parameter_shift::gradient"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::ArgsMapper"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::KernelT"], [2, 2, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::QuantumKernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::argsMapper"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 4, 1, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE", "cudaq::gradients::parameter_shift::gradient::kernel"], [2, 1, 1, "_CPPv4IDpEN5cudaq14kernel_builderE", "cudaq::kernel_builder"], [2, 2, 1, "_CPPv4IDpEN5cudaq14kernel_builderE", "cudaq::kernel_builder::Args"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder11constantValEd", "cudaq::kernel_builder::constantVal"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder11constantValEd", "cudaq::kernel_builder::constantVal::val"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder12getArgumentsEv", "cudaq::kernel_builder::getArguments"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder12getNumParamsEv", "cudaq::kernel_builder::getNumParams"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE", "cudaq::kernel_builder::isArgStdVec"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE", "cudaq::kernel_builder::isArgStdVec::idx"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE", "cudaq::kernel_builder::kernel_builder"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE", "cudaq::kernel_builder::kernel_builder::types"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder4nameEv", "cudaq::kernel_builder::name"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE", "cudaq::kernel_builder::qalloc"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder6qallocEv", "cudaq::kernel_builder::qalloc"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE", "cudaq::kernel_builder::qalloc::nQubits"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue", "cudaq::kernel_builder::qalloc::size"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE", "cudaq::kernel_builder::qalloc::state"], [2, 3, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 3, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 3, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::control"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::controls"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::first"], [2, 2, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::mod"], [2, 2, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::mod"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 4, 1, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 4, 1, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue", "cudaq::kernel_builder::swap::second"], [2, 1, 1, "_CPPv4N5cudaq13kraus_channelE", "cudaq::kraus_channel"], [2, 3, 1, "_CPPv4NK5cudaq13kraus_channel5emptyEv", "cudaq::kraus_channel::empty"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel7get_opsEv", "cudaq::kraus_channel::get_ops"], [2, 3, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelEv", "cudaq::kraus_channel::kraus_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel::T"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel::inOps"], [2, 4, 1, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE", "cudaq::kraus_channel::kraus_channel::inputLists"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE", "cudaq::kraus_channel::kraus_channel::ops"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel", "cudaq::kraus_channel::kraus_channel::other"], [2, 5, 1, "_CPPv4N5cudaq13kraus_channel10noise_typeE", "cudaq::kraus_channel::noise_type"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel", "cudaq::kraus_channel::operator="], [2, 4, 1, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel", "cudaq::kraus_channel::operator=::other"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE", "cudaq::kraus_channel::operator[]"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE", "cudaq::kraus_channel::operator[]::idx"], [2, 5, 1, "_CPPv4N5cudaq13kraus_channel10parametersE", "cudaq::kraus_channel::parameters"], [2, 3, 1, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op", "cudaq::kraus_channel::push_back"], [2, 4, 1, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op", "cudaq::kraus_channel::push_back::op"], [2, 3, 1, "_CPPv4NK5cudaq13kraus_channel4sizeEv", "cudaq::kraus_channel::size"], [2, 1, 1, "_CPPv4N5cudaq8kraus_opE", "cudaq::kraus_op"], [2, 3, 1, "_CPPv4NK5cudaq8kraus_op7adjointEv", "cudaq::kraus_op::adjoint"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op4dataE", "cudaq::kraus_op::data"], [2, 3, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op"], [2, 3, 1, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE", "cudaq::kraus_op::kraus_op"], [2, 3, 1, "_CPPv4N5cudaq8kraus_op8kraus_opERK8kraus_op", "cudaq::kraus_op::kraus_op"], [2, 2, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op::T"], [2, 4, 1, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE", "cudaq::kraus_op::kraus_op::d"], [2, 4, 1, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE", "cudaq::kraus_op::kraus_op::initList"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op5nColsE", "cudaq::kraus_op::nCols"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op5nRowsE", "cudaq::kraus_op::nRows"], [2, 3, 1, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op", "cudaq::kraus_op::operator="], [2, 4, 1, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op", "cudaq::kraus_op::operator=::other"], [2, 5, 1, "_CPPv4N5cudaq8kraus_op9precisionE", "cudaq::kraus_op::precision"], [2, 0, 1, "_CPPv4N5cudaq3mpiE", "cudaq::mpi"], [2, 3, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather"], [2, 3, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather::global"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather::global"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE", "cudaq::mpi::all_gather::local"], [2, 4, 1, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE", "cudaq::mpi::all_gather::local"], [2, 3, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce"], [2, 3, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::BinaryFunction"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce::Func"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::T"], [2, 2, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func", "cudaq::mpi::all_reduce::T"], [2, 4, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::function"], [2, 4, 1, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction", "cudaq::mpi::all_reduce::localValue"], [2, 3, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast"], [2, 3, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast::data"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast::data"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi", "cudaq::mpi::broadcast::rootRank"], [2, 4, 1, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi", "cudaq::mpi::broadcast::rootRank"], [2, 3, 1, "_CPPv4N5cudaq3mpi8finalizeEv", "cudaq::mpi::finalize"], [2, 3, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize"], [2, 3, 1, "_CPPv4N5cudaq3mpi10initializeEv", "cudaq::mpi::initialize"], [2, 4, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize::argc"], [2, 4, 1, "_CPPv4N5cudaq3mpi10initializeEiPPc", "cudaq::mpi::initialize::argv"], [2, 3, 1, "_CPPv4N5cudaq3mpi14is_initializedEv", "cudaq::mpi::is_initialized"], [2, 3, 1, "_CPPv4N5cudaq3mpi9num_ranksEv", "cudaq::mpi::num_ranks"], [2, 3, 1, "_CPPv4N5cudaq3mpi4rankEv", "cudaq::mpi::rank"], [2, 1, 1, "_CPPv4N5cudaq11noise_modelE", "cudaq::noise_model"], [2, 0, 1, "_CPPv4N5cudaq11noise_model15PredicateFuncTyE", "cudaq::noise_model::PredicateFuncTy"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::QuantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::channel"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::channel"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::numControls"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::numControls"], [2, 4, 1, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli", "cudaq::noise_model::add_all_qubit_channel::quantumOp"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel::QuantumOp"], [2, 2, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::QuantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::channel"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::channel"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy", "cudaq::noise_model::add_channel::pred"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel::pred"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy", "cudaq::noise_model::add_channel::quantumOp"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::quantumOp"], [2, 4, 1, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::qubits"], [2, 4, 1, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel", "cudaq::noise_model::add_channel::qubits"], [2, 3, 1, "_CPPv4NK5cudaq11noise_model5emptyEv", "cudaq::noise_model::empty"], [2, 3, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels"], [2, 3, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels"], [2, 2, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::QuantumOp"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::controlQubits"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::controlQubits"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::params"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::params"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::quantumOp"], [2, 4, 1, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::targetQubits"], [2, 4, 1, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE", "cudaq::noise_model::get_channels::targetQubits"], [2, 3, 1, "_CPPv4N5cudaq11noise_model11noise_modelEv", "cudaq::noise_model::noise_model"], [2, 6, 1, "_CPPv4N5cudaq16noise_model_typeE", "cudaq::noise_model_type"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type25amplitude_damping_channelE", "cudaq::noise_model_type::amplitude_damping_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type16bit_flip_channelE", "cudaq::noise_model_type::bit_flip_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type22depolarization_channelE", "cudaq::noise_model_type::depolarization_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type18phase_flip_channelE", "cudaq::noise_model_type::phase_flip_channel"], [2, 7, 1, "_CPPv4N5cudaq16noise_model_type7unknownE", "cudaq::noise_model_type::unknown"], [2, 3, 1, "_CPPv4N5cudaq18num_available_gpusEv", "cudaq::num_available_gpus"], [2, 3, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe"], [2, 2, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::Args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::H"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::H"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::H"], [2, 2, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::QuantumKernel"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::QuantumKernel"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::QuantumKernel"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::QuantumKernel"], [2, 2, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::SpinOpContainer"], [2, 4, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::args"], [2, 4, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::options"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args", "cudaq::observe::shots"], [2, 4, 1, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args", "cudaq::observe::termList"], [2, 1, 1, "_CPPv4N5cudaq15observe_optionsE", "cudaq::observe_options"], [2, 1, 1, "_CPPv4N5cudaq14observe_resultE", "cudaq::observe_result"], [2, 3, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts"], [2, 2, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts::SpinOpType"], [2, 4, 1, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType", "cudaq::observe_result::counts::term"], [2, 3, 1, "_CPPv4N5cudaq14observe_result4dumpEv", "cudaq::observe_result::dump"], [2, 3, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation"], [2, 3, 1, "_CPPv4N5cudaq14observe_result11expectationEv", "cudaq::observe_result::expectation"], [2, 2, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation::SpinOpType"], [2, 4, 1, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType", "cudaq::observe_result::expectation::term"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14id_coefficientEv", "cudaq::observe_result::id_coefficient"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result"], [2, 3, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result::H"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::H"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::counts"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op", "cudaq::observe_result::observe_result::e"], [2, 4, 1, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result", "cudaq::observe_result::observe_result::e"], [2, 3, 1, "_CPPv4N5cudaq14observe_resultcvdEv", "cudaq::observe_result::operator double"], [2, 3, 1, "_CPPv4N5cudaq14observe_result8raw_dataEv", "cudaq::observe_result::raw_data"], [2, 1, 1, "_CPPv4N5cudaq20optimizable_functionE", "cudaq::optimizable_function"], [2, 0, 1, "_CPPv4N5cudaq19optimization_resultE", "cudaq::optimization_result"], [2, 1, 1, "_CPPv4N5cudaq9optimizerE", "cudaq::optimizer"], [2, 3, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize"], [2, 4, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize::dim"], [2, 4, 1, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function", "cudaq::optimizer::optimize::opt_function"], [2, 3, 1, "_CPPv4N5cudaq9optimizer17requiresGradientsEv", "cudaq::optimizer::requiresGradients"], [2, 0, 1, "_CPPv4N5cudaq4orcaE", "cudaq::orca"], [2, 3, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample"], [2, 3, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::ps_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async"], [2, 3, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::bs_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::input_state"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::loop_lengths"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::n_samples"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::ps_angles"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE", "cudaq::orca::sample_async::qpu_id"], [2, 1, 1, "_CPPv4N5cudaq18phase_flip_channelE", "cudaq::phase_flip_channel"], [2, 1, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg::Levels"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE", "cudaq::qreg::N"], [2, 3, 1, "_CPPv4N5cudaq4qreg4backENSt6size_tE", "cudaq::qreg::back"], [2, 3, 1, "_CPPv4N5cudaq4qreg4backEv", "cudaq::qreg::back"], [2, 4, 1, "_CPPv4N5cudaq4qreg4backENSt6size_tE", "cudaq::qreg::back::count"], [2, 3, 1, "_CPPv4N5cudaq4qreg5beginEv", "cudaq::qreg::begin"], [2, 3, 1, "_CPPv4N5cudaq4qreg5clearEv", "cudaq::qreg::clear"], [2, 3, 1, "_CPPv4N5cudaq4qreg5frontENSt6size_tE", "cudaq::qreg::front"], [2, 3, 1, "_CPPv4N5cudaq4qreg5frontEv", "cudaq::qreg::front"], [2, 4, 1, "_CPPv4N5cudaq4qreg5frontENSt6size_tE", "cudaq::qreg::front::count"], [2, 3, 1, "_CPPv4N5cudaq4qregixEKNSt6size_tE", "cudaq::qreg::operator[]"], [2, 4, 1, "_CPPv4N5cudaq4qregixEKNSt6size_tE", "cudaq::qreg::operator[]::idx"], [2, 3, 1, "_CPPv4NK5cudaq4qreg4sizeEv", "cudaq::qreg::size"], [2, 3, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice"], [2, 4, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice::size"], [2, 4, 1, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE", "cudaq::qreg::slice::start"], [2, 0, 1, "_CPPv4N5cudaq4qreg10value_typeE", "cudaq::qreg::value_type"], [2, 1, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan::Levels"], [2, 2, 1, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE", "cudaq::qspan::N"], [2, 1, 1, "_CPPv4N5cudaq16quantum_platformE", "cudaq::quantum_platform"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform11clear_shotsEv", "cudaq::quantum_platform::clear_shots"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12connectivityEv", "cudaq::quantum_platform::connectivity"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask::f"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE", "cudaq::quantum_platform::enqueueAsyncTask::qpu_id"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask", "cudaq::quantum_platform::enqueueAsyncTask::t"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12getLogStreamEv", "cudaq::quantum_platform::getLogStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15get_current_qpuEv", "cudaq::quantum_platform::get_current_qpu"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform12get_exec_ctxEv", "cudaq::quantum_platform::get_exec_ctx"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE", "cudaq::quantum_platform::get_num_qubits"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsEv", "cudaq::quantum_platform::get_num_qubits"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE", "cudaq::quantum_platform::get_num_qubits::qpu_id"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE", "cudaq::quantum_platform::get_remote_capabilities"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE", "cudaq::quantum_platform::get_remote_capabilities::qpuId"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9get_shotsEv", "cudaq::quantum_platform::get_shots"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE", "cudaq::quantum_platform::is_emulated"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE", "cudaq::quantum_platform::is_emulated::qpuId"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE", "cudaq::quantum_platform::is_remote"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE", "cudaq::quantum_platform::is_remote::qpuId"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE", "cudaq::quantum_platform::is_simulator"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE", "cudaq::quantum_platform::is_simulator::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::H"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::gradient"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::kernelArgs"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::kernelName"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::n_params"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::optimizer"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE", "cudaq::quantum_platform::launchVQE::shots"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14list_platformsEv", "cudaq::quantum_platform::list_platforms"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform4nameEv", "cudaq::quantum_platform::name"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform8num_qpusEv", "cudaq::quantum_platform::num_qpus"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE", "cudaq::quantum_platform::onRandomSeedSet"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE", "cudaq::quantum_platform::onRandomSeedSet::seed"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14resetLogStreamEv", "cudaq::quantum_platform::resetLogStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE", "cudaq::quantum_platform::reset_exec_ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE", "cudaq::quantum_platform::reset_exec_ctx::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform11reset_noiseEv", "cudaq::quantum_platform::reset_noise"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE", "cudaq::quantum_platform::setLogStream"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE", "cudaq::quantum_platform::setLogStream::logStream"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE", "cudaq::quantum_platform::setTargetBackend"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE", "cudaq::quantum_platform::setTargetBackend::name"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE", "cudaq::quantum_platform::set_current_qpu"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE", "cudaq::quantum_platform::set_current_qpu::device_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx::ctx"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE", "cudaq::quantum_platform::set_exec_ctx::qpu_id"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model", "cudaq::quantum_platform::set_noise"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model", "cudaq::quantum_platform::set_noise::model"], [2, 3, 1, "_CPPv4N5cudaq16quantum_platform9set_shotsEi", "cudaq::quantum_platform::set_shots"], [2, 4, 1, "_CPPv4N5cudaq16quantum_platform9set_shotsEi", "cudaq::quantum_platform::set_shots::numShots"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE", "cudaq::quantum_platform::supports_conditional_feedback"], [2, 4, 1, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE", "cudaq::quantum_platform::supports_conditional_feedback::qpu_id"], [2, 3, 1, "_CPPv4NK5cudaq16quantum_platform26supports_task_distributionEv", "cudaq::quantum_platform::supports_task_distribution"], [2, 0, 1, "_CPPv4N5cudaq5qubitE", "cudaq::qubit"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq5quditE", "cudaq::qudit"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq5quditE", "cudaq::qudit::Levels"], [2, 3, 1, "_CPPv4N5cudaq5qudit5quditEv", "cudaq::qudit::qudit"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE", "cudaq::qvector"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE", "cudaq::qvector::Levels"], [2, 3, 1, "_CPPv4N5cudaq7qvector4backENSt6size_tE", "cudaq::qvector::back"], [2, 3, 1, "_CPPv4N5cudaq7qvector4backEv", "cudaq::qvector::back"], [2, 4, 1, "_CPPv4N5cudaq7qvector4backENSt6size_tE", "cudaq::qvector::back::count"], [2, 3, 1, "_CPPv4N5cudaq7qvector5beginEv", "cudaq::qvector::begin"], [2, 3, 1, "_CPPv4N5cudaq7qvector5clearEv", "cudaq::qvector::clear"], [2, 3, 1, "_CPPv4N5cudaq7qvector3endEv", "cudaq::qvector::end"], [2, 3, 1, "_CPPv4N5cudaq7qvector5frontENSt6size_tE", "cudaq::qvector::front"], [2, 3, 1, "_CPPv4N5cudaq7qvector5frontEv", "cudaq::qvector::front"], [2, 4, 1, "_CPPv4N5cudaq7qvector5frontENSt6size_tE", "cudaq::qvector::front::count"], [2, 3, 1, "_CPPv4N5cudaq7qvectoraSERK7qvector", "cudaq::qvector::operator="], [2, 3, 1, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE", "cudaq::qvector::operator[]"], [2, 4, 1, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE", "cudaq::qvector::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERK5state", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERK7qvector", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector"], [2, 3, 1, "_CPPv4N5cudaq7qvector7qvectorERR7qvector", "cudaq::qvector::qvector"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE", "cudaq::qvector::qvector::size"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERK5state", "cudaq::qvector::qvector::state"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector::validate"], [2, 4, 1, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb", "cudaq::qvector::qvector::vector"], [2, 3, 1, "_CPPv4NK5cudaq7qvector4sizeEv", "cudaq::qvector::size"], [2, 3, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice"], [2, 4, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice::size"], [2, 4, 1, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE", "cudaq::qvector::slice::start"], [2, 0, 1, "_CPPv4N5cudaq7qvector10value_typeE", "cudaq::qvector::value_type"], [2, 1, 1, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE", "cudaq::qview"], [2, 2, 1, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE", "cudaq::qview::Levels"], [2, 0, 1, "_CPPv4N5cudaq5qview10value_typeE", "cudaq::qview::value_type"], [2, 3, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range"], [2, 3, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range"], [2, 3, 1, "_CPPv4N5cudaq5rangeENSt6size_tE", "cudaq::range"], [2, 2, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range::ElementType"], [2, 2, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::ElementType"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType", "cudaq::range::N"], [2, 4, 1, "_CPPv4N5cudaq5rangeENSt6size_tE", "cudaq::range::N"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::start"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::step"], [2, 4, 1, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType", "cudaq::range::stop"], [2, 0, 1, "_CPPv4N5cudaq4realE", "cudaq::real"], [2, 0, 1, "_CPPv4N5cudaq8registryE", "cudaq::registry"], [2, 1, 1, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE", "cudaq::registry::RegisteredType"], [2, 2, 1, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE", "cudaq::registry::RegisteredType::T"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args", "cudaq::sample"], [2, 3, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args", "cudaq::sample::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample::Args"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample::QuantumKernel"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args", "cudaq::sample::QuantumKernel"], [2, 2, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample::QuantumKernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args", "cudaq::sample::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample::args"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args", "cudaq::sample::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample::kernel"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args", "cudaq::sample::options"], [2, 4, 1, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args", "cudaq::sample::shots"], [2, 1, 1, "_CPPv4N5cudaq14sample_optionsE", "cudaq::sample_options"], [2, 1, 1, "_CPPv4N5cudaq13sample_resultE", "cudaq::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult", "cudaq::sample_result::append"], [2, 4, 1, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult", "cudaq::sample_result::append::result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5beginEv", "cudaq::sample_result::begin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result5beginEv", "cudaq::sample_result::begin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result6cbeginEv", "cudaq::sample_result::cbegin"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4cendEv", "cudaq::sample_result::cend"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5clearEv", "cudaq::sample_result::clear"], [2, 3, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count"], [2, 4, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count::bitString"], [2, 4, 1, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::count::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::sample_result::deserialize"], [2, 4, 1, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE", "cudaq::sample_result::deserialize::data"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE", "cudaq::sample_result::dump"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result4dumpEv", "cudaq::sample_result::dump"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE", "cudaq::sample_result::dump::os"], [2, 3, 1, "_CPPv4N5cudaq13sample_result3endEv", "cudaq::sample_result::end"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result3endEv", "cudaq::sample_result::end"], [2, 3, 1, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE", "cudaq::sample_result::exp_val_z"], [2, 4, 1, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE", "cudaq::sample_result::exp_val_z::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE", "cudaq::sample_result::expectation"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE", "cudaq::sample_result::expectation::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal"], [2, 3, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::marginalIndices"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::marginalIndices"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::registerName"], [2, 4, 1, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::get_marginal::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE", "cudaq::sample_result::has_even_parity"], [2, 4, 1, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE", "cudaq::sample_result::has_even_parity::bitString"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE", "cudaq::sample_result::has_expectation"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE", "cudaq::sample_result::has_expectation::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE", "cudaq::sample_result::most_probable"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE", "cudaq::sample_result::most_probable::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultpLERK13sample_result", "cudaq::sample_result::operator+="], [2, 4, 1, "_CPPv4N5cudaq13sample_resultpLERK13sample_result", "cudaq::sample_result::operator+=::other"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultaSER13sample_result", "cudaq::sample_result::operator="], [2, 4, 1, "_CPPv4N5cudaq13sample_resultaSER13sample_result", "cudaq::sample_result::operator=::counts"], [2, 3, 1, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result", "cudaq::sample_result::operator=="], [2, 4, 1, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result", "cudaq::sample_result::operator==::counts"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability::bitString"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE", "cudaq::sample_result::probability::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result14register_namesEv", "cudaq::sample_result::register_names"], [2, 3, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder"], [2, 4, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder::index"], [2, 4, 1, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE", "cudaq::sample_result::reorder::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERK13sample_result", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result"], [2, 3, 1, "_CPPv4N5cudaq13sample_result13sample_resultEv", "cudaq::sample_result::sample_result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::preComputedExp"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult", "cudaq::sample_result::sample_result::result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult", "cudaq::sample_result::sample_result::result"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::results"], [2, 4, 1, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE", "cudaq::sample_result::sample_result::results"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result9serializeEv", "cudaq::sample_result::serialize"], [2, 3, 1, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE", "cudaq::sample_result::size"], [2, 4, 1, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE", "cudaq::sample_result::size::registerName"], [2, 3, 1, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE", "cudaq::sample_result::to_map"], [2, 4, 1, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE", "cudaq::sample_result::to_map::registerName"], [2, 3, 1, "_CPPv4N5cudaq13sample_resultD0Ev", "cudaq::sample_result::~sample_result"], [2, 3, 1, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE", "cudaq::set_noise"], [2, 4, 1, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE", "cudaq::set_noise::model"], [2, 3, 1, "_CPPv4N5cudaq15set_random_seedENSt6size_tE", "cudaq::set_random_seed"], [2, 4, 1, "_CPPv4N5cudaq15set_random_seedENSt6size_tE", "cudaq::set_random_seed::seed"], [2, 6, 1, "_CPPv4N5cudaq20simulation_precisionE", "cudaq::simulation_precision"], [2, 7, 1, "_CPPv4N5cudaq20simulation_precision4fp32E", "cudaq::simulation_precision::fp32"], [2, 7, 1, "_CPPv4N5cudaq20simulation_precision4fp64E", "cudaq::simulation_precision::fp64"], [2, 1, 1, "_CPPv4N5cudaq7spin_opE", "cudaq::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op5beginEv", "cudaq::spin_op::begin"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op5beginEv", "cudaq::spin_op::begin"], [2, 0, 1, "_CPPv4N5cudaq7spin_op12csr_spmatrixE", "cudaq::spin_op::csr_spmatrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE", "cudaq::spin_op::distribute_terms"], [2, 4, 1, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE", "cudaq::spin_op::distribute_terms::numChunks"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op4dumpEv", "cudaq::spin_op::dump"], [2, 3, 1, "_CPPv4N5cudaq7spin_op3endEv", "cudaq::spin_op::end"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op3endEv", "cudaq::spin_op::end"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op14for_each_pauliERRNSt8functionIFv5pauliNSt6size_tEEEE", "cudaq::spin_op::for_each_pauli"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op13for_each_termERRNSt8functionIFvR7spin_opEEE", "cudaq::spin_op::for_each_term"], [2, 3, 1, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE", "cudaq::spin_op::from_word"], [2, 4, 1, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE", "cudaq::spin_op::from_word::pauliWord"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op21getDataRepresentationEv", "cudaq::spin_op::getDataRepresentation"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op12getDataTupleEv", "cudaq::spin_op::getDataTuple"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op15get_coefficientEv", "cudaq::spin_op::get_coefficient"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op12get_raw_dataEv", "cudaq::spin_op::get_raw_data"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op11is_identityEv", "cudaq::spin_op::is_identity"], [2, 1, 1, "_CPPv4I0EN5cudaq7spin_op8iteratorE", "cudaq::spin_op::iterator"], [2, 2, 1, "_CPPv4I0EN5cudaq7spin_op8iteratorE", "cudaq::spin_op::iterator::QualifiedSpinOp"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op10num_qubitsEv", "cudaq::spin_op::num_qubits"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9num_termsEv", "cudaq::spin_op::num_terms"], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE", "cudaq::spin_op::operator*="], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLEKd", "cudaq::spin_op::operator*="], [2, 3, 1, "_CPPv4N5cudaq7spin_opmLERK7spin_op", "cudaq::spin_op::operator*="], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE", "cudaq::spin_op::operator*=::v"], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLEKd", "cudaq::spin_op::operator*=::v"], [2, 4, 1, "_CPPv4N5cudaq7spin_opmLERK7spin_op", "cudaq::spin_op::operator*=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_oppLERK7spin_op", "cudaq::spin_op::operator+="], [2, 4, 1, "_CPPv4N5cudaq7spin_oppLERK7spin_op", "cudaq::spin_op::operator+=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_opmIERK7spin_op", "cudaq::spin_op::operator-="], [2, 4, 1, "_CPPv4N5cudaq7spin_opmIERK7spin_op", "cudaq::spin_op::operator-=::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_opaSERK7spin_op", "cudaq::spin_op::operator="], [2, 3, 1, "_CPPv4NK5cudaq7spin_opeqERK7spin_op", "cudaq::spin_op::operator=="], [2, 4, 1, "_CPPv4NK5cudaq7spin_opeqERK7spin_op", "cudaq::spin_op::operator==::v"], [2, 3, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::nQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::nTerms"], [2, 4, 1, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj", "cudaq::spin_op::random::seed"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op"], [2, 3, 1, "_CPPv4N5cudaq7spin_op7spin_opEv", "cudaq::spin_op::spin_op"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::_terms"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op::bsf"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op::coeff"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op::coeff"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE", "cudaq::spin_op::spin_op::coeffs"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op::data_rep"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE", "cudaq::spin_op::spin_op::id"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE", "cudaq::spin_op::spin_op::nQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE", "cudaq::spin_op::spin_op::numQubits"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op", "cudaq::spin_op::spin_op::o"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE", "cudaq::spin_op::spin_op::term"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::termData"], [2, 4, 1, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE", "cudaq::spin_op::spin_op::termData"], [2, 0, 1, "_CPPv4N5cudaq7spin_op12spin_op_termE", "cudaq::spin_op::spin_op_term"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9to_matrixEv", "cudaq::spin_op::to_matrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op16to_sparse_matrixEv", "cudaq::spin_op::to_sparse_matrix"], [2, 3, 1, "_CPPv4NK5cudaq7spin_op9to_stringEb", "cudaq::spin_op::to_string"], [2, 4, 1, "_CPPv4NK5cudaq7spin_op9to_stringEb", "cudaq::spin_op::to_string::printCoefficients"], [2, 3, 1, "_CPPv4N5cudaq7spin_opD0Ev", "cudaq::spin_op::~spin_op"], [2, 1, 1, "_CPPv4N5cudaq5stateE", "cudaq::state"], [2, 3, 1, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE", "cudaq::state::amplitude"], [2, 4, 1, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE", "cudaq::state::amplitude::basisState"], [2, 3, 1, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE", "cudaq::state::amplitudes"], [2, 4, 1, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE", "cudaq::state::amplitudes::basisStates"], [2, 3, 1, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE", "cudaq::state::dump"], [2, 3, 1, "_CPPv4NK5cudaq5state4dumpEv", "cudaq::state::dump"], [2, 4, 1, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE", "cudaq::state::dump::os"], [2, 3, 1, "_CPPv4N5cudaq5state9from_dataERK10state_data", "cudaq::state::from_data"], [2, 4, 1, "_CPPv4N5cudaq5state9from_dataERK10state_data", "cudaq::state::from_data::data"], [2, 3, 1, "_CPPv4NK5cudaq5state14get_num_qubitsEv", "cudaq::state::get_num_qubits"], [2, 3, 1, "_CPPv4NK5cudaq5state15get_num_tensorsEv", "cudaq::state::get_num_tensors"], [2, 3, 1, "_CPPv4NK5cudaq5state13get_precisionEv", "cudaq::state::get_precision"], [2, 3, 1, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE", "cudaq::state::get_tensor"], [2, 4, 1, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE", "cudaq::state::get_tensor::tensorIdx"], [2, 3, 1, "_CPPv4NK5cudaq5state11get_tensorsEv", "cudaq::state::get_tensors"], [2, 3, 1, "_CPPv4NK5cudaq5state9is_on_gpuEv", "cudaq::state::is_on_gpu"], [2, 3, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()"], [2, 3, 1, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE", "cudaq::state::operator()"], [2, 4, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()::idx"], [2, 4, 1, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE", "cudaq::state::operator()::jdx"], [2, 4, 1, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE", "cudaq::state::operator()::tensorIdx"], [2, 3, 1, "_CPPv4N5cudaq5stateaSERR5state", "cudaq::state::operator="], [2, 4, 1, "_CPPv4N5cudaq5stateaSERR5state", "cudaq::state::operator=::other"], [2, 3, 1, "_CPPv4NK5cudaq5stateixENSt6size_tE", "cudaq::state::operator[]"], [2, 4, 1, "_CPPv4NK5cudaq5stateixENSt6size_tE", "cudaq::state::operator[]::idx"], [2, 3, 1, "_CPPv4N5cudaq5state7overlapERK5state", "cudaq::state::overlap"], [2, 4, 1, "_CPPv4N5cudaq5state7overlapERK5state", "cudaq::state::overlap::other"], [2, 3, 1, "_CPPv4N5cudaq5state5stateEP15SimulationState", "cudaq::state::state"], [2, 3, 1, "_CPPv4N5cudaq5state5stateERK5state", "cudaq::state::state"], [2, 4, 1, "_CPPv4N5cudaq5state5stateERK5state", "cudaq::state::state::other"], [2, 4, 1, "_CPPv4N5cudaq5state5stateEP15SimulationState", "cudaq::state::state::ptrToOwn"], [2, 3, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host"], [2, 2, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::ScalarType"], [2, 4, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::hostPtr"], [2, 4, 1, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE", "cudaq::state::to_host::numElements"], [2, 0, 1, "_CPPv4N5cudaq10state_dataE", "cudaq::state_data"], [2, 0, 1, "_CPPv4N5cudaq6tensorE", "cudaq::tensor"], [2, 3, 1, "_CPPv4N5cudaq11unset_noiseEv", "cudaq::unset_noise"], [2, 1, 1, "_CPPv4N5nvqir18MPSSimulationStateE", "nvqir::MPSSimulationState"], [2, 1, 1, "_CPPv4N5nvqir24TensorNetSimulationStateE", "nvqir::TensorNetSimulationState"], [3, 8, 0, "-", "cudaq"]], "cudaq": [[3, 9, 1, "", "AmplitudeDampingChannel"], [3, 9, 1, "", "AsyncEvolveResult"], [3, 9, 1, "", "AsyncObserveResult"], [3, 9, 1, "", "AsyncSampleResult"], [3, 9, 1, "", "AsyncStateResult"], [3, 9, 1, "", "BitFlipChannel"], [3, 9, 1, "", "ComplexMatrix"], [3, 9, 1, "", "DepolarizationChannel"], [3, 9, 1, "", "EvolveResult"], [3, 11, 1, "", "Kernel"], [3, 9, 1, "", "KrausChannel"], [3, 9, 1, "", "KrausOperator"], [3, 9, 1, "", "NoiseModel"], [3, 9, 1, "", "ObserveResult"], [3, 9, 1, "", "OptimizationResult"], [3, 9, 1, "", "PhaseFlipChannel"], [3, 9, 1, "", "PyKernel"], [3, 9, 1, "", "PyKernelDecorator"], [3, 9, 1, "", "QuakeValue"], [3, 9, 1, "", "SampleResult"], [3, 9, 1, "", "Schedule"], [3, 9, 1, "", "SimulationPrecision"], [3, 9, 1, "", "SpinOperator"], [3, 9, 1, "", "State"], [3, 9, 1, "", "Target"], [3, 9, 1, "", "Tensor"], [3, 13, 1, "", "draw"], [3, 13, 1, "", "evolve"], [3, 13, 1, "", "evolve_async"], [3, 13, 1, "", "get_state"], [3, 13, 1, "", "get_state_async"], [3, 13, 1, "", "get_target"], [3, 13, 1, "", "get_targets"], [3, 13, 1, "", "has_target"], [3, 10, 1, "", "initialize_cudaq"], [3, 13, 1, "", "kernel"], [3, 13, 1, "", "make_kernel"], [3, 10, 1, "", "num_available_gpus"], [3, 13, 1, "", "observe"], [3, 13, 1, "", "observe_async"], [3, 11, 1, "", "qreg"], [3, 9, 1, "", "qubit"], [3, 9, 1, "", "qvector"], [3, 13, 1, "", "reset_target"], [3, 13, 1, "", "sample"], [3, 13, 1, "", "sample_async"], [3, 13, 1, "", "set_noise"], [3, 10, 1, "", "set_random_seed"], [3, 13, 1, "", "set_target"], [3, 13, 1, "", "translate"], [3, 13, 1, "", "unset_noise"], [3, 13, 1, "", "vqe"]], "cudaq.AmplitudeDampingChannel": [[3, 10, 1, "", "__init__"]], "cudaq.AsyncEvolveResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncObserveResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncSampleResult": [[3, 10, 1, "", "get"]], "cudaq.AsyncStateResult": [[3, 10, 1, "", "get"]], "cudaq.BitFlipChannel": [[3, 10, 1, "", "__init__"]], "cudaq.ComplexMatrix": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__str__"], [3, 10, 1, "", "minimal_eigenvalue"], [3, 10, 1, "", "num_columns"], [3, 10, 1, "", "num_rows"], [3, 10, 1, "", "to_numpy"]], "cudaq.DepolarizationChannel": [[3, 10, 1, "", "__init__"]], "cudaq.EvolveResult": [[3, 10, 1, "", "expectation_values"], [3, 10, 1, "", "final_expectation_values"], [3, 10, 1, "", "final_state"], [3, 10, 1, "", "intermediate_states"]], "cudaq.KrausChannel": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "append"]], "cudaq.KrausOperator": [[3, 12, 1, "", "col_count"], [3, 12, 1, "", "row_count"]], "cudaq.NoiseModel": [[3, 10, 1, "", "__init__"], [3, 10, 1, "", "add_all_qubit_channel"], [3, 10, 1, "", "add_channel"], [3, 10, 1, "", "get_channels"]], "cudaq.ObserveResult": [[3, 10, 1, "", "counts"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "expectation"], [3, 10, 1, "", "expectation_z"], [3, 10, 1, "", "get_spin"]], "cudaq.PhaseFlipChannel": [[3, 10, 1, "", "__init__"]], "cudaq.PyKernel": [[3, 11, 1, "", "argument_count"], [3, 11, 1, "", "arguments"], [3, 11, 1, "", "name"]], "cudaq.PyKernelDecorator": [[3, 10, 1, "", "__call__"], [3, 10, 1, "", "__str__"], [3, 10, 1, "", "compile"], [3, 10, 1, "", "extract_c_function_pointer"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "merge_kernel"], [3, 10, 1, "", "synthesize_callable_arguments"], [3, 10, 1, "", "to_json"], [3, 10, 1, "", "type_to_str"]], "cudaq.QuakeValue": [[3, 10, 1, "", "__add__"], [3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__mul__"], [3, 10, 1, "", "__neg__"], [3, 10, 1, "", "__radd__"], [3, 10, 1, "", "__rmul__"], [3, 10, 1, "", "__rsub__"], [3, 10, 1, "", "__sub__"], [3, 10, 1, "", "slice"]], "cudaq.SampleResult": [[3, 10, 1, "", "__getitem__"], [3, 10, 1, "", "__iter__"], [3, 10, 1, "", "__len__"], [3, 10, 1, "", "clear"], [3, 10, 1, "", "count"], [3, 10, 1, "", "deserialize"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "expectation"], [3, 10, 1, "", "expectation_z"], [3, 10, 1, "", "get_marginal_counts"], [3, 10, 1, "", "get_register_counts"], [3, 10, 1, "", "get_sequential_data"], [3, 10, 1, "", "items"], [3, 10, 1, "", "most_probable"], [3, 10, 1, "", "probability"], [3, 11, 1, "", "register_names"], [3, 10, 1, "", "serialize"], [3, 10, 1, "", "values"]], "cudaq.SimulationPrecision": [[3, 12, 1, "", "name"]], "cudaq.State": [[3, 10, 1, "", "amplitude"], [3, 10, 1, "", "amplitudes"], [3, 10, 1, "", "dump"], [3, 10, 1, "", "from_data"], [3, 10, 1, "", "getTensor"], [3, 10, 1, "", "getTensors"], [3, 10, 1, "", "is_on_gpu"], [3, 10, 1, "", "num_qubits"], [3, 10, 1, "", "overlap"]], "cudaq.Target": [[3, 12, 1, "", "description"], [3, 10, 1, "", "get_precision"], [3, 10, 1, "", "is_emulated"], [3, 10, 1, "", "is_remote"], [3, 12, 1, "", "name"], [3, 10, 1, "", "num_qpus"], [3, 12, 1, "", "platform"], [3, 12, 1, "", "simulator"]], "cudaq.gradients": [[3, 9, 1, "", "CentralDifference"], [3, 9, 1, "", "ForwardDifference"], [3, 9, 1, "", "ParameterShift"], [3, 9, 1, "", "gradient"]], "cudaq.gradients.CentralDifference": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.gradients.ForwardDifference": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.gradients.ParameterShift": [[3, 10, 1, "", "compute"], [3, 10, 1, "", "from_json"], [3, 10, 1, "", "to_json"]], "cudaq.mpi": [[3, 10, 1, "", "all_gather"], [3, 10, 1, "", "broadcast"], [3, 10, 1, "", "finalize"], [3, 10, 1, "", "initialize"], [3, 10, 1, "", "is_initialized"], [3, 10, 1, "", "num_ranks"], [3, 10, 1, "", "rank"]], "cudaq.operator.cudm_state": [[3, 9, 1, "", "CuDensityMatState"], [3, 13, 1, "", "to_cupy_array"]], "cudaq.operator.cudm_state.CuDensityMatState": [[3, 10, 1, "", "try_init_state"]], "cudaq.operator.definitions": [[3, 9, 1, "", "SpinOperator"]], "cudaq.operator.expressions": [[3, 9, 1, "", "ElementaryOperator"], [3, 9, 1, "", "OperatorSum"], [3, 9, 1, "", "ProductOperator"], [3, 9, 1, "", "RydbergHamiltonian"], [3, 9, 1, "", "ScalarOperator"]], "cudaq.operator.expressions.ElementaryOperator": [[3, 10, 1, "", "define"]], "cudaq.operator.expressions.RydbergHamiltonian": [[3, 10, 1, "", "__init__"]], "cudaq.operator.helpers": [[3, 9, 1, "", "InitialState"]], "cudaq.operator.integrator": [[3, 9, 1, "", "BaseIntegrator"]], "cudaq.optimizers": [[3, 9, 1, "", "COBYLA"], [3, 9, 1, "", "GradientDescent"], [3, 9, 1, "", "LBFGS"], [3, 9, 1, "", "NelderMead"], [3, 9, 1, "", "optimizer"]], "cudaq.optimizers.COBYLA": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.GradientDescent": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.LBFGS": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.optimizers.NelderMead": [[3, 10, 1, "", "from_json"], [3, 12, 1, "", "initial_parameters"], [3, 12, 1, "", "lower_bounds"], [3, 12, 1, "", "max_iterations"], [3, 10, 1, "", "optimize"], [3, 10, 1, "", "requires_gradients"], [3, 10, 1, "", "to_json"], [3, 12, 1, "", "upper_bounds"]], "cudaq.orca": [[3, 10, 1, "", "sample"]], "cudaq.spin": [[3, 13, 1, "", "i"], [3, 13, 1, "", "x"], [3, 13, 1, "", "y"], [3, 13, 1, "", "z"]]}, "objtypes": {"0": "cpp:type", "1": "cpp:class", "2": "cpp:templateParam", "3": "cpp:function", "4": "cpp:functionParam", "5": "cpp:member", "6": "cpp:enum", "7": "cpp:enumerator", "8": "py:module", "9": "py:class", "10": "py:method", "11": "py:attribute", "12": "py:property", "13": "py:function"}, "objnames": {"0": ["cpp", "type", "C++ type"], "1": ["cpp", "class", "C++ class"], "2": ["cpp", "templateParam", "C++ template parameter"], "3": ["cpp", "function", "C++ function"], "4": ["cpp", "functionParam", "C++ function parameter"], "5": ["cpp", "member", "C++ member"], "6": ["cpp", "enum", "C++ enum"], "7": ["cpp", "enumerator", "C++ enumerator"], "8": ["py", "module", "Python module"], "9": ["py", "class", "Python class"], "10": ["py", "method", "Python method"], "11": ["py", "attribute", "Python attribute"], "12": ["py", "property", "Python property"], "13": ["py", "function", "Python function"]}, "titleterms": {"code": [0, 77], "document": 0, "cuda": [0, 2, 3, 4, 5, 8, 9, 13, 21, 22, 23, 29, 32, 33, 34, 35, 50, 51, 52, 53, 56, 57, 58, 59, 60, 63, 71, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83], "q": [0, 2, 3, 4, 5, 8, 9, 13, 21, 22, 23, 29, 32, 33, 34, 35, 50, 51, 52, 53, 56, 57, 58, 59, 60, 63, 71, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83], "api": [0, 2, 3], "quantum": [1, 2, 4, 5, 7, 9, 10, 11, 12, 13, 15, 16, 17, 19, 22, 24, 25, 35, 38, 39, 42, 43, 44, 45, 47, 54, 55, 65, 69, 70], "oper": [1, 2, 28, 42, 43, 52], "unitari": [1, 21], "qubit": [1, 18, 31, 42, 47], "x": 1, "y": 1, "z": 1, "h": 1, "r1": 1, "rx": 1, "ry": 1, "rz": 1, "": [1, 7, 13, 19, 38, 74], "t": 1, "swap": 1, "u3": 1, "adjoint": 1, "control": [1, 36, 67], "measur": [1, 19, 26, 69, 70], "mz": 1, "mx": 1, "my": 1, "user": 1, "defin": 1, "custom": 1, "photon": [1, 25, 56, 69], "qudit": [1, 47], "creat": [1, 73], "annihil": 1, "phase_shift": 1, "beam_splitt": 1, "c": [2, 53, 75, 81], "common": [2, 44], "nois": [2, 18], "model": [2, 13, 18, 21, 40], "kernel": [2, 3, 19, 21, 31, 37, 39, 55, 59, 62], "builder": 2, "algorithm": [2, 5, 7, 12, 19, 35, 38], "platform": [2, 45, 55], "util": 2, "namespac": [2, 41], "python": [3, 53, 75, 77], "program": [3, 38, 44, 58, 60], "construct": [3, 13, 28], "execut": [3, 24, 25, 52, 54], "dynam": [3, 52], "backend": [3, 51, 53, 54, 56], "configur": 3, "data": [3, 9], "type": [3, 47], "optim": [3, 22, 29, 30, 35], "gradient": [3, 23, 29, 35], "noisi": [3, 13, 27, 56], "simul": [3, 9, 13, 20, 21, 27, 54, 55, 56, 61, 74, 77], "mpi": [3, 75, 77], "submodul": 3, "orca": [3, 53, 65], "enhanc": 4, "auxiliari": 4, "field": 4, "mont": 4, "carlo": 4, "hamiltonian": [4, 68], "prepar": [4, 38], "vqe": [4, 13, 23], "run": [4, 13, 20, 60], "afqmc": 4, "molecular": [4, 8], "trial": 4, "wave": 4, "function": [4, 9, 35], "setup": [4, 12, 20, 21], "paramet": [4, 23, 29, 38], "bernstein": 5, "vazirani": 5, "classic": [5, 10, 19], "case": [5, 19], "implement": [5, 8, 9, 23], "cost": 6, "minim": 6, "deutsch": 7, "xor": 7, "oplu": 7, "oracl": 7, "phase": [7, 19, 38], "parallel": [7, 23, 24, 25, 29, 55, 64, 68], "dock": 8, "via": [8, 77], "dc": 8, "qaoa": [8, 9, 14], "set": [8, 13, 53], "up": [8, 13], "problem": [8, 19, 20], "divis": 9, "cluster": 9, "With": [9, 19, 20], "coreset": 9, "us": [9, 10, 21, 22, 23, 47, 65, 77, 79], "preprocess": 9, "scale": 9, "hadamard": 10, "test": 10, "determin": [10, 12, 19], "krylov": [10, 12], "subspac": [10, 12], "decomposit": 10, "matrix": [10, 12, 18, 56], "element": [10, 12], "numer": [10, 52], "result": [10, 19], "refer": [10, 12], "sampl": [10, 24, 25, 35, 38, 60], "perform": [10, 13, 30], "multi": [10, 12, 52, 55, 56, 67, 68], "gpu": [10, 52, 54, 56, 60, 68, 77], "evalu": [10, 21], "qksd": 10, "diagon": 10, "hybrid": 11, "neural": 11, "network": [11, 56], "h_2": 12, "molecul": 12, "comput": [12, 20, 44, 53, 64, 65, 70, 77], "ground": [12, 13], "state": [12, 13, 24, 25, 38, 55, 56, 69, 70], "energi": [12, 38], "anderson": 13, "impur": 13, "solver": 13, "infleqt": [13, 53, 65], "sqale": 13, "logic": [13, 26], "variat": [13, 22], "eigensolv": [13, 22], "qx": 13, "circuit": [13, 21, 23, 24, 25, 46, 68, 74], "4": [13, 19], "2": [13, 47], "encod": 13, "submiss": [13, 53], "decod": 13, "workflow": [13, 68], "aim": 13, "hardwar": [13, 53, 65], "max": 14, "cut": 14, "fourier": [15, 19], "transform": [15, 19], "revisit": 15, "telepor": 16, "teleport": 16, "explain": 16, "volum": 17, "readout": 18, "error": 18, "mitig": 18, "invers": [18, 19], "confus": 18, "from": [18, 19, 53, 75, 81], "singl": [18, 56], "k": 18, "local": [18, 77], "matric": 18, "full": 18, "factor": 19, "integ": 19, "shor": 19, "solv": 19, "order": 19, "find": 19, "modular": 19, "exponenti": [19, 28], "The": [19, 20, 23], "n": [19, 47], "21": 19, "5": 19, "postscript": 19, "magnet": 20, "suzuki": 20, "trotter": 20, "approxim": 20, "compil": [21, 73, 81], "diffus": 21, "pipelin": 21, "load": [21, 23], "convert": 21, "tensor": [21, 56], "gener": [21, 49], "compar": 21, "choos": 21, "you": 21, "need": 21, "integr": [22, 52, 80, 81], "third": [22, 29, 81], "parti": [22, 29, 81], "activ": 23, "space": 23, "gate": [23, 30, 69, 70], "fusion": [23, 30], "basic": [23, 57], "instal": [23, 75, 76, 77, 82], "relev": 23, "packag": 23, "shift": [23, 29], "an": [23, 81], "larger": 23, "observ": [24, 35, 60], "get": [24, 25, 77], "techniqu": [24, 25], "async": 24, "midcircuit": 26, "condit": 26, "spin": 28, "pauli": 28, "word": 28, "built": [29, 77], "visual": 31, "content": [32, 57, 76], "releas": 33, "languag": 34, "specif": [34, 48], "primit": 35, "cudaq": [35, 42, 43, 47], "deprec": [35, 47], "move": 35, "librari": [35, 75, 81], "flow": 36, "just": 37, "time": [37, 52], "creation": 37, "exampl": [38, 63], "hello": 38, "world": 38, "simpl": 38, "bell": 38, "ghz": 38, "estim": 38, "deuteron": 38, "bind": 38, "sweep": 38, "grover": 38, "iter": 38, "machin": 40, "standard": 41, "intrins": 42, "spin_op": 43, "pattern": 44, "action": [44, 74], "uncomput": 44, "sub": 46, "synthesi": [46, 67], "level": 47, "contain": [47, 77], "qview": 47, "qvector": 47, "qarrai": 47, "qspan": 47, "instead": 47, "qreg": 47, "quak": 49, "dialect": 49, "introduct": [49, 66, 77], "motiv": 49, "applic": 50, "target": [51, 68], "quick": [52, 54, 82], "start": [52, 54, 77, 82], "builtin": 52, "depend": [52, 75, 77], "node": [52, 56], "amazon": [53, 65], "braket": [53, 65], "credenti": 53, "ionq": [53, 65], "anyon": 53, "technologi": 53, "iqm": [53, 65], "oqc": [53, 65], "quantinuum": [53, 65], "quera": [53, 65], "nvidia": [54, 55], "cloud": [54, 77], "select": 54, "multipl": [54, 64, 68], "qpu": 54, "asynchron": 54, "faq": 54, "processor": [55, 64, 68], "mqpu": 55, "distribut": [55, 77], "mode": [55, 56], "remot": [55, 77], "support": [55, 56, 75, 77], "argument": 55, "serial": 55, "access": [55, 77], "vector": 56, "featur": 56, "environ": 56, "variabl": 56, "option": 56, "addit": [56, 77], "trajectori": 56, "openmp": 56, "cpu": 56, "onli": 56, "product": 56, "clifford": 56, "stim": 56, "fermioniq": 56, "default": 56, "build": [58, 62, 75], "your": [58, 60, 73, 82], "first": [58, 60], "what": 59, "i": 59, "troubleshoot": 61, "debug": 61, "verbos": 61, "output": 61, "expect": 64, "valu": 64, "across": [64, 68], "provid": 65, "avail": 68, "batch": 68, "term": 68, "101": [69, 70], "work": 71, "ir": 71, "extend": [72, 74], "own": 73, "pass": 73, "new": 74, "circuitsimul": 74, "requir": [74, 77], "subtyp": 74, "method": 74, "overrid": 74, "let": 74, "see": 74, "thi": 74, "sourc": 75, "prerequisit": 75, "toolchain": [75, 81], "host": [75, 77], "runtim": 75, "guid": 76, "docker": 77, "singular": 77, "wheel": 77, "pre": 77, "binari": [77, 81], "develop": 77, "v": 77, "connect": 77, "tunnel": 77, "ssh": 77, "dgx": 77, "jupyterlab": 77, "tool": [77, 80], "pypi": 77, "In": 77, "imag": 77, "updat": 77, "compat": 77, "system": 77, "next": 77, "step": 77, "cmake": 78, "project": 79, "other": 80, "softwar": 80, "call": 81, "interfac": 81, "between": 81, "differ": 81, "valid": 82, "version": 83}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"Quantum Intrinsic Operations": [[42, "quantum-intrinsic-operations"]], "Operations on cudaq::qubit": [[42, "operations-on-cudaq-qubit"]], "Common Quantum Programming Patterns": [[44, "common-quantum-programming-patterns"]], "Compute-Action-Uncompute": [[44, "compute-action-uncompute"]], "Machine Model": [[40, "machine-model"]], "Quantum Operators": [[43, "quantum-operators"]], "cudaq::spin_op": [[43, "cudaq-spin-op"]], "Namespace and Standard": [[41, "namespace-and-standard"]], "Quake Dialect": [[49, "quake-dialect"]], "General Introduction": [[49, "general-introduction"]], "Motivation": [[49, "motivation"]], "Specifications": [[48, "specifications"]], "Sub-circuit Synthesis": [[46, "sub-circuit-synthesis"]], "Quantum Types": [[47, "quantum-types"]], "cudaq::qudit": [[47, "cudaq-qudit-levels"]], "cudaq::qubit": [[47, "cudaq-qubit"]], "Quantum Containers": [[47, "quantum-containers"]], "cudaq::qview": [[47, "cudaq-qview-levels-2"]], "cudaq::qvector": [[47, "cudaq-qvector-levels-2"]], "cudaq::qarray": [[47, "cudaq-qarray-n-levels-2"]], "cudaq::qspan (Deprecated. Use cudaq::qview instead.)": [[47, "cudaq-qspan-n-levels-deprecated-use-cudaq-qview-levels-instead"]], "cudaq::qreg (Deprecated. Use cudaq::qvector instead.)": [[47, "cudaq-qreg-n-levels-deprecated-use-cudaq-qvector-levels-instead"]], "Quantum Platform": [[45, "quantum-platform"]], "Just-in-Time Kernel Creation": [[37, "just-in-time-kernel-creation"]], "Control Flow": [[36, "control-flow"]], "Example Programs": [[38, "example-programs"]], "Hello World - Simple Bell State": [[38, "hello-world-simple-bell-state"]], "GHZ State Preparation and Sampling": [[38, "ghz-state-preparation-and-sampling"]], "Quantum Phase Estimation": [[38, "quantum-phase-estimation"]], "Deuteron Binding Energy Parameter Sweep": [[38, "deuteron-binding-energy-parameter-sweep"]], "Grover\u2019s Algorithm": [[38, "grover-s-algorithm"]], "Iterative Phase Estimation": [[38, "iterative-phase-estimation"]], "Quantum Algorithmic Primitives": [[35, "quantum-algorithmic-primitives"]], "cudaq::sample": [[35, "cudaq-sample"]], "cudaq::observe": [[35, "cudaq-observe"]], "cudaq::optimizer (deprecated, functionality moved to CUDA-Q libraries)": [[35, "cudaq-optimizer-deprecated-functionality-moved-to-cuda-q-libraries"]], "cudaq::gradient (deprecated, functionality moved to CUDA-Q libraries)": [[35, "cudaq-gradient-deprecated-functionality-moved-to-cuda-q-libraries"]], "Quantum Kernels": [[39, "quantum-kernels"]], "Running your first CUDA-Q Program": [[60, "running-your-first-cuda-q-program"]], "Sample": [[60, "sample"], [24, "Sample"], [25, "Sample"]], "Observe": [[60, "observe"], [24, "Observe"]], "Running on a GPU": [[60, "running-on-a-gpu"]], "Troubleshooting": [[61, "troubleshooting"]], "Debugging and Verbose Simulation Output": [[61, "debugging-and-verbose-simulation-output"]], "Building Kernels": [[62, "building-kernels"]], "Computing Expectation Values": [[64, "computing-expectation-values"]], "Parallelizing across Multiple Processors": [[64, "parallelizing-across-multiple-processors"]], "CUDA-Q by Example": [[63, "cuda-q-by-example"]], "Using Quantum Hardware Providers": [[65, "using-quantum-hardware-providers"]], "Amazon Braket": [[65, "amazon-braket"], [53, "amazon-braket"]], "Infleqtion": [[65, "infleqtion"], [53, "infleqtion"]], "IonQ": [[65, "ionq"], [53, "ionq"]], "IQM": [[65, "iqm"], [53, "iqm"]], "OQC": [[65, "oqc"], [53, "oqc"]], "ORCA Computing": [[65, "orca-computing"], [53, "orca-computing"]], "Quantinuum": [[65, "quantinuum"], [53, "quantinuum"]], "QuEra Computing": [[65, "quera-computing"], [53, "quera-computing"]], "Multi-GPU Workflows": [[68, "multi-gpu-workflows"]], "Available Targets": [[68, "available-targets"]], "Parallelization across Multiple Processors": [[68, "parallelization-across-multiple-processors"]], "Batching Hamiltonian Terms": [[68, "batching-hamiltonian-terms"]], "Circuit Batching": [[68, "circuit-batching"]], "Photonics 101": [[69, "photonics-101"]], "Quantum Photonic States": [[69, "quantum-photonic-states"]], "Quantum Photonics Gates": [[69, "quantum-photonics-gates"]], "Measurements": [[69, "measurements"], [70, "measurements"], [26, "Measurements"]], "Multi-control Synthesis": [[67, "multi-control-synthesis"]], "Introduction": [[66, "introduction"], [77, "introduction"]], "Create your own CUDA-Q Compiler Pass": [[73, "create-your-own-cuda-q-compiler-pass"]], "Extending CUDA-Q": [[72, "extending-cuda-q"]], "Extending CUDA-Q with a new Simulator": [[74, "extending-cuda-q-with-a-new-simulator"]], "CircuitSimulator": [[74, "circuitsimulator"]], "Required Circuit Simulator Subtype Method Overrides": [[74, "id1"]], "Let\u2019s see this in action": [[74, "let-s-see-this-in-action"]], "Working with the CUDA-Q IR": [[71, "working-with-the-cuda-q-ir"]], "Quantum Computing 101": [[70, "quantum-computing-101"]], "Quantum States": [[70, "quantum-states"]], "Quantum Gates": [[70, "quantum-gates"]], "Integrating with Third-Party Libraries": [[81, "integrating-with-third-party-libraries"]], "Calling a CUDA-Q library from C++": [[81, "calling-a-cuda-q-library-from-c"]], "Calling an C++ library from CUDA-Q": [[81, "calling-an-c-library-from-cuda-q"]], "Interfacing between binaries compiled with a different toolchains": [[81, "interfacing-between-binaries-compiled-with-a-different-toolchains"]], "Quick Start": [[82, "quick-start"], [54, "quick-start"], [52, "quick-start"]], "Install CUDA-Q": [[82, "install-cuda-q"]], "Validate your Installation": [[82, "validate-your-installation"]], "Integration with other Software Tools": [[80, "integration-with-other-software-tools"]], "CUDA-Q Versions": [[83, "cuda-q-versions"]], "Using CUDA and CUDA-Q in a Project": [[79, "using-cuda-and-cuda-q-in-a-project"]], "CUDA-Q and CMake": [[78, "cuda-q-and-cmake"]], "Local Installation": [[77, "local-installation"]], "Docker": [[77, "docker"]], "Singularity": [[77, "singularity"]], "Python wheels": [[77, "python-wheels"]], "Pre-built binaries": [[77, "pre-built-binaries"]], "Development with VS Code": [[77, "development-with-vs-code"]], "Using a Docker container": [[77, "using-a-docker-container"]], "Using a Singularity container": [[77, "using-a-singularity-container"]], "Connecting to a Remote Host": [[77, "connecting-to-a-remote-host"]], "Developing with Remote Tunnels": [[77, "developing-with-remote-tunnels"]], "Remote Access via SSH": [[77, "remote-access-via-ssh"]], "DGX Cloud": [[77, "dgx-cloud"]], "Get Started": [[77, "get-started"]], "Use JupyterLab": [[77, "use-jupyterlab"]], "Use VS Code": [[77, "use-vs-code"]], "Additional CUDA Tools": [[77, "additional-cuda-tools"]], "Installation via PyPI": [[77, "installation-via-pypi"]], "Installation In Container Images": [[77, "installation-in-container-images"]], "Installing Pre-built Binaries": [[77, "installing-pre-built-binaries"]], "Distributed Computing with MPI": [[77, "distributed-computing-with-mpi"]], "Updating CUDA-Q": [[77, "updating-cuda-q"]], "Dependencies and Compatibility": [[77, "dependencies-and-compatibility"]], "Supported Systems": [[77, "id10"]], "Requirements for GPU Simulation": [[77, "id11"]], "Next Steps": [[77, "next-steps"]], "Installation Guide": [[76, "installation-guide"]], "Contents": [[76, null], [57, null], [32, null]], "Installation from Source": [[75, "installation-from-source"]], "Prerequisites": [[75, "prerequisites"]], "Build Dependencies": [[75, "build-dependencies"]], "CUDA": [[75, "cuda"]], "Toolchain": [[75, "toolchain"]], "Building CUDA-Q": [[75, "building-cuda-q"]], "Python Support": [[75, "python-support"]], "C++ Support": [[75, "c-support"]], "Installation on the Host": [[75, "installation-on-the-host"]], "CUDA Runtime Libraries": [[75, "cuda-runtime-libraries"]], "MPI": [[75, "mpi"]], "Multi-Processor Platforms": [[55, "multi-processor-platforms"]], "NVIDIA MQPU Platform": [[55, "nvidia-mqpu-platform"]], "Parallel distribution mode": [[55, "parallel-distribution-mode"]], "Remote MQPU Platform": [[55, "remote-mqpu-platform"]], "Supported Kernel Arguments": [[55, "supported-kernel-arguments"]], "Kernel argument serialization": [[55, "id4"]], "Accessing Simulated Quantum State": [[55, "accessing-simulated-quantum-state"]], "CUDA-Q Basics": [[57, "cuda-q-basics"]], "Building your first CUDA-Q Program": [[58, "building-your-first-cuda-q-program"]], "CUDA-Q Simulation Backends": [[56, "cuda-q-simulation-backends"]], "State Vector Simulators": [[56, "state-vector-simulators"]], "Features": [[56, "features"]], "Single-GPU": [[56, "single-gpu"]], "Environment variable options supported in single-GPU mode": [[56, "id6"]], "Multi-node multi-GPU": [[56, "multi-node-multi-gpu"], [56, "id2"]], "Additional environment variable options for multi-node multi-GPU mode": [[56, "id7"]], "Trajectory Noisy Simulation": [[56, "trajectory-noisy-simulation"]], "Additional environment variable options for trajectory simulation": [[56, "id8"]], "OpenMP CPU-only": [[56, "openmp-cpu-only"], [56, "id3"]], "Tensor Network Simulators": [[56, "tensor-network-simulators"]], "Matrix product state": [[56, "matrix-product-state"]], "Clifford-Only Simulator": [[56, "clifford-only-simulator"]], "Stim (CPU)": [[56, "stim-cpu"]], "Photonics Simulators": [[56, "photonics-simulators"]], "Fermioniq": [[56, "fermioniq"]], "Default Simulator": [[56, "default-simulator"]], "What is a CUDA-Q kernel?": [[59, "what-is-a-cuda-q-kernel"]], "NVIDIA Quantum Cloud": [[54, "nvidia-quantum-cloud"]], "Simulator Backend Selection": [[54, "simulator-backend-selection"]], "Multiple GPUs": [[54, "multiple-gpus"]], "Simulator Backends": [[54, "id1"]], "Multiple QPUs Asynchronous Execution": [[54, "multiple-qpus-asynchronous-execution"]], "FAQ": [[54, "faq"]], "CUDA-Q Dynamics": [[52, "cuda-q-dynamics"]], "Operator": [[52, "operator"]], "Builtin Operators": [[52, "id1"]], "Time-Dependent Dynamics": [[52, "time-dependent-dynamics"]], "Numerical Integrators": [[52, "numerical-integrators"], [52, "id2"]], "Multi-GPU Multi-Node Execution": [[52, "multi-gpu-multi-node-execution"]], "CUDA-Q Hardware Backends": [[53, "cuda-q-hardware-backends"]], "Setting Credentials": [[53, "setting-credentials"], [53, "id1"], [53, "ionq-backend"], [53, "anyon-backend"], [53, "id10"], [53, "id13"], [53, "id16"], [53, "quantinuum-backend"], [53, "quera-backend"]], "Submission from C++": [[53, "submission-from-c"], [53, "id2"], [53, "id5"], [53, "id8"], [53, "id11"], [53, "id14"], [53, "id17"], [53, "id20"], [53, "id23"]], "Submission from Python": [[53, "submission-from-python"], [53, "id3"], [53, "id6"], [53, "id9"], [53, "id12"], [53, "id15"], [53, "id18"], [53, "id21"], [53, "id24"]], "Anyon Technologies/Anyon Computing": [[53, "anyon-technologies-anyon-computing"]], "CUDA-Q Backends": [[51, "cuda-q-backends"]], "Backend Targets": [[51, null]], "CUDA-Q Applications": [[50, "cuda-q-applications"]], "Visualization": [[31, "Visualization"]], "Qubit Visualization": [[31, "Qubit-Visualization"]], "Kernel Visualization": [[31, "Kernel-Visualization"]], "Language Specification": [[34, "language-specification"]], "CUDA-Q": [[34, null], [32, "cuda-q"]], "CUDA-Q Releases": [[33, "cuda-q-releases"]], "Optimizing Performance": [[30, "Optimizing-Performance"]], "Gate Fusion": [[30, "Gate-Fusion"]], "Anderson Impurity Model ground state solver on Infleqtion\u2019s Sqale": [[13, "Anderson-Impurity-Model-ground-state-solver-on-Infleqtion's-Sqale"]], "Performing logical Variational Quantum Eigensolver (VQE) with CUDA-QX": [[13, "Performing-logical-Variational-Quantum-Eigensolver-(VQE)-with-CUDA-QX"]], "Constructing circuits in the [[4,2,2]] encoding": [[13, "Constructing-circuits-in-the-[[4,2,2]]-encoding"]], "Setting up submission and decoding workflow": [[13, "Setting-up-submission-and-decoding-workflow"]], "Running a CUDA-Q noisy simulation": [[13, "Running-a-CUDA-Q-noisy-simulation"]], "Running logical AIM on Infleqtion\u2019s hardware": [[13, "Running-logical-AIM-on-Infleqtion's-hardware"]], "Multi-reference Quantum Krylov Algorithm - H_2 Molecule": [[12, "Multi-reference-Quantum-Krylov-Algorithm---H_2-Molecule"]], "Setup": [[12, "Setup"]], "Computing the matrix elements": [[12, "Computing-the-matrix-elements"]], "Determining the ground state energy of the subspace": [[12, "Determining-the-ground-state-energy-of-the-subspace"]], "Max-Cut with QAOA": [[14, "Max-Cut-with-QAOA"]], "Hybrid Quantum Neural Networks": [[11, "Hybrid-Quantum-Neural-Networks"]], "Using the Hadamard Test to Determine Quantum Krylov Subspace Decomposition Matrix Elements": [[10, "Using-the-Hadamard-Test-to-Determine-Quantum-Krylov-Subspace-Decomposition-Matrix-Elements"]], "Numerical result as a reference:": [[10, "Numerical-result-as-a-reference:"]], "Using Sample to perform the Hadamard test": [[10, "Using-Sample-to-perform-the-Hadamard-test"]], "Multi-GPU evaluation of QKSD matrix elements using the Hadamard Test": [[10, "Multi-GPU-evaluation-of-QKSD-matrix-elements-using-the-Hadamard-Test"]], "Classically Diagonalize the Subspace Matrix": [[10, "Classically-Diagonalize-the-Subspace-Matrix"]], "Divisive Clustering With Coresets Using CUDA-Q": [[9, "Divisive-Clustering-With-Coresets-Using-CUDA-Q"]], "Data preprocessing": [[9, "Data-preprocessing"]], "Quantum functions": [[9, "Quantum-functions"]], "Divisive Clustering Function": [[9, "Divisive-Clustering-Function"]], "QAOA Implementation": [[9, "QAOA-Implementation"]], "Scaling simulations with CUDA-Q": [[9, "Scaling-simulations-with-CUDA-Q"]], "Molecular docking via DC-QAOA": [[8, "Molecular-docking-via-DC-QAOA"]], "Setting up the Molecular Docking Problem": [[8, "Setting-up-the-Molecular-Docking-Problem"]], "CUDA-Q Implementation": [[8, "CUDA-Q-Implementation"]], "Deutsch\u2019s Algorithm": [[7, "Deutsch's-Algorithm"]], "XOR \\oplus": [[7, "XOR-\\oplus"]], "Quantum oracles": [[7, "Quantum-oracles"]], "Phase oracle": [[7, "Phase-oracle"]], "Quantum parallelism": [[7, "Quantum-parallelism"]], "Deutsch\u2019s Algorithm:": [[7, "Deutsch's-Algorithm:"]], "Cost Minimization": [[6, "Cost-Minimization"]], "Bernstein-Vazirani Algorithm": [[5, "Bernstein-Vazirani-Algorithm"]], "Classical case": [[5, "Classical-case"]], "Quantum case": [[5, "Quantum-case"]], "Implementing in CUDA-Q": [[5, "Implementing-in-CUDA-Q"]], "Factoring Integers With Shor\u2019s Algorithm": [[19, "Factoring-Integers-With-Shor's-Algorithm"]], "Shor\u2019s algorithm": [[19, "Shor's-algorithm"]], "Solving the order-finding problem classically": [[19, "Solving-the-order-finding-problem-classically"]], "Solving the order-finding problem with a quantum algorithm": [[19, "Solving-the-order-finding-problem-with-a-quantum-algorithm"]], "Inverse quantum Fourier transform": [[19, "Inverse-quantum-Fourier-transform"]], "Quantum kernels for modular exponentiation": [[19, "Quantum-kernels-for-modular-exponentiation"]], "The case N = 21 and a = 5:": [[19, "The-case-N-=-21-and-a-=-5:"]], "The case N = 21 and a = 4:": [[19, "The-case-N-=-21-and-a-=-4:"]], "Determining the order from the measurement results of the phase kernel": [[19, "Determining-the-order-from-the-measurement-results-of-the-phase-kernel"]], "Postscript": [[19, "Postscript"]], "Readout Error Mitigation": [[18, "Readout-Error-Mitigation"]], "Inverse confusion matrix from single-qubit noise model": [[18, "Inverse-confusion-matrix-from-single-qubit-noise-model"]], "Inverse confusion matrix from k local confusion matrices": [[18, "Inverse-confusion-matrix-from-k-local-confusion-matrices"]], "Inverse of full confusion matrix": [[18, "Inverse-of-full-confusion-matrix"]], "Quantum Fourier Transform": [[15, "Quantum-Fourier-Transform"]], "Quantum Fourier Transform revisited": [[15, "Quantum-Fourier-Transform-revisited"]], "Quantum Volume": [[17, "Quantum-Volume"]], "Quantum Teleporation": [[16, "Quantum-Teleporation"]], "Teleportation explained": [[16, "Teleportation-explained"]], "Compiling Unitaries Using Diffusion Models": [[21, "Compiling-Unitaries-Using-Diffusion-Models"]], "Diffusion model pipeline": [[21, "Diffusion-model-pipeline"]], "Setup and compilation": [[21, "Setup-and-compilation"]], "Load model": [[21, "Load-model"]], "Unitary compilation": [[21, "Unitary-compilation"]], "Convert tensors to CUDA-Q": [[21, "Convert-tensors-to-CUDA-Q"]], "Evaluate generated circuits": [[21, "Evaluate-generated-circuits"]], "Simulate kernels": [[21, "Simulate-kernels"]], "Compare unitaries": [[21, "Compare-unitaries"]], "Choosing the circuit you need": [[21, "Choosing-the-circuit-you-need"]], "Variational Quantum Eigensolver": [[22, "Variational-Quantum-Eigensolver"]], "Using CUDA-Q Optimizers": [[22, "Using-CUDA-Q-Optimizers"]], "Integration with Third-Party Optimizers": [[22, "Integration-with-Third-Party-Optimizers"]], "VQE with gradients, active spaces, and gate fusion": [[23, "VQE-with-gradients,-active-spaces,-and-gate-fusion"]], "The Basics of VQE": [[23, "The-Basics-of-VQE"]], "Installing/Loading Relevant Packages": [[23, "Installing/Loading-Relevant-Packages"]], "Implementing VQE in CUDA-Q": [[23, "Implementing-VQE-in-CUDA-Q"]], "Parallel Parameter Shift Gradients": [[23, "Parallel-Parameter-Shift-Gradients"], [29, "Parallel-Parameter-Shift-Gradients"]], "Using an Active Space": [[23, "Using-an-Active-Space"]], "Gate Fusion for Larger Circuits": [[23, "Gate-Fusion-for-Larger-Circuits"]], "Computing Magnetization With The Suzuki-Trotter Approximation": [[20, "Computing-Magnetization-With-The-Suzuki-Trotter-Approximation"]], "Problem Setup": [[20, "Problem-Setup"]], "Running the Simulation": [[20, "Running-the-Simulation"]], "Executing Quantum Circuits": [[24, "Executing-Quantum-Circuits"]], "Get state": [[24, "Get-state"], [25, "Get-state"]], "Parallelization Techniques": [[24, "Parallelization-Techniques"], [25, "Parallelization-Techniques"]], "Observe Async": [[24, "Observe-Async"]], "Sample Async": [[24, "Sample-Async"]], "Get State Async": [[24, "Get-State-Async"]], "Midcircuit Measurement and Conditional Logic": [[26, "Midcircuit-Measurement-and-Conditional-Logic"]], "Operators": [[28, "Operators"], [2, "operators"]], "Constructing Spin Operators": [[28, "Constructing-Spin-Operators"]], "Pauli Words and Exponentiating Pauli Words": [[28, "Pauli-Words-and-Exponentiating-Pauli-Words"]], "Optimizers and Gradients": [[29, "Optimizers-and-Gradients"]], "Built in CUDA-Q Optimizers and Gradients": [[29, "Built-in-CUDA-Q-Optimizers-and-Gradients"]], "Third-Party Optimizers": [[29, "Third-Party-Optimizers"]], "Noisy Simulation": [[27, "Noisy-Simulation"], [3, "noisy-simulation"]], "Executing Quantum Photonic Circuits": [[25, "Executing-Quantum-Photonic-Circuits"]], "Quantum Enhanced Auxiliary Field Quantum Monte Carlo": [[4, "Quantum-Enhanced-Auxiliary-Field-Quantum-Monte-Carlo"]], "Hamiltonian preparation for VQE": [[4, "Hamiltonian-preparation-for-VQE"]], "Run VQE with CUDA-Q": [[4, "Run-VQE-with-CUDA-Q"]], "Auxiliary Field Quantum Monte Carlo (AFQMC)": [[4, "Auxiliary-Field-Quantum-Monte-Carlo-(AFQMC)"]], "Preparation of the molecular Hamiltonian": [[4, "Preparation-of-the-molecular-Hamiltonian"]], "Preparation of the trial wave function": [[4, "Preparation-of-the-trial-wave-function"]], "Setup of the AFQMC parameters": [[4, "Setup-of-the-AFQMC-parameters"]], "Quantum Operations": [[1, "quantum-operations"]], "Unitary Operations on Qubits": [[1, "unitary-operations-on-qubits"]], "x": [[1, "x"]], "y": [[1, "y"]], "z": [[1, "z"]], "h": [[1, "h"]], "r1": [[1, "r1"]], "rx": [[1, "rx"]], "ry": [[1, "ry"]], "rz": [[1, "rz"]], "s": [[1, "s"]], "t": [[1, "t"]], "swap": [[1, "swap"]], "u3": [[1, "u3"]], "Adjoint and Controlled Operations": [[1, "adjoint-and-controlled-operations"]], "Measurements on Qubits": [[1, "measurements-on-qubits"]], "mz": [[1, "mz"], [1, "id1"]], "mx": [[1, "mx"]], "my": [[1, "my"]], "User-Defined Custom Operations": [[1, "user-defined-custom-operations"]], "Photonic Operations on Qudits": [[1, "photonic-operations-on-qudits"]], "create": [[1, "create"]], "annihilate": [[1, "annihilate"]], "phase_shift": [[1, "phase-shift"]], "beam_splitter": [[1, "beam-splitter"]], "Code documentation": [[0, "code-documentation"]], "CUDA-Q API": [[0, null]], "CUDA-Q Python API": [[3, "module-cudaq"]], "Program Construction": [[3, "program-construction"]], "Kernel Execution": [[3, "kernel-execution"]], "Dynamics": [[3, "dynamics"]], "Backend Configuration": [[3, "backend-configuration"]], "Data Types": [[3, "data-types"]], "Optimizers": [[3, "optimizers"]], "Gradients": [[3, "gradients"]], "MPI Submodule": [[3, "mpi-submodule"]], "ORCA Submodule": [[3, "orca-submodule"]], "CUDA-Q C++ API": [[2, "cuda-q-c-api"]], "Quantum": [[2, "quantum"]], "Common": [[2, "common"]], "Noise Modeling": [[2, "noise-modeling"]], "Kernel Builder": [[2, "kernel-builder"]], "Algorithms": [[2, "algorithms"]], "Platform": [[2, "platform"]], "Utilities": [[2, "utilities"]], "Namespaces": [[2, "namespaces"]]}, "indexentries": {"cudaq (c++ type)": [[2, "_CPPv45cudaq"]], "cudaq::basenvcfsimulatorqpu (c++ class)": [[2, "_CPPv4N5cudaq20BaseNvcfSimulatorQPUE"]], "cudaq::baseremoterestqpu (c++ class)": [[2, "_CPPv4N5cudaq17BaseRemoteRESTQPUE"]], "cudaq::baseremotesimulatorqpu (c++ class)": [[2, "_CPPv4N5cudaq22BaseRemoteSimulatorQPUE"]], "cudaq::cusvstate (c++ class)": [[2, "_CPPv4I0EN5cudaq9CusvStateE"]], "cudaq::executioncontext (c++ class)": [[2, "_CPPv4N5cudaq16ExecutionContextE"]], "cudaq::executioncontext::executioncontext (c++ function)": [[2, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringE"], [2, "_CPPv4N5cudaq16ExecutionContext16ExecutionContextEKNSt6stringENSt6size_tE"]], "cudaq::executioncontext::amplitudemaps (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13amplitudeMapsE"]], "cudaq::executioncontext::asyncexec (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext9asyncExecE"]], "cudaq::executioncontext::asyncresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext11asyncResultE"]], "cudaq::executioncontext::batchiteration (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext14batchIterationE"]], "cudaq::executioncontext::canhandleobserve (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext16canHandleObserveE"]], "cudaq::executioncontext::expectationvalue (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext16expectationValueE"]], "cudaq::executioncontext::futureresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext12futureResultE"]], "cudaq::executioncontext::hasconditionalsonmeasureresults (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext31hasConditionalsOnMeasureResultsE"]], "cudaq::executioncontext::invocationresultbuffer (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext22invocationResultBufferE"]], "cudaq::executioncontext::kernelname (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10kernelNameE"]], "cudaq::executioncontext::kerneltrace (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext11kernelTraceE"]], "cudaq::executioncontext::name (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext4nameE"]], "cudaq::executioncontext::noisemodel (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10noiseModelE"]], "cudaq::executioncontext::numbertrajectories (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext18numberTrajectoriesE"]], "cudaq::executioncontext::optresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext9optResultE"]], "cudaq::executioncontext::overlapcomputestates (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext20overlapComputeStatesE"]], "cudaq::executioncontext::overlapresult (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13overlapResultE"]], "cudaq::executioncontext::registernames (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext13registerNamesE"]], "cudaq::executioncontext::reorderidx (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext10reorderIdxE"]], "cudaq::executioncontext::result (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext6resultE"]], "cudaq::executioncontext::shots (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext5shotsE"]], "cudaq::executioncontext::simulationstate (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext15simulationStateE"]], "cudaq::executioncontext::spin (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext4spinE"]], "cudaq::executioncontext::totaliterations (c++ member)": [[2, "_CPPv4N5cudaq16ExecutionContext15totalIterationsE"]], "cudaq::executionresult (c++ struct)": [[2, "_CPPv4N5cudaq15ExecutionResultE"]], "cudaq::executionresult::executionresult (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionary"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryNSt6stringE"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultE16CountsDictionaryd"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultENSt6stringE"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultERK15ExecutionResult"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEd"], [2, "_CPPv4N5cudaq15ExecutionResult15ExecutionResultEv"]], "cudaq::executionresult::appendresult (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult12appendResultENSt6stringENSt6size_tE"]], "cudaq::executionresult::deserialize (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResult11deserializeERNSt6vectorINSt6size_tEEE"]], "cudaq::executionresult::operator= (c++ function)": [[2, "_CPPv4N5cudaq15ExecutionResultaSERK15ExecutionResult"]], "cudaq::executionresult::operator== (c++ function)": [[2, "_CPPv4NK5cudaq15ExecutionResulteqERK15ExecutionResult"]], "cudaq::executionresult::registername (c++ member)": [[2, "_CPPv4N5cudaq15ExecutionResult12registerNameE"]], "cudaq::executionresult::sequentialdata (c++ member)": [[2, "_CPPv4N5cudaq15ExecutionResult14sequentialDataE"]], "cudaq::executionresult::serialize (c++ function)": [[2, "_CPPv4NK5cudaq15ExecutionResult9serializeEv"]], "cudaq::fermioniqbaseqpu (c++ class)": [[2, "_CPPv4N5cudaq16FermioniqBaseQPUE"]], "cudaq::kernelexecutiontask (c++ type)": [[2, "_CPPv4N5cudaq19KernelExecutionTaskE"]], "cudaq::kernelthunkresulttype (c++ struct)": [[2, "_CPPv4N5cudaq21KernelThunkResultTypeE"]], "cudaq::kernelthunktype (c++ type)": [[2, "_CPPv4N5cudaq15KernelThunkTypeE"]], "cudaq::orcaremoterestqpu (c++ class)": [[2, "_CPPv4N5cudaq17OrcaRemoteRESTQPUE"]], "cudaq::qpu (c++ class)": [[2, "_CPPv4N5cudaq3QPUE"]], "cudaq::qpu::qpu (c++ function)": [[2, "_CPPv4N5cudaq3QPU3QPUENSt6size_tE"], [2, "_CPPv4N5cudaq3QPU3QPUERR3QPU"], [2, "_CPPv4N5cudaq3QPU3QPUEv"]], "cudaq::qpu::enqueue (c++ function)": [[2, "_CPPv4N5cudaq3QPU7enqueueER11QuantumTask"]], "cudaq::qpu::getconnectivity (c++ function)": [[2, "_CPPv4N5cudaq3QPU15getConnectivityEv"]], "cudaq::qpu::getexecutionthreadid (c++ function)": [[2, "_CPPv4NK5cudaq3QPU20getExecutionThreadIdEv"]], "cudaq::qpu::getnumqubits (c++ function)": [[2, "_CPPv4N5cudaq3QPU12getNumQubitsEv"]], "cudaq::qpu::getremotecapabilities (c++ function)": [[2, "_CPPv4NK5cudaq3QPU21getRemoteCapabilitiesEv"]], "cudaq::qpu::isemulated (c++ function)": [[2, "_CPPv4N5cudaq3QPU10isEmulatedEv"]], "cudaq::qpu::issimulator (c++ function)": [[2, "_CPPv4N5cudaq3QPU11isSimulatorEv"]], "cudaq::qpu::launchkernel (c++ function)": [[2, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringE15KernelThunkTypePvNSt8uint64_tENSt8uint64_tERKNSt6vectorIPvEE"], [2, "_CPPv4N5cudaq3QPU12launchKernelERKNSt6stringERKNSt6vectorIPvEE"]], "cudaq::qpu::launchserializedcodeexecution (c++ function)": [[2, "_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE"]], "cudaq::qpu::onrandomseedset (c++ function)": [[2, "_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE"]], "cudaq::qpu::resetexecutioncontext (c++ function)": [[2, "_CPPv4N5cudaq3QPU21resetExecutionContextEv"]], "cudaq::qpu::setexecutioncontext (c++ function)": [[2, "_CPPv4N5cudaq3QPU19setExecutionContextEP16ExecutionContext"]], "cudaq::qpu::setid (c++ function)": [[2, "_CPPv4N5cudaq3QPU5setIdENSt6size_tE"]], "cudaq::qpu::setshots (c++ function)": [[2, "_CPPv4N5cudaq3QPU8setShotsEi"]], "cudaq::qpu::supportsconditionalfeedback (c++ function)": [[2, "_CPPv4N5cudaq3QPU27supportsConditionalFeedbackEv"]], "cudaq::qpu::~qpu (c++ function)": [[2, "_CPPv4N5cudaq3QPUD0Ev"]], "cudaq::querabaseqpu (c++ class)": [[2, "_CPPv4N5cudaq12QuEraBaseQPUE"]], "cudaq::quakevalue (c++ class)": [[2, "_CPPv4N5cudaq10QuakeValueE"]], "cudaq::quakevalue::quakevalue (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEN4mlir5ValueE"], [2, "_CPPv4N5cudaq10QuakeValue10QuakeValueERN4mlir20ImplicitLocOpBuilderEd"]], "cudaq::quakevalue::canvalidatenumelements (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue22canValidateNumElementsEv"]], "cudaq::quakevalue::constantsize (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue12constantSizeEv"]], "cudaq::quakevalue::dump (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue4dumpERNSt7ostreamE"], [2, "_CPPv4N5cudaq10QuakeValue4dumpEv"]], "cudaq::quakevalue::getrequiredelements (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue19getRequiredElementsEv"]], "cudaq::quakevalue::getvalue (c++ function)": [[2, "_CPPv4NK5cudaq10QuakeValue8getValueEv"]], "cudaq::quakevalue::inverse (c++ function)": [[2, "_CPPv4NK5cudaq10QuakeValue7inverseEv"]], "cudaq::quakevalue::isstdvec (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue8isStdVecEv"]], "cudaq::quakevalue::operator* (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuemlE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuemlEKd"]], "cudaq::quakevalue::operator+ (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValueplE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValueplEKd"], [2, "_CPPv4N5cudaq10QuakeValueplEKi"]], "cudaq::quakevalue::operator- (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuemiE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuemiEKd"], [2, "_CPPv4N5cudaq10QuakeValuemiEKi"], [2, "_CPPv4NK5cudaq10QuakeValuemiEv"]], "cudaq::quakevalue::operator/ (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValuedvE10QuakeValue"], [2, "_CPPv4N5cudaq10QuakeValuedvEKd"]], "cudaq::quakevalue::operator[] (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValueixEKNSt6size_tE"], [2, "_CPPv4N5cudaq10QuakeValueixERK10QuakeValue"]], "cudaq::quakevalue::size (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue4sizeEv"]], "cudaq::quakevalue::slice (c++ function)": [[2, "_CPPv4N5cudaq10QuakeValue5sliceEKNSt6size_tEKNSt6size_tE"]], "cudaq::quantumtask (c++ type)": [[2, "_CPPv4N5cudaq11QuantumTaskE"]], "cudaq::qubitconnectivity (c++ type)": [[2, "_CPPv4N5cudaq17QubitConnectivityE"]], "cudaq::qubitedge (c++ type)": [[2, "_CPPv4N5cudaq9QubitEdgeE"]], "cudaq::remotecapabilities (c++ struct)": [[2, "_CPPv4N5cudaq18RemoteCapabilitiesE"]], "cudaq::remotecapabilities::remotecapabilities (c++ function)": [[2, "_CPPv4N5cudaq18RemoteCapabilities18RemoteCapabilitiesEb"]], "cudaq::remotecapabilities::isremotesimulator (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities17isRemoteSimulatorE"]], "cudaq::remotecapabilities::serializedcodeexec (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities18serializedCodeExecE"]], "cudaq::remotecapabilities::stateoverlap (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities12stateOverlapE"]], "cudaq::remotecapabilities::vqe (c++ member)": [[2, "_CPPv4N5cudaq18RemoteCapabilities3vqeE"]], "cudaq::remotesimulationstate (c++ class)": [[2, "_CPPv4N5cudaq21RemoteSimulationStateE"]], "cudaq::resources (c++ class)": [[2, "_CPPv4N5cudaq9ResourcesE"]], "cudaq::serializedcodeexecutioncontext (c++ class)": [[2, "_CPPv4N5cudaq30SerializedCodeExecutionContextE"]], "cudaq::simulationstate (c++ class)": [[2, "_CPPv4N5cudaq15SimulationStateE"]], "cudaq::simulationstate::tensor (c++ struct)": [[2, "_CPPv4N5cudaq15SimulationState6TensorE"]], "cudaq::simulationstate::precision (c++ enum)": [[2, "_CPPv4N5cudaq15SimulationState9precisionE"]], "cudaq::simulationstate::precision::fp32 (c++ enumerator)": [[2, "_CPPv4N5cudaq15SimulationState9precision4fp32E"]], "cudaq::simulationstate::precision::fp64 (c++ enumerator)": [[2, "_CPPv4N5cudaq15SimulationState9precision4fp64E"]], "cudaq::tensorstatedata (c++ type)": [[2, "_CPPv4N5cudaq15TensorStateDataE"]], "cudaq::trace (c++ class)": [[2, "_CPPv4N5cudaq5TraceE"]], "cudaq::amplitude_damping_channel (c++ class)": [[2, "_CPPv4N5cudaq25amplitude_damping_channelE"]], "cudaq::async_result (c++ class)": [[2, "_CPPv4I0EN5cudaq12async_resultE"]], "cudaq::async_result::get (c++ function)": [[2, "_CPPv4N5cudaq12async_result3getEv"]], "cudaq::async_sample_result (c++ type)": [[2, "_CPPv4N5cudaq19async_sample_resultE"]], "cudaq::bit_flip_channel (c++ class)": [[2, "_CPPv4N5cudaq16bit_flip_channelE"]], "cudaq::complex (c++ type)": [[2, "_CPPv4N5cudaq7complexE"]], "cudaq::complex_matrix (c++ class)": [[2, "_CPPv4N5cudaq14complex_matrixE"]], "cudaq::complex_matrix::cols (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4colsEv"]], "cudaq::complex_matrix::complex_matrix (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix14complex_matrixEKNSt6size_tEKNSt6size_tE"], [2, "_CPPv4N5cudaq14complex_matrix14complex_matrixEP10value_typeKNSt6size_tEKNSt6size_tE"]], "cudaq::complex_matrix::data (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4dataEv"]], "cudaq::complex_matrix::dump (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix4dumpERNSt7ostreamE"], [2, "_CPPv4N5cudaq14complex_matrix4dumpEv"]], "cudaq::complex_matrix::eigenvalues (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix11eigenvaluesEv"]], "cudaq::complex_matrix::eigenvectors (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix12eigenvectorsEv"]], "cudaq::complex_matrix::minimal_eigenvalue (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix18minimal_eigenvalueEv"]], "cudaq::complex_matrix::operator() (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrixclENSt6size_tENSt6size_tE"]], "cudaq::complex_matrix::operator* (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrixmlER14complex_matrix"], [2, "_CPPv4NK5cudaq14complex_matrixmlERNSt6vectorI10value_typeEE"]], "cudaq::complex_matrix::rows (c++ function)": [[2, "_CPPv4NK5cudaq14complex_matrix4rowsEv"]], "cudaq::complex_matrix::set_zero (c++ function)": [[2, "_CPPv4N5cudaq14complex_matrix8set_zeroEv"]], "cudaq::complex_matrix::value_type (c++ type)": [[2, "_CPPv4N5cudaq14complex_matrix10value_typeE"]], "cudaq::depolarization_channel (c++ class)": [[2, "_CPPv4N5cudaq22depolarization_channelE"]], "cudaq::details (c++ type)": [[2, "_CPPv4N5cudaq7detailsE"]], "cudaq::details::kernelbuildertype (c++ class)": [[2, "_CPPv4N5cudaq7details17KernelBuilderTypeE"]], "cudaq::details::kernelbuildertype::kernelbuildertype (c++ function)": [[2, "_CPPv4N5cudaq7details17KernelBuilderType17KernelBuilderTypeERRNSt8functionIFN4mlir4TypeEPN4mlir11MLIRContextEEEE"]], "cudaq::details::kernelbuildertype::create (c++ function)": [[2, "_CPPv4N5cudaq7details17KernelBuilderType6createEPN4mlir11MLIRContextE"]], "cudaq::details::future (c++ class)": [[2, "_CPPv4N5cudaq7details6futureE"]], "cudaq::details::future::future (c++ function)": [[2, "_CPPv4N5cudaq7details6future6futureERNSt6vectorI3JobEERNSt6stringERNSt3mapINSt6stringENSt6stringEEE"], [2, "_CPPv4N5cudaq7details6future6futureERR6future"], [2, "_CPPv4N5cudaq7details6future6futureEv"]], "cudaq::details::kernel_builder_base (c++ class)": [[2, "_CPPv4N5cudaq7details19kernel_builder_baseE"]], "cudaq::details::kernel_builder_base::operator<< (c++ function)": [[2, "_CPPv4N5cudaq7details19kernel_builder_baselsERNSt7ostreamERK19kernel_builder_base"]], "cudaq::draw (c++ function)": [[2, "_CPPv4I0Dp0EN5cudaq4drawENSt6stringERR13QuantumKernelDpRR4Args"]], "cudaq::dyn (c++ member)": [[2, "_CPPv4N5cudaq3dynE"]], "cudaq::get_state (c++ function)": [[2, "_CPPv4I0DpEN5cudaq9get_stateEDaRR13QuantumKernelDpRR4Args"]], "cudaq::gradient (c++ class)": [[2, "_CPPv4N5cudaq8gradientE"]], "cudaq::gradient::clone (c++ function)": [[2, "_CPPv4N5cudaq8gradient5cloneEv"]], "cudaq::gradient::compute (c++ function)": [[2, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq8gradient7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradient::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq8gradient8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq8gradient8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq8gradient8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq8gradient8gradientEv"]], "cudaq::gradient::setargs (c++ function)": [[2, "_CPPv4I0DpEN5cudaq8gradient7setArgsEvR13QuantumKernelDpRR4Args"]], "cudaq::gradient::setkernel (c++ function)": [[2, "_CPPv4I0EN5cudaq8gradient9setKernelEvR13QuantumKernel"]], "cudaq::gradients::central_difference (c++ class)": [[2, "_CPPv4N5cudaq9gradients18central_differenceE"]], "cudaq::gradients::central_difference::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients18central_difference5cloneEv"]], "cudaq::gradients::central_difference::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients18central_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::central_difference::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients18central_difference8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients18central_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients18central_difference8gradientEv"]], "cudaq::gradients::forward_difference (c++ class)": [[2, "_CPPv4N5cudaq9gradients18forward_differenceE"]], "cudaq::gradients::forward_difference::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients18forward_difference5cloneEv"]], "cudaq::gradients::forward_difference::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients18forward_difference7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::forward_difference::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients18forward_difference8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients18forward_difference8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients18forward_difference8gradientEv"]], "cudaq::gradients::parameter_shift (c++ class)": [[2, "_CPPv4N5cudaq9gradients15parameter_shiftE"]], "cudaq::gradients::parameter_shift::clone (c++ function)": [[2, "_CPPv4N5cudaq9gradients15parameter_shift5cloneEv"]], "cudaq::gradients::parameter_shift::compute (c++ function)": [[2, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERKNSt8functionIFdNSt6vectorIdEEEEEd"], [2, "_CPPv4N5cudaq9gradients15parameter_shift7computeERKNSt6vectorIdEERNSt6vectorIdEERK7spin_opd"]], "cudaq::gradients::parameter_shift::gradient (c++ function)": [[2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelT"], [2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientER7KernelTRR10ArgsMapper"], [2, "_CPPv4I00EN5cudaq9gradients15parameter_shift8gradientERR13QuantumKernelRR10ArgsMapper"], [2, "_CPPv4N5cudaq9gradients15parameter_shift8gradientERRNSt8functionIFvNSt6vectorIdEEEEE"], [2, "_CPPv4N5cudaq9gradients15parameter_shift8gradientEv"]], "cudaq::kernel_builder (c++ class)": [[2, "_CPPv4IDpEN5cudaq14kernel_builderE"]], "cudaq::kernel_builder::constantval (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder11constantValEd"]], "cudaq::kernel_builder::getarguments (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder12getArgumentsEv"]], "cudaq::kernel_builder::getnumparams (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder12getNumParamsEv"]], "cudaq::kernel_builder::isargstdvec (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder11isArgStdVecENSt6size_tE"]], "cudaq::kernel_builder::kernel_builder (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder14kernel_builderERNSt6vectorIN7details17KernelBuilderTypeEEE"]], "cudaq::kernel_builder::name (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder4nameEv"]], "cudaq::kernel_builder::qalloc (c++ function)": [[2, "_CPPv4N5cudaq14kernel_builder6qallocE10QuakeValue"], [2, "_CPPv4N5cudaq14kernel_builder6qallocEKNSt6size_tE"], [2, "_CPPv4N5cudaq14kernel_builder6qallocERNSt6vectorINSt7complexIdEEEE"], [2, "_CPPv4N5cudaq14kernel_builder6qallocEv"]], "cudaq::kernel_builder::swap (c++ function)": [[2, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRK10QuakeValueRK10QuakeValueRK10QuakeValue"], [2, "_CPPv4I00EN5cudaq14kernel_builder4swapEvRKNSt6vectorI10QuakeValueEERK10QuakeValueRK10QuakeValue"], [2, "_CPPv4N5cudaq14kernel_builder4swapERK10QuakeValueRK10QuakeValue"]], "cudaq::kraus_channel (c++ class)": [[2, "_CPPv4N5cudaq13kraus_channelE"]], "cudaq::kraus_channel::empty (c++ function)": [[2, "_CPPv4NK5cudaq13kraus_channel5emptyEv"]], "cudaq::kraus_channel::get_ops (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channel7get_opsEv"]], "cudaq::kraus_channel::kraus_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq13kraus_channel13kraus_channelEDpRRNSt16initializer_listI1TEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERK13kraus_channel"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERKNSt6vectorI8kraus_opEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelERRNSt6vectorI8kraus_opEE"], [2, "_CPPv4N5cudaq13kraus_channel13kraus_channelEv"]], "cudaq::kraus_channel::noise_type (c++ member)": [[2, "_CPPv4N5cudaq13kraus_channel10noise_typeE"]], "cudaq::kraus_channel::operator= (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channelaSERK13kraus_channel"]], "cudaq::kraus_channel::operator[] (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channelixEKNSt6size_tE"]], "cudaq::kraus_channel::parameters (c++ member)": [[2, "_CPPv4N5cudaq13kraus_channel10parametersE"]], "cudaq::kraus_channel::push_back (c++ function)": [[2, "_CPPv4N5cudaq13kraus_channel9push_backE8kraus_op"]], "cudaq::kraus_channel::size (c++ function)": [[2, "_CPPv4NK5cudaq13kraus_channel4sizeEv"]], "cudaq::kraus_op (c++ struct)": [[2, "_CPPv4N5cudaq8kraus_opE"]], "cudaq::kraus_op::adjoint (c++ function)": [[2, "_CPPv4NK5cudaq8kraus_op7adjointEv"]], "cudaq::kraus_op::data (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op4dataE"]], "cudaq::kraus_op::kraus_op (c++ function)": [[2, "_CPPv4I0EN5cudaq8kraus_op8kraus_opERRNSt16initializer_listI1TEE"], [2, "_CPPv4N5cudaq8kraus_op8kraus_opENSt6vectorIN5cudaq7complexEEE"], [2, "_CPPv4N5cudaq8kraus_op8kraus_opERK8kraus_op"]], "cudaq::kraus_op::ncols (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op5nColsE"]], "cudaq::kraus_op::nrows (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op5nRowsE"]], "cudaq::kraus_op::operator= (c++ function)": [[2, "_CPPv4N5cudaq8kraus_opaSERK8kraus_op"]], "cudaq::kraus_op::precision (c++ member)": [[2, "_CPPv4N5cudaq8kraus_op9precisionE"]], "cudaq::mpi (c++ type)": [[2, "_CPPv4N5cudaq3mpiE"]], "cudaq::mpi::all_gather (c++ function)": [[2, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIdEERKNSt6vectorIdEE"], [2, "_CPPv4N5cudaq3mpi10all_gatherERNSt6vectorIiEERKNSt6vectorIiEE"]], "cudaq::mpi::all_reduce (c++ function)": [[2, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK14BinaryFunction"], [2, "_CPPv4I00EN5cudaq3mpi10all_reduceE1TRK1TRK4Func"]], "cudaq::mpi::broadcast (c++ function)": [[2, "_CPPv4N5cudaq3mpi9broadcastERNSt6stringEi"], [2, "_CPPv4N5cudaq3mpi9broadcastERNSt6vectorIdEEi"]], "cudaq::mpi::finalize (c++ function)": [[2, "_CPPv4N5cudaq3mpi8finalizeEv"]], "cudaq::mpi::initialize (c++ function)": [[2, "_CPPv4N5cudaq3mpi10initializeEiPPc"], [2, "_CPPv4N5cudaq3mpi10initializeEv"]], "cudaq::mpi::is_initialized (c++ function)": [[2, "_CPPv4N5cudaq3mpi14is_initializedEv"]], "cudaq::mpi::num_ranks (c++ function)": [[2, "_CPPv4N5cudaq3mpi9num_ranksEv"]], "cudaq::mpi::rank (c++ function)": [[2, "_CPPv4N5cudaq3mpi4rankEv"]], "cudaq::noise_model (c++ class)": [[2, "_CPPv4N5cudaq11noise_modelE"]], "cudaq::noise_model::predicatefuncty (c++ type)": [[2, "_CPPv4N5cudaq11noise_model15PredicateFuncTyE"]], "cudaq::noise_model::add_all_qubit_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq11noise_model21add_all_qubit_channelEvRK13kraus_channeli"], [2, "_CPPv4N5cudaq11noise_model21add_all_qubit_channelERKNSt6stringERK13kraus_channeli"]], "cudaq::noise_model::add_channel (c++ function)": [[2, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRK15PredicateFuncTy"], [2, "_CPPv4IDpEN5cudaq11noise_model11add_channelEvRKNSt6vectorINSt6size_tEEERK13kraus_channel"], [2, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERK15PredicateFuncTy"], [2, "_CPPv4N5cudaq11noise_model11add_channelERKNSt6stringERKNSt6vectorINSt6size_tEEERK13kraus_channel"]], "cudaq::noise_model::empty (c++ function)": [[2, "_CPPv4NK5cudaq11noise_model5emptyEv"]], "cudaq::noise_model::get_channels (c++ function)": [[2, "_CPPv4I0ENK5cudaq11noise_model12get_channelsENSt6vectorI13kraus_channelEERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE"], [2, "_CPPv4NK5cudaq11noise_model12get_channelsERKNSt6stringERKNSt6vectorINSt6size_tEEERKNSt6vectorINSt6size_tEEERKNSt6vectorIdEE"]], "cudaq::noise_model::noise_model (c++ function)": [[2, "_CPPv4N5cudaq11noise_model11noise_modelEv"]], "cudaq::noise_model_type (c++ enum)": [[2, "_CPPv4N5cudaq16noise_model_typeE"]], "cudaq::noise_model_type::amplitude_damping_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type25amplitude_damping_channelE"]], "cudaq::noise_model_type::bit_flip_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type16bit_flip_channelE"]], "cudaq::noise_model_type::depolarization_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type22depolarization_channelE"]], "cudaq::noise_model_type::phase_flip_channel (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type18phase_flip_channelE"]], "cudaq::noise_model_type::unknown (c++ enumerator)": [[2, "_CPPv4N5cudaq16noise_model_type7unknownE"]], "cudaq::num_available_gpus (c++ function)": [[2, "_CPPv4N5cudaq18num_available_gpusEv"]], "cudaq::observe (c++ function)": [[2, "_CPPv4I00Dp0EN5cudaq7observeENSt6vectorI14observe_resultEERR13QuantumKernelRK15SpinOpContainerDpRR4Args"], [2, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultNSt6size_tERR13QuantumKernel7spin_opDpRR4Args"], [2, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRK15observe_optionsRR13QuantumKernel7spin_opDpRR4Args"], [2, "_CPPv4I0Dp0EN5cudaq7observeE14observe_resultRR13QuantumKernel7spin_opDpRR4Args"]], "cudaq::observe_options (c++ struct)": [[2, "_CPPv4N5cudaq15observe_optionsE"]], "cudaq::observe_result (c++ class)": [[2, "_CPPv4N5cudaq14observe_resultE"]], "cudaq::observe_result::counts (c++ function)": [[2, "_CPPv4I0EN5cudaq14observe_result6countsE13sample_result10SpinOpType"]], "cudaq::observe_result::dump (c++ function)": [[2, "_CPPv4N5cudaq14observe_result4dumpEv"]], "cudaq::observe_result::expectation (c++ function)": [[2, "_CPPv4I0EN5cudaq14observe_result11expectationEd10SpinOpType"], [2, "_CPPv4N5cudaq14observe_result11expectationEv"]], "cudaq::observe_result::id_coefficient (c++ function)": [[2, "_CPPv4N5cudaq14observe_result14id_coefficientEv"]], "cudaq::observe_result::observe_result (c++ function)": [[2, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op"], [2, "_CPPv4N5cudaq14observe_result14observe_resultEdRK7spin_op13sample_result"]], "cudaq::observe_result::operator double (c++ function)": [[2, "_CPPv4N5cudaq14observe_resultcvdEv"]], "cudaq::observe_result::raw_data (c++ function)": [[2, "_CPPv4N5cudaq14observe_result8raw_dataEv"]], "cudaq::optimizable_function (c++ class)": [[2, "_CPPv4N5cudaq20optimizable_functionE"]], "cudaq::optimization_result (c++ type)": [[2, "_CPPv4N5cudaq19optimization_resultE"]], "cudaq::optimizer (c++ class)": [[2, "_CPPv4N5cudaq9optimizerE"]], "cudaq::optimizer::optimize (c++ function)": [[2, "_CPPv4N5cudaq9optimizer8optimizeEKiRR20optimizable_function"]], "cudaq::optimizer::requiresgradients (c++ function)": [[2, "_CPPv4N5cudaq9optimizer17requiresGradientsEv"]], "cudaq::orca (c++ type)": [[2, "_CPPv4N5cudaq4orcaE"]], "cudaq::orca::sample (c++ function)": [[2, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE"], [2, "_CPPv4N5cudaq4orca6sampleERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE"]], "cudaq::orca::sample_async (c++ function)": [[2, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEERNSt6vectorIdEEiNSt6size_tE"], [2, "_CPPv4N5cudaq4orca12sample_asyncERNSt6vectorINSt6size_tEEERNSt6vectorINSt6size_tEEERNSt6vectorIdEEiNSt6size_tE"]], "cudaq::phase_flip_channel (c++ class)": [[2, "_CPPv4N5cudaq18phase_flip_channelE"]], "cudaq::qreg (c++ class)": [[2, "_CPPv4I_NSt6size_tE_NSt6size_tE0EN5cudaq4qregE"]], "cudaq::qreg::back (c++ function)": [[2, "_CPPv4N5cudaq4qreg4backENSt6size_tE"], [2, "_CPPv4N5cudaq4qreg4backEv"]], "cudaq::qreg::begin (c++ function)": [[2, "_CPPv4N5cudaq4qreg5beginEv"]], "cudaq::qreg::clear (c++ function)": [[2, "_CPPv4N5cudaq4qreg5clearEv"]], "cudaq::qreg::front (c++ function)": [[2, "_CPPv4N5cudaq4qreg5frontENSt6size_tE"], [2, "_CPPv4N5cudaq4qreg5frontEv"]], "cudaq::qreg::operator[] (c++ function)": [[2, "_CPPv4N5cudaq4qregixEKNSt6size_tE"]], "cudaq::qreg::size (c++ function)": [[2, "_CPPv4NK5cudaq4qreg4sizeEv"]], "cudaq::qreg::slice (c++ function)": [[2, "_CPPv4N5cudaq4qreg5sliceENSt6size_tENSt6size_tE"]], "cudaq::qreg::value_type (c++ type)": [[2, "_CPPv4N5cudaq4qreg10value_typeE"]], "cudaq::qspan (c++ class)": [[2, "_CPPv4I_NSt6size_tE_NSt6size_tEEN5cudaq5qspanE"]], "cudaq::quantum_platform (c++ class)": [[2, "_CPPv4N5cudaq16quantum_platformE"]], "cudaq::quantum_platform::clear_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform11clear_shotsEv"]], "cudaq::quantum_platform::connectivity (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12connectivityEv"]], "cudaq::quantum_platform::enqueueasynctask (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tER19KernelExecutionTask"], [2, "_CPPv4N5cudaq16quantum_platform16enqueueAsyncTaskEKNSt6size_tERNSt8functionIFvvEEE"]], "cudaq::quantum_platform::getlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12getLogStreamEv"]], "cudaq::quantum_platform::get_current_qpu (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15get_current_qpuEv"]], "cudaq::quantum_platform::get_exec_ctx (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform12get_exec_ctxEv"]], "cudaq::quantum_platform::get_num_qubits (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE"], [2, "_CPPv4N5cudaq16quantum_platform14get_num_qubitsEv"]], "cudaq::quantum_platform::get_remote_capabilities (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE"]], "cudaq::quantum_platform::get_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9get_shotsEv"]], "cudaq::quantum_platform::is_emulated (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform11is_emulatedEKNSt6size_tE"]], "cudaq::quantum_platform::is_remote (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9is_remoteEKNSt6size_tE"]], "cudaq::quantum_platform::is_simulator (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform12is_simulatorEKNSt6size_tE"]], "cudaq::quantum_platform::launchvqe (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9launchVQEEKNSt6stringEPKvPN5cudaq8gradientEN5cudaq7spin_opERN5cudaq9optimizerEKiKNSt6size_tE"]], "cudaq::quantum_platform::list_platforms (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14list_platformsEv"]], "cudaq::quantum_platform::name (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform4nameEv"]], "cudaq::quantum_platform::num_qpus (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform8num_qpusEv"]], "cudaq::quantum_platform::onrandomseedset (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15onRandomSeedSetENSt6size_tE"]], "cudaq::quantum_platform::resetlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14resetLogStreamEv"]], "cudaq::quantum_platform::reset_exec_ctx (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform14reset_exec_ctxENSt6size_tE"]], "cudaq::quantum_platform::reset_noise (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform11reset_noiseEv"]], "cudaq::quantum_platform::setlogstream (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12setLogStreamERNSt7ostreamE"]], "cudaq::quantum_platform::settargetbackend (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform16setTargetBackendERKNSt6stringE"]], "cudaq::quantum_platform::set_current_qpu (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform15set_current_qpuEKNSt6size_tE"]], "cudaq::quantum_platform::set_exec_ctx (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform12set_exec_ctxEPN5cudaq16ExecutionContextENSt6size_tE"]], "cudaq::quantum_platform::set_noise (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9set_noiseEPK11noise_model"]], "cudaq::quantum_platform::set_shots (c++ function)": [[2, "_CPPv4N5cudaq16quantum_platform9set_shotsEi"]], "cudaq::quantum_platform::supports_conditional_feedback (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform29supports_conditional_feedbackEKNSt6size_tE"]], "cudaq::quantum_platform::supports_task_distribution (c++ function)": [[2, "_CPPv4NK5cudaq16quantum_platform26supports_task_distributionEv"]], "cudaq::qubit (c++ type)": [[2, "_CPPv4N5cudaq5qubitE"]], "cudaq::qudit (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq5quditE"]], "cudaq::qudit::qudit (c++ function)": [[2, "_CPPv4N5cudaq5qudit5quditEv"]], "cudaq::qvector (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq7qvectorE"]], "cudaq::qvector::back (c++ function)": [[2, "_CPPv4N5cudaq7qvector4backENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector4backEv"]], "cudaq::qvector::begin (c++ function)": [[2, "_CPPv4N5cudaq7qvector5beginEv"]], "cudaq::qvector::clear (c++ function)": [[2, "_CPPv4N5cudaq7qvector5clearEv"]], "cudaq::qvector::end (c++ function)": [[2, "_CPPv4N5cudaq7qvector3endEv"]], "cudaq::qvector::front (c++ function)": [[2, "_CPPv4N5cudaq7qvector5frontENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector5frontEv"]], "cudaq::qvector::operator= (c++ function)": [[2, "_CPPv4N5cudaq7qvectoraSERK7qvector"]], "cudaq::qvector::operator[] (c++ function)": [[2, "_CPPv4N5cudaq7qvectorixEKNSt6size_tE"]], "cudaq::qvector::qvector (c++ function)": [[2, "_CPPv4N5cudaq7qvector7qvectorENSt6size_tE"], [2, "_CPPv4N5cudaq7qvector7qvectorERK5state"], [2, "_CPPv4N5cudaq7qvector7qvectorERK7qvector"], [2, "_CPPv4N5cudaq7qvector7qvectorERKNSt6vectorI7complexEEb"], [2, "_CPPv4N5cudaq7qvector7qvectorERR7qvector"]], "cudaq::qvector::size (c++ function)": [[2, "_CPPv4NK5cudaq7qvector4sizeEv"]], "cudaq::qvector::slice (c++ function)": [[2, "_CPPv4N5cudaq7qvector5sliceENSt6size_tENSt6size_tE"]], "cudaq::qvector::value_type (c++ type)": [[2, "_CPPv4N5cudaq7qvector10value_typeE"]], "cudaq::qview (c++ class)": [[2, "_CPPv4I_NSt6size_tEEN5cudaq5qviewE"]], "cudaq::qview::value_type (c++ type)": [[2, "_CPPv4N5cudaq5qview10value_typeE"]], "cudaq::range (c++ function)": [[2, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType"], [2, "_CPPv4I00EN5cudaq5rangeENSt6vectorI11ElementTypeEE11ElementType11ElementType11ElementType"], [2, "_CPPv4N5cudaq5rangeENSt6size_tE"]], "cudaq::real (c++ type)": [[2, "_CPPv4N5cudaq4realE"]], "cudaq::registry (c++ type)": [[2, "_CPPv4N5cudaq8registryE"]], "cudaq::registry::registeredtype (c++ class)": [[2, "_CPPv4I0EN5cudaq8registry14RegisteredTypeE"]], "cudaq::sample (c++ function)": [[2, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRK14sample_optionsRR13QuantumKernelDpRR4Args"], [2, "_CPPv4I0Dp0EN5cudaq6sampleE13sample_resultRR13QuantumKernelDpRR4Args"], [2, "_CPPv4I0Dp0EN5cudaq6sampleEDaNSt6size_tERR13QuantumKernelDpRR4Args"]], "cudaq::sample_options (c++ struct)": [[2, "_CPPv4N5cudaq14sample_optionsE"]], "cudaq::sample_result (c++ class)": [[2, "_CPPv4N5cudaq13sample_resultE"]], "cudaq::sample_result::append (c++ function)": [[2, "_CPPv4N5cudaq13sample_result6appendER15ExecutionResult"]], "cudaq::sample_result::begin (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5beginEv"], [2, "_CPPv4NK5cudaq13sample_result5beginEv"]], "cudaq::sample_result::cbegin (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result6cbeginEv"]], "cudaq::sample_result::cend (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result4cendEv"]], "cudaq::sample_result::clear (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5clearEv"]], "cudaq::sample_result::count (c++ function)": [[2, "_CPPv4N5cudaq13sample_result5countENSt11string_viewEKNSt11string_viewE"]], "cudaq::sample_result::deserialize (c++ function)": [[2, "_CPPv4N5cudaq13sample_result11deserializeERNSt6vectorINSt6size_tEEE"]], "cudaq::sample_result::dump (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result4dumpERNSt7ostreamE"], [2, "_CPPv4NK5cudaq13sample_result4dumpEv"]], "cudaq::sample_result::end (c++ function)": [[2, "_CPPv4N5cudaq13sample_result3endEv"], [2, "_CPPv4NK5cudaq13sample_result3endEv"]], "cudaq::sample_result::exp_val_z (c++ function)": [[2, "_CPPv4N5cudaq13sample_result9exp_val_zEKNSt11string_viewE"]], "cudaq::sample_result::expectation (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result11expectationEKNSt11string_viewE"]], "cudaq::sample_result::get_marginal (c++ function)": [[2, "_CPPv4N5cudaq13sample_result12get_marginalERKNSt6vectorINSt6size_tEEEKNSt11string_viewE"], [2, "_CPPv4N5cudaq13sample_result12get_marginalERRKNSt6vectorINSt6size_tEEEKNSt11string_viewE"]], "cudaq::sample_result::has_even_parity (c++ function)": [[2, "_CPPv4N5cudaq13sample_result15has_even_parityENSt11string_viewE"]], "cudaq::sample_result::has_expectation (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result15has_expectationEKNSt11string_viewE"]], "cudaq::sample_result::most_probable (c++ function)": [[2, "_CPPv4N5cudaq13sample_result13most_probableEKNSt11string_viewE"]], "cudaq::sample_result::operator+= (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultpLERK13sample_result"]], "cudaq::sample_result::operator= (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultaSER13sample_result"]], "cudaq::sample_result::operator== (c++ function)": [[2, "_CPPv4NK5cudaq13sample_resulteqERK13sample_result"]], "cudaq::sample_result::probability (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result11probabilityENSt11string_viewEKNSt11string_viewE"]], "cudaq::sample_result::register_names (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result14register_namesEv"]], "cudaq::sample_result::reorder (c++ function)": [[2, "_CPPv4N5cudaq13sample_result7reorderERKNSt6vectorINSt6size_tEEEKNSt11string_viewE"]], "cudaq::sample_result::sample_result (c++ function)": [[2, "_CPPv4N5cudaq13sample_result13sample_resultER15ExecutionResult"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERK13sample_result"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERNSt6vectorI15ExecutionResultEE"], [2, "_CPPv4N5cudaq13sample_result13sample_resultERR15ExecutionResult"], [2, "_CPPv4N5cudaq13sample_result13sample_resultEdRNSt6vectorI15ExecutionResultEE"], [2, "_CPPv4N5cudaq13sample_result13sample_resultEv"]], "cudaq::sample_result::serialize (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result9serializeEv"]], "cudaq::sample_result::size (c++ function)": [[2, "_CPPv4N5cudaq13sample_result4sizeEKNSt11string_viewE"]], "cudaq::sample_result::to_map (c++ function)": [[2, "_CPPv4NK5cudaq13sample_result6to_mapEKNSt11string_viewE"]], "cudaq::sample_result::~sample_result (c++ function)": [[2, "_CPPv4N5cudaq13sample_resultD0Ev"]], "cudaq::set_noise (c++ function)": [[2, "_CPPv4N5cudaq9set_noiseERKN5cudaq11noise_modelE"]], "cudaq::set_random_seed (c++ function)": [[2, "_CPPv4N5cudaq15set_random_seedENSt6size_tE"]], "cudaq::simulation_precision (c++ enum)": [[2, "_CPPv4N5cudaq20simulation_precisionE"]], "cudaq::simulation_precision::fp32 (c++ enumerator)": [[2, "_CPPv4N5cudaq20simulation_precision4fp32E"]], "cudaq::simulation_precision::fp64 (c++ enumerator)": [[2, "_CPPv4N5cudaq20simulation_precision4fp64E"]], "cudaq::spin_op (c++ class)": [[2, "_CPPv4N5cudaq7spin_opE"]], "cudaq::spin_op::begin (c++ function)": [[2, "_CPPv4N5cudaq7spin_op5beginEv"], [2, "_CPPv4NK5cudaq7spin_op5beginEv"]], "cudaq::spin_op::csr_spmatrix (c++ type)": [[2, "_CPPv4N5cudaq7spin_op12csr_spmatrixE"]], "cudaq::spin_op::distribute_terms (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op16distribute_termsENSt6size_tE"]], "cudaq::spin_op::dump (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op4dumpEv"]], "cudaq::spin_op::end (c++ function)": [[2, "_CPPv4N5cudaq7spin_op3endEv"], [2, "_CPPv4NK5cudaq7spin_op3endEv"]], "cudaq::spin_op::for_each_pauli (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op14for_each_pauliERRNSt8functionIFv5pauliNSt6size_tEEEE"]], "cudaq::spin_op::for_each_term (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op13for_each_termERRNSt8functionIFvR7spin_opEEE"]], "cudaq::spin_op::from_word (c++ function)": [[2, "_CPPv4N5cudaq7spin_op9from_wordERKNSt6stringE"]], "cudaq::spin_op::getdatarepresentation (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op21getDataRepresentationEv"]], "cudaq::spin_op::getdatatuple (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op12getDataTupleEv"]], "cudaq::spin_op::get_coefficient (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op15get_coefficientEv"]], "cudaq::spin_op::get_raw_data (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op12get_raw_dataEv"]], "cudaq::spin_op::is_identity (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op11is_identityEv"]], "cudaq::spin_op::iterator (c++ struct)": [[2, "_CPPv4I0EN5cudaq7spin_op8iteratorE"]], "cudaq::spin_op::num_qubits (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op10num_qubitsEv"]], "cudaq::spin_op::num_terms (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9num_termsEv"]], "cudaq::spin_op::operator*= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opmLEKNSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_opmLEKd"], [2, "_CPPv4N5cudaq7spin_opmLERK7spin_op"]], "cudaq::spin_op::operator+= (c++ function)": [[2, "_CPPv4N5cudaq7spin_oppLERK7spin_op"]], "cudaq::spin_op::operator-= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opmIERK7spin_op"]], "cudaq::spin_op::operator= (c++ function)": [[2, "_CPPv4N5cudaq7spin_opaSERK7spin_op"]], "cudaq::spin_op::operator== (c++ function)": [[2, "_CPPv4NK5cudaq7spin_opeqERK7spin_op"]], "cudaq::spin_op::random (c++ function)": [[2, "_CPPv4N5cudaq7spin_op6randomENSt6size_tENSt6size_tEj"]], "cudaq::spin_op::spin_op (c++ function)": [[2, "_CPPv4N5cudaq7spin_op7spin_opE5pauliKNSt6size_tENSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opENSt6size_tE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERK12spin_op_termRKNSt7complexIdEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERK7spin_op"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt13unordered_mapI12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt4pairIK12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorI12spin_op_termEERKNSt6vectorINSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERKNSt6vectorIdEENSt6size_tE"], [2, "_CPPv4N5cudaq7spin_op7spin_opERNSt4pairIK12spin_op_termNSt7complexIdEEEE"], [2, "_CPPv4N5cudaq7spin_op7spin_opEv"]], "cudaq::spin_op::spin_op_term (c++ type)": [[2, "_CPPv4N5cudaq7spin_op12spin_op_termE"]], "cudaq::spin_op::to_matrix (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9to_matrixEv"]], "cudaq::spin_op::to_sparse_matrix (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op16to_sparse_matrixEv"]], "cudaq::spin_op::to_string (c++ function)": [[2, "_CPPv4NK5cudaq7spin_op9to_stringEb"]], "cudaq::spin_op::~spin_op (c++ function)": [[2, "_CPPv4N5cudaq7spin_opD0Ev"]], "cudaq::state (c++ class)": [[2, "_CPPv4N5cudaq5stateE"]], "cudaq::state::amplitude (c++ function)": [[2, "_CPPv4N5cudaq5state9amplitudeERKNSt6vectorIiEE"]], "cudaq::state::amplitudes (c++ function)": [[2, "_CPPv4N5cudaq5state10amplitudesERKNSt6vectorINSt6vectorIiEEEE"]], "cudaq::state::dump (c++ function)": [[2, "_CPPv4NK5cudaq5state4dumpERNSt7ostreamE"], [2, "_CPPv4NK5cudaq5state4dumpEv"]], "cudaq::state::from_data (c++ function)": [[2, "_CPPv4N5cudaq5state9from_dataERK10state_data"]], "cudaq::state::get_num_qubits (c++ function)": [[2, "_CPPv4NK5cudaq5state14get_num_qubitsEv"]], "cudaq::state::get_num_tensors (c++ function)": [[2, "_CPPv4NK5cudaq5state15get_num_tensorsEv"]], "cudaq::state::get_precision (c++ function)": [[2, "_CPPv4NK5cudaq5state13get_precisionEv"]], "cudaq::state::get_tensor (c++ function)": [[2, "_CPPv4NK5cudaq5state10get_tensorENSt6size_tE"]], "cudaq::state::get_tensors (c++ function)": [[2, "_CPPv4NK5cudaq5state11get_tensorsEv"]], "cudaq::state::is_on_gpu (c++ function)": [[2, "_CPPv4NK5cudaq5state9is_on_gpuEv"]], "cudaq::state::operator() (c++ function)": [[2, "_CPPv4NK5cudaq5stateclENSt6size_tENSt6size_tE"], [2, "_CPPv4NK5cudaq5stateclERKNSt16initializer_listINSt6size_tEEENSt6size_tE"]], "cudaq::state::operator= (c++ function)": [[2, "_CPPv4N5cudaq5stateaSERR5state"]], "cudaq::state::operator[] (c++ function)": [[2, "_CPPv4NK5cudaq5stateixENSt6size_tE"]], "cudaq::state::overlap (c++ function)": [[2, "_CPPv4N5cudaq5state7overlapERK5state"]], "cudaq::state::state (c++ function)": [[2, "_CPPv4N5cudaq5state5stateEP15SimulationState"], [2, "_CPPv4N5cudaq5state5stateERK5state"]], "cudaq::state::to_host (c++ function)": [[2, "_CPPv4I0ENK5cudaq5state7to_hostEvPNSt7complexI10ScalarTypeEENSt6size_tE"]], "cudaq::state_data (c++ type)": [[2, "_CPPv4N5cudaq10state_dataE"]], "cudaq::tensor (c++ type)": [[2, "_CPPv4N5cudaq6tensorE"]], "cudaq::unset_noise (c++ function)": [[2, "_CPPv4N5cudaq11unset_noiseEv"]], "nvqir::mpssimulationstate (c++ class)": [[2, "_CPPv4N5nvqir18MPSSimulationStateE"]], "nvqir::tensornetsimulationstate (c++ class)": [[2, "_CPPv4N5nvqir24TensorNetSimulationStateE"]], "amplitudedampingchannel (class in cudaq)": [[3, "cudaq.AmplitudeDampingChannel"]], "asyncevolveresult (class in cudaq)": [[3, "cudaq.AsyncEvolveResult"]], "asyncobserveresult (class in cudaq)": [[3, "cudaq.AsyncObserveResult"]], "asyncsampleresult (class in cudaq)": [[3, "cudaq.AsyncSampleResult"]], "asyncstateresult (class in cudaq)": [[3, "cudaq.AsyncStateResult"]], "baseintegrator (class in cudaq.operator.integrator)": [[3, "cudaq.operator.integrator.BaseIntegrator"]], "bitflipchannel (class in cudaq)": [[3, "cudaq.BitFlipChannel"]], "cobyla (class in cudaq.optimizers)": [[3, "cudaq.optimizers.COBYLA"]], "centraldifference (class in cudaq.gradients)": [[3, "cudaq.gradients.CentralDifference"]], "complexmatrix (class in cudaq)": [[3, "cudaq.ComplexMatrix"]], "cudensitymatstate (class in cudaq.operator.cudm_state)": [[3, "cudaq.operator.cudm_state.CuDensityMatState"]], "depolarizationchannel (class in cudaq)": [[3, "cudaq.DepolarizationChannel"]], "elementaryoperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ElementaryOperator"]], "evolveresult (class in cudaq)": [[3, "cudaq.EvolveResult"]], "forwarddifference (class in cudaq.gradients)": [[3, "cudaq.gradients.ForwardDifference"]], "gradientdescent (class in cudaq.optimizers)": [[3, "cudaq.optimizers.GradientDescent"]], "initialstate (class in cudaq.operator.helpers)": [[3, "cudaq.operator.helpers.InitialState"]], "kernel (in module cudaq)": [[3, "cudaq.Kernel"]], "krauschannel (class in cudaq)": [[3, "cudaq.KrausChannel"]], "krausoperator (class in cudaq)": [[3, "cudaq.KrausOperator"]], "lbfgs (class in cudaq.optimizers)": [[3, "cudaq.optimizers.LBFGS"]], "neldermead (class in cudaq.optimizers)": [[3, "cudaq.optimizers.NelderMead"]], "noisemodel (class in cudaq)": [[3, "cudaq.NoiseModel"]], "observeresult (class in cudaq)": [[3, "cudaq.ObserveResult"]], "operatorsum (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.OperatorSum"]], "optimizationresult (class in cudaq)": [[3, "cudaq.OptimizationResult"]], "parametershift (class in cudaq.gradients)": [[3, "cudaq.gradients.ParameterShift"]], "phaseflipchannel (class in cudaq)": [[3, "cudaq.PhaseFlipChannel"]], "productoperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ProductOperator"]], "pykernel (class in cudaq)": [[3, "cudaq.PyKernel"]], "pykerneldecorator (class in cudaq)": [[3, "cudaq.PyKernelDecorator"]], "quakevalue (class in cudaq)": [[3, "cudaq.QuakeValue"]], "rydberghamiltonian (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.RydbergHamiltonian"]], "sampleresult (class in cudaq)": [[3, "cudaq.SampleResult"]], "scalaroperator (class in cudaq.operator.expressions)": [[3, "cudaq.operator.expressions.ScalarOperator"]], "schedule (class in cudaq)": [[3, "cudaq.Schedule"]], "simulationprecision (class in cudaq)": [[3, "cudaq.SimulationPrecision"]], "spinoperator (class in cudaq)": [[3, "cudaq.SpinOperator"]], "spinoperator (class in cudaq.operator.definitions)": [[3, "cudaq.operator.definitions.SpinOperator"]], "state (class in cudaq)": [[3, "cudaq.State"]], "target (class in cudaq)": [[3, "cudaq.Target"]], "tensor (class in cudaq)": [[3, "cudaq.Tensor"]], "__add__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__add__"]], "__call__() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.__call__"]], "__getitem__() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.__getitem__"]], "__getitem__() (cudaq.krauschannel method)": [[3, "cudaq.KrausChannel.__getitem__"]], "__getitem__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__getitem__"]], "__getitem__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__getitem__"]], "__init__() (cudaq.amplitudedampingchannel method)": [[3, "cudaq.AmplitudeDampingChannel.__init__"]], "__init__() (cudaq.bitflipchannel method)": [[3, "cudaq.BitFlipChannel.__init__"]], "__init__() (cudaq.depolarizationchannel method)": [[3, "cudaq.DepolarizationChannel.__init__"]], "__init__() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.__init__"]], "__init__() (cudaq.phaseflipchannel method)": [[3, "cudaq.PhaseFlipChannel.__init__"]], "__init__() (cudaq.operator.expressions.rydberghamiltonian method)": [[3, "cudaq.operator.expressions.RydbergHamiltonian.__init__"]], "__iter__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__iter__"]], "__len__() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.__len__"]], "__mul__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__mul__"]], "__neg__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__neg__"]], "__radd__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__radd__"]], "__rmul__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__rmul__"]], "__rsub__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__rsub__"]], "__str__() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.__str__"]], "__str__() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.__str__"]], "__sub__() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.__sub__"]], "add_all_qubit_channel() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.add_all_qubit_channel"]], "add_channel() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.add_channel"]], "all_gather() (in module cudaq.mpi)": [[3, "cudaq.mpi.all_gather"]], "amplitude() (cudaq.state method)": [[3, "cudaq.State.amplitude"]], "amplitudes() (cudaq.state method)": [[3, "cudaq.State.amplitudes"]], "append() (cudaq.krauschannel method)": [[3, "cudaq.KrausChannel.append"]], "argument_count (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.argument_count"]], "arguments (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.arguments"]], "broadcast() (in module cudaq.mpi)": [[3, "cudaq.mpi.broadcast"]], "clear() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.clear"]], "col_count (cudaq.krausoperator property)": [[3, "cudaq.KrausOperator.col_count"]], "compile() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.compile"]], "compute() (cudaq.gradients.centraldifference method)": [[3, "cudaq.gradients.CentralDifference.compute"]], "compute() (cudaq.gradients.forwarddifference method)": [[3, "cudaq.gradients.ForwardDifference.compute"]], "compute() (cudaq.gradients.parametershift method)": [[3, "cudaq.gradients.ParameterShift.compute"]], "count() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.count"]], "counts() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.counts"]], "cudaq": [[3, "module-cudaq"]], "define() (cudaq.operator.expressions.elementaryoperator class method)": [[3, "cudaq.operator.expressions.ElementaryOperator.define"]], "description (cudaq.target property)": [[3, "cudaq.Target.description"]], "deserialize() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.deserialize"]], "draw() (in module cudaq)": [[3, "cudaq.draw"]], "dump() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.dump"]], "dump() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.dump"]], "dump() (cudaq.state method)": [[3, "cudaq.State.dump"]], "evolve() (in module cudaq)": [[3, "cudaq.evolve"]], "evolve_async() (in module cudaq)": [[3, "cudaq.evolve_async"]], "expectation() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.expectation"]], "expectation() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.expectation"]], "expectation_values() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.expectation_values"]], "expectation_z() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.expectation_z"]], "expectation_z() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.expectation_z"]], "extract_c_function_pointer() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.extract_c_function_pointer"]], "final_expectation_values() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.final_expectation_values"]], "final_state() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.final_state"]], "finalize() (in module cudaq.mpi)": [[3, "cudaq.mpi.finalize"]], "from_data() (cudaq.state static method)": [[3, "cudaq.State.from_data"]], "from_json() (cudaq.pykerneldecorator static method)": [[3, "cudaq.PyKernelDecorator.from_json"]], "from_json() (cudaq.gradients.centraldifference static method)": [[3, "cudaq.gradients.CentralDifference.from_json"]], "from_json() (cudaq.gradients.forwarddifference static method)": [[3, "cudaq.gradients.ForwardDifference.from_json"]], "from_json() (cudaq.gradients.parametershift static method)": [[3, "cudaq.gradients.ParameterShift.from_json"]], "from_json() (cudaq.optimizers.cobyla static method)": [[3, "cudaq.optimizers.COBYLA.from_json"]], "from_json() (cudaq.optimizers.gradientdescent static method)": [[3, "cudaq.optimizers.GradientDescent.from_json"]], "from_json() (cudaq.optimizers.lbfgs static method)": [[3, "cudaq.optimizers.LBFGS.from_json"]], "from_json() (cudaq.optimizers.neldermead static method)": [[3, "cudaq.optimizers.NelderMead.from_json"]], "get() (cudaq.asyncevolveresult method)": [[3, "cudaq.AsyncEvolveResult.get"]], "get() (cudaq.asyncobserveresult method)": [[3, "cudaq.AsyncObserveResult.get"]], "get() (cudaq.asyncsampleresult method)": [[3, "cudaq.AsyncSampleResult.get"]], "get() (cudaq.asyncstateresult method)": [[3, "cudaq.AsyncStateResult.get"]], "gettensor() (cudaq.state method)": [[3, "cudaq.State.getTensor"]], "gettensors() (cudaq.state method)": [[3, "cudaq.State.getTensors"]], "get_channels() (cudaq.noisemodel method)": [[3, "cudaq.NoiseModel.get_channels"]], "get_marginal_counts() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_marginal_counts"]], "get_precision() (cudaq.target method)": [[3, "cudaq.Target.get_precision"]], "get_register_counts() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_register_counts"]], "get_sequential_data() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.get_sequential_data"]], "get_spin() (cudaq.observeresult method)": [[3, "cudaq.ObserveResult.get_spin"]], "get_state() (in module cudaq)": [[3, "cudaq.get_state"]], "get_state_async() (in module cudaq)": [[3, "cudaq.get_state_async"]], "get_target() (in module cudaq)": [[3, "cudaq.get_target"]], "get_targets() (in module cudaq)": [[3, "cudaq.get_targets"]], "gradient (class in cudaq.gradients)": [[3, "cudaq.gradients.gradient"]], "has_target() (in module cudaq)": [[3, "cudaq.has_target"]], "initial_parameters (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.initial_parameters"]], "initial_parameters (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.initial_parameters"]], "initial_parameters (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.initial_parameters"]], "initial_parameters (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.initial_parameters"]], "initialize() (in module cudaq.mpi)": [[3, "cudaq.mpi.initialize"]], "initialize_cudaq() (in module cudaq)": [[3, "cudaq.initialize_cudaq"]], "intermediate_states() (cudaq.evolveresult method)": [[3, "cudaq.EvolveResult.intermediate_states"]], "is_emulated() (cudaq.target method)": [[3, "cudaq.Target.is_emulated"]], "is_initialized() (in module cudaq.mpi)": [[3, "cudaq.mpi.is_initialized"]], "is_on_gpu() (cudaq.state method)": [[3, "cudaq.State.is_on_gpu"]], "is_remote() (cudaq.target method)": [[3, "cudaq.Target.is_remote"]], "items() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.items"]], "kernel() (in module cudaq)": [[3, "cudaq.kernel"]], "lower_bounds (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.lower_bounds"]], "lower_bounds (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.lower_bounds"]], "lower_bounds (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.lower_bounds"]], "lower_bounds (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.lower_bounds"]], "make_kernel() (in module cudaq)": [[3, "cudaq.make_kernel"]], "max_iterations (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.max_iterations"]], "max_iterations (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.max_iterations"]], "max_iterations (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.max_iterations"]], "max_iterations (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.max_iterations"]], "merge_kernel() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.merge_kernel"]], "minimal_eigenvalue() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.minimal_eigenvalue"]], "module": [[3, "module-cudaq"]], "most_probable() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.most_probable"]], "name (cudaq.pykernel attribute)": [[3, "cudaq.PyKernel.name"]], "name (cudaq.simulationprecision property)": [[3, "cudaq.SimulationPrecision.name"]], "name (cudaq.target property)": [[3, "cudaq.Target.name"]], "num_available_gpus() (in module cudaq)": [[3, "cudaq.num_available_gpus"]], "num_columns() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.num_columns"]], "num_qpus() (cudaq.target method)": [[3, "cudaq.Target.num_qpus"]], "num_qubits() (cudaq.state method)": [[3, "cudaq.State.num_qubits"]], "num_ranks() (in module cudaq.mpi)": [[3, "cudaq.mpi.num_ranks"]], "num_rows() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.num_rows"]], "observe() (in module cudaq)": [[3, "cudaq.observe"]], "observe_async() (in module cudaq)": [[3, "cudaq.observe_async"]], "optimize() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.optimize"]], "optimize() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.optimize"]], "optimize() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.optimize"]], "optimize() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.optimize"]], "optimizer (class in cudaq.optimizers)": [[3, "cudaq.optimizers.optimizer"]], "overlap() (cudaq.state method)": [[3, "cudaq.State.overlap"]], "platform (cudaq.target property)": [[3, "cudaq.Target.platform"]], "probability() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.probability"]], "qreg (in module cudaq)": [[3, "cudaq.qreg"]], "qubit (class in cudaq)": [[3, "cudaq.qubit"]], "qvector (class in cudaq)": [[3, "cudaq.qvector"]], "rank() (in module cudaq.mpi)": [[3, "cudaq.mpi.rank"]], "register_names (cudaq.sampleresult attribute)": [[3, "cudaq.SampleResult.register_names"]], "requires_gradients() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.requires_gradients"]], "requires_gradients() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.requires_gradients"]], "requires_gradients() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.requires_gradients"]], "requires_gradients() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.requires_gradients"]], "reset_target() (in module cudaq)": [[3, "cudaq.reset_target"]], "row_count (cudaq.krausoperator property)": [[3, "cudaq.KrausOperator.row_count"]], "sample() (in module cudaq)": [[3, "cudaq.sample"]], "sample() (in module cudaq.orca)": [[3, "cudaq.orca.sample"]], "sample_async() (in module cudaq)": [[3, "cudaq.sample_async"]], "serialize() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.serialize"]], "set_noise() (in module cudaq)": [[3, "cudaq.set_noise"]], "set_random_seed() (in module cudaq)": [[3, "cudaq.set_random_seed"]], "set_target() (in module cudaq)": [[3, "cudaq.set_target"]], "simulator (cudaq.target property)": [[3, "cudaq.Target.simulator"]], "slice() (cudaq.quakevalue method)": [[3, "cudaq.QuakeValue.slice"]], "spin.i() (in module cudaq)": [[3, "cudaq.spin.i"]], "spin.x() (in module cudaq)": [[3, "cudaq.spin.x"]], "spin.y() (in module cudaq)": [[3, "cudaq.spin.y"]], "spin.z() (in module cudaq)": [[3, "cudaq.spin.z"]], "synthesize_callable_arguments() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.synthesize_callable_arguments"]], "to_cupy_array() (in module cudaq.operator.cudm_state)": [[3, "cudaq.operator.cudm_state.to_cupy_array"]], "to_json() (cudaq.pykerneldecorator method)": [[3, "cudaq.PyKernelDecorator.to_json"]], "to_json() (cudaq.gradients.centraldifference method)": [[3, "cudaq.gradients.CentralDifference.to_json"]], "to_json() (cudaq.gradients.forwarddifference method)": [[3, "cudaq.gradients.ForwardDifference.to_json"]], "to_json() (cudaq.gradients.parametershift method)": [[3, "cudaq.gradients.ParameterShift.to_json"]], "to_json() (cudaq.optimizers.cobyla method)": [[3, "cudaq.optimizers.COBYLA.to_json"]], "to_json() (cudaq.optimizers.gradientdescent method)": [[3, "cudaq.optimizers.GradientDescent.to_json"]], "to_json() (cudaq.optimizers.lbfgs method)": [[3, "cudaq.optimizers.LBFGS.to_json"]], "to_json() (cudaq.optimizers.neldermead method)": [[3, "cudaq.optimizers.NelderMead.to_json"]], "to_numpy() (cudaq.complexmatrix method)": [[3, "cudaq.ComplexMatrix.to_numpy"]], "translate() (in module cudaq)": [[3, "cudaq.translate"]], "try_init_state() (cudaq.operator.cudm_state.cudensitymatstate method)": [[3, "cudaq.operator.cudm_state.CuDensityMatState.try_init_state"]], "type_to_str() (cudaq.pykerneldecorator static method)": [[3, "cudaq.PyKernelDecorator.type_to_str"]], "unset_noise() (in module cudaq)": [[3, "cudaq.unset_noise"]], "upper_bounds (cudaq.optimizers.cobyla property)": [[3, "cudaq.optimizers.COBYLA.upper_bounds"]], "upper_bounds (cudaq.optimizers.gradientdescent property)": [[3, "cudaq.optimizers.GradientDescent.upper_bounds"]], "upper_bounds (cudaq.optimizers.lbfgs property)": [[3, "cudaq.optimizers.LBFGS.upper_bounds"]], "upper_bounds (cudaq.optimizers.neldermead property)": [[3, "cudaq.optimizers.NelderMead.upper_bounds"]], "values() (cudaq.sampleresult method)": [[3, "cudaq.SampleResult.values"]], "vqe() (in module cudaq)": [[3, "cudaq.vqe"]]}}) \ No newline at end of file diff --git a/pr-2458/specification/cudaq.html b/pr-2458/specification/cudaq.html index 10fcb20df7..9e3048300d 100644 --- a/pr-2458/specification/cudaq.html +++ b/pr-2458/specification/cudaq.html @@ -128,6 +128,12 @@
                                                                                                                                              • Measurements
                                                                                                                                            • +
                                                                                                                                            • Photonic Operations +
                                                                                                                                            • Measuring Kernels @@ -149,6 +155,12 @@
                                                                                                                                          • +
                                                                                                                                          • Executing Photonic Kernels +
                                                                                                                                          • Computing Expectation Values @@ -181,6 +193,7 @@
                                                                                                                                          • Using Quantum Hardware Providers
                                                                                                                                          • Divisive Clustering With Coresets Using CUDA-Q
                                                                                                                                          • @@ -322,6 +344,10 @@
                                                                                                                                          • Stim (CPU)
                                                                                                                                        • +
                                                                                                                                        • Photonics Simulators +
                                                                                                                                        • Fermioniq
                                                                                                                                        • Default Simulator
                                                                                                                                        @@ -333,48 +359,54 @@
                                                                                                                                      • Submission from Python
                                                                                                                                    • -
                                                                                                                                    • IonQ