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
@@ -0,0 +1,338 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2017.
|
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
|
+
"""Z, CZ and CCZ gates."""
|
14
|
+
|
15
|
+
from math import pi
|
16
|
+
from typing import Optional, Union
|
17
|
+
|
18
|
+
import numpy
|
19
|
+
|
20
|
+
from qiskit.circuit._utils import with_gate_array, with_controlled_gate_array
|
21
|
+
from qiskit.circuit.singleton import SingletonGate, SingletonControlledGate, stdlib_singleton_key
|
22
|
+
from qiskit._accelerate.circuit import StandardGate
|
23
|
+
|
24
|
+
from .p import PhaseGate
|
25
|
+
|
26
|
+
_Z_ARRAY = [[1, 0], [0, -1]]
|
27
|
+
|
28
|
+
|
29
|
+
@with_gate_array(_Z_ARRAY)
|
30
|
+
class ZGate(SingletonGate):
|
31
|
+
r"""The single-qubit Pauli-Z gate (:math:`\sigma_z`).
|
32
|
+
|
33
|
+
Can be applied to a :class:`~qiskit.circuit.QuantumCircuit`
|
34
|
+
with the :meth:`~qiskit.circuit.QuantumCircuit.z` method.
|
35
|
+
|
36
|
+
**Matrix Representation:**
|
37
|
+
|
38
|
+
.. math::
|
39
|
+
|
40
|
+
Z = \begin{pmatrix}
|
41
|
+
1 & 0 \\
|
42
|
+
0 & -1
|
43
|
+
\end{pmatrix}
|
44
|
+
|
45
|
+
**Circuit symbol:**
|
46
|
+
|
47
|
+
.. code-block:: text
|
48
|
+
|
49
|
+
┌───┐
|
50
|
+
q_0: ┤ Z ├
|
51
|
+
└───┘
|
52
|
+
|
53
|
+
Equivalent to a :math:`\pi` radian rotation about the Z axis.
|
54
|
+
|
55
|
+
.. note::
|
56
|
+
|
57
|
+
A global phase difference exists between the definitions of
|
58
|
+
:math:`RZ(\pi)` and :math:`Z`.
|
59
|
+
|
60
|
+
.. math::
|
61
|
+
|
62
|
+
RZ(\pi) = \begin{pmatrix}
|
63
|
+
-i & 0 \\
|
64
|
+
0 & i
|
65
|
+
\end{pmatrix}
|
66
|
+
= -i Z
|
67
|
+
|
68
|
+
The gate is equivalent to a phase flip.
|
69
|
+
|
70
|
+
.. math::
|
71
|
+
|
72
|
+
|0\rangle \rightarrow |0\rangle \\
|
73
|
+
|1\rangle \rightarrow -|1\rangle
|
74
|
+
"""
|
75
|
+
|
76
|
+
_standard_gate = StandardGate.ZGate
|
77
|
+
|
78
|
+
def __init__(self, label: Optional[str] = None):
|
79
|
+
"""Create new Z gate."""
|
80
|
+
super().__init__("z", 1, [], label=label)
|
81
|
+
|
82
|
+
_singleton_lookup_key = stdlib_singleton_key()
|
83
|
+
|
84
|
+
def _define(self):
|
85
|
+
# pylint: disable=cyclic-import
|
86
|
+
from qiskit.circuit import QuantumCircuit, QuantumRegister
|
87
|
+
from .u1 import U1Gate
|
88
|
+
|
89
|
+
q = QuantumRegister(1, "q")
|
90
|
+
qc = QuantumCircuit(q, name=self.name)
|
91
|
+
rules = [(U1Gate(pi), [q[0]], [])]
|
92
|
+
for instr, qargs, cargs in rules:
|
93
|
+
qc._append(instr, qargs, cargs)
|
94
|
+
|
95
|
+
self.definition = qc
|
96
|
+
|
97
|
+
def control(
|
98
|
+
self,
|
99
|
+
num_ctrl_qubits: int = 1,
|
100
|
+
label: Optional[str] = None,
|
101
|
+
ctrl_state: Optional[Union[str, int]] = None,
|
102
|
+
annotated: bool = False,
|
103
|
+
):
|
104
|
+
"""Return a (multi-)controlled-Z gate.
|
105
|
+
|
106
|
+
One control returns a CZ gate.
|
107
|
+
|
108
|
+
Args:
|
109
|
+
num_ctrl_qubits: number of control qubits.
|
110
|
+
label: An optional label for the gate [Default: ``None``]
|
111
|
+
ctrl_state: control state expressed as integer,
|
112
|
+
string (e.g.``'110'``), or ``None``. If ``None``, use all 1s.
|
113
|
+
annotated: indicates whether the controlled gate should be implemented
|
114
|
+
as an annotated gate.
|
115
|
+
|
116
|
+
Returns:
|
117
|
+
ControlledGate: controlled version of this gate.
|
118
|
+
"""
|
119
|
+
if not annotated and num_ctrl_qubits == 1:
|
120
|
+
gate = CZGate(label=label, ctrl_state=ctrl_state, _base_label=self.label)
|
121
|
+
else:
|
122
|
+
gate = super().control(
|
123
|
+
num_ctrl_qubits=num_ctrl_qubits,
|
124
|
+
label=label,
|
125
|
+
ctrl_state=ctrl_state,
|
126
|
+
annotated=annotated,
|
127
|
+
)
|
128
|
+
return gate
|
129
|
+
|
130
|
+
def inverse(self, annotated: bool = False):
|
131
|
+
"""Return inverted Z gate (itself).
|
132
|
+
|
133
|
+
Args:
|
134
|
+
annotated: when set to ``True``, this is typically used to return an
|
135
|
+
:class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
|
136
|
+
:class:`.Gate`. However, for this class this argument is ignored as this gate
|
137
|
+
is self-inverse.
|
138
|
+
|
139
|
+
Returns:
|
140
|
+
ZGate: inverse gate (self-inverse).
|
141
|
+
"""
|
142
|
+
return ZGate() # self-inverse
|
143
|
+
|
144
|
+
def power(self, exponent: float, annotated: bool = False):
|
145
|
+
return PhaseGate(numpy.pi * exponent)
|
146
|
+
|
147
|
+
def __eq__(self, other):
|
148
|
+
return isinstance(other, ZGate)
|
149
|
+
|
150
|
+
|
151
|
+
@with_controlled_gate_array(_Z_ARRAY, num_ctrl_qubits=1)
|
152
|
+
class CZGate(SingletonControlledGate):
|
153
|
+
r"""Controlled-Z gate.
|
154
|
+
|
155
|
+
This is a Clifford and symmetric gate.
|
156
|
+
|
157
|
+
Can be applied to a :class:`~qiskit.circuit.QuantumCircuit`
|
158
|
+
with the :meth:`~qiskit.circuit.QuantumCircuit.cz` method.
|
159
|
+
|
160
|
+
**Circuit symbol:**
|
161
|
+
|
162
|
+
.. code-block:: text
|
163
|
+
|
164
|
+
q_0: ─■─
|
165
|
+
│
|
166
|
+
q_1: ─■─
|
167
|
+
|
168
|
+
**Matrix representation:**
|
169
|
+
|
170
|
+
.. math::
|
171
|
+
|
172
|
+
CZ\ q_0, q_1 =
|
173
|
+
I \otimes |0\rangle\langle 0| + Z \otimes |1\rangle\langle 1| =
|
174
|
+
\begin{pmatrix}
|
175
|
+
1 & 0 & 0 & 0 \\
|
176
|
+
0 & 1 & 0 & 0 \\
|
177
|
+
0 & 0 & 1 & 0 \\
|
178
|
+
0 & 0 & 0 & -1
|
179
|
+
\end{pmatrix}
|
180
|
+
|
181
|
+
In the computational basis, this gate flips the phase of
|
182
|
+
the target qubit if the control qubit is in the :math:`|1\rangle` state.
|
183
|
+
"""
|
184
|
+
|
185
|
+
_standard_gate = StandardGate.CZGate
|
186
|
+
|
187
|
+
def __init__(
|
188
|
+
self,
|
189
|
+
label: Optional[str] = None,
|
190
|
+
ctrl_state: Optional[Union[str, int]] = None,
|
191
|
+
*,
|
192
|
+
_base_label=None,
|
193
|
+
):
|
194
|
+
"""Create new CZ gate."""
|
195
|
+
super().__init__(
|
196
|
+
"cz",
|
197
|
+
2,
|
198
|
+
[],
|
199
|
+
label=label,
|
200
|
+
num_ctrl_qubits=1,
|
201
|
+
ctrl_state=ctrl_state,
|
202
|
+
base_gate=ZGate(label=_base_label),
|
203
|
+
)
|
204
|
+
|
205
|
+
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=1)
|
206
|
+
|
207
|
+
def _define(self):
|
208
|
+
"""
|
209
|
+
gate cz a,b { h b; cx a,b; h b; }
|
210
|
+
"""
|
211
|
+
# pylint: disable=cyclic-import
|
212
|
+
from qiskit.circuit import QuantumCircuit, QuantumRegister
|
213
|
+
|
214
|
+
from .h import HGate
|
215
|
+
from .x import CXGate
|
216
|
+
|
217
|
+
q = QuantumRegister(2, "q")
|
218
|
+
qc = QuantumCircuit(q, name=self.name)
|
219
|
+
rules = [(HGate(), [q[1]], []), (CXGate(), [q[0], q[1]], []), (HGate(), [q[1]], [])]
|
220
|
+
for instr, qargs, cargs in rules:
|
221
|
+
qc._append(instr, qargs, cargs)
|
222
|
+
|
223
|
+
self.definition = qc
|
224
|
+
|
225
|
+
def inverse(self, annotated: bool = False):
|
226
|
+
"""Return inverted CZ gate (itself).
|
227
|
+
|
228
|
+
Args:
|
229
|
+
annotated: when set to ``True``, this is typically used to return an
|
230
|
+
:class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
|
231
|
+
:class:`.Gate`. However, for this class this argument is ignored as this gate
|
232
|
+
is self-inverse.
|
233
|
+
|
234
|
+
Returns:
|
235
|
+
CZGate: inverse gate (self-inverse).
|
236
|
+
"""
|
237
|
+
return CZGate(ctrl_state=self.ctrl_state) # self-inverse
|
238
|
+
|
239
|
+
def __eq__(self, other):
|
240
|
+
return isinstance(other, CZGate) and self.ctrl_state == other.ctrl_state
|
241
|
+
|
242
|
+
|
243
|
+
@with_controlled_gate_array(_Z_ARRAY, num_ctrl_qubits=2, cached_states=(3,))
|
244
|
+
class CCZGate(SingletonControlledGate):
|
245
|
+
r"""CCZ gate.
|
246
|
+
|
247
|
+
This is a symmetric gate.
|
248
|
+
|
249
|
+
Can be applied to a :class:`~qiskit.circuit.QuantumCircuit`
|
250
|
+
with the :meth:`~qiskit.circuit.QuantumCircuit.ccz` method.
|
251
|
+
|
252
|
+
**Circuit symbol:**
|
253
|
+
|
254
|
+
.. code-block:: text
|
255
|
+
|
256
|
+
q_0: ─■─
|
257
|
+
│
|
258
|
+
q_1: ─■─
|
259
|
+
│
|
260
|
+
q_2: ─■─
|
261
|
+
|
262
|
+
**Matrix representation:**
|
263
|
+
|
264
|
+
.. math::
|
265
|
+
|
266
|
+
CCZ\ q_0, q_1, q_2 =
|
267
|
+
I \otimes I \otimes |0\rangle\langle 0| + CZ \otimes |1\rangle\langle 1| =
|
268
|
+
\begin{pmatrix}
|
269
|
+
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
270
|
+
0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
|
271
|
+
0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
|
272
|
+
0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
|
273
|
+
0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
|
274
|
+
0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
|
275
|
+
0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
|
276
|
+
0 & 0 & 0 & 0 & 0 & 0 & 0 & -1
|
277
|
+
\end{pmatrix}
|
278
|
+
|
279
|
+
In the computational basis, this gate flips the phase of
|
280
|
+
the target qubit if the control qubits are in the :math:`|11\rangle` state.
|
281
|
+
"""
|
282
|
+
|
283
|
+
_standard_gate = StandardGate.CCZGate
|
284
|
+
|
285
|
+
def __init__(
|
286
|
+
self,
|
287
|
+
label: Optional[str] = None,
|
288
|
+
ctrl_state: Optional[Union[str, int]] = None,
|
289
|
+
*,
|
290
|
+
_base_label=None,
|
291
|
+
):
|
292
|
+
"""Create new CCZ gate."""
|
293
|
+
super().__init__(
|
294
|
+
"ccz",
|
295
|
+
3,
|
296
|
+
[],
|
297
|
+
label=label,
|
298
|
+
num_ctrl_qubits=2,
|
299
|
+
ctrl_state=ctrl_state,
|
300
|
+
base_gate=ZGate(label=_base_label),
|
301
|
+
)
|
302
|
+
|
303
|
+
_singleton_lookup_key = stdlib_singleton_key(num_ctrl_qubits=2)
|
304
|
+
|
305
|
+
def _define(self):
|
306
|
+
"""
|
307
|
+
gate ccz a,b,c { h c; ccx a,b,c; h c; }
|
308
|
+
"""
|
309
|
+
# pylint: disable=cyclic-import
|
310
|
+
from qiskit.circuit import QuantumCircuit, QuantumRegister
|
311
|
+
|
312
|
+
from .h import HGate
|
313
|
+
from .x import CCXGate
|
314
|
+
|
315
|
+
q = QuantumRegister(3, "q")
|
316
|
+
qc = QuantumCircuit(q, name=self.name)
|
317
|
+
rules = [(HGate(), [q[2]], []), (CCXGate(), [q[0], q[1], q[2]], []), (HGate(), [q[2]], [])]
|
318
|
+
for instr, qargs, cargs in rules:
|
319
|
+
qc._append(instr, qargs, cargs)
|
320
|
+
|
321
|
+
self.definition = qc
|
322
|
+
|
323
|
+
def inverse(self, annotated: bool = False):
|
324
|
+
"""Return inverted CCZ gate (itself).
|
325
|
+
|
326
|
+
Args:
|
327
|
+
annotated: when set to ``True``, this is typically used to return an
|
328
|
+
:class:`.AnnotatedOperation` with an inverse modifier set instead of a concrete
|
329
|
+
:class:`.Gate`. However, for this class this argument is ignored as this gate
|
330
|
+
is self-inverse.
|
331
|
+
|
332
|
+
Returns:
|
333
|
+
CCZGate: inverse gate (self-inverse).
|
334
|
+
"""
|
335
|
+
return CCZGate(ctrl_state=self.ctrl_state) # self-inverse
|
336
|
+
|
337
|
+
def __eq__(self, other):
|
338
|
+
return isinstance(other, CCZGate) and self.ctrl_state == other.ctrl_state
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
A library of template circuits.
|
15
|
+
|
16
|
+
Templates are circuits that compute the identity. They find use
|
17
|
+
in circuit optimization where matching part of the template allows the compiler
|
18
|
+
to replace the match with the inverse of the remainder from the template.
|
19
|
+
"""
|
20
|
+
from .nct.template_nct_2a_1 import template_nct_2a_1
|
21
|
+
from .nct.template_nct_2a_2 import template_nct_2a_2
|
22
|
+
from .nct.template_nct_2a_3 import template_nct_2a_3
|
23
|
+
from .nct.template_nct_4a_1 import template_nct_4a_1
|
24
|
+
from .nct.template_nct_4a_2 import template_nct_4a_2
|
25
|
+
from .nct.template_nct_4a_3 import template_nct_4a_3
|
26
|
+
from .nct.template_nct_4b_1 import template_nct_4b_1
|
27
|
+
from .nct.template_nct_4b_2 import template_nct_4b_2
|
28
|
+
from .nct.template_nct_5a_1 import template_nct_5a_1
|
29
|
+
from .nct.template_nct_5a_2 import template_nct_5a_2
|
30
|
+
from .nct.template_nct_5a_3 import template_nct_5a_3
|
31
|
+
from .nct.template_nct_5a_4 import template_nct_5a_4
|
32
|
+
from .nct.template_nct_6a_1 import template_nct_6a_1
|
33
|
+
from .nct.template_nct_6a_2 import template_nct_6a_2
|
34
|
+
from .nct.template_nct_6a_3 import template_nct_6a_3
|
35
|
+
from .nct.template_nct_6a_4 import template_nct_6a_4
|
36
|
+
from .nct.template_nct_6b_1 import template_nct_6b_1
|
37
|
+
from .nct.template_nct_6b_2 import template_nct_6b_2
|
38
|
+
from .nct.template_nct_6c_1 import template_nct_6c_1
|
39
|
+
from .nct.template_nct_7a_1 import template_nct_7a_1
|
40
|
+
from .nct.template_nct_7b_1 import template_nct_7b_1
|
41
|
+
from .nct.template_nct_7c_1 import template_nct_7c_1
|
42
|
+
from .nct.template_nct_7d_1 import template_nct_7d_1
|
43
|
+
from .nct.template_nct_7e_1 import template_nct_7e_1
|
44
|
+
from .nct.template_nct_9a_1 import template_nct_9a_1
|
45
|
+
from .nct.template_nct_9c_1 import template_nct_9c_1
|
46
|
+
from .nct.template_nct_9c_2 import template_nct_9c_2
|
47
|
+
from .nct.template_nct_9c_3 import template_nct_9c_3
|
48
|
+
from .nct.template_nct_9c_4 import template_nct_9c_4
|
49
|
+
from .nct.template_nct_9c_5 import template_nct_9c_5
|
50
|
+
from .nct.template_nct_9c_6 import template_nct_9c_6
|
51
|
+
from .nct.template_nct_9c_7 import template_nct_9c_7
|
52
|
+
from .nct.template_nct_9c_8 import template_nct_9c_8
|
53
|
+
from .nct.template_nct_9c_9 import template_nct_9c_9
|
54
|
+
from .nct.template_nct_9c_10 import template_nct_9c_10
|
55
|
+
from .nct.template_nct_9c_11 import template_nct_9c_11
|
56
|
+
from .nct.template_nct_9c_12 import template_nct_9c_12
|
57
|
+
from .nct.template_nct_9d_1 import template_nct_9d_1
|
58
|
+
from .nct.template_nct_9d_2 import template_nct_9d_2
|
59
|
+
from .nct.template_nct_9d_3 import template_nct_9d_3
|
60
|
+
from .nct.template_nct_9d_4 import template_nct_9d_4
|
61
|
+
from .nct.template_nct_9d_5 import template_nct_9d_5
|
62
|
+
from .nct.template_nct_9d_6 import template_nct_9d_6
|
63
|
+
from .nct.template_nct_9d_7 import template_nct_9d_7
|
64
|
+
from .nct.template_nct_9d_8 import template_nct_9d_8
|
65
|
+
from .nct.template_nct_9d_9 import template_nct_9d_9
|
66
|
+
from .nct.template_nct_9d_10 import template_nct_9d_10
|
67
|
+
|
68
|
+
from .rzx.rzx_yz import rzx_yz
|
69
|
+
from .rzx.rzx_xz import rzx_xz
|
70
|
+
from .rzx.rzx_cy import rzx_cy
|
71
|
+
from .rzx.rzx_zz1 import rzx_zz1
|
72
|
+
from .rzx.rzx_zz2 import rzx_zz2
|
73
|
+
from .rzx.rzx_zz3 import rzx_zz3
|
74
|
+
|
75
|
+
from .clifford.clifford_2_1 import clifford_2_1
|
76
|
+
from .clifford.clifford_2_2 import clifford_2_2
|
77
|
+
from .clifford.clifford_2_3 import clifford_2_3
|
78
|
+
from .clifford.clifford_2_4 import clifford_2_4
|
79
|
+
from .clifford.clifford_3_1 import clifford_3_1
|
80
|
+
from .clifford.clifford_4_1 import clifford_4_1
|
81
|
+
from .clifford.clifford_4_2 import clifford_4_2
|
82
|
+
from .clifford.clifford_4_3 import clifford_4_3
|
83
|
+
from .clifford.clifford_4_4 import clifford_4_4
|
84
|
+
from .clifford.clifford_5_1 import clifford_5_1
|
85
|
+
from .clifford.clifford_6_1 import clifford_6_1
|
86
|
+
from .clifford.clifford_6_2 import clifford_6_2
|
87
|
+
from .clifford.clifford_6_3 import clifford_6_3
|
88
|
+
from .clifford.clifford_6_4 import clifford_6_4
|
89
|
+
from .clifford.clifford_6_5 import clifford_6_5
|
90
|
+
from .clifford.clifford_8_1 import clifford_8_1
|
91
|
+
from .clifford.clifford_8_2 import clifford_8_2
|
92
|
+
from .clifford.clifford_8_3 import clifford_8_3
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
Template circuits over Clifford gates.
|
15
|
+
"""
|
16
|
+
from .clifford_2_1 import clifford_2_1
|
17
|
+
from .clifford_2_2 import clifford_2_2
|
18
|
+
from .clifford_2_3 import clifford_2_3
|
19
|
+
from .clifford_2_4 import clifford_2_4
|
20
|
+
from .clifford_3_1 import clifford_3_1
|
21
|
+
from .clifford_4_1 import clifford_4_1
|
22
|
+
from .clifford_4_2 import clifford_4_2
|
23
|
+
from .clifford_4_3 import clifford_4_3
|
24
|
+
from .clifford_4_4 import clifford_4_4
|
25
|
+
from .clifford_5_1 import clifford_5_1
|
26
|
+
from .clifford_6_1 import clifford_6_1
|
27
|
+
from .clifford_6_2 import clifford_6_2
|
28
|
+
from .clifford_6_3 import clifford_6_3
|
29
|
+
from .clifford_6_4 import clifford_6_4
|
30
|
+
from .clifford_6_5 import clifford_6_5
|
31
|
+
from .clifford_8_1 import clifford_8_1
|
32
|
+
from .clifford_8_2 import clifford_8_2
|
33
|
+
from .clifford_8_3 import clifford_8_3
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_2_1():
|
19
|
+
"""
|
20
|
+
Clifford template 2_1:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
q_0: ─■──■─
|
25
|
+
│ │
|
26
|
+
q_1: ─■──■─
|
27
|
+
|
28
|
+
Returns:
|
29
|
+
QuantumCircuit: template as a quantum circuit.
|
30
|
+
"""
|
31
|
+
qc = QuantumCircuit(2)
|
32
|
+
qc.cz(0, 1)
|
33
|
+
qc.cz(0, 1)
|
34
|
+
return qc
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_2_2():
|
19
|
+
"""
|
20
|
+
Clifford template 2_2:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
q_0: ──■────■──
|
25
|
+
┌─┴─┐┌─┴─┐
|
26
|
+
q_1: ┤ X ├┤ X ├
|
27
|
+
└───┘└───┘
|
28
|
+
|
29
|
+
Returns:
|
30
|
+
QuantumCircuit: template as a quantum circuit.
|
31
|
+
"""
|
32
|
+
qc = QuantumCircuit(2)
|
33
|
+
qc.cx(0, 1)
|
34
|
+
qc.cx(0, 1)
|
35
|
+
return qc
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_2_3():
|
19
|
+
"""
|
20
|
+
Clifford template 2_3:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
┌───┐┌───┐
|
25
|
+
q_0: ┤ H ├┤ H ├
|
26
|
+
└───┘└───┘
|
27
|
+
|
28
|
+
Returns:
|
29
|
+
QuantumCircuit: template as a quantum circuit.
|
30
|
+
"""
|
31
|
+
qc = QuantumCircuit(1)
|
32
|
+
qc.h(0)
|
33
|
+
qc.h(0)
|
34
|
+
return qc
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_2_4():
|
19
|
+
"""
|
20
|
+
Clifford template 2_4:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
q_0: ─X──X─
|
25
|
+
│ │
|
26
|
+
q_1: ─X──X─
|
27
|
+
|
28
|
+
Returns:
|
29
|
+
QuantumCircuit: template as a quantum circuit.
|
30
|
+
"""
|
31
|
+
qc = QuantumCircuit(2)
|
32
|
+
qc.swap(0, 1)
|
33
|
+
qc.swap(1, 0)
|
34
|
+
return qc
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_3_1():
|
19
|
+
"""
|
20
|
+
Clifford template 3_1:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
┌───┐┌───┐┌───┐
|
25
|
+
q_0: ┤ S ├┤ S ├┤ Z ├
|
26
|
+
└───┘└───┘└───┘
|
27
|
+
|
28
|
+
Returns:
|
29
|
+
QuantumCircuit: template as a quantum circuit.
|
30
|
+
"""
|
31
|
+
qc = QuantumCircuit(1)
|
32
|
+
qc.s(0)
|
33
|
+
qc.s(0)
|
34
|
+
qc.z(0)
|
35
|
+
return qc
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# This code is part of Qiskit.
|
2
|
+
#
|
3
|
+
# (C) Copyright IBM 2020.
|
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
|
+
# pylint: disable=missing-module-docstring
|
14
|
+
|
15
|
+
from qiskit.circuit.quantumcircuit import QuantumCircuit
|
16
|
+
|
17
|
+
|
18
|
+
def clifford_4_1():
|
19
|
+
"""
|
20
|
+
Clifford template 4_1:
|
21
|
+
|
22
|
+
.. code-block:: text
|
23
|
+
|
24
|
+
┌───┐
|
25
|
+
q_0: ──■──┤ X ├──■───X─
|
26
|
+
┌─┴─┐└─┬─┘┌─┴─┐ │
|
27
|
+
q_1: ┤ X ├──■──┤ X ├─X─
|
28
|
+
└───┘ └───┘
|
29
|
+
|
30
|
+
Returns:
|
31
|
+
QuantumCircuit: template as a quantum circuit.
|
32
|
+
"""
|
33
|
+
qc = QuantumCircuit(2)
|
34
|
+
qc.cx(0, 1)
|
35
|
+
qc.cx(1, 0)
|
36
|
+
qc.cx(0, 1)
|
37
|
+
qc.swap(0, 1)
|
38
|
+
return qc
|