qiskit 2.0.3__cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qiskit/VERSION.txt +1 -0
- qiskit/__init__.py +141 -0
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/_numpy_compat.py +73 -0
- qiskit/circuit/__init__.py +1343 -0
- qiskit/circuit/_add_control.py +312 -0
- qiskit/circuit/_classical_resource_map.py +150 -0
- qiskit/circuit/_standard_gates_commutations.py +3849 -0
- qiskit/circuit/_utils.py +167 -0
- qiskit/circuit/annotated_operation.py +279 -0
- qiskit/circuit/barrier.py +46 -0
- qiskit/circuit/classical/__init__.py +41 -0
- qiskit/circuit/classical/expr/__init__.py +266 -0
- qiskit/circuit/classical/expr/constructors.py +764 -0
- qiskit/circuit/classical/expr/expr.py +498 -0
- qiskit/circuit/classical/expr/visitors.py +375 -0
- qiskit/circuit/classical/types/__init__.py +113 -0
- qiskit/circuit/classical/types/ordering.py +229 -0
- qiskit/circuit/classical/types/types.py +153 -0
- qiskit/circuit/commutation_checker.py +133 -0
- qiskit/circuit/commutation_library.py +20 -0
- qiskit/circuit/controlflow/__init__.py +59 -0
- qiskit/circuit/controlflow/_builder_utils.py +211 -0
- qiskit/circuit/controlflow/box.py +163 -0
- qiskit/circuit/controlflow/break_loop.py +56 -0
- qiskit/circuit/controlflow/builder.py +791 -0
- qiskit/circuit/controlflow/continue_loop.py +56 -0
- qiskit/circuit/controlflow/control_flow.py +94 -0
- qiskit/circuit/controlflow/for_loop.py +218 -0
- qiskit/circuit/controlflow/if_else.py +498 -0
- qiskit/circuit/controlflow/switch_case.py +411 -0
- qiskit/circuit/controlflow/while_loop.py +166 -0
- qiskit/circuit/controlledgate.py +274 -0
- qiskit/circuit/delay.py +157 -0
- qiskit/circuit/duration.py +80 -0
- qiskit/circuit/equivalence.py +94 -0
- qiskit/circuit/equivalence_library.py +18 -0
- qiskit/circuit/exceptions.py +19 -0
- qiskit/circuit/gate.py +261 -0
- qiskit/circuit/instruction.py +564 -0
- qiskit/circuit/instructionset.py +132 -0
- qiskit/circuit/library/__init__.py +984 -0
- qiskit/circuit/library/arithmetic/__init__.py +40 -0
- qiskit/circuit/library/arithmetic/adders/__init__.py +18 -0
- qiskit/circuit/library/arithmetic/adders/adder.py +235 -0
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +123 -0
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +129 -0
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +95 -0
- qiskit/circuit/library/arithmetic/exact_reciprocal.py +131 -0
- qiskit/circuit/library/arithmetic/functional_pauli_rotations.py +114 -0
- qiskit/circuit/library/arithmetic/integer_comparator.py +200 -0
- qiskit/circuit/library/arithmetic/linear_amplitude_function.py +363 -0
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +243 -0
- qiskit/circuit/library/arithmetic/multipliers/__init__.py +17 -0
- qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +145 -0
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +201 -0
- qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +108 -0
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +502 -0
- qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +387 -0
- qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +493 -0
- qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +389 -0
- qiskit/circuit/library/arithmetic/quadratic_form.py +364 -0
- qiskit/circuit/library/arithmetic/weighted_adder.py +409 -0
- qiskit/circuit/library/basis_change/__init__.py +15 -0
- qiskit/circuit/library/basis_change/qft.py +316 -0
- qiskit/circuit/library/bit_flip_oracle.py +130 -0
- qiskit/circuit/library/blueprintcircuit.py +316 -0
- qiskit/circuit/library/boolean_logic/__init__.py +18 -0
- qiskit/circuit/library/boolean_logic/inner_product.py +157 -0
- qiskit/circuit/library/boolean_logic/quantum_and.py +204 -0
- qiskit/circuit/library/boolean_logic/quantum_or.py +206 -0
- qiskit/circuit/library/boolean_logic/quantum_xor.py +167 -0
- qiskit/circuit/library/data_preparation/__init__.py +57 -0
- qiskit/circuit/library/data_preparation/_z_feature_map.py +115 -0
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +150 -0
- qiskit/circuit/library/data_preparation/initializer.py +107 -0
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +656 -0
- qiskit/circuit/library/data_preparation/state_preparation.py +336 -0
- qiskit/circuit/library/fourier_checking.py +160 -0
- qiskit/circuit/library/generalized_gates/__init__.py +30 -0
- qiskit/circuit/library/generalized_gates/diagonal.py +159 -0
- qiskit/circuit/library/generalized_gates/gms.py +175 -0
- qiskit/circuit/library/generalized_gates/gr.py +219 -0
- qiskit/circuit/library/generalized_gates/isometry.py +370 -0
- qiskit/circuit/library/generalized_gates/linear_function.py +318 -0
- qiskit/circuit/library/generalized_gates/mcg_up_to_diagonal.py +143 -0
- qiskit/circuit/library/generalized_gates/mcmt.py +316 -0
- qiskit/circuit/library/generalized_gates/pauli.py +84 -0
- qiskit/circuit/library/generalized_gates/permutation.py +198 -0
- qiskit/circuit/library/generalized_gates/rv.py +96 -0
- qiskit/circuit/library/generalized_gates/uc.py +303 -0
- qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +164 -0
- qiskit/circuit/library/generalized_gates/ucrx.py +32 -0
- qiskit/circuit/library/generalized_gates/ucry.py +32 -0
- qiskit/circuit/library/generalized_gates/ucrz.py +32 -0
- qiskit/circuit/library/generalized_gates/unitary.py +217 -0
- qiskit/circuit/library/graph_state.py +172 -0
- qiskit/circuit/library/grover_operator.py +583 -0
- qiskit/circuit/library/hamiltonian_gate.py +142 -0
- qiskit/circuit/library/hidden_linear_function.py +163 -0
- qiskit/circuit/library/iqp.py +180 -0
- qiskit/circuit/library/n_local/__init__.py +45 -0
- qiskit/circuit/library/n_local/efficient_su2.py +282 -0
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +520 -0
- qiskit/circuit/library/n_local/excitation_preserving.py +303 -0
- qiskit/circuit/library/n_local/n_local.py +1477 -0
- qiskit/circuit/library/n_local/pauli_two_design.py +246 -0
- qiskit/circuit/library/n_local/qaoa_ansatz.py +367 -0
- qiskit/circuit/library/n_local/real_amplitudes.py +312 -0
- qiskit/circuit/library/n_local/two_local.py +289 -0
- qiskit/circuit/library/overlap.py +183 -0
- qiskit/circuit/library/pauli_evolution.py +201 -0
- qiskit/circuit/library/phase_estimation.py +177 -0
- qiskit/circuit/library/phase_oracle.py +239 -0
- qiskit/circuit/library/quantum_volume.py +180 -0
- qiskit/circuit/library/standard_gates/__init__.py +141 -0
- qiskit/circuit/library/standard_gates/dcx.py +77 -0
- qiskit/circuit/library/standard_gates/ecr.py +129 -0
- qiskit/circuit/library/standard_gates/equivalence_library.py +1800 -0
- qiskit/circuit/library/standard_gates/global_phase.py +84 -0
- qiskit/circuit/library/standard_gates/h.py +253 -0
- qiskit/circuit/library/standard_gates/i.py +76 -0
- qiskit/circuit/library/standard_gates/iswap.py +133 -0
- qiskit/circuit/library/standard_gates/p.py +422 -0
- qiskit/circuit/library/standard_gates/r.py +114 -0
- qiskit/circuit/library/standard_gates/rx.py +293 -0
- qiskit/circuit/library/standard_gates/rxx.py +180 -0
- qiskit/circuit/library/standard_gates/ry.py +286 -0
- qiskit/circuit/library/standard_gates/ryy.py +180 -0
- qiskit/circuit/library/standard_gates/rz.py +307 -0
- qiskit/circuit/library/standard_gates/rzx.py +226 -0
- qiskit/circuit/library/standard_gates/rzz.py +193 -0
- qiskit/circuit/library/standard_gates/s.py +419 -0
- qiskit/circuit/library/standard_gates/swap.py +281 -0
- qiskit/circuit/library/standard_gates/sx.py +310 -0
- qiskit/circuit/library/standard_gates/t.py +178 -0
- qiskit/circuit/library/standard_gates/u.py +395 -0
- qiskit/circuit/library/standard_gates/u1.py +490 -0
- qiskit/circuit/library/standard_gates/u2.py +145 -0
- qiskit/circuit/library/standard_gates/u3.py +428 -0
- qiskit/circuit/library/standard_gates/x.py +1481 -0
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +202 -0
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +236 -0
- qiskit/circuit/library/standard_gates/y.py +257 -0
- qiskit/circuit/library/standard_gates/z.py +338 -0
- qiskit/circuit/library/templates/__init__.py +92 -0
- qiskit/circuit/library/templates/clifford/__init__.py +33 -0
- qiskit/circuit/library/templates/clifford/clifford_2_1.py +34 -0
- qiskit/circuit/library/templates/clifford/clifford_2_2.py +35 -0
- qiskit/circuit/library/templates/clifford/clifford_2_3.py +34 -0
- qiskit/circuit/library/templates/clifford/clifford_2_4.py +34 -0
- qiskit/circuit/library/templates/clifford/clifford_3_1.py +35 -0
- qiskit/circuit/library/templates/clifford/clifford_4_1.py +38 -0
- qiskit/circuit/library/templates/clifford/clifford_4_2.py +37 -0
- qiskit/circuit/library/templates/clifford/clifford_4_3.py +38 -0
- qiskit/circuit/library/templates/clifford/clifford_4_4.py +37 -0
- qiskit/circuit/library/templates/clifford/clifford_5_1.py +40 -0
- qiskit/circuit/library/templates/clifford/clifford_6_1.py +40 -0
- qiskit/circuit/library/templates/clifford/clifford_6_2.py +40 -0
- qiskit/circuit/library/templates/clifford/clifford_6_3.py +40 -0
- qiskit/circuit/library/templates/clifford/clifford_6_4.py +38 -0
- qiskit/circuit/library/templates/clifford/clifford_6_5.py +40 -0
- qiskit/circuit/library/templates/clifford/clifford_8_1.py +42 -0
- qiskit/circuit/library/templates/clifford/clifford_8_2.py +42 -0
- qiskit/circuit/library/templates/clifford/clifford_8_3.py +41 -0
- qiskit/circuit/library/templates/nct/__init__.py +67 -0
- qiskit/circuit/library/templates/nct/template_nct_2a_1.py +34 -0
- qiskit/circuit/library/templates/nct/template_nct_2a_2.py +35 -0
- qiskit/circuit/library/templates/nct/template_nct_2a_3.py +37 -0
- qiskit/circuit/library/templates/nct/template_nct_4a_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_4a_2.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_4a_3.py +39 -0
- qiskit/circuit/library/templates/nct/template_nct_4b_1.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_4b_2.py +39 -0
- qiskit/circuit/library/templates/nct/template_nct_5a_1.py +40 -0
- qiskit/circuit/library/templates/nct/template_nct_5a_2.py +40 -0
- qiskit/circuit/library/templates/nct/template_nct_5a_3.py +40 -0
- qiskit/circuit/library/templates/nct/template_nct_5a_4.py +39 -0
- qiskit/circuit/library/templates/nct/template_nct_6a_1.py +40 -0
- qiskit/circuit/library/templates/nct/template_nct_6a_2.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_6a_3.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_6a_4.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_6b_1.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_6b_2.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_6c_1.py +41 -0
- qiskit/circuit/library/templates/nct/template_nct_7a_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_7b_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_7c_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_7d_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_7e_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_9a_1.py +45 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_10.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_11.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_12.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_2.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_3.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_4.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_5.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_6.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_7.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_8.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9c_9.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_1.py +43 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_10.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_2.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_3.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_4.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_5.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_6.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_7.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_8.py +44 -0
- qiskit/circuit/library/templates/nct/template_nct_9d_9.py +44 -0
- qiskit/circuit/library/templates/rzx/__init__.py +25 -0
- qiskit/circuit/library/templates/rzx/rzx_cy.py +47 -0
- qiskit/circuit/library/templates/rzx/rzx_xz.py +54 -0
- qiskit/circuit/library/templates/rzx/rzx_yz.py +45 -0
- qiskit/circuit/library/templates/rzx/rzx_zz1.py +69 -0
- qiskit/circuit/library/templates/rzx/rzx_zz2.py +59 -0
- qiskit/circuit/library/templates/rzx/rzx_zz3.py +59 -0
- qiskit/circuit/measure.py +53 -0
- qiskit/circuit/operation.py +68 -0
- qiskit/circuit/parameter.py +179 -0
- qiskit/circuit/parameterexpression.py +703 -0
- qiskit/circuit/parametertable.py +119 -0
- qiskit/circuit/parametervector.py +140 -0
- qiskit/circuit/quantumcircuit.py +7540 -0
- qiskit/circuit/quantumcircuitdata.py +136 -0
- qiskit/circuit/random/__init__.py +15 -0
- qiskit/circuit/random/utils.py +366 -0
- qiskit/circuit/reset.py +37 -0
- qiskit/circuit/singleton.py +600 -0
- qiskit/circuit/store.py +89 -0
- qiskit/circuit/tools/__init__.py +16 -0
- qiskit/circuit/tools/pi_check.py +193 -0
- qiskit/circuit/twirling.py +145 -0
- qiskit/compiler/__init__.py +27 -0
- qiskit/compiler/transpiler.py +375 -0
- qiskit/converters/__init__.py +74 -0
- qiskit/converters/circuit_to_dag.py +80 -0
- qiskit/converters/circuit_to_dagdependency.py +49 -0
- qiskit/converters/circuit_to_dagdependency_v2.py +46 -0
- qiskit/converters/circuit_to_gate.py +107 -0
- qiskit/converters/circuit_to_instruction.py +142 -0
- qiskit/converters/dag_to_circuit.py +79 -0
- qiskit/converters/dag_to_dagdependency.py +54 -0
- qiskit/converters/dag_to_dagdependency_v2.py +43 -0
- qiskit/converters/dagdependency_to_circuit.py +40 -0
- qiskit/converters/dagdependency_to_dag.py +48 -0
- qiskit/dagcircuit/__init__.py +55 -0
- qiskit/dagcircuit/collect_blocks.py +407 -0
- qiskit/dagcircuit/dagcircuit.py +24 -0
- qiskit/dagcircuit/dagdependency.py +612 -0
- qiskit/dagcircuit/dagdependency_v2.py +566 -0
- qiskit/dagcircuit/dagdepnode.py +160 -0
- qiskit/dagcircuit/dagnode.py +188 -0
- qiskit/dagcircuit/exceptions.py +42 -0
- qiskit/exceptions.py +153 -0
- qiskit/passmanager/__init__.py +258 -0
- qiskit/passmanager/base_tasks.py +230 -0
- qiskit/passmanager/compilation_status.py +74 -0
- qiskit/passmanager/exceptions.py +19 -0
- qiskit/passmanager/flow_controllers.py +116 -0
- qiskit/passmanager/passmanager.py +353 -0
- qiskit/primitives/__init__.py +490 -0
- qiskit/primitives/backend_estimator_v2.py +530 -0
- qiskit/primitives/backend_sampler_v2.py +339 -0
- qiskit/primitives/base/__init__.py +20 -0
- qiskit/primitives/base/base_estimator.py +247 -0
- qiskit/primitives/base/base_primitive_job.py +78 -0
- qiskit/primitives/base/base_primitive_v1.py +45 -0
- qiskit/primitives/base/base_result_v1.py +65 -0
- qiskit/primitives/base/base_sampler.py +196 -0
- qiskit/primitives/base/estimator_result_v1.py +46 -0
- qiskit/primitives/base/sampler_result_v1.py +45 -0
- qiskit/primitives/base/validation_v1.py +250 -0
- qiskit/primitives/containers/__init__.py +26 -0
- qiskit/primitives/containers/bindings_array.py +391 -0
- qiskit/primitives/containers/bit_array.py +764 -0
- qiskit/primitives/containers/data_bin.py +175 -0
- qiskit/primitives/containers/estimator_pub.py +222 -0
- qiskit/primitives/containers/object_array.py +94 -0
- qiskit/primitives/containers/observables_array.py +296 -0
- qiskit/primitives/containers/primitive_result.py +53 -0
- qiskit/primitives/containers/pub_result.py +51 -0
- qiskit/primitives/containers/sampler_pub.py +193 -0
- qiskit/primitives/containers/sampler_pub_result.py +74 -0
- qiskit/primitives/containers/shape.py +129 -0
- qiskit/primitives/primitive_job.py +81 -0
- qiskit/primitives/statevector_estimator.py +175 -0
- qiskit/primitives/statevector_sampler.py +290 -0
- qiskit/primitives/utils.py +72 -0
- qiskit/providers/__init__.py +677 -0
- qiskit/providers/backend.py +364 -0
- qiskit/providers/basic_provider/__init__.py +47 -0
- qiskit/providers/basic_provider/basic_provider.py +121 -0
- qiskit/providers/basic_provider/basic_provider_job.py +65 -0
- qiskit/providers/basic_provider/basic_provider_tools.py +218 -0
- qiskit/providers/basic_provider/basic_simulator.py +693 -0
- qiskit/providers/basic_provider/exceptions.py +30 -0
- qiskit/providers/exceptions.py +33 -0
- qiskit/providers/fake_provider/__init__.py +69 -0
- qiskit/providers/fake_provider/generic_backend_v2.py +374 -0
- qiskit/providers/fake_provider/utils/__init__.py +15 -0
- qiskit/providers/job.py +147 -0
- qiskit/providers/jobstatus.py +30 -0
- qiskit/providers/options.py +273 -0
- qiskit/providers/providerutils.py +110 -0
- qiskit/qasm/libs/dummy/stdgates.inc +75 -0
- qiskit/qasm/libs/qelib1.inc +266 -0
- qiskit/qasm/libs/stdgates.inc +82 -0
- qiskit/qasm2/__init__.py +669 -0
- qiskit/qasm2/exceptions.py +27 -0
- qiskit/qasm2/export.py +364 -0
- qiskit/qasm2/parse.py +438 -0
- qiskit/qasm3/__init__.py +372 -0
- qiskit/qasm3/ast.py +782 -0
- qiskit/qasm3/exceptions.py +27 -0
- qiskit/qasm3/experimental.py +70 -0
- qiskit/qasm3/exporter.py +1340 -0
- qiskit/qasm3/printer.py +608 -0
- qiskit/qpy/__init__.py +1965 -0
- qiskit/qpy/binary_io/__init__.py +35 -0
- qiskit/qpy/binary_io/circuits.py +1455 -0
- qiskit/qpy/binary_io/parse_sympy_repr.py +121 -0
- qiskit/qpy/binary_io/schedules.py +308 -0
- qiskit/qpy/binary_io/value.py +1165 -0
- qiskit/qpy/common.py +353 -0
- qiskit/qpy/exceptions.py +53 -0
- qiskit/qpy/formats.py +442 -0
- qiskit/qpy/interface.py +344 -0
- qiskit/qpy/type_keys.py +409 -0
- qiskit/quantum_info/__init__.py +162 -0
- qiskit/quantum_info/analysis/__init__.py +17 -0
- qiskit/quantum_info/analysis/average.py +47 -0
- qiskit/quantum_info/analysis/distance.py +104 -0
- qiskit/quantum_info/analysis/make_observable.py +44 -0
- qiskit/quantum_info/analysis/z2_symmetries.py +484 -0
- qiskit/quantum_info/operators/__init__.py +28 -0
- qiskit/quantum_info/operators/base_operator.py +145 -0
- qiskit/quantum_info/operators/channel/__init__.py +29 -0
- qiskit/quantum_info/operators/channel/chi.py +191 -0
- qiskit/quantum_info/operators/channel/choi.py +218 -0
- qiskit/quantum_info/operators/channel/kraus.py +337 -0
- qiskit/quantum_info/operators/channel/ptm.py +204 -0
- qiskit/quantum_info/operators/channel/quantum_channel.py +348 -0
- qiskit/quantum_info/operators/channel/stinespring.py +296 -0
- qiskit/quantum_info/operators/channel/superop.py +373 -0
- qiskit/quantum_info/operators/channel/transformations.py +490 -0
- qiskit/quantum_info/operators/custom_iterator.py +48 -0
- qiskit/quantum_info/operators/dihedral/__init__.py +18 -0
- qiskit/quantum_info/operators/dihedral/dihedral.py +511 -0
- qiskit/quantum_info/operators/dihedral/dihedral_circuits.py +216 -0
- qiskit/quantum_info/operators/dihedral/polynomial.py +313 -0
- qiskit/quantum_info/operators/dihedral/random.py +64 -0
- qiskit/quantum_info/operators/linear_op.py +25 -0
- qiskit/quantum_info/operators/measures.py +418 -0
- qiskit/quantum_info/operators/mixins/__init__.py +52 -0
- qiskit/quantum_info/operators/mixins/adjoint.py +52 -0
- qiskit/quantum_info/operators/mixins/group.py +171 -0
- qiskit/quantum_info/operators/mixins/linear.py +84 -0
- qiskit/quantum_info/operators/mixins/multiply.py +62 -0
- qiskit/quantum_info/operators/mixins/tolerances.py +72 -0
- qiskit/quantum_info/operators/op_shape.py +525 -0
- qiskit/quantum_info/operators/operator.py +869 -0
- qiskit/quantum_info/operators/operator_utils.py +76 -0
- qiskit/quantum_info/operators/predicates.py +183 -0
- qiskit/quantum_info/operators/random.py +154 -0
- qiskit/quantum_info/operators/scalar_op.py +254 -0
- qiskit/quantum_info/operators/symplectic/__init__.py +23 -0
- qiskit/quantum_info/operators/symplectic/base_pauli.py +719 -0
- qiskit/quantum_info/operators/symplectic/clifford.py +1032 -0
- qiskit/quantum_info/operators/symplectic/clifford_circuits.py +558 -0
- qiskit/quantum_info/operators/symplectic/pauli.py +755 -0
- qiskit/quantum_info/operators/symplectic/pauli_list.py +1242 -0
- qiskit/quantum_info/operators/symplectic/pauli_utils.py +40 -0
- qiskit/quantum_info/operators/symplectic/random.py +117 -0
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +1239 -0
- qiskit/quantum_info/operators/utils/__init__.py +20 -0
- qiskit/quantum_info/operators/utils/anti_commutator.py +36 -0
- qiskit/quantum_info/operators/utils/commutator.py +36 -0
- qiskit/quantum_info/operators/utils/double_commutator.py +76 -0
- qiskit/quantum_info/quaternion.py +156 -0
- qiskit/quantum_info/random.py +26 -0
- qiskit/quantum_info/states/__init__.py +28 -0
- qiskit/quantum_info/states/densitymatrix.py +857 -0
- qiskit/quantum_info/states/measures.py +288 -0
- qiskit/quantum_info/states/quantum_state.py +503 -0
- qiskit/quantum_info/states/random.py +157 -0
- qiskit/quantum_info/states/stabilizerstate.py +805 -0
- qiskit/quantum_info/states/statevector.py +977 -0
- qiskit/quantum_info/states/utils.py +247 -0
- qiskit/result/__init__.py +61 -0
- qiskit/result/counts.py +189 -0
- qiskit/result/distributions/__init__.py +17 -0
- qiskit/result/distributions/probability.py +100 -0
- qiskit/result/distributions/quasi.py +154 -0
- qiskit/result/exceptions.py +40 -0
- qiskit/result/models.py +241 -0
- qiskit/result/postprocess.py +239 -0
- qiskit/result/result.py +385 -0
- qiskit/result/sampled_expval.py +74 -0
- qiskit/result/utils.py +294 -0
- qiskit/synthesis/__init__.py +240 -0
- qiskit/synthesis/arithmetic/__init__.py +18 -0
- qiskit/synthesis/arithmetic/adders/__init__.py +17 -0
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +154 -0
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +103 -0
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +161 -0
- qiskit/synthesis/arithmetic/comparators/__init__.py +16 -0
- qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
- qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
- qiskit/synthesis/arithmetic/multipliers/__init__.py +16 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +103 -0
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +100 -0
- qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
- qiskit/synthesis/boolean/__init__.py +13 -0
- qiskit/synthesis/boolean/boolean_expression.py +231 -0
- qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
- qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
- qiskit/synthesis/clifford/__init__.py +19 -0
- qiskit/synthesis/clifford/clifford_decompose_ag.py +178 -0
- qiskit/synthesis/clifford/clifford_decompose_bm.py +46 -0
- qiskit/synthesis/clifford/clifford_decompose_full.py +64 -0
- qiskit/synthesis/clifford/clifford_decompose_greedy.py +58 -0
- qiskit/synthesis/clifford/clifford_decompose_layers.py +447 -0
- qiskit/synthesis/cnotdihedral/__init__.py +17 -0
- qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_full.py +52 -0
- qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_general.py +141 -0
- qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_two_qubits.py +266 -0
- qiskit/synthesis/discrete_basis/__init__.py +16 -0
- qiskit/synthesis/discrete_basis/commutator_decompose.py +265 -0
- qiskit/synthesis/discrete_basis/gate_sequence.py +421 -0
- qiskit/synthesis/discrete_basis/generate_basis_approximations.py +165 -0
- qiskit/synthesis/discrete_basis/solovay_kitaev.py +240 -0
- qiskit/synthesis/evolution/__init__.py +21 -0
- qiskit/synthesis/evolution/evolution_synthesis.py +48 -0
- qiskit/synthesis/evolution/lie_trotter.py +120 -0
- qiskit/synthesis/evolution/matrix_synthesis.py +47 -0
- qiskit/synthesis/evolution/pauli_network.py +80 -0
- qiskit/synthesis/evolution/product_formula.py +313 -0
- qiskit/synthesis/evolution/qdrift.py +130 -0
- qiskit/synthesis/evolution/suzuki_trotter.py +224 -0
- qiskit/synthesis/linear/__init__.py +26 -0
- qiskit/synthesis/linear/cnot_synth.py +69 -0
- qiskit/synthesis/linear/linear_circuits_utils.py +128 -0
- qiskit/synthesis/linear/linear_depth_lnn.py +61 -0
- qiskit/synthesis/linear/linear_matrix_utils.py +27 -0
- qiskit/synthesis/linear_phase/__init__.py +17 -0
- qiskit/synthesis/linear_phase/cnot_phase_synth.py +206 -0
- qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +61 -0
- qiskit/synthesis/linear_phase/cz_depth_lnn.py +58 -0
- qiskit/synthesis/multi_controlled/__init__.py +25 -0
- qiskit/synthesis/multi_controlled/mcmt_vchain.py +52 -0
- qiskit/synthesis/multi_controlled/mcx_synthesis.py +359 -0
- qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
- qiskit/synthesis/one_qubit/__init__.py +15 -0
- qiskit/synthesis/one_qubit/one_qubit_decompose.py +288 -0
- qiskit/synthesis/permutation/__init__.py +18 -0
- qiskit/synthesis/permutation/permutation_full.py +78 -0
- qiskit/synthesis/permutation/permutation_lnn.py +54 -0
- qiskit/synthesis/permutation/permutation_reverse_lnn.py +93 -0
- qiskit/synthesis/permutation/permutation_utils.py +16 -0
- qiskit/synthesis/qft/__init__.py +16 -0
- qiskit/synthesis/qft/qft_decompose_full.py +97 -0
- qiskit/synthesis/qft/qft_decompose_lnn.py +79 -0
- qiskit/synthesis/stabilizer/__init__.py +16 -0
- qiskit/synthesis/stabilizer/stabilizer_circuit.py +149 -0
- qiskit/synthesis/stabilizer/stabilizer_decompose.py +194 -0
- qiskit/synthesis/two_qubit/__init__.py +20 -0
- qiskit/synthesis/two_qubit/local_invariance.py +63 -0
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +583 -0
- qiskit/synthesis/two_qubit/xx_decompose/__init__.py +19 -0
- qiskit/synthesis/two_qubit/xx_decompose/circuits.py +300 -0
- qiskit/synthesis/two_qubit/xx_decompose/decomposer.py +324 -0
- qiskit/synthesis/two_qubit/xx_decompose/embodiments.py +163 -0
- qiskit/synthesis/two_qubit/xx_decompose/paths.py +412 -0
- qiskit/synthesis/two_qubit/xx_decompose/polytopes.py +262 -0
- qiskit/synthesis/two_qubit/xx_decompose/utilities.py +40 -0
- qiskit/synthesis/two_qubit/xx_decompose/weyl.py +133 -0
- qiskit/synthesis/unitary/__init__.py +13 -0
- qiskit/synthesis/unitary/aqc/__init__.py +177 -0
- qiskit/synthesis/unitary/aqc/approximate.py +116 -0
- qiskit/synthesis/unitary/aqc/aqc.py +175 -0
- qiskit/synthesis/unitary/aqc/cnot_structures.py +300 -0
- qiskit/synthesis/unitary/aqc/cnot_unit_circuit.py +103 -0
- qiskit/synthesis/unitary/aqc/cnot_unit_objective.py +299 -0
- qiskit/synthesis/unitary/aqc/elementary_operations.py +108 -0
- qiskit/synthesis/unitary/aqc/fast_gradient/__init__.py +164 -0
- qiskit/synthesis/unitary/aqc/fast_gradient/fast_grad_utils.py +237 -0
- qiskit/synthesis/unitary/aqc/fast_gradient/fast_gradient.py +226 -0
- qiskit/synthesis/unitary/aqc/fast_gradient/layer.py +370 -0
- qiskit/synthesis/unitary/aqc/fast_gradient/pmatrix.py +312 -0
- qiskit/synthesis/unitary/qsd.py +288 -0
- qiskit/transpiler/__init__.py +1345 -0
- qiskit/transpiler/basepasses.py +190 -0
- qiskit/transpiler/coupling.py +500 -0
- qiskit/transpiler/exceptions.py +59 -0
- qiskit/transpiler/instruction_durations.py +281 -0
- qiskit/transpiler/layout.py +740 -0
- qiskit/transpiler/passes/__init__.py +276 -0
- qiskit/transpiler/passes/analysis/__init__.py +23 -0
- qiskit/transpiler/passes/analysis/count_ops.py +30 -0
- qiskit/transpiler/passes/analysis/count_ops_longest_path.py +26 -0
- qiskit/transpiler/passes/analysis/dag_longest_path.py +24 -0
- qiskit/transpiler/passes/analysis/depth.py +33 -0
- qiskit/transpiler/passes/analysis/num_qubits.py +26 -0
- qiskit/transpiler/passes/analysis/num_tensor_factors.py +26 -0
- qiskit/transpiler/passes/analysis/resource_estimation.py +41 -0
- qiskit/transpiler/passes/analysis/size.py +36 -0
- qiskit/transpiler/passes/analysis/width.py +27 -0
- qiskit/transpiler/passes/basis/__init__.py +19 -0
- qiskit/transpiler/passes/basis/basis_translator.py +138 -0
- qiskit/transpiler/passes/basis/decompose.py +137 -0
- qiskit/transpiler/passes/basis/translate_parameterized.py +175 -0
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +84 -0
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +110 -0
- qiskit/transpiler/passes/layout/__init__.py +26 -0
- qiskit/transpiler/passes/layout/_csp_custom_solver.py +65 -0
- qiskit/transpiler/passes/layout/apply_layout.py +128 -0
- qiskit/transpiler/passes/layout/csp_layout.py +132 -0
- qiskit/transpiler/passes/layout/dense_layout.py +177 -0
- qiskit/transpiler/passes/layout/disjoint_utils.py +219 -0
- qiskit/transpiler/passes/layout/enlarge_with_ancilla.py +49 -0
- qiskit/transpiler/passes/layout/full_ancilla_allocation.py +116 -0
- qiskit/transpiler/passes/layout/layout_2q_distance.py +77 -0
- qiskit/transpiler/passes/layout/sabre_layout.py +506 -0
- qiskit/transpiler/passes/layout/sabre_pre_layout.py +225 -0
- qiskit/transpiler/passes/layout/set_layout.py +69 -0
- qiskit/transpiler/passes/layout/trivial_layout.py +66 -0
- qiskit/transpiler/passes/layout/vf2_layout.py +256 -0
- qiskit/transpiler/passes/layout/vf2_post_layout.py +376 -0
- qiskit/transpiler/passes/layout/vf2_utils.py +235 -0
- qiskit/transpiler/passes/optimization/__init__.py +42 -0
- qiskit/transpiler/passes/optimization/_gate_extension.py +80 -0
- qiskit/transpiler/passes/optimization/collect_1q_runs.py +31 -0
- qiskit/transpiler/passes/optimization/collect_2q_blocks.py +35 -0
- qiskit/transpiler/passes/optimization/collect_and_collapse.py +117 -0
- qiskit/transpiler/passes/optimization/collect_cliffords.py +109 -0
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +85 -0
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +242 -0
- qiskit/transpiler/passes/optimization/commutation_analysis.py +44 -0
- qiskit/transpiler/passes/optimization/commutative_cancellation.py +82 -0
- qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +140 -0
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +176 -0
- qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
- qiskit/transpiler/passes/optimization/elide_permutations.py +91 -0
- qiskit/transpiler/passes/optimization/hoare_opt.py +420 -0
- qiskit/transpiler/passes/optimization/inverse_cancellation.py +95 -0
- qiskit/transpiler/passes/optimization/light_cone.py +135 -0
- qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +267 -0
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +250 -0
- qiskit/transpiler/passes/optimization/optimize_1q_gates.py +384 -0
- qiskit/transpiler/passes/optimization/optimize_annotated.py +449 -0
- qiskit/transpiler/passes/optimization/optimize_cliffords.py +89 -0
- qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +71 -0
- qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py +41 -0
- qiskit/transpiler/passes/optimization/remove_final_reset.py +37 -0
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +70 -0
- qiskit/transpiler/passes/optimization/remove_reset_in_zero_state.py +37 -0
- qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +50 -0
- qiskit/transpiler/passes/optimization/split_2q_unitaries.py +63 -0
- qiskit/transpiler/passes/optimization/template_matching/__init__.py +19 -0
- qiskit/transpiler/passes/optimization/template_matching/backward_match.py +749 -0
- qiskit/transpiler/passes/optimization/template_matching/forward_match.py +452 -0
- qiskit/transpiler/passes/optimization/template_matching/maximal_matches.py +77 -0
- qiskit/transpiler/passes/optimization/template_matching/template_matching.py +370 -0
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +639 -0
- qiskit/transpiler/passes/optimization/template_optimization.py +158 -0
- qiskit/transpiler/passes/routing/__init__.py +21 -0
- qiskit/transpiler/passes/routing/algorithms/__init__.py +33 -0
- qiskit/transpiler/passes/routing/algorithms/token_swapper.py +105 -0
- qiskit/transpiler/passes/routing/algorithms/types.py +46 -0
- qiskit/transpiler/passes/routing/algorithms/util.py +103 -0
- qiskit/transpiler/passes/routing/basic_swap.py +166 -0
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/__init__.py +25 -0
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_block.py +60 -0
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +397 -0
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/pauli_2q_evolution_commutation.py +145 -0
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +306 -0
- qiskit/transpiler/passes/routing/layout_transformation.py +119 -0
- qiskit/transpiler/passes/routing/lookahead_swap.py +390 -0
- qiskit/transpiler/passes/routing/sabre_swap.py +463 -0
- qiskit/transpiler/passes/routing/star_prerouting.py +408 -0
- qiskit/transpiler/passes/routing/utils.py +35 -0
- qiskit/transpiler/passes/scheduling/__init__.py +21 -0
- qiskit/transpiler/passes/scheduling/alignments/__init__.py +79 -0
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +70 -0
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +251 -0
- qiskit/transpiler/passes/scheduling/padding/__init__.py +16 -0
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +284 -0
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +415 -0
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +90 -0
- qiskit/transpiler/passes/scheduling/scheduling/__init__.py +17 -0
- qiskit/transpiler/passes/scheduling/scheduling/alap.py +93 -0
- qiskit/transpiler/passes/scheduling/scheduling/asap.py +100 -0
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +88 -0
- qiskit/transpiler/passes/scheduling/scheduling/set_io_latency.py +64 -0
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +237 -0
- qiskit/transpiler/passes/synthesis/__init__.py +20 -0
- qiskit/transpiler/passes/synthesis/aqc_plugin.py +153 -0
- qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +429 -0
- qiskit/transpiler/passes/synthesis/hls_plugins.py +1963 -0
- qiskit/transpiler/passes/synthesis/linear_functions_synthesis.py +41 -0
- qiskit/transpiler/passes/synthesis/plugin.py +738 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +313 -0
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +425 -0
- qiskit/transpiler/passes/utils/__init__.py +32 -0
- qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +41 -0
- qiskit/transpiler/passes/utils/check_gate_direction.py +60 -0
- qiskit/transpiler/passes/utils/check_map.py +78 -0
- qiskit/transpiler/passes/utils/contains_instruction.py +45 -0
- qiskit/transpiler/passes/utils/control_flow.py +61 -0
- qiskit/transpiler/passes/utils/dag_fixed_point.py +36 -0
- qiskit/transpiler/passes/utils/error.py +69 -0
- qiskit/transpiler/passes/utils/filter_op_nodes.py +66 -0
- qiskit/transpiler/passes/utils/fixed_point.py +48 -0
- qiskit/transpiler/passes/utils/gate_direction.py +93 -0
- qiskit/transpiler/passes/utils/gates_basis.py +51 -0
- qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +163 -0
- qiskit/transpiler/passes/utils/minimum_point.py +118 -0
- qiskit/transpiler/passes/utils/remove_barriers.py +50 -0
- qiskit/transpiler/passes/utils/remove_final_measurements.py +121 -0
- qiskit/transpiler/passes/utils/unroll_forloops.py +81 -0
- qiskit/transpiler/passmanager.py +503 -0
- qiskit/transpiler/passmanager_config.py +151 -0
- qiskit/transpiler/preset_passmanagers/__init__.py +93 -0
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +993 -0
- qiskit/transpiler/preset_passmanagers/common.py +672 -0
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +437 -0
- qiskit/transpiler/preset_passmanagers/level0.py +104 -0
- qiskit/transpiler/preset_passmanagers/level1.py +108 -0
- qiskit/transpiler/preset_passmanagers/level2.py +109 -0
- qiskit/transpiler/preset_passmanagers/level3.py +110 -0
- qiskit/transpiler/preset_passmanagers/plugin.py +346 -0
- qiskit/transpiler/target.py +905 -0
- qiskit/transpiler/timing_constraints.py +59 -0
- qiskit/user_config.py +266 -0
- qiskit/utils/__init__.py +90 -0
- qiskit/utils/classtools.py +146 -0
- qiskit/utils/deprecation.py +382 -0
- qiskit/utils/lazy_tester.py +363 -0
- qiskit/utils/optionals.py +354 -0
- qiskit/utils/parallel.py +318 -0
- qiskit/utils/units.py +146 -0
- qiskit/version.py +84 -0
- qiskit/visualization/__init__.py +290 -0
- qiskit/visualization/array.py +207 -0
- qiskit/visualization/bloch.py +778 -0
- qiskit/visualization/circuit/__init__.py +15 -0
- qiskit/visualization/circuit/_utils.py +675 -0
- qiskit/visualization/circuit/circuit_visualization.py +735 -0
- qiskit/visualization/circuit/latex.py +661 -0
- qiskit/visualization/circuit/matplotlib.py +2019 -0
- qiskit/visualization/circuit/qcstyle.py +278 -0
- qiskit/visualization/circuit/styles/__init__.py +13 -0
- qiskit/visualization/circuit/styles/bw.json +202 -0
- qiskit/visualization/circuit/styles/clifford.json +202 -0
- qiskit/visualization/circuit/styles/iqp-dark.json +214 -0
- qiskit/visualization/circuit/styles/iqp.json +214 -0
- qiskit/visualization/circuit/styles/textbook.json +202 -0
- qiskit/visualization/circuit/text.py +1849 -0
- qiskit/visualization/circuit_visualization.py +19 -0
- qiskit/visualization/counts_visualization.py +487 -0
- qiskit/visualization/dag_visualization.py +318 -0
- qiskit/visualization/exceptions.py +21 -0
- qiskit/visualization/gate_map.py +1424 -0
- qiskit/visualization/library.py +40 -0
- qiskit/visualization/pass_manager_visualization.py +312 -0
- qiskit/visualization/state_visualization.py +1546 -0
- qiskit/visualization/timeline/__init__.py +21 -0
- qiskit/visualization/timeline/core.py +495 -0
- qiskit/visualization/timeline/drawings.py +260 -0
- qiskit/visualization/timeline/generators.py +506 -0
- qiskit/visualization/timeline/interface.py +444 -0
- qiskit/visualization/timeline/layouts.py +115 -0
- qiskit/visualization/timeline/plotters/__init__.py +16 -0
- qiskit/visualization/timeline/plotters/base_plotter.py +58 -0
- qiskit/visualization/timeline/plotters/matplotlib.py +195 -0
- qiskit/visualization/timeline/stylesheet.py +301 -0
- qiskit/visualization/timeline/types.py +148 -0
- qiskit/visualization/transition_visualization.py +369 -0
- qiskit/visualization/utils.py +49 -0
- qiskit-2.0.3.dist-info/METADATA +220 -0
- qiskit-2.0.3.dist-info/RECORD +690 -0
- qiskit-2.0.3.dist-info/WHEEL +6 -0
- qiskit-2.0.3.dist-info/entry_points.txt +82 -0
- qiskit-2.0.3.dist-info/licenses/LICENSE.txt +203 -0
- qiskit-2.0.3.dist-info/top_level.txt +1 -0
qiskit/result/utils.py
ADDED
@@ -0,0 +1,294 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2017, 2018.
|
4
|
+
#
|
5
|
+
# This code is licensed under the Apache License, Version 2.0. You may
|
6
|
+
# obtain a copy of this license in the LICENSE.txt file in the root directory
|
7
|
+
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
|
8
|
+
#
|
9
|
+
# Any modifications or derivative works of this code must retain this
|
10
|
+
# copyright notice, and modified files need to carry a notice indicating
|
11
|
+
# that they have been altered from the originals.
|
12
|
+
|
13
|
+
|
14
|
+
"""Utility functions for working with Results."""
|
15
|
+
|
16
|
+
from typing import Sequence, Union, Optional, Dict, List
|
17
|
+
from collections import Counter
|
18
|
+
from copy import deepcopy
|
19
|
+
|
20
|
+
import numpy as np
|
21
|
+
|
22
|
+
from qiskit.exceptions import QiskitError
|
23
|
+
from qiskit.result.result import Result
|
24
|
+
from qiskit.result.counts import Counts
|
25
|
+
from qiskit.result.distributions.probability import ProbDistribution
|
26
|
+
from qiskit.result.distributions.quasi import QuasiDistribution
|
27
|
+
from qiskit.result.postprocess import _bin_to_hex
|
28
|
+
|
29
|
+
from qiskit._accelerate import results as results_rs # pylint: disable=no-name-in-module
|
30
|
+
|
31
|
+
|
32
|
+
def marginal_counts(
|
33
|
+
result: Union[dict, Result],
|
34
|
+
indices: Optional[List[int]] = None,
|
35
|
+
inplace: bool = False,
|
36
|
+
format_marginal: bool = False,
|
37
|
+
marginalize_memory: Optional[bool] = True,
|
38
|
+
) -> Union[Dict[str, int], Result]:
|
39
|
+
"""Marginalize counts from an experiment over some indices of interest.
|
40
|
+
|
41
|
+
Args:
|
42
|
+
result: result to be marginalized
|
43
|
+
(a Result object or a dict(str, int) of counts).
|
44
|
+
indices: The bit positions of interest
|
45
|
+
to marginalize over. If ``None`` (default), do not marginalize at all.
|
46
|
+
inplace: Default: False. Operates on the original Result
|
47
|
+
argument if True, leading to loss of original Job Result.
|
48
|
+
It has no effect if ``result`` is a dict.
|
49
|
+
format_marginal: Default: False. If True, takes the output of
|
50
|
+
marginalize and formats it with placeholders between cregs and
|
51
|
+
for non-indices.
|
52
|
+
marginalize_memory: If True, then also marginalize the memory field (if present).
|
53
|
+
If False, remove the memory field from the result.
|
54
|
+
If None, leave the memory field as is.
|
55
|
+
|
56
|
+
Returns:
|
57
|
+
Result or dict(str, int): A Result object or a dictionary with
|
58
|
+
the observed counts, marginalized to only account for frequency
|
59
|
+
of observations of bits of interest.
|
60
|
+
|
61
|
+
Raises:
|
62
|
+
QiskitError: in case of invalid indices to marginalize over.
|
63
|
+
"""
|
64
|
+
if isinstance(result, Result):
|
65
|
+
if not inplace:
|
66
|
+
result = deepcopy(result)
|
67
|
+
for i, experiment_result in enumerate(result.results):
|
68
|
+
counts = result.get_counts(i)
|
69
|
+
new_counts = _marginalize(counts, indices)
|
70
|
+
new_counts_hex = {}
|
71
|
+
for k, v in new_counts.items():
|
72
|
+
new_counts_hex[_bin_to_hex(k)] = v
|
73
|
+
experiment_result.data.counts = new_counts_hex
|
74
|
+
|
75
|
+
if indices is not None:
|
76
|
+
experiment_result.header["memory_slots"] = len(indices)
|
77
|
+
csize = experiment_result.header.get("creg_sizes", None)
|
78
|
+
if csize is not None:
|
79
|
+
experiment_result.header["creg_sizes"] = _adjust_creg_sizes(csize, indices)
|
80
|
+
|
81
|
+
if getattr(experiment_result.data, "memory", None) is not None and indices is not None:
|
82
|
+
if marginalize_memory is False:
|
83
|
+
delattr(experiment_result.data, "memory")
|
84
|
+
elif marginalize_memory is None:
|
85
|
+
pass # leave as is
|
86
|
+
else:
|
87
|
+
sorted_indices = sorted(
|
88
|
+
indices, reverse=True
|
89
|
+
) # same convention as for the counts
|
90
|
+
experiment_result.data.memory = results_rs.marginal_memory(
|
91
|
+
experiment_result.data.memory, sorted_indices, return_hex=True
|
92
|
+
)
|
93
|
+
return result
|
94
|
+
else:
|
95
|
+
marg_counts = _marginalize(result, indices)
|
96
|
+
if format_marginal and indices is not None:
|
97
|
+
marg_counts = _format_marginal(result, marg_counts, indices)
|
98
|
+
return marg_counts
|
99
|
+
|
100
|
+
|
101
|
+
def _adjust_creg_sizes(creg_sizes, indices):
|
102
|
+
"""Helper to reduce creg_sizes to match indices"""
|
103
|
+
|
104
|
+
# Zero out creg_sizes list
|
105
|
+
new_creg_sizes = [[creg[0], 0] for creg in creg_sizes]
|
106
|
+
indices_sort = sorted(indices)
|
107
|
+
|
108
|
+
# Get creg num values and then convert to the cumulative last index per creg.
|
109
|
+
# e.g. [2, 1, 3] => [1, 2, 5]
|
110
|
+
creg_nums = [x for _, x in creg_sizes]
|
111
|
+
creg_limits = [sum(creg_nums[0:x:1]) - 1 for x in range(0, len(creg_nums) + 1)][1:]
|
112
|
+
|
113
|
+
# Now iterate over indices and find which creg that index is in.
|
114
|
+
# When found increment the creg size
|
115
|
+
creg_idx = 0
|
116
|
+
for ind in indices_sort:
|
117
|
+
for idx in range(creg_idx, len(creg_limits)):
|
118
|
+
if ind <= creg_limits[idx]:
|
119
|
+
creg_idx = idx
|
120
|
+
new_creg_sizes[idx][1] += 1
|
121
|
+
break
|
122
|
+
# Throw away any cregs with 0 size
|
123
|
+
new_creg_sizes = [creg for creg in new_creg_sizes if creg[1] != 0]
|
124
|
+
return new_creg_sizes
|
125
|
+
|
126
|
+
|
127
|
+
def marginal_memory(
|
128
|
+
memory: Union[List[str], np.ndarray],
|
129
|
+
indices: Optional[List[int]] = None,
|
130
|
+
int_return: bool = False,
|
131
|
+
hex_return: bool = False,
|
132
|
+
avg_data: bool = False,
|
133
|
+
parallel_threshold: int = 1000,
|
134
|
+
) -> Union[List[str], np.ndarray]:
|
135
|
+
"""Marginalize shot memory
|
136
|
+
|
137
|
+
This function is multithreaded and will launch a thread pool with threads equal to the number
|
138
|
+
of CPUs by default. You can tune the number of threads with the ``RAYON_NUM_THREADS``
|
139
|
+
environment variable. For example, setting ``RAYON_NUM_THREADS=4`` would limit the thread pool
|
140
|
+
to 4 threads.
|
141
|
+
|
142
|
+
Args:
|
143
|
+
memory: The input memory list, this is either a list of hexadecimal strings to be marginalized
|
144
|
+
representing measure level 2 memory or a numpy array representing level 0 measurement
|
145
|
+
memory (single or avg) or level 1 measurement memory (single or avg).
|
146
|
+
indices: The bit positions of interest to marginalize over. If
|
147
|
+
``None`` (default), do not marginalize at all.
|
148
|
+
int_return: If set to ``True`` the output will be a list of integers.
|
149
|
+
By default the return type is a bit string. This and ``hex_return``
|
150
|
+
are mutually exclusive and can not be specified at the same time. This option only has an
|
151
|
+
effect with memory level 2.
|
152
|
+
hex_return: If set to ``True`` the output will be a list of hexadecimal
|
153
|
+
strings. By default the return type is a bit string. This and
|
154
|
+
``int_return`` are mutually exclusive and can not be specified
|
155
|
+
at the same time. This option only has an effect with memory level 2.
|
156
|
+
avg_data: If a 2 dimensional numpy array is passed in for ``memory`` this can be set to
|
157
|
+
``True`` to indicate it's a avg level 0 data instead of level 1
|
158
|
+
single data.
|
159
|
+
parallel_threshold: The number of elements in ``memory`` to start running in multiple
|
160
|
+
threads. If ``len(memory)`` is >= this value, the function will run in multiple
|
161
|
+
threads. By default this is set to 1000.
|
162
|
+
|
163
|
+
Returns:
|
164
|
+
marginal_memory: The list of marginalized memory
|
165
|
+
|
166
|
+
Raises:
|
167
|
+
ValueError: if both ``int_return`` and ``hex_return`` are set to ``True``
|
168
|
+
"""
|
169
|
+
if int_return and hex_return:
|
170
|
+
raise ValueError("Either int_return or hex_return can be specified but not both")
|
171
|
+
|
172
|
+
if isinstance(memory, np.ndarray):
|
173
|
+
if int_return:
|
174
|
+
raise ValueError("int_return option only works with memory list input")
|
175
|
+
if hex_return:
|
176
|
+
raise ValueError("hex_return option only works with memory list input")
|
177
|
+
if indices is None:
|
178
|
+
return memory.copy()
|
179
|
+
if memory.ndim == 1:
|
180
|
+
return results_rs.marginal_measure_level_1_avg(memory, indices)
|
181
|
+
if memory.ndim == 2:
|
182
|
+
if avg_data:
|
183
|
+
return results_rs.marginal_measure_level_0_avg(memory, indices)
|
184
|
+
else:
|
185
|
+
return results_rs.marginal_measure_level_1(memory, indices)
|
186
|
+
if memory.ndim == 3:
|
187
|
+
return results_rs.marginal_measure_level_0(memory, indices)
|
188
|
+
raise ValueError("Invalid input memory array")
|
189
|
+
return results_rs.marginal_memory(
|
190
|
+
memory,
|
191
|
+
indices,
|
192
|
+
return_int=int_return,
|
193
|
+
return_hex=hex_return,
|
194
|
+
parallel_threshold=parallel_threshold,
|
195
|
+
)
|
196
|
+
|
197
|
+
|
198
|
+
def marginal_distribution(
|
199
|
+
counts: dict,
|
200
|
+
indices: Optional[Sequence[int]] = None,
|
201
|
+
format_marginal: bool = False,
|
202
|
+
) -> Dict[str, int]:
|
203
|
+
"""Marginalize counts from an experiment over some indices of interest.
|
204
|
+
|
205
|
+
Unlike :func:`~.marginal_counts` this function respects the order of
|
206
|
+
the input ``indices``. If the input ``indices`` list is specified then the order
|
207
|
+
the bit indices are specified will be the output order of the bitstrings
|
208
|
+
in the marginalized output.
|
209
|
+
|
210
|
+
Args:
|
211
|
+
counts: result to be marginalized
|
212
|
+
indices: The bit positions of interest
|
213
|
+
to marginalize over. If ``None`` (default), do not marginalize at all.
|
214
|
+
format_marginal: Default: False. If True, takes the output of
|
215
|
+
marginalize and formats it with placeholders between cregs and
|
216
|
+
for non-indices.
|
217
|
+
Returns:
|
218
|
+
dict(str, int): A marginalized dictionary
|
219
|
+
Raises:
|
220
|
+
QiskitError: If any value in ``indices`` is invalid or the ``counts`` dict
|
221
|
+
is invalid.
|
222
|
+
"""
|
223
|
+
num_clbits = len(max(counts.keys()).replace(" ", ""))
|
224
|
+
if indices is not None and (len(indices) == 0 or not set(indices).issubset(range(num_clbits))):
|
225
|
+
raise QiskitError(f"indices must be in range [0, {num_clbits - 1}].")
|
226
|
+
|
227
|
+
if isinstance(counts, Counts):
|
228
|
+
res = results_rs.marginal_counts(counts, indices)
|
229
|
+
elif isinstance(counts, (ProbDistribution, QuasiDistribution)):
|
230
|
+
res = results_rs.marginal_distribution(counts, indices)
|
231
|
+
else:
|
232
|
+
first_value = next(iter(counts.values()))
|
233
|
+
if isinstance(first_value, (int, np.integer)):
|
234
|
+
res = results_rs.marginal_counts(counts, indices)
|
235
|
+
elif isinstance(first_value, (float, np.floating)):
|
236
|
+
res = results_rs.marginal_distribution(counts, indices)
|
237
|
+
else:
|
238
|
+
raise QiskitError("Values of counts must be an int or float")
|
239
|
+
|
240
|
+
if format_marginal and indices is not None:
|
241
|
+
return _format_marginal(counts, res, indices)
|
242
|
+
return res
|
243
|
+
|
244
|
+
|
245
|
+
def _marginalize(counts, indices=None):
|
246
|
+
"""Get the marginal counts for the given set of indices"""
|
247
|
+
num_clbits = len(next(iter(counts)).replace(" ", ""))
|
248
|
+
# Check if we do not need to marginalize and if so, trim
|
249
|
+
# whitespace and '_' and return
|
250
|
+
if (indices is None) or set(range(num_clbits)) == set(indices):
|
251
|
+
ret = {}
|
252
|
+
for key, val in counts.items():
|
253
|
+
key = _remove_space_underscore(key)
|
254
|
+
ret[key] = val
|
255
|
+
return ret
|
256
|
+
|
257
|
+
if not indices or not set(indices).issubset(set(range(num_clbits))):
|
258
|
+
raise QiskitError(f"indices must be in range [0, {num_clbits - 1}].")
|
259
|
+
|
260
|
+
# Sort the indices to keep in descending order
|
261
|
+
# Since bitstrings have qubit-0 as least significant bit
|
262
|
+
indices = sorted(indices, reverse=True)
|
263
|
+
|
264
|
+
# Build the return list
|
265
|
+
new_counts = Counter()
|
266
|
+
for key, val in counts.items():
|
267
|
+
new_key = "".join([_remove_space_underscore(key)[-idx - 1] for idx in indices])
|
268
|
+
new_counts[new_key] += val
|
269
|
+
return dict(new_counts)
|
270
|
+
|
271
|
+
|
272
|
+
def _format_marginal(counts, marg_counts, indices):
|
273
|
+
"""Take the output of marginalize and add placeholders for
|
274
|
+
multiple cregs and non-indices."""
|
275
|
+
format_counts = {}
|
276
|
+
counts_template = next(iter(counts))
|
277
|
+
counts_len = len(counts_template.replace(" ", ""))
|
278
|
+
indices_rev = sorted(indices, reverse=True)
|
279
|
+
|
280
|
+
for count in marg_counts:
|
281
|
+
index_dict = dict(zip(indices_rev, count))
|
282
|
+
count_bits = "".join(
|
283
|
+
[index_dict[index] if index in index_dict else "_" for index in range(counts_len)]
|
284
|
+
)[::-1]
|
285
|
+
for index, bit in enumerate(counts_template):
|
286
|
+
if bit == " ":
|
287
|
+
count_bits = count_bits[:index] + " " + count_bits[index:]
|
288
|
+
format_counts[count_bits] = marg_counts[count]
|
289
|
+
return format_counts
|
290
|
+
|
291
|
+
|
292
|
+
def _remove_space_underscore(bitstring):
|
293
|
+
"""Removes all spaces and underscores from bitstring"""
|
294
|
+
return bitstring.replace(" ", "").replace("_", "")
|
@@ -0,0 +1,240 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2017, 2023.
|
4
|
+
#
|
5
|
+
# This code is licensed under the Apache License, Version 2.0. You may
|
6
|
+
# obtain a copy of this license in the LICENSE.txt file in the root directory
|
7
|
+
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
|
8
|
+
#
|
9
|
+
# Any modifications or derivative works of this code must retain this
|
10
|
+
# copyright notice, and modified files need to carry a notice indicating
|
11
|
+
# that they have been altered from the originals.
|
12
|
+
|
13
|
+
r"""
|
14
|
+
===========================================
|
15
|
+
Circuit Synthesis (:mod:`qiskit.synthesis`)
|
16
|
+
===========================================
|
17
|
+
|
18
|
+
.. currentmodule:: qiskit.synthesis
|
19
|
+
|
20
|
+
.. _evolution_synthesis:
|
21
|
+
|
22
|
+
Evolution Synthesis
|
23
|
+
===================
|
24
|
+
|
25
|
+
.. autosummary::
|
26
|
+
:toctree: ../stubs/
|
27
|
+
|
28
|
+
EvolutionSynthesis
|
29
|
+
ProductFormula
|
30
|
+
LieTrotter
|
31
|
+
SuzukiTrotter
|
32
|
+
MatrixExponential
|
33
|
+
QDrift
|
34
|
+
|
35
|
+
Linear Function Synthesis
|
36
|
+
=========================
|
37
|
+
|
38
|
+
.. autofunction:: synth_cnot_count_full_pmh
|
39
|
+
.. autofunction:: synth_cnot_depth_line_kms
|
40
|
+
|
41
|
+
Linear-Phase Synthesis
|
42
|
+
======================
|
43
|
+
|
44
|
+
.. autofunction:: synth_cz_depth_line_mr
|
45
|
+
.. autofunction:: synth_cx_cz_depth_line_my
|
46
|
+
.. autofunction:: synth_cnot_phase_aam
|
47
|
+
|
48
|
+
Permutation Synthesis
|
49
|
+
=====================
|
50
|
+
|
51
|
+
.. autofunction:: synth_permutation_depth_lnn_kms
|
52
|
+
.. autofunction:: synth_permutation_basic
|
53
|
+
.. autofunction:: synth_permutation_acg
|
54
|
+
.. autofunction:: synth_permutation_reverse_lnn_kms
|
55
|
+
|
56
|
+
Clifford Synthesis
|
57
|
+
==================
|
58
|
+
|
59
|
+
.. autofunction:: synth_clifford_full
|
60
|
+
.. autofunction:: synth_clifford_ag
|
61
|
+
.. autofunction:: synth_clifford_bm
|
62
|
+
.. autofunction:: synth_clifford_greedy
|
63
|
+
.. autofunction:: synth_clifford_layers
|
64
|
+
.. autofunction:: synth_clifford_depth_lnn
|
65
|
+
|
66
|
+
CNOTDihedral Synthesis
|
67
|
+
======================
|
68
|
+
|
69
|
+
.. autofunction:: synth_cnotdihedral_full
|
70
|
+
.. autofunction:: synth_cnotdihedral_two_qubits
|
71
|
+
.. autofunction:: synth_cnotdihedral_general
|
72
|
+
|
73
|
+
Stabilizer State Synthesis
|
74
|
+
==========================
|
75
|
+
|
76
|
+
.. autofunction:: synth_stabilizer_layers
|
77
|
+
.. autofunction:: synth_stabilizer_depth_lnn
|
78
|
+
.. autofunction:: synth_circuit_from_stabilizers
|
79
|
+
|
80
|
+
Discrete Basis Synthesis
|
81
|
+
========================
|
82
|
+
|
83
|
+
.. autosummary::
|
84
|
+
:toctree: ../stubs/
|
85
|
+
|
86
|
+
SolovayKitaevDecomposition
|
87
|
+
|
88
|
+
.. autofunction:: generate_basic_approximations
|
89
|
+
|
90
|
+
Basis Change Synthesis
|
91
|
+
======================
|
92
|
+
|
93
|
+
.. autofunction:: synth_qft_line
|
94
|
+
.. autofunction:: synth_qft_full
|
95
|
+
|
96
|
+
Unitary Synthesis
|
97
|
+
=================
|
98
|
+
|
99
|
+
Decomposition of general :math:`2^n \times 2^n` unitary matrices for any number of qubits.
|
100
|
+
|
101
|
+
.. autofunction:: qs_decomposition
|
102
|
+
|
103
|
+
The Approximate Quantum Compiler is available as the module :mod:`qiskit.synthesis.unitary.aqc`.
|
104
|
+
|
105
|
+
One-Qubit Synthesis
|
106
|
+
===================
|
107
|
+
|
108
|
+
.. autosummary::
|
109
|
+
:toctree: ../stubs/
|
110
|
+
|
111
|
+
OneQubitEulerDecomposer
|
112
|
+
|
113
|
+
Two-Qubit Synthesis
|
114
|
+
===================
|
115
|
+
|
116
|
+
.. autosummary::
|
117
|
+
:toctree: ../stubs/
|
118
|
+
|
119
|
+
TwoQubitBasisDecomposer
|
120
|
+
XXDecomposer
|
121
|
+
TwoQubitWeylDecomposition
|
122
|
+
TwoQubitControlledUDecomposer
|
123
|
+
|
124
|
+
.. autofunction:: two_qubit_cnot_decompose
|
125
|
+
|
126
|
+
Multi Controlled Synthesis
|
127
|
+
==========================
|
128
|
+
|
129
|
+
.. autofunction:: synth_mcmt_vchain
|
130
|
+
.. autofunction:: synth_mcx_n_dirty_i15
|
131
|
+
.. autofunction:: synth_mcx_n_clean_m15
|
132
|
+
.. autofunction:: synth_mcx_1_clean_b95
|
133
|
+
.. autofunction:: synth_mcx_noaux_v24
|
134
|
+
.. autofunction:: synth_mcx_gray_code
|
135
|
+
.. autofunction:: synth_c3x
|
136
|
+
.. autofunction:: synth_c4x
|
137
|
+
|
138
|
+
Binary Arithmetic Synthesis
|
139
|
+
===========================
|
140
|
+
|
141
|
+
Adders
|
142
|
+
------
|
143
|
+
|
144
|
+
.. autofunction:: adder_qft_d00
|
145
|
+
.. autofunction:: adder_ripple_c04
|
146
|
+
.. autofunction:: adder_ripple_v95
|
147
|
+
|
148
|
+
Multipliers
|
149
|
+
-----------
|
150
|
+
|
151
|
+
.. autofunction:: multiplier_cumulative_h18
|
152
|
+
.. autofunction:: multiplier_qft_r17
|
153
|
+
|
154
|
+
Sums
|
155
|
+
----
|
156
|
+
|
157
|
+
.. autofunction:: synth_weighted_sum_carry
|
158
|
+
|
159
|
+
|
160
|
+
Unary Arithmetic Synthesis
|
161
|
+
==========================
|
162
|
+
|
163
|
+
Integer comparators
|
164
|
+
-------------------
|
165
|
+
|
166
|
+
.. autofunction:: synth_integer_comparator_2s
|
167
|
+
.. autofunction:: synth_integer_comparator_greedy
|
168
|
+
|
169
|
+
"""
|
170
|
+
|
171
|
+
from .evolution import (
|
172
|
+
EvolutionSynthesis,
|
173
|
+
ProductFormula,
|
174
|
+
LieTrotter,
|
175
|
+
SuzukiTrotter,
|
176
|
+
MatrixExponential,
|
177
|
+
QDrift,
|
178
|
+
)
|
179
|
+
|
180
|
+
from .permutation import (
|
181
|
+
synth_permutation_depth_lnn_kms,
|
182
|
+
synth_permutation_basic,
|
183
|
+
synth_permutation_acg,
|
184
|
+
synth_permutation_reverse_lnn_kms,
|
185
|
+
)
|
186
|
+
from .linear import (
|
187
|
+
synth_cnot_count_full_pmh,
|
188
|
+
synth_cnot_depth_line_kms,
|
189
|
+
)
|
190
|
+
from .linear_phase import synth_cz_depth_line_mr, synth_cx_cz_depth_line_my, synth_cnot_phase_aam
|
191
|
+
from .clifford import (
|
192
|
+
synth_clifford_full,
|
193
|
+
synth_clifford_ag,
|
194
|
+
synth_clifford_bm,
|
195
|
+
synth_clifford_greedy,
|
196
|
+
synth_clifford_layers,
|
197
|
+
synth_clifford_depth_lnn,
|
198
|
+
)
|
199
|
+
from .cnotdihedral import (
|
200
|
+
synth_cnotdihedral_full,
|
201
|
+
synth_cnotdihedral_two_qubits,
|
202
|
+
synth_cnotdihedral_general,
|
203
|
+
)
|
204
|
+
from .stabilizer import (
|
205
|
+
synth_stabilizer_layers,
|
206
|
+
synth_stabilizer_depth_lnn,
|
207
|
+
synth_circuit_from_stabilizers,
|
208
|
+
)
|
209
|
+
from .discrete_basis import SolovayKitaevDecomposition, generate_basic_approximations
|
210
|
+
from .qft import synth_qft_line, synth_qft_full
|
211
|
+
from .unitary.qsd import qs_decomposition
|
212
|
+
from .unitary import aqc
|
213
|
+
from .one_qubit import OneQubitEulerDecomposer
|
214
|
+
from .two_qubit.xx_decompose import XXDecomposer
|
215
|
+
from .two_qubit.two_qubit_decompose import (
|
216
|
+
TwoQubitBasisDecomposer,
|
217
|
+
two_qubit_cnot_decompose,
|
218
|
+
TwoQubitWeylDecomposition,
|
219
|
+
TwoQubitControlledUDecomposer,
|
220
|
+
)
|
221
|
+
from .multi_controlled import (
|
222
|
+
synth_mcmt_vchain,
|
223
|
+
synth_mcx_n_dirty_i15,
|
224
|
+
synth_mcx_n_clean_m15,
|
225
|
+
synth_mcx_1_clean_b95,
|
226
|
+
synth_mcx_noaux_v24,
|
227
|
+
synth_mcx_gray_code,
|
228
|
+
synth_c3x,
|
229
|
+
synth_c4x,
|
230
|
+
)
|
231
|
+
from .arithmetic import (
|
232
|
+
adder_qft_d00,
|
233
|
+
adder_ripple_c04,
|
234
|
+
adder_ripple_v95,
|
235
|
+
multiplier_cumulative_h18,
|
236
|
+
multiplier_qft_r17,
|
237
|
+
synth_integer_comparator_greedy,
|
238
|
+
synth_integer_comparator_2s,
|
239
|
+
synth_weighted_sum_carry,
|
240
|
+
)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2024.
|
4
|
+
#
|
5
|
+
# This code is licensed under the Apache License, Version 2.0. You may
|
6
|
+
# obtain a copy of this license in the LICENSE.txt file in the root directory
|
7
|
+
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
|
8
|
+
#
|
9
|
+
# Any modifications or derivative works of this code must retain this
|
10
|
+
# copyright notice, and modified files need to carry a notice indicating
|
11
|
+
# that they have been altered from the originals.
|
12
|
+
|
13
|
+
"""Synthesis for arithmetic circuits."""
|
14
|
+
|
15
|
+
from .comparators import synth_integer_comparator_2s, synth_integer_comparator_greedy
|
16
|
+
from .adders import adder_qft_d00, adder_ripple_c04, adder_ripple_v95
|
17
|
+
from .multipliers import multiplier_cumulative_h18, multiplier_qft_r17
|
18
|
+
from .weighted_sum import synth_weighted_sum_carry
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2024.
|
4
|
+
#
|
5
|
+
# This code is licensed under the Apache License, Version 2.0. You may
|
6
|
+
# obtain a copy of this license in the LICENSE.txt file in the root directory
|
7
|
+
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
|
8
|
+
#
|
9
|
+
# Any modifications or derivative works of this code must retain this
|
10
|
+
# copyright notice, and modified files need to carry a notice indicating
|
11
|
+
# that they have been altered from the originals.
|
12
|
+
|
13
|
+
"""Module containing multi-controlled circuits synthesis"""
|
14
|
+
|
15
|
+
from .cdkm_ripple_carry_adder import adder_ripple_c04
|
16
|
+
from .vbe_ripple_carry_adder import adder_ripple_v95
|
17
|
+
from .draper_qft_adder import adder_qft_d00
|