qiskit 1.4.2__cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 2.0.0__cp39-abi3-manylinux_2_17_aarch64.manylinux2014_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 -1
- qiskit/__init__.py +3 -9
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +35 -10
- qiskit/circuit/{add_control.py → _add_control.py} +32 -12
- qiskit/circuit/_classical_resource_map.py +5 -3
- qiskit/circuit/barrier.py +3 -7
- qiskit/circuit/classical/expr/__init__.py +31 -3
- qiskit/circuit/classical/expr/constructors.py +236 -28
- qiskit/circuit/classical/expr/expr.py +104 -3
- qiskit/circuit/classical/expr/visitors.py +75 -0
- qiskit/circuit/classical/types/__init__.py +12 -8
- qiskit/circuit/classical/types/ordering.py +14 -7
- qiskit/circuit/classical/types/types.py +36 -0
- qiskit/circuit/commutation_checker.py +34 -7
- qiskit/circuit/controlflow/__init__.py +32 -1
- qiskit/circuit/controlflow/_builder_utils.py +9 -5
- qiskit/circuit/controlflow/box.py +163 -0
- qiskit/circuit/controlflow/break_loop.py +1 -1
- qiskit/circuit/controlflow/builder.py +139 -39
- qiskit/circuit/controlflow/continue_loop.py +1 -3
- qiskit/circuit/controlflow/control_flow.py +10 -0
- qiskit/circuit/controlflow/for_loop.py +2 -1
- qiskit/circuit/controlflow/if_else.py +3 -16
- qiskit/circuit/controlflow/switch_case.py +2 -8
- qiskit/circuit/controlflow/while_loop.py +2 -7
- qiskit/circuit/controlledgate.py +2 -4
- qiskit/circuit/delay.py +40 -11
- qiskit/circuit/duration.py +0 -15
- qiskit/circuit/gate.py +2 -4
- qiskit/circuit/instruction.py +2 -141
- qiskit/circuit/instructionset.py +7 -54
- qiskit/circuit/library/__init__.py +469 -154
- qiskit/circuit/library/arithmetic/__init__.py +16 -10
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
- qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
- qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
- qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
- qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
- qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
- qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
- qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
- qiskit/circuit/library/bit_flip_oracle.py +130 -0
- qiskit/circuit/library/blueprintcircuit.py +52 -16
- qiskit/circuit/library/data_preparation/initializer.py +1 -1
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
- qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
- qiskit/circuit/library/generalized_gates/gms.py +1 -1
- qiskit/circuit/library/generalized_gates/isometry.py +1 -1
- qiskit/circuit/library/generalized_gates/pauli.py +1 -2
- qiskit/circuit/library/generalized_gates/uc.py +97 -7
- qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
- qiskit/circuit/library/generalized_gates/unitary.py +4 -2
- qiskit/circuit/library/graph_state.py +1 -0
- qiskit/circuit/library/hamiltonian_gate.py +1 -1
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
- qiskit/circuit/library/n_local/n_local.py +1 -1
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
- qiskit/circuit/library/overlap.py +2 -2
- qiskit/circuit/library/pauli_evolution.py +39 -24
- qiskit/circuit/library/phase_oracle.py +130 -51
- qiskit/circuit/library/standard_gates/__init__.py +0 -1
- qiskit/circuit/library/standard_gates/dcx.py +3 -4
- qiskit/circuit/library/standard_gates/ecr.py +3 -4
- qiskit/circuit/library/standard_gates/global_phase.py +5 -6
- qiskit/circuit/library/standard_gates/h.py +4 -9
- qiskit/circuit/library/standard_gates/i.py +2 -2
- qiskit/circuit/library/standard_gates/iswap.py +3 -4
- qiskit/circuit/library/standard_gates/p.py +15 -34
- qiskit/circuit/library/standard_gates/r.py +7 -10
- qiskit/circuit/library/standard_gates/rx.py +5 -15
- qiskit/circuit/library/standard_gates/rxx.py +3 -6
- qiskit/circuit/library/standard_gates/ry.py +5 -17
- qiskit/circuit/library/standard_gates/ryy.py +3 -6
- qiskit/circuit/library/standard_gates/rz.py +5 -17
- qiskit/circuit/library/standard_gates/rzx.py +3 -6
- qiskit/circuit/library/standard_gates/rzz.py +3 -6
- qiskit/circuit/library/standard_gates/s.py +6 -15
- qiskit/circuit/library/standard_gates/swap.py +4 -11
- qiskit/circuit/library/standard_gates/sx.py +7 -12
- qiskit/circuit/library/standard_gates/t.py +6 -7
- qiskit/circuit/library/standard_gates/u.py +2 -10
- qiskit/circuit/library/standard_gates/u1.py +5 -16
- qiskit/circuit/library/standard_gates/u2.py +2 -6
- qiskit/circuit/library/standard_gates/u3.py +3 -11
- qiskit/circuit/library/standard_gates/x.py +14 -62
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/y.py +4 -9
- qiskit/circuit/library/standard_gates/z.py +5 -15
- qiskit/circuit/measure.py +11 -2
- qiskit/circuit/parameterexpression.py +7 -1
- qiskit/circuit/quantumcircuit.py +890 -564
- qiskit/circuit/random/utils.py +12 -6
- qiskit/circuit/reset.py +5 -2
- qiskit/circuit/singleton.py +5 -11
- qiskit/circuit/store.py +0 -8
- qiskit/compiler/__init__.py +1 -7
- qiskit/compiler/transpiler.py +38 -196
- qiskit/converters/circuit_to_dag.py +6 -4
- qiskit/converters/circuit_to_dagdependency.py +0 -2
- qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
- qiskit/converters/circuit_to_gate.py +1 -1
- qiskit/converters/circuit_to_instruction.py +16 -29
- qiskit/converters/dag_to_circuit.py +7 -8
- qiskit/converters/dag_to_dagdependency.py +0 -1
- qiskit/converters/dag_to_dagdependency_v2.py +0 -1
- qiskit/converters/dagdependency_to_circuit.py +0 -6
- qiskit/converters/dagdependency_to_dag.py +0 -6
- qiskit/dagcircuit/collect_blocks.py +32 -20
- qiskit/dagcircuit/dagdependency.py +3 -37
- qiskit/dagcircuit/dagdependency_v2.py +5 -82
- qiskit/dagcircuit/dagnode.py +14 -2
- qiskit/passmanager/__init__.py +24 -6
- qiskit/passmanager/passmanager.py +26 -24
- qiskit/primitives/__init__.py +44 -35
- qiskit/primitives/backend_estimator_v2.py +102 -23
- qiskit/primitives/backend_sampler_v2.py +5 -20
- qiskit/primitives/base/__init__.py +4 -4
- qiskit/primitives/base/base_estimator.py +77 -82
- qiskit/primitives/base/base_primitive_job.py +2 -2
- qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
- qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
- qiskit/primitives/base/base_sampler.py +52 -60
- qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
- qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
- qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
- qiskit/primitives/containers/bindings_array.py +3 -1
- qiskit/primitives/containers/bit_array.py +23 -0
- qiskit/primitives/containers/data_bin.py +3 -1
- qiskit/primitives/containers/observables_array.py +19 -2
- qiskit/primitives/statevector_sampler.py +6 -8
- qiskit/primitives/utils.py +14 -189
- qiskit/providers/__init__.py +4 -130
- qiskit/providers/backend.py +11 -314
- qiskit/providers/basic_provider/__init__.py +3 -1
- qiskit/providers/basic_provider/basic_provider.py +29 -9
- qiskit/providers/basic_provider/basic_simulator.py +158 -298
- qiskit/providers/exceptions.py +0 -33
- qiskit/providers/fake_provider/__init__.py +0 -37
- qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
- qiskit/qasm2/__init__.py +21 -6
- qiskit/qasm2/export.py +2 -10
- qiskit/qasm2/parse.py +11 -25
- qiskit/qasm3/__init__.py +5 -1
- qiskit/qasm3/ast.py +44 -0
- qiskit/qasm3/exporter.py +65 -27
- qiskit/qasm3/printer.py +35 -4
- qiskit/qpy/__init__.py +162 -19
- qiskit/qpy/binary_io/__init__.py +0 -1
- qiskit/qpy/binary_io/circuits.py +98 -130
- qiskit/qpy/binary_io/schedules.py +69 -439
- qiskit/qpy/binary_io/value.py +154 -31
- qiskit/qpy/common.py +10 -7
- qiskit/qpy/formats.py +41 -0
- qiskit/qpy/interface.py +34 -81
- qiskit/qpy/type_keys.py +58 -221
- qiskit/quantum_info/analysis/distance.py +3 -1
- qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
- qiskit/quantum_info/operators/operator.py +6 -2
- qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
- qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
- qiskit/quantum_info/states/densitymatrix.py +16 -6
- qiskit/quantum_info/states/stabilizerstate.py +35 -4
- qiskit/quantum_info/states/statevector.py +16 -6
- qiskit/result/__init__.py +5 -17
- qiskit/result/models.py +18 -11
- qiskit/result/result.py +38 -134
- qiskit/result/sampled_expval.py +1 -2
- qiskit/result/utils.py +3 -4
- qiskit/synthesis/__init__.py +21 -1
- qiskit/synthesis/arithmetic/__init__.py +3 -1
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
- qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
- qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
- qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
- qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
- 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/evolution/lie_trotter.py +10 -7
- qiskit/synthesis/evolution/product_formula.py +44 -35
- qiskit/synthesis/evolution/qdrift.py +17 -24
- qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
- qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
- qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
- qiskit/synthesis/multi_controlled/__init__.py +1 -0
- qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
- qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
- qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
- qiskit/synthesis/two_qubit/__init__.py +1 -0
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
- qiskit/transpiler/__init__.py +32 -232
- qiskit/transpiler/basepasses.py +20 -51
- qiskit/transpiler/layout.py +1 -1
- qiskit/transpiler/passes/__init__.py +4 -40
- qiskit/transpiler/passes/basis/basis_translator.py +5 -4
- qiskit/transpiler/passes/basis/decompose.py +1 -15
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
- qiskit/transpiler/passes/layout/apply_layout.py +4 -0
- qiskit/transpiler/passes/layout/dense_layout.py +2 -39
- qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
- qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
- qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
- qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
- qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
- qiskit/transpiler/passes/optimization/__init__.py +2 -3
- qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
- qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
- qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
- qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
- qiskit/transpiler/passes/optimization/light_cone.py +135 -0
- qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
- qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
- qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
- qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
- qiskit/transpiler/passes/routing/__init__.py +0 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
- qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
- qiskit/transpiler/passes/scheduling/__init__.py +1 -7
- qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
- qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
- qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
- qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
- qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
- qiskit/transpiler/passes/synthesis/plugin.py +4 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
- qiskit/transpiler/passes/utils/__init__.py +0 -1
- qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
- qiskit/transpiler/passes/utils/control_flow.py +2 -6
- qiskit/transpiler/passes/utils/gate_direction.py +7 -0
- qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
- qiskit/transpiler/passmanager.py +13 -0
- qiskit/transpiler/passmanager_config.py +5 -81
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
- qiskit/transpiler/preset_passmanagers/common.py +140 -167
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
- qiskit/transpiler/preset_passmanagers/level0.py +2 -11
- qiskit/transpiler/preset_passmanagers/level1.py +2 -14
- qiskit/transpiler/preset_passmanagers/level2.py +2 -12
- qiskit/transpiler/preset_passmanagers/level3.py +2 -11
- qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
- qiskit/transpiler/target.py +78 -524
- qiskit/user_config.py +8 -4
- qiskit/utils/__init__.py +13 -12
- qiskit/utils/deprecation.py +4 -112
- qiskit/utils/optionals.py +11 -4
- qiskit/utils/parallel.py +214 -87
- qiskit/utils/units.py +4 -1
- qiskit/visualization/__init__.py +3 -7
- qiskit/visualization/array.py +4 -1
- qiskit/visualization/bloch.py +1 -1
- qiskit/visualization/circuit/_utils.py +19 -19
- qiskit/visualization/circuit/circuit_visualization.py +11 -4
- qiskit/visualization/circuit/matplotlib.py +13 -23
- qiskit/visualization/circuit/text.py +7 -3
- qiskit/visualization/counts_visualization.py +4 -0
- qiskit/visualization/dag_visualization.py +2 -1
- qiskit/visualization/gate_map.py +39 -154
- qiskit/visualization/library.py +4 -1
- qiskit/visualization/pass_manager_visualization.py +6 -2
- qiskit/visualization/state_visualization.py +19 -2
- qiskit/visualization/timeline/core.py +19 -13
- qiskit/visualization/timeline/interface.py +19 -18
- qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/RECORD +653 -800
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/WHEEL +1 -1
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
- qiskit/assembler/__init__.py +0 -42
- qiskit/assembler/assemble_circuits.py +0 -451
- qiskit/assembler/assemble_schedules.py +0 -367
- qiskit/assembler/disassemble.py +0 -310
- qiskit/assembler/run_config.py +0 -77
- qiskit/circuit/bit.py +0 -106
- qiskit/circuit/classicalfunction/__init__.py +0 -152
- qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
- qiskit/circuit/classicalfunction/classical_element.py +0 -54
- qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
- qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
- qiskit/circuit/classicalfunction/exceptions.py +0 -41
- qiskit/circuit/classicalfunction/types.py +0 -18
- qiskit/circuit/classicalfunction/utils.py +0 -91
- qiskit/circuit/classicalregister.py +0 -57
- qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
- qiskit/circuit/quantumregister.py +0 -75
- qiskit/circuit/register.py +0 -246
- qiskit/compiler/assembler.py +0 -689
- qiskit/compiler/scheduler.py +0 -109
- qiskit/compiler/sequencer.py +0 -71
- qiskit/primitives/backend_estimator.py +0 -486
- qiskit/primitives/backend_sampler.py +0 -222
- qiskit/primitives/estimator.py +0 -172
- qiskit/primitives/sampler.py +0 -162
- qiskit/providers/backend_compat.py +0 -507
- qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
- qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
- qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
- qiskit/providers/fake_provider/fake_1q.py +0 -91
- qiskit/providers/fake_provider/fake_backend.py +0 -165
- qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
- qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
- qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
- qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
- qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
- qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
- qiskit/providers/models/__init__.py +0 -89
- qiskit/providers/models/backendconfiguration.py +0 -1040
- qiskit/providers/models/backendproperties.py +0 -535
- qiskit/providers/models/backendstatus.py +0 -104
- qiskit/providers/models/jobstatus.py +0 -77
- qiskit/providers/models/pulsedefaults.py +0 -305
- qiskit/providers/provider.py +0 -95
- qiskit/pulse/__init__.py +0 -158
- qiskit/pulse/builder.py +0 -2262
- qiskit/pulse/calibration_entries.py +0 -381
- qiskit/pulse/channels.py +0 -227
- qiskit/pulse/configuration.py +0 -245
- qiskit/pulse/exceptions.py +0 -45
- qiskit/pulse/filters.py +0 -309
- qiskit/pulse/instruction_schedule_map.py +0 -424
- qiskit/pulse/instructions/__init__.py +0 -67
- qiskit/pulse/instructions/acquire.py +0 -150
- qiskit/pulse/instructions/delay.py +0 -71
- qiskit/pulse/instructions/directives.py +0 -154
- qiskit/pulse/instructions/frequency.py +0 -135
- qiskit/pulse/instructions/instruction.py +0 -270
- qiskit/pulse/instructions/phase.py +0 -152
- qiskit/pulse/instructions/play.py +0 -99
- qiskit/pulse/instructions/reference.py +0 -100
- qiskit/pulse/instructions/snapshot.py +0 -82
- qiskit/pulse/library/__init__.py +0 -97
- qiskit/pulse/library/continuous.py +0 -430
- qiskit/pulse/library/pulse.py +0 -148
- qiskit/pulse/library/samplers/__init__.py +0 -15
- qiskit/pulse/library/samplers/decorators.py +0 -295
- qiskit/pulse/library/samplers/strategies.py +0 -71
- qiskit/pulse/library/symbolic_pulses.py +0 -1989
- qiskit/pulse/library/waveform.py +0 -136
- qiskit/pulse/macros.py +0 -262
- qiskit/pulse/parameter_manager.py +0 -445
- qiskit/pulse/parser.py +0 -314
- qiskit/pulse/reference_manager.py +0 -58
- qiskit/pulse/schedule.py +0 -1854
- qiskit/pulse/transforms/__init__.py +0 -106
- qiskit/pulse/transforms/alignments.py +0 -406
- qiskit/pulse/transforms/base_transforms.py +0 -71
- qiskit/pulse/transforms/canonicalization.py +0 -498
- qiskit/pulse/transforms/dag.py +0 -122
- qiskit/pulse/utils.py +0 -149
- qiskit/qobj/__init__.py +0 -75
- qiskit/qobj/common.py +0 -81
- qiskit/qobj/converters/__init__.py +0 -18
- qiskit/qobj/converters/lo_config.py +0 -177
- qiskit/qobj/converters/pulse_instruction.py +0 -897
- qiskit/qobj/pulse_qobj.py +0 -709
- qiskit/qobj/qasm_qobj.py +0 -708
- qiskit/qobj/utils.py +0 -46
- qiskit/result/mitigation/base_readout_mitigator.py +0 -79
- qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
- qiskit/result/mitigation/local_readout_mitigator.py +0 -328
- qiskit/result/mitigation/utils.py +0 -217
- qiskit/scheduler/__init__.py +0 -40
- qiskit/scheduler/config.py +0 -37
- qiskit/scheduler/lowering.py +0 -187
- qiskit/scheduler/methods/__init__.py +0 -15
- qiskit/scheduler/methods/basic.py +0 -140
- qiskit/scheduler/schedule_circuit.py +0 -69
- qiskit/scheduler/sequence.py +0 -104
- qiskit/transpiler/passes/calibration/__init__.py +0 -17
- qiskit/transpiler/passes/calibration/base_builder.py +0 -79
- qiskit/transpiler/passes/calibration/builders.py +0 -20
- qiskit/transpiler/passes/calibration/exceptions.py +0 -22
- qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
- qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
- qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
- qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
- qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
- qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
- qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
- qiskit/transpiler/passes/scheduling/alap.py +0 -153
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
- qiskit/transpiler/passes/scheduling/asap.py +0 -175
- qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
- qiskit/utils/deprecate_pulse.py +0 -119
- qiskit/utils/multiprocessing.py +0 -56
- qiskit/visualization/pulse_v2/__init__.py +0 -21
- qiskit/visualization/pulse_v2/core.py +0 -901
- qiskit/visualization/pulse_v2/device_info.py +0 -173
- qiskit/visualization/pulse_v2/drawings.py +0 -253
- qiskit/visualization/pulse_v2/events.py +0 -254
- qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
- qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
- qiskit/visualization/pulse_v2/generators/chart.py +0 -208
- qiskit/visualization/pulse_v2/generators/frame.py +0 -436
- qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
- qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
- qiskit/visualization/pulse_v2/interface.py +0 -459
- qiskit/visualization/pulse_v2/layouts.py +0 -387
- qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
- qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
- qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
- qiskit/visualization/pulse_v2/stylesheet.py +0 -312
- qiskit/visualization/pulse_v2/types.py +0 -242
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
- {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
qiskit/__init__.py
CHANGED
@@ -53,11 +53,8 @@ import qiskit._numpy_compat
|
|
53
53
|
# and not have to rely on attribute access. No action needed for top-level extension packages.
|
54
54
|
sys.modules["qiskit._accelerate.circuit"] = _accelerate.circuit
|
55
55
|
sys.modules["qiskit._accelerate.circuit_library"] = _accelerate.circuit_library
|
56
|
-
sys.modules["qiskit._accelerate.
|
57
|
-
sys.modules["qiskit._accelerate.basis.basis_translator"] = _accelerate.basis.basis_translator
|
56
|
+
sys.modules["qiskit._accelerate.basis_translator"] = _accelerate.basis_translator
|
58
57
|
sys.modules["qiskit._accelerate.converters"] = _accelerate.converters
|
59
|
-
sys.modules["qiskit._accelerate.basis"] = _accelerate.basis
|
60
|
-
sys.modules["qiskit._accelerate.basis.basis_translator"] = _accelerate.basis.basis_translator
|
61
58
|
sys.modules["qiskit._accelerate.dense_layout"] = _accelerate.dense_layout
|
62
59
|
sys.modules["qiskit._accelerate.equivalence"] = _accelerate.equivalence
|
63
60
|
sys.modules["qiskit._accelerate.error_map"] = _accelerate.error_map
|
@@ -81,7 +78,6 @@ sys.modules["qiskit._accelerate.sampled_exp_val"] = _accelerate.sampled_exp_val
|
|
81
78
|
sys.modules["qiskit._accelerate.sparse_observable"] = _accelerate.sparse_observable
|
82
79
|
sys.modules["qiskit._accelerate.sparse_pauli_op"] = _accelerate.sparse_pauli_op
|
83
80
|
sys.modules["qiskit._accelerate.star_prerouting"] = _accelerate.star_prerouting
|
84
|
-
sys.modules["qiskit._accelerate.stochastic_swap"] = _accelerate.stochastic_swap
|
85
81
|
sys.modules["qiskit._accelerate.elide_permutations"] = _accelerate.elide_permutations
|
86
82
|
sys.modules["qiskit._accelerate.target"] = _accelerate.target
|
87
83
|
sys.modules["qiskit._accelerate.two_qubit_decompose"] = _accelerate.two_qubit_decompose
|
@@ -128,10 +124,11 @@ import qiskit.circuit.reset
|
|
128
124
|
|
129
125
|
_config = _user_config.get_config()
|
130
126
|
|
131
|
-
from qiskit.compiler import transpile
|
127
|
+
from qiskit.compiler import transpile
|
132
128
|
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
|
133
129
|
from .version import __version__
|
134
130
|
|
131
|
+
|
135
132
|
__all__ = [
|
136
133
|
"AncillaRegister",
|
137
134
|
"ClassicalRegister",
|
@@ -139,9 +136,6 @@ __all__ = [
|
|
139
136
|
"QiskitError",
|
140
137
|
"QuantumCircuit",
|
141
138
|
"QuantumRegister",
|
142
|
-
"assemble",
|
143
|
-
"schedule",
|
144
|
-
"sequence",
|
145
139
|
"transpile",
|
146
140
|
"generate_preset_pass_manager",
|
147
141
|
]
|
qiskit/_accelerate.abi3.so
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -272,7 +272,8 @@ circuit. The top-level ones are:
|
|
272
272
|
* :class:`ForLoopOp`, to loop over a fixed range of values
|
273
273
|
* :class:`IfElseOp`, to conditionally enter one of two subcircuits
|
274
274
|
* :class:`SwitchCaseOp`, to conditionally enter one of many subcircuits
|
275
|
-
* :class:`WhileLoopOp`, to repeat a subcircuit until a condition is falsified
|
275
|
+
* :class:`WhileLoopOp`, to repeat a subcircuit until a condition is falsified
|
276
|
+
* :class:`BoxOp`, to group a series of instructions for later processing
|
276
277
|
|
277
278
|
:ref:`Circuits can include classical expressions that are evaluated in real time
|
278
279
|
<circuit-repr-real-time-classical>`, while the QPU is executing a single shot of the circuit. These
|
@@ -303,9 +304,10 @@ assist compilation workflows. These include:
|
|
303
304
|
* :data:`SessionEquivalenceLibrary`, a mutable instance of :class:`EquivalenceLibrary` which is used
|
304
305
|
by default by the compiler's :class:`.BasisTranslator`.
|
305
306
|
|
306
|
-
There
|
307
|
+
There are also utilities for generating random circuits:
|
307
308
|
|
308
309
|
* :func:`random.random_circuit`
|
310
|
+
* :func:`random.random_clifford_circuit`
|
309
311
|
|
310
312
|
Finally, the circuit module has its own exception class, to indicate when things went wrong in
|
311
313
|
circuit-specific manners:
|
@@ -558,10 +560,16 @@ Hardware can be instructed to apply a real-time idle period on a given qubit. A
|
|
558
560
|
|
559
561
|
.. autoclass:: Delay
|
560
562
|
:show-inheritance:
|
563
|
+
.. autoclass:: Duration
|
564
|
+
|
561
565
|
|
562
566
|
The :class:`Barrier` instruction can span an arbitrary number of qubits and clbits, and is a no-op
|
563
567
|
in hardware. During transpilation and optimization, however, it blocks any optimizations from
|
564
|
-
"crossing" the barrier; that is, in
|
568
|
+
"crossing" the barrier; that is, in:
|
569
|
+
|
570
|
+
.. plot::
|
571
|
+
:include-source:
|
572
|
+
:nofigs:
|
565
573
|
|
566
574
|
from qiskit.circuit import QuantumCircuit
|
567
575
|
|
@@ -697,10 +705,15 @@ attributes of each of the control-flow operations.
|
|
697
705
|
|
698
706
|
Set of the instruction names of Qiskit's known control-flow operations.
|
699
707
|
|
708
|
+
The :func:`.get_control_flow_name_mapping` function allows to access the control-flow operation
|
709
|
+
classes associated to each name.
|
710
|
+
|
711
|
+
.. autofunction:: get_control_flow_name_mapping
|
712
|
+
|
700
713
|
These control-flow operations (:class:`IfElseOp`, :class:`WhileLoopOp`,
|
701
|
-
:class:`SwitchCaseOp` and :class:`
|
702
|
-
conditions and strategies, but contain all the different subcircuit blocks that
|
703
|
-
their :attr:`~ControlFlowOp.blocks` property.
|
714
|
+
:class:`SwitchCaseOp`, :class:`ForLoopOp` and :class:`BoxOp`) all have specific state that defines
|
715
|
+
the branching conditions and strategies, but contain all the different subcircuit blocks that
|
716
|
+
might be entered in their :attr:`~ControlFlowOp.blocks` property.
|
704
717
|
|
705
718
|
.. autosummary::
|
706
719
|
:toctree: ../stubs/
|
@@ -709,6 +722,7 @@ their :attr:`~ControlFlowOp.blocks` property.
|
|
709
722
|
WhileLoopOp
|
710
723
|
SwitchCaseOp
|
711
724
|
ForLoopOp
|
725
|
+
BoxOp
|
712
726
|
|
713
727
|
The :class:`.SwitchCaseOp` also understands a special value:
|
714
728
|
|
@@ -1049,6 +1063,7 @@ Generating random circuits
|
|
1049
1063
|
|
1050
1064
|
.. currentmodule:: qiskit.circuit.random
|
1051
1065
|
.. autofunction:: random_circuit
|
1066
|
+
.. autofunction:: random_clifford_circuit
|
1052
1067
|
.. currentmodule:: qiskit.circuit
|
1053
1068
|
|
1054
1069
|
Apply Pauli twirling to a circuit
|
@@ -1273,11 +1288,21 @@ In both these cases, the matrix form of :class:`.CCXGate` in ``ctrl_state = 1``
|
|
1273
1288
|
\end{pmatrix}
|
1274
1289
|
"""
|
1275
1290
|
|
1291
|
+
from qiskit._accelerate.circuit import ( # pylint: disable=unused-import
|
1292
|
+
Bit,
|
1293
|
+
Qubit,
|
1294
|
+
AncillaQubit,
|
1295
|
+
Clbit,
|
1296
|
+
QuantumRegister,
|
1297
|
+
AncillaRegister,
|
1298
|
+
ClassicalRegister,
|
1299
|
+
Register,
|
1300
|
+
Duration,
|
1301
|
+
)
|
1302
|
+
|
1276
1303
|
from .exceptions import CircuitError
|
1277
1304
|
from . import _utils
|
1278
1305
|
from .quantumcircuit import QuantumCircuit
|
1279
|
-
from .classicalregister import ClassicalRegister, Clbit
|
1280
|
-
from .quantumregister import QuantumRegister, Qubit, AncillaRegister, AncillaQubit
|
1281
1306
|
from .gate import Gate
|
1282
1307
|
|
1283
1308
|
# pylint: disable=cyclic-import
|
@@ -1296,14 +1321,13 @@ from .parametervector import ParameterVector, ParameterVectorElement
|
|
1296
1321
|
from .parameterexpression import ParameterExpression
|
1297
1322
|
from .quantumcircuitdata import CircuitInstruction
|
1298
1323
|
from .equivalence import EquivalenceLibrary
|
1299
|
-
from .bit import Bit
|
1300
|
-
from .register import Register
|
1301
1324
|
from . import library
|
1302
1325
|
from .equivalence_library import StandardEquivalenceLibrary, SessionEquivalenceLibrary
|
1303
1326
|
from .commutation_checker import CommutationChecker
|
1304
1327
|
|
1305
1328
|
from .controlflow import (
|
1306
1329
|
ControlFlowOp,
|
1330
|
+
BoxOp,
|
1307
1331
|
WhileLoopOp,
|
1308
1332
|
ForLoopOp,
|
1309
1333
|
IfElseOp,
|
@@ -1312,6 +1336,7 @@ from .controlflow import (
|
|
1312
1336
|
BreakLoopOp,
|
1313
1337
|
ContinueLoopOp,
|
1314
1338
|
CONTROL_FLOW_OP_NAMES,
|
1339
|
+
get_control_flow_name_mapping,
|
1315
1340
|
)
|
1316
1341
|
|
1317
1342
|
from .annotated_operation import AnnotatedOperation, InverseModifier, ControlModifier, PowerModifier
|
@@ -109,7 +109,7 @@ def control(
|
|
109
109
|
|
110
110
|
global_phase = 0
|
111
111
|
|
112
|
-
basis = ["p", "u", "x", "z", "rx", "ry", "rz", "cx"]
|
112
|
+
basis = ["p", "u", "x", "z", "y", "h", "sx", "sxdg", "rx", "ry", "rz", "cx"]
|
113
113
|
|
114
114
|
if operation.name in basis:
|
115
115
|
apply_basic_controlled_gate(controlled_circ, operation, q_control, q_target[0])
|
@@ -187,7 +187,7 @@ def apply_basic_controlled_gate(circuit, gate, controls, target):
|
|
187
187
|
|
188
188
|
This implements multi-control operations for the following basis gates:
|
189
189
|
|
190
|
-
["p", "u", "x", "z", "rx", "ry", "rz", "cx"]
|
190
|
+
["p", "u", "x", "z", "y", "h", "sx", "sxdg", "rx", "ry", "rz", "cx"]
|
191
191
|
|
192
192
|
"""
|
193
193
|
num_ctrl_qubits = len(controls)
|
@@ -239,31 +239,51 @@ def apply_basic_controlled_gate(circuit, gate, controls, target):
|
|
239
239
|
circuit.cu(theta, phi, lamb, 0, controls[0], target)
|
240
240
|
else:
|
241
241
|
if phi == -pi / 2 and lamb == pi / 2:
|
242
|
-
circuit.mcrx(theta, controls, target, use_basis_gates=
|
242
|
+
circuit.mcrx(theta, controls, target, use_basis_gates=False)
|
243
243
|
elif phi == 0 and lamb == 0:
|
244
244
|
circuit.mcry(
|
245
245
|
theta,
|
246
246
|
controls,
|
247
247
|
target,
|
248
|
-
use_basis_gates=
|
248
|
+
use_basis_gates=False,
|
249
249
|
)
|
250
250
|
elif theta == 0 and phi == 0:
|
251
251
|
circuit.mcp(lamb, controls, target)
|
252
252
|
else:
|
253
|
-
circuit.
|
254
|
-
circuit.mcry(
|
255
|
-
|
256
|
-
|
257
|
-
target,
|
258
|
-
use_basis_gates=True,
|
259
|
-
)
|
260
|
-
circuit.mcp(phi, controls, target)
|
253
|
+
circuit.mcrz(lamb, controls, target, use_basis_gates=False)
|
254
|
+
circuit.mcry(theta, controls, target, use_basis_gates=False)
|
255
|
+
circuit.mcrz(phi, controls, target, use_basis_gates=False)
|
256
|
+
circuit.mcp((phi + lamb) / 2, controls[1:], controls[0])
|
261
257
|
|
262
258
|
elif gate.name == "z":
|
263
259
|
circuit.h(target)
|
264
260
|
circuit.mcx(controls, target)
|
265
261
|
circuit.h(target)
|
266
262
|
|
263
|
+
elif gate.name == "y":
|
264
|
+
circuit.sdg(target)
|
265
|
+
circuit.mcx(controls, target)
|
266
|
+
circuit.s(target)
|
267
|
+
|
268
|
+
elif gate.name == "h":
|
269
|
+
circuit.s(target)
|
270
|
+
circuit.h(target)
|
271
|
+
circuit.t(target)
|
272
|
+
circuit.mcx(controls, target)
|
273
|
+
circuit.tdg(target)
|
274
|
+
circuit.h(target)
|
275
|
+
circuit.sdg(target)
|
276
|
+
|
277
|
+
elif gate.name == "sx":
|
278
|
+
circuit.h(target)
|
279
|
+
circuit.mcp(pi / 2, controls, target)
|
280
|
+
circuit.h(target)
|
281
|
+
|
282
|
+
elif gate.name == "sxdg":
|
283
|
+
circuit.h(target)
|
284
|
+
circuit.mcp(3 * pi / 2, controls, target)
|
285
|
+
circuit.h(target)
|
286
|
+
|
267
287
|
else:
|
268
288
|
raise CircuitError(f"Gate {gate} not in supported basis.")
|
269
289
|
|
@@ -16,9 +16,8 @@ from __future__ import annotations
|
|
16
16
|
|
17
17
|
import typing
|
18
18
|
|
19
|
-
from .
|
19
|
+
from . import Bit, Clbit, ClassicalRegister # pylint: disable=cyclic-import
|
20
20
|
from .classical import expr
|
21
|
-
from .classicalregister import ClassicalRegister, Clbit
|
22
21
|
|
23
22
|
|
24
23
|
class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
@@ -43,7 +42,7 @@ class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
|
43
42
|
self,
|
44
43
|
target_cregs: typing.Iterable[ClassicalRegister],
|
45
44
|
bit_map: typing.Mapping[Bit, Bit],
|
46
|
-
var_map: typing.Mapping[expr.Var, expr.Var] | None = None,
|
45
|
+
var_map: typing.Mapping[expr.Var | expr.Stretch, expr.Var | expr.Stretch] | None = None,
|
47
46
|
*,
|
48
47
|
add_register: typing.Callable[[ClassicalRegister], None] | None = None,
|
49
48
|
):
|
@@ -132,6 +131,9 @@ class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
|
132
131
|
return expr.Var(self._map_register(node.var), node.type)
|
133
132
|
return self.var_map.get(node, node)
|
134
133
|
|
134
|
+
def visit_stretch(self, node, /):
|
135
|
+
return self.var_map.get(node, node)
|
136
|
+
|
135
137
|
def visit_value(self, node, /):
|
136
138
|
return expr.Value(node.value, node.type)
|
137
139
|
|
qiskit/circuit/barrier.py
CHANGED
@@ -18,9 +18,8 @@ with the :meth:`~qiskit.circuit.QuantumCircuit.barrier` method.
|
|
18
18
|
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
from qiskit.
|
22
|
-
from qiskit.
|
23
|
-
from .instruction import Instruction
|
21
|
+
from qiskit.circuit.instruction import Instruction
|
22
|
+
from qiskit._accelerate.circuit import StandardInstructionType
|
24
23
|
|
25
24
|
|
26
25
|
class Barrier(Instruction):
|
@@ -31,6 +30,7 @@ class Barrier(Instruction):
|
|
31
30
|
"""
|
32
31
|
|
33
32
|
_directive = True
|
33
|
+
_standard_instruction_type = StandardInstructionType.Barrier
|
34
34
|
|
35
35
|
def __init__(self, num_qubits: int, label: str | None = None):
|
36
36
|
"""
|
@@ -44,7 +44,3 @@ class Barrier(Instruction):
|
|
44
44
|
def inverse(self, annotated: bool = False):
|
45
45
|
"""Special case. Return self."""
|
46
46
|
return Barrier(self.num_qubits)
|
47
|
-
|
48
|
-
@deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
|
49
|
-
def c_if(self, classical, val):
|
50
|
-
raise QiskitError("Barriers are compiler directives and cannot be conditional.")
|
@@ -39,6 +39,10 @@ The expression system is based on tree representation. All nodes in the tree ar
|
|
39
39
|
|
40
40
|
These objects are mutable and should not be reused in a different location without a copy.
|
41
41
|
|
42
|
+
All :class`Expr` instances define a boolean :attr:`~Expr.const` attribute, which indicates
|
43
|
+
whether the expression can be evaluated at compile time. Most expression classes infer this
|
44
|
+
during construction based on the const-ness of their operands.
|
45
|
+
|
42
46
|
The base for dynamic variables is the :class:`Var`, which can be either an arbitrarily typed
|
43
47
|
real-time variable, or a wrapper around a :class:`.Clbit` or :class:`.ClassicalRegister`.
|
44
48
|
|
@@ -46,10 +50,15 @@ real-time variable, or a wrapper around a :class:`.Clbit` or :class:`.ClassicalR
|
|
46
50
|
:members: var, name, new
|
47
51
|
|
48
52
|
Similarly, literals used in expressions (such as integers) should be lifted to :class:`Value` nodes
|
49
|
-
with associated types.
|
53
|
+
with associated types. A :class:`Value` is always considered a constant expression.
|
50
54
|
|
51
55
|
.. autoclass:: Value
|
52
56
|
|
57
|
+
Stretch variables for use in duration expressions are represented by the :class:`Stretch` node.
|
58
|
+
|
59
|
+
.. autoclass:: Stretch
|
60
|
+
:members: var, name, new
|
61
|
+
|
53
62
|
The operations traditionally associated with pre-, post- or infix operators in programming are
|
54
63
|
represented by the :class:`Unary` and :class:`Binary` nodes as appropriate. These each take an
|
55
64
|
operation type code, which are exposed as enumerations inside each class as :class:`Unary.Op`
|
@@ -130,6 +139,10 @@ Similarly, the binary operations and relations have helper functions defined.
|
|
130
139
|
.. autofunction:: greater_equal
|
131
140
|
.. autofunction:: shift_left
|
132
141
|
.. autofunction:: shift_right
|
142
|
+
.. autofunction:: add
|
143
|
+
.. autofunction:: sub
|
144
|
+
.. autofunction:: mul
|
145
|
+
.. autofunction:: div
|
133
146
|
|
134
147
|
You can index into unsigned integers and bit-likes using another unsigned integer of any width.
|
135
148
|
This includes in storing operations, if the target of the index is writeable.
|
@@ -166,6 +179,11 @@ not the general structure, the iterator method :func:`iter_vars` is provided.
|
|
166
179
|
|
167
180
|
.. autofunction:: iter_vars
|
168
181
|
|
182
|
+
To iterator over all variables including stretch variables, the iterator method
|
183
|
+
:func:`iter_identifiers` is provided.
|
184
|
+
|
185
|
+
.. autofunction:: iter_identifiers
|
186
|
+
|
169
187
|
Two expressions can be compared for direct structural equality by using the built-in Python ``==``
|
170
188
|
operator. In general, though, one might want to compare two expressions slightly more semantically,
|
171
189
|
allowing that the :class:`Var` nodes inside them are bound to different memory-location descriptions
|
@@ -188,8 +206,10 @@ __all__ = [
|
|
188
206
|
"Unary",
|
189
207
|
"Binary",
|
190
208
|
"Index",
|
209
|
+
"Stretch",
|
191
210
|
"ExprVisitor",
|
192
211
|
"iter_vars",
|
212
|
+
"iter_identifiers",
|
193
213
|
"structurally_equivalent",
|
194
214
|
"is_lvalue",
|
195
215
|
"lift",
|
@@ -210,11 +230,15 @@ __all__ = [
|
|
210
230
|
"greater",
|
211
231
|
"greater_equal",
|
212
232
|
"index",
|
233
|
+
"add",
|
234
|
+
"sub",
|
235
|
+
"mul",
|
236
|
+
"div",
|
213
237
|
"lift_legacy_condition",
|
214
238
|
]
|
215
239
|
|
216
|
-
from .expr import Expr, Var, Value, Cast, Unary, Binary, Index
|
217
|
-
from .visitors import ExprVisitor, iter_vars, structurally_equivalent, is_lvalue
|
240
|
+
from .expr import Expr, Var, Value, Cast, Unary, Binary, Index, Stretch
|
241
|
+
from .visitors import ExprVisitor, iter_vars, iter_identifiers, structurally_equivalent, is_lvalue
|
218
242
|
from .constructors import (
|
219
243
|
lift,
|
220
244
|
cast,
|
@@ -234,5 +258,9 @@ from .constructors import (
|
|
234
258
|
shift_left,
|
235
259
|
shift_right,
|
236
260
|
index,
|
261
|
+
add,
|
262
|
+
sub,
|
263
|
+
mul,
|
264
|
+
div,
|
237
265
|
lift_legacy_condition,
|
238
266
|
)
|