qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__cp39-abi3-win32.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 +1 -20
- qiskit/_accelerate.pyd +0 -0
- qiskit/assembler/assemble_schedules.py +0 -2
- qiskit/circuit/__init__.py +1 -44
- qiskit/circuit/_standard_gates_commutations.py +0 -585
- qiskit/circuit/barrier.py +0 -2
- qiskit/circuit/controlflow/builder.py +3 -3
- qiskit/circuit/controlflow/if_else.py +5 -13
- qiskit/circuit/controlflow/while_loop.py +2 -10
- qiskit/circuit/delay.py +3 -20
- qiskit/circuit/equivalence.py +214 -13
- qiskit/circuit/gate.py +1 -3
- qiskit/circuit/instruction.py +11 -32
- qiskit/circuit/instructionset.py +0 -2
- qiskit/circuit/library/__init__.py +14 -110
- qiskit/circuit/library/arithmetic/__init__.py +2 -9
- qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
- qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
- qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
- qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
- qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
- qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
- qiskit/circuit/library/basis_change/qft.py +38 -20
- qiskit/circuit/library/blueprintcircuit.py +0 -64
- qiskit/circuit/library/boolean_logic/__init__.py +4 -4
- qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
- qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
- qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
- qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
- qiskit/circuit/library/data_preparation/__init__.py +3 -6
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
- qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
- qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
- qiskit/circuit/library/fourier_checking.py +11 -72
- qiskit/circuit/library/generalized_gates/__init__.py +1 -1
- qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
- qiskit/circuit/library/generalized_gates/gms.py +14 -67
- qiskit/circuit/library/generalized_gates/gr.py +4 -4
- qiskit/circuit/library/generalized_gates/isometry.py +2 -2
- qiskit/circuit/library/generalized_gates/linear_function.py +6 -12
- qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
- qiskit/circuit/library/generalized_gates/permutation.py +6 -8
- qiskit/circuit/library/generalized_gates/rv.py +9 -8
- qiskit/circuit/library/graph_state.py +10 -93
- qiskit/circuit/library/grover_operator.py +2 -270
- qiskit/circuit/library/hidden_linear_function.py +20 -83
- qiskit/circuit/library/iqp.py +20 -99
- qiskit/circuit/library/n_local/__init__.py +7 -19
- qiskit/circuit/library/n_local/efficient_su2.py +5 -118
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
- qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
- qiskit/circuit/library/n_local/n_local.py +5 -406
- qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
- qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
- qiskit/circuit/library/n_local/two_local.py +7 -14
- qiskit/circuit/library/overlap.py +26 -91
- qiskit/circuit/library/pauli_evolution.py +15 -17
- qiskit/circuit/library/phase_estimation.py +4 -80
- qiskit/circuit/library/quantum_volume.py +20 -72
- qiskit/circuit/library/standard_gates/__init__.py +1 -20
- qiskit/circuit/library/standard_gates/dcx.py +1 -2
- qiskit/circuit/library/standard_gates/ecr.py +2 -2
- qiskit/circuit/library/standard_gates/h.py +3 -4
- qiskit/circuit/library/standard_gates/i.py +1 -2
- qiskit/circuit/library/standard_gates/iswap.py +2 -2
- qiskit/circuit/library/standard_gates/p.py +12 -20
- qiskit/circuit/library/standard_gates/r.py +1 -1
- qiskit/circuit/library/standard_gates/rx.py +3 -4
- qiskit/circuit/library/standard_gates/rxx.py +2 -2
- qiskit/circuit/library/standard_gates/ry.py +3 -4
- qiskit/circuit/library/standard_gates/ryy.py +2 -2
- qiskit/circuit/library/standard_gates/rz.py +12 -13
- qiskit/circuit/library/standard_gates/rzx.py +6 -6
- qiskit/circuit/library/standard_gates/rzz.py +1 -1
- qiskit/circuit/library/standard_gates/s.py +4 -4
- qiskit/circuit/library/standard_gates/swap.py +3 -3
- qiskit/circuit/library/standard_gates/sx.py +3 -4
- qiskit/circuit/library/standard_gates/t.py +2 -2
- qiskit/circuit/library/standard_gates/u.py +3 -11
- qiskit/circuit/library/standard_gates/u1.py +15 -65
- qiskit/circuit/library/standard_gates/u2.py +1 -4
- qiskit/circuit/library/standard_gates/u3.py +3 -31
- qiskit/circuit/library/standard_gates/x.py +5 -7
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/y.py +3 -4
- qiskit/circuit/library/standard_gates/z.py +3 -3
- qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
- qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
- qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
- qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
- qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
- qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
- qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
- qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
- qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
- qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
- qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
- qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
- qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
- qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
- qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
- qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
- qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
- qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
- qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
- qiskit/circuit/parameter.py +0 -4
- qiskit/circuit/parameterexpression.py +34 -167
- qiskit/circuit/quantumcircuit.py +126 -162
- qiskit/circuit/singleton.py +0 -2
- qiskit/circuit/store.py +0 -2
- qiskit/compiler/assembler.py +4 -17
- qiskit/compiler/scheduler.py +0 -2
- qiskit/compiler/sequencer.py +0 -2
- qiskit/compiler/transpiler.py +26 -81
- qiskit/converters/circuit_to_dag.py +2 -2
- qiskit/converters/circuit_to_dagdependency.py +1 -1
- qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
- qiskit/converters/circuit_to_instruction.py +1 -1
- qiskit/converters/dag_to_circuit.py +5 -7
- qiskit/converters/dag_to_dagdependency.py +1 -1
- qiskit/converters/dag_to_dagdependency_v2.py +1 -1
- qiskit/converters/dagdependency_to_circuit.py +1 -5
- qiskit/converters/dagdependency_to_dag.py +1 -6
- qiskit/dagcircuit/collect_blocks.py +3 -3
- qiskit/dagcircuit/dagdependency.py +5 -18
- qiskit/dagcircuit/dagdependency_v2.py +1 -1
- qiskit/dagcircuit/dagnode.py +2 -2
- qiskit/passmanager/__init__.py +2 -2
- qiskit/primitives/backend_estimator.py +2 -5
- qiskit/primitives/backend_sampler_v2.py +18 -61
- qiskit/primitives/base/base_estimator.py +2 -2
- qiskit/primitives/containers/data_bin.py +1 -9
- qiskit/primitives/statevector_sampler.py +1 -1
- qiskit/primitives/utils.py +1 -1
- qiskit/providers/__init__.py +3 -3
- qiskit/providers/backend.py +1 -12
- qiskit/providers/backend_compat.py +3 -23
- qiskit/providers/basic_provider/basic_simulator.py +2 -12
- qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
- qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
- qiskit/providers/models/pulsedefaults.py +0 -2
- qiskit/pulse/builder.py +18 -59
- qiskit/pulse/calibration_entries.py +1 -4
- qiskit/pulse/channels.py +0 -2
- qiskit/pulse/exceptions.py +0 -2
- qiskit/pulse/instruction_schedule_map.py +6 -21
- qiskit/pulse/instructions/acquire.py +0 -2
- qiskit/pulse/instructions/delay.py +0 -2
- qiskit/pulse/instructions/directives.py +0 -8
- qiskit/pulse/instructions/frequency.py +0 -3
- qiskit/pulse/instructions/instruction.py +0 -2
- qiskit/pulse/instructions/phase.py +0 -3
- qiskit/pulse/instructions/play.py +0 -2
- qiskit/pulse/instructions/reference.py +0 -2
- qiskit/pulse/instructions/snapshot.py +0 -2
- qiskit/pulse/library/pulse.py +0 -2
- qiskit/pulse/library/symbolic_pulses.py +0 -28
- qiskit/pulse/library/waveform.py +0 -2
- qiskit/pulse/macros.py +1 -1
- qiskit/pulse/schedule.py +13 -12
- qiskit/pulse/transforms/alignments.py +3 -5
- qiskit/pulse/transforms/dag.py +0 -7
- qiskit/qasm2/export.py +3 -5
- qiskit/qasm2/parse.py +2 -46
- qiskit/qasm3/__init__.py +0 -1
- qiskit/qasm3/ast.py +15 -123
- qiskit/qasm3/exporter.py +77 -103
- qiskit/qobj/converters/pulse_instruction.py +4 -6
- qiskit/qpy/__init__.py +0 -181
- qiskit/qpy/binary_io/circuits.py +5 -20
- qiskit/qpy/binary_io/schedules.py +4 -3
- qiskit/qpy/binary_io/value.py +13 -310
- qiskit/qpy/common.py +2 -46
- qiskit/qpy/formats.py +0 -7
- qiskit/qpy/interface.py +4 -40
- qiskit/quantum_info/__init__.py +0 -4
- qiskit/quantum_info/operators/channel/transformations.py +21 -28
- qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
- qiskit/quantum_info/operators/operator.py +8 -54
- qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
- qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
- qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
- qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
- qiskit/quantum_info/states/densitymatrix.py +5 -5
- qiskit/quantum_info/states/stabilizerstate.py +1 -1
- qiskit/quantum_info/states/statevector.py +6 -6
- qiskit/result/mitigation/base_readout_mitigator.py +1 -1
- qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
- qiskit/result/mitigation/local_readout_mitigator.py +1 -9
- qiskit/result/mitigation/utils.py +0 -57
- qiskit/scheduler/config.py +0 -2
- qiskit/scheduler/methods/basic.py +0 -3
- qiskit/scheduler/schedule_circuit.py +0 -2
- qiskit/scheduler/sequence.py +0 -2
- qiskit/synthesis/__init__.py +0 -25
- qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
- qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
- qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
- qiskit/synthesis/evolution/__init__.py +0 -1
- qiskit/synthesis/evolution/lie_trotter.py +42 -16
- qiskit/synthesis/evolution/product_formula.py +238 -165
- qiskit/synthesis/evolution/qdrift.py +29 -36
- qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
- qiskit/synthesis/multi_controlled/__init__.py +0 -1
- qiskit/synthesis/qft/qft_decompose_full.py +1 -19
- qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
- qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
- qiskit/synthesis/two_qubit/weyl.py +97 -0
- qiskit/synthesis/unitary/qsd.py +5 -5
- qiskit/transpiler/__init__.py +14 -21
- qiskit/transpiler/basepasses.py +1 -1
- qiskit/transpiler/passes/__init__.py +0 -2
- qiskit/transpiler/passes/basis/basis_translator.py +565 -9
- qiskit/transpiler/passes/basis/decompose.py +12 -45
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
- qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
- qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
- qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
- qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
- qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
- qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
- qiskit/transpiler/passes/optimization/__init__.py +0 -1
- qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
- qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
- qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
- qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
- qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
- qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
- qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
- qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
- qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
- qiskit/transpiler/passes/scheduling/alap.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
- qiskit/transpiler/passes/scheduling/asap.py +1 -1
- qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
- qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
- qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
- qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
- qiskit/transpiler/passes/utils/gate_direction.py +275 -12
- qiskit/transpiler/passes/utils/gates_basis.py +30 -7
- qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
- qiskit/transpiler/passmanager_config.py +4 -22
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
- qiskit/transpiler/preset_passmanagers/common.py +3 -5
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
- qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
- qiskit/transpiler/target.py +16 -74
- qiskit/visualization/circuit/_utils.py +2 -2
- qiskit/visualization/circuit/circuit_visualization.py +2 -3
- qiskit/visualization/circuit/matplotlib.py +1 -1
- qiskit/visualization/dag_visualization.py +1 -1
- qiskit/visualization/pass_manager_visualization.py +14 -3
- qiskit/visualization/pulse_v2/interface.py +1 -3
- qiskit/visualization/timeline/core.py +2 -25
- qiskit/visualization/timeline/interface.py +0 -12
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
- qiskit/circuit/twirling.py +0 -145
- qiskit/synthesis/arithmetic/__init__.py +0 -16
- qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
- qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
- qiskit/synthesis/evolution/pauli_network.py +0 -80
- qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
- qiskit/utils/deprecate_pulse.py +0 -119
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
@@ -12,14 +12,11 @@
|
|
12
12
|
|
13
13
|
"""Quantum Volume model circuit."""
|
14
14
|
|
15
|
-
from __future__ import annotations
|
16
|
-
|
17
15
|
from typing import Optional, Union
|
18
16
|
|
19
17
|
import numpy as np
|
20
18
|
from qiskit.circuit import QuantumCircuit, CircuitInstruction
|
21
19
|
from qiskit.circuit.library.generalized_gates import PermutationGate, UnitaryGate
|
22
|
-
from qiskit._accelerate.circuit_library import quantum_volume as qv_rs
|
23
20
|
|
24
21
|
|
25
22
|
class QuantumVolume(QuantumCircuit):
|
@@ -83,85 +80,36 @@ class QuantumVolume(QuantumCircuit):
|
|
83
80
|
depth = depth or num_qubits # how many layers of SU(4)
|
84
81
|
width = num_qubits // 2 # how many SU(4)s fit in each layer
|
85
82
|
rng = seed if isinstance(seed, np.random.Generator) else np.random.default_rng(seed)
|
86
|
-
|
87
|
-
if seed_name is None:
|
83
|
+
if seed is None:
|
88
84
|
# Get the internal entropy used to seed the default RNG, if no seed was given. This
|
89
85
|
# stays in the output name, so effectively stores a way of regenerating the circuit.
|
90
86
|
# This is just best-effort only, for backwards compatibility, and isn't critical (if
|
91
87
|
# someone needs full reproducibility, they should be manually controlling the seeding).
|
92
|
-
|
88
|
+
seed = getattr(getattr(rng.bit_generator, "seed_seq", None), "entropy", None)
|
93
89
|
|
94
90
|
super().__init__(
|
95
|
-
num_qubits,
|
96
|
-
name="quantum_volume_" + str([num_qubits, depth, seed_name]).replace(" ", ""),
|
91
|
+
num_qubits, name="quantum_volume_" + str([num_qubits, depth, seed]).replace(" ", "")
|
97
92
|
)
|
98
|
-
if
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
93
|
+
base = self if flatten else QuantumCircuit(num_qubits, name=self.name)
|
94
|
+
|
95
|
+
# For each layer, generate a permutation of qubits
|
96
|
+
# Then generate and apply a Haar-random SU(4) to each pair
|
97
|
+
unitaries = scipy.stats.unitary_group.rvs(4, depth * width, rng).reshape(depth, width, 4, 4)
|
98
|
+
qubits = tuple(base.qubits)
|
99
|
+
for row in unitaries:
|
100
|
+
perm = rng.permutation(num_qubits)
|
101
|
+
if classical_permutation:
|
102
|
+
for w, unitary in enumerate(row):
|
103
|
+
gate = UnitaryGate(unitary, check_input=False, num_qubits=2)
|
104
|
+
qubit = 2 * w
|
105
|
+
base._append(
|
106
|
+
CircuitInstruction(gate, (qubits[perm[qubit]], qubits[perm[qubit + 1]]))
|
107
|
+
)
|
106
108
|
else:
|
107
|
-
self._append(CircuitInstruction(qv_circ.to_instruction(), tuple(self.qubits)))
|
108
|
-
else:
|
109
|
-
if seed is None:
|
110
|
-
seed = seed_name
|
111
|
-
|
112
|
-
base = self if flatten else QuantumCircuit(num_qubits, name=self.name)
|
113
|
-
|
114
|
-
# For each layer, generate a permutation of qubits
|
115
|
-
# Then generate and apply a Haar-random SU(4) to each pair
|
116
|
-
unitaries = scipy.stats.unitary_group.rvs(4, depth * width, rng).reshape(
|
117
|
-
depth, width, 4, 4
|
118
|
-
)
|
119
|
-
qubits = tuple(base.qubits)
|
120
|
-
for row in unitaries:
|
121
|
-
perm = rng.permutation(num_qubits)
|
122
109
|
base._append(CircuitInstruction(PermutationGate(perm), qubits))
|
123
110
|
for w, unitary in enumerate(row):
|
124
111
|
gate = UnitaryGate(unitary, check_input=False, num_qubits=2)
|
125
112
|
qubit = 2 * w
|
126
113
|
base._append(CircuitInstruction(gate, qubits[qubit : qubit + 2]))
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
def quantum_volume(
|
132
|
-
num_qubits: int,
|
133
|
-
depth: int | None = None,
|
134
|
-
seed: int | np.random.Generator | None = None,
|
135
|
-
) -> QuantumCircuit:
|
136
|
-
"""A quantum volume model circuit.
|
137
|
-
|
138
|
-
The model circuits are random instances of circuits used to measure
|
139
|
-
the Quantum Volume metric, as introduced in [1].
|
140
|
-
|
141
|
-
The model circuits consist of layers of Haar random
|
142
|
-
elements of SU(4) applied between corresponding pairs
|
143
|
-
of qubits in a random bipartition.
|
144
|
-
|
145
|
-
This function is multithreaded and will launch a thread pool with threads equal to the number
|
146
|
-
of CPUs by default. You can tune the number of threads with the ``RAYON_NUM_THREADS``
|
147
|
-
environment variable. For example, setting ``RAYON_NUM_THREADS=4`` would limit the thread pool
|
148
|
-
to 4 threads.
|
149
|
-
|
150
|
-
**Reference Circuit:**
|
151
|
-
|
152
|
-
.. plot::
|
153
|
-
|
154
|
-
from qiskit.circuit.library import quantum_volume
|
155
|
-
circuit = quantum_volume(5, 6, seed=10)
|
156
|
-
circuit.draw('mpl')
|
157
|
-
|
158
|
-
**References:**
|
159
|
-
|
160
|
-
[1] A. Cross et al. Validating quantum computers using
|
161
|
-
randomized model circuits, Phys. Rev. A 100, 032328 (2019).
|
162
|
-
`arXiv:1811.12926 <https://arxiv.org/abs/1811.12926>`__
|
163
|
-
"""
|
164
|
-
if isinstance(seed, np.random.Generator):
|
165
|
-
seed = seed.integers(0, dtype=np.uint64)
|
166
|
-
depth = depth or num_qubits
|
167
|
-
return QuantumCircuit._from_circuit_data(qv_rs(num_qubits, depth, seed))
|
114
|
+
if not flatten:
|
115
|
+
self._append(CircuitInstruction(base.to_instruction(), tuple(self.qubits)))
|
@@ -48,26 +48,7 @@ from .multi_control_rotation_gates import mcrx, mcry, mcrz
|
|
48
48
|
|
49
49
|
def get_standard_gate_name_mapping():
|
50
50
|
"""Return a dictionary mapping the name of standard gates and instructions to an object for
|
51
|
-
that name.
|
52
|
-
|
53
|
-
Examples:
|
54
|
-
|
55
|
-
.. code-block:: python
|
56
|
-
|
57
|
-
from qiskit.circuit.library import get_standard_gate_name_mapping
|
58
|
-
|
59
|
-
gate_name_map = get_standard_gate_name_mapping()
|
60
|
-
cx_object = gate_name_map["cx"]
|
61
|
-
|
62
|
-
print(cx_object)
|
63
|
-
print(type(cx_object))
|
64
|
-
|
65
|
-
.. code-block:: text
|
66
|
-
|
67
|
-
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[])
|
68
|
-
_SingletonCXGate
|
69
|
-
"""
|
70
|
-
|
51
|
+
that name."""
|
71
52
|
from qiskit.circuit.parameter import Parameter
|
72
53
|
from qiskit.circuit.measure import Measure
|
73
54
|
from qiskit.circuit.delay import Delay
|
@@ -38,7 +38,7 @@ class ECRGate(SingletonGate):
|
|
38
38
|
|
39
39
|
**Circuit Symbol:**
|
40
40
|
|
41
|
-
..
|
41
|
+
.. parsed-literal::
|
42
42
|
|
43
43
|
┌─────────┐ ┌────────────┐┌────────┐┌─────────────┐
|
44
44
|
q_0: ┤0 ├ q_0: ┤0 ├┤ RX(pi) ├┤0 ├
|
@@ -66,7 +66,7 @@ class ECRGate(SingletonGate):
|
|
66
66
|
Instead, if we apply it on (q_1, q_0), the matrix will
|
67
67
|
be :math:`Z \otimes X`:
|
68
68
|
|
69
|
-
..
|
69
|
+
.. parsed-literal::
|
70
70
|
|
71
71
|
┌─────────┐
|
72
72
|
q_0: ┤1 ├
|
@@ -38,7 +38,7 @@ class HGate(SingletonGate):
|
|
38
38
|
|
39
39
|
**Circuit symbol:**
|
40
40
|
|
41
|
-
..
|
41
|
+
.. parsed-literal::
|
42
42
|
|
43
43
|
┌───┐
|
44
44
|
q_0: ┤ H ├
|
@@ -142,7 +142,7 @@ class CHGate(SingletonControlledGate):
|
|
142
142
|
|
143
143
|
**Circuit symbol:**
|
144
144
|
|
145
|
-
..
|
145
|
+
.. parsed-literal::
|
146
146
|
|
147
147
|
q_0: ──■──
|
148
148
|
┌─┴─┐
|
@@ -170,8 +170,7 @@ class CHGate(SingletonControlledGate):
|
|
170
170
|
which in our case would be q_1. Thus a textbook matrix for this
|
171
171
|
gate will be:
|
172
172
|
|
173
|
-
..
|
174
|
-
|
173
|
+
.. parsed-literal::
|
175
174
|
┌───┐
|
176
175
|
q_0: ┤ H ├
|
177
176
|
└─┬─┘
|
@@ -38,7 +38,7 @@ class iSwapGate(SingletonGate):
|
|
38
38
|
|
39
39
|
**Circuit Symbol:**
|
40
40
|
|
41
|
-
..
|
41
|
+
.. parsed-literal::
|
42
42
|
|
43
43
|
q_0: ─⨂─
|
44
44
|
│
|
@@ -46,7 +46,7 @@ class iSwapGate(SingletonGate):
|
|
46
46
|
|
47
47
|
**Reference Implementation:**
|
48
48
|
|
49
|
-
..
|
49
|
+
.. parsed-literal::
|
50
50
|
|
51
51
|
┌───┐┌───┐ ┌───┐
|
52
52
|
q_0: ┤ S ├┤ H ├──■──┤ X ├─────
|
@@ -33,35 +33,35 @@ class PhaseGate(Gate):
|
|
33
33
|
|
34
34
|
**Circuit symbol:**
|
35
35
|
|
36
|
-
..
|
36
|
+
.. parsed-literal::
|
37
37
|
|
38
38
|
┌──────┐
|
39
|
-
q_0: ┤ P(
|
39
|
+
q_0: ┤ P(λ) ├
|
40
40
|
└──────┘
|
41
41
|
|
42
42
|
**Matrix Representation:**
|
43
43
|
|
44
44
|
.. math::
|
45
45
|
|
46
|
-
P(\
|
46
|
+
P(\lambda) =
|
47
47
|
\begin{pmatrix}
|
48
48
|
1 & 0 \\
|
49
|
-
0 & e^{i\
|
49
|
+
0 & e^{i\lambda}
|
50
50
|
\end{pmatrix}
|
51
51
|
|
52
52
|
**Examples:**
|
53
53
|
|
54
54
|
.. math::
|
55
55
|
|
56
|
-
P(\
|
56
|
+
P(\lambda = \pi) = Z
|
57
57
|
|
58
58
|
.. math::
|
59
59
|
|
60
|
-
P(\
|
60
|
+
P(\lambda = \pi/2) = S
|
61
61
|
|
62
62
|
.. math::
|
63
63
|
|
64
|
-
P(\
|
64
|
+
P(\lambda = \pi/4) = T
|
65
65
|
|
66
66
|
.. seealso::
|
67
67
|
|
@@ -70,7 +70,7 @@ class PhaseGate(Gate):
|
|
70
70
|
|
71
71
|
.. math::
|
72
72
|
|
73
|
-
P(\
|
73
|
+
P(\lambda) = e^{i{\lambda}/2} RZ(\lambda)
|
74
74
|
|
75
75
|
Reference for virtual Z gate implementation:
|
76
76
|
`1612.00858 <https://arxiv.org/abs/1612.00858>`_
|
@@ -171,11 +171,11 @@ class CPhaseGate(ControlledGate):
|
|
171
171
|
|
172
172
|
**Circuit symbol:**
|
173
173
|
|
174
|
-
..
|
174
|
+
.. parsed-literal::
|
175
175
|
|
176
176
|
|
177
177
|
q_0: ─■──
|
178
|
-
|
178
|
+
│λ
|
179
179
|
q_1: ─■──
|
180
180
|
|
181
181
|
|
@@ -189,7 +189,7 @@ class CPhaseGate(ControlledGate):
|
|
189
189
|
1 & 0 & 0 & 0 \\
|
190
190
|
0 & 1 & 0 & 0 \\
|
191
191
|
0 & 0 & 1 & 0 \\
|
192
|
-
0 & 0 & 0 & e^{i\
|
192
|
+
0 & 0 & 0 & e^{i\lambda}
|
193
193
|
\end{pmatrix}
|
194
194
|
|
195
195
|
.. seealso::
|
@@ -318,7 +318,7 @@ class MCPhaseGate(ControlledGate):
|
|
318
318
|
|
319
319
|
**Circuit symbol:**
|
320
320
|
|
321
|
-
..
|
321
|
+
.. parsed-literal::
|
322
322
|
|
323
323
|
q_0: ───■────
|
324
324
|
│
|
@@ -431,11 +431,3 @@ class MCPhaseGate(ControlledGate):
|
|
431
431
|
def inverse(self, annotated: bool = False):
|
432
432
|
r"""Return inverted MCPhase gate (:math:`MCPhase(\lambda)^{\dagger} = MCPhase(-\lambda)`)"""
|
433
433
|
return MCPhaseGate(-self.params[0], self.num_ctrl_qubits)
|
434
|
-
|
435
|
-
def __eq__(self, other):
|
436
|
-
return (
|
437
|
-
isinstance(other, MCPhaseGate)
|
438
|
-
and self.num_ctrl_qubits == other.num_ctrl_qubits
|
439
|
-
and self.ctrl_state == other.ctrl_state
|
440
|
-
and self._compare_parameters(other)
|
441
|
-
)
|
@@ -34,7 +34,7 @@ class RXGate(Gate):
|
|
34
34
|
|
35
35
|
**Circuit symbol:**
|
36
36
|
|
37
|
-
..
|
37
|
+
.. parsed-literal::
|
38
38
|
|
39
39
|
┌───────┐
|
40
40
|
q_0: ┤ Rx(ϴ) ├
|
@@ -159,7 +159,7 @@ class CRXGate(ControlledGate):
|
|
159
159
|
|
160
160
|
**Circuit symbol:**
|
161
161
|
|
162
|
-
..
|
162
|
+
.. parsed-literal::
|
163
163
|
|
164
164
|
q_0: ────■────
|
165
165
|
┌───┴───┐
|
@@ -189,8 +189,7 @@ class CRXGate(ControlledGate):
|
|
189
189
|
which in our case would be q_1. Thus a textbook matrix for this
|
190
190
|
gate will be:
|
191
191
|
|
192
|
-
..
|
193
|
-
|
192
|
+
.. parsed-literal::
|
194
193
|
┌───────┐
|
195
194
|
q_0: ┤ Rx(ϴ) ├
|
196
195
|
└───┬───┘
|
@@ -33,7 +33,7 @@ class RXXGate(Gate):
|
|
33
33
|
|
34
34
|
**Circuit Symbol:**
|
35
35
|
|
36
|
-
..
|
36
|
+
.. parsed-literal::
|
37
37
|
|
38
38
|
┌─────────┐
|
39
39
|
q_0: ┤1 ├
|
@@ -63,7 +63,7 @@ class RXXGate(Gate):
|
|
63
63
|
|
64
64
|
.. math::
|
65
65
|
|
66
|
-
R_{XX}(\theta = \pi) =
|
66
|
+
R_{XX}(\theta = \pi) = i X \otimes X
|
67
67
|
|
68
68
|
.. math::
|
69
69
|
|
@@ -33,7 +33,7 @@ class RYGate(Gate):
|
|
33
33
|
|
34
34
|
**Circuit symbol:**
|
35
35
|
|
36
|
-
..
|
36
|
+
.. parsed-literal::
|
37
37
|
|
38
38
|
┌───────┐
|
39
39
|
q_0: ┤ Ry(ϴ) ├
|
@@ -158,7 +158,7 @@ class CRYGate(ControlledGate):
|
|
158
158
|
|
159
159
|
**Circuit symbol:**
|
160
160
|
|
161
|
-
..
|
161
|
+
.. parsed-literal::
|
162
162
|
|
163
163
|
q_0: ────■────
|
164
164
|
┌───┴───┐
|
@@ -188,8 +188,7 @@ class CRYGate(ControlledGate):
|
|
188
188
|
which in our case would be q_1. Thus a textbook matrix for this
|
189
189
|
gate will be:
|
190
190
|
|
191
|
-
..
|
192
|
-
|
191
|
+
.. parsed-literal::
|
193
192
|
┌───────┐
|
194
193
|
q_0: ┤ Ry(ϴ) ├
|
195
194
|
└───┬───┘
|
@@ -33,7 +33,7 @@ class RYYGate(Gate):
|
|
33
33
|
|
34
34
|
**Circuit Symbol:**
|
35
35
|
|
36
|
-
..
|
36
|
+
.. parsed-literal::
|
37
37
|
|
38
38
|
┌─────────┐
|
39
39
|
q_0: ┤1 ├
|
@@ -63,7 +63,7 @@ class RYYGate(Gate):
|
|
63
63
|
|
64
64
|
.. math::
|
65
65
|
|
66
|
-
R_{YY}(\theta = \pi) =
|
66
|
+
R_{YY}(\theta = \pi) = i Y \otimes Y
|
67
67
|
|
68
68
|
.. math::
|
69
69
|
|
@@ -34,7 +34,7 @@ class RZGate(Gate):
|
|
34
34
|
|
35
35
|
**Circuit symbol:**
|
36
36
|
|
37
|
-
..
|
37
|
+
.. parsed-literal::
|
38
38
|
|
39
39
|
┌───────┐
|
40
40
|
q_0: ┤ Rz(λ) ├
|
@@ -174,24 +174,24 @@ class CRZGate(ControlledGate):
|
|
174
174
|
|
175
175
|
**Circuit symbol:**
|
176
176
|
|
177
|
-
..
|
177
|
+
.. parsed-literal::
|
178
178
|
|
179
179
|
q_0: ────■────
|
180
180
|
┌───┴───┐
|
181
|
-
q_1: ┤ Rz(
|
181
|
+
q_1: ┤ Rz(λ) ├
|
182
182
|
└───────┘
|
183
183
|
|
184
184
|
**Matrix representation:**
|
185
185
|
|
186
186
|
.. math::
|
187
187
|
|
188
|
-
CRZ(\
|
189
|
-
I \otimes |0\rangle\langle 0| + RZ(\
|
188
|
+
CRZ(\lambda)\ q_0, q_1 =
|
189
|
+
I \otimes |0\rangle\langle 0| + RZ(\lambda) \otimes |1\rangle\langle 1| =
|
190
190
|
\begin{pmatrix}
|
191
191
|
1 & 0 & 0 & 0 \\
|
192
192
|
0 & e^{-i\frac{\lambda}{2}} & 0 & 0 \\
|
193
193
|
0 & 0 & 1 & 0 \\
|
194
|
-
0 & 0 & 0 & e^{i\frac{\
|
194
|
+
0 & 0 & 0 & e^{i\frac{\lambda}{2}}
|
195
195
|
\end{pmatrix}
|
196
196
|
|
197
197
|
.. note::
|
@@ -202,22 +202,21 @@ class CRZGate(ControlledGate):
|
|
202
202
|
which in our case would be q_1. Thus a textbook matrix for this
|
203
203
|
gate will be:
|
204
204
|
|
205
|
-
..
|
206
|
-
|
205
|
+
.. parsed-literal::
|
207
206
|
┌───────┐
|
208
|
-
q_0: ┤ Rz(
|
207
|
+
q_0: ┤ Rz(λ) ├
|
209
208
|
└───┬───┘
|
210
209
|
q_1: ────■────
|
211
210
|
|
212
211
|
.. math::
|
213
212
|
|
214
|
-
CRZ(\
|
215
|
-
|0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes RZ(\
|
213
|
+
CRZ(\lambda)\ q_1, q_0 =
|
214
|
+
|0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes RZ(\lambda) =
|
216
215
|
\begin{pmatrix}
|
217
216
|
1 & 0 & 0 & 0 \\
|
218
217
|
0 & 1 & 0 & 0 \\
|
219
|
-
0 & 0 & e^{-i\frac{\
|
220
|
-
0 & 0 & 0 & e^{i\frac{\
|
218
|
+
0 & 0 & e^{-i\frac{\lambda}{2}} & 0 \\
|
219
|
+
0 & 0 & 0 & e^{i\frac{\lambda}{2}}
|
221
220
|
\end{pmatrix}
|
222
221
|
|
223
222
|
.. seealso::
|
@@ -35,7 +35,7 @@ class RZXGate(Gate):
|
|
35
35
|
|
36
36
|
**Circuit Symbol:**
|
37
37
|
|
38
|
-
..
|
38
|
+
.. parsed-literal::
|
39
39
|
|
40
40
|
┌─────────┐
|
41
41
|
q_0: ┤0 ├
|
@@ -65,7 +65,7 @@ class RZXGate(Gate):
|
|
65
65
|
Instead, if we apply it on (q_1, q_0), the matrix will
|
66
66
|
be :math:`Z \otimes X`:
|
67
67
|
|
68
|
-
..
|
68
|
+
.. parsed-literal::
|
69
69
|
|
70
70
|
┌─────────┐
|
71
71
|
q_0: ┤1 ├
|
@@ -100,19 +100,19 @@ class RZXGate(Gate):
|
|
100
100
|
|
101
101
|
.. math::
|
102
102
|
|
103
|
-
R_{ZX}(\theta = 0)
|
103
|
+
R_{ZX}(\theta = 0) = I
|
104
104
|
|
105
105
|
.. math::
|
106
106
|
|
107
|
-
R_{ZX}(\theta = 2\pi)
|
107
|
+
R_{ZX}(\theta = 2\pi) = -I
|
108
108
|
|
109
109
|
.. math::
|
110
110
|
|
111
|
-
R_{ZX}(\theta = \pi)
|
111
|
+
R_{ZX}(\theta = \pi) = -i Z \otimes X
|
112
112
|
|
113
113
|
.. math::
|
114
114
|
|
115
|
-
|
115
|
+
RZX(\theta = \frac{\pi}{2}) = \frac{1}{\sqrt{2}}
|
116
116
|
\begin{pmatrix}
|
117
117
|
1 & 0 & -i & 0 \\
|
118
118
|
0 & 1 & 0 & i \\
|
@@ -51,7 +51,7 @@ class SGate(SingletonGate):
|
|
51
51
|
|
52
52
|
**Circuit symbol:**
|
53
53
|
|
54
|
-
..
|
54
|
+
.. parsed-literal::
|
55
55
|
|
56
56
|
┌───┐
|
57
57
|
q_0: ┤ S ├
|
@@ -163,7 +163,7 @@ class SdgGate(SingletonGate):
|
|
163
163
|
|
164
164
|
**Circuit symbol:**
|
165
165
|
|
166
|
-
..
|
166
|
+
.. parsed-literal::
|
167
167
|
|
168
168
|
┌─────┐
|
169
169
|
q_0: ┤ Sdg ├
|
@@ -262,7 +262,7 @@ class CSGate(SingletonControlledGate):
|
|
262
262
|
|
263
263
|
**Circuit symbol:**
|
264
264
|
|
265
|
-
..
|
265
|
+
.. parsed-literal::
|
266
266
|
|
267
267
|
q_0: ──■──
|
268
268
|
┌─┴─┐
|
@@ -350,7 +350,7 @@ class CSdgGate(SingletonControlledGate):
|
|
350
350
|
|
351
351
|
**Circuit symbol:**
|
352
352
|
|
353
|
-
..
|
353
|
+
.. parsed-literal::
|
354
354
|
|
355
355
|
q_0: ───■───
|
356
356
|
┌──┴──┐
|
@@ -36,7 +36,7 @@ class SwapGate(SingletonGate):
|
|
36
36
|
|
37
37
|
**Circuit symbol:**
|
38
38
|
|
39
|
-
..
|
39
|
+
.. parsed-literal::
|
40
40
|
|
41
41
|
q_0: ─X─
|
42
42
|
│
|
@@ -150,7 +150,7 @@ class CSwapGate(SingletonControlledGate):
|
|
150
150
|
|
151
151
|
**Circuit symbol:**
|
152
152
|
|
153
|
-
..
|
153
|
+
.. parsed-literal::
|
154
154
|
|
155
155
|
q_0: ─■─
|
156
156
|
│
|
@@ -185,7 +185,7 @@ class CSwapGate(SingletonControlledGate):
|
|
185
185
|
which in our case would be q_2. Thus a textbook matrix for this
|
186
186
|
gate will be:
|
187
187
|
|
188
|
-
..
|
188
|
+
.. parsed-literal::
|
189
189
|
|
190
190
|
q_0: ─X─
|
191
191
|
│
|
@@ -44,7 +44,7 @@ class SXGate(SingletonGate):
|
|
44
44
|
|
45
45
|
**Circuit symbol:**
|
46
46
|
|
47
|
-
..
|
47
|
+
.. parsed-literal::
|
48
48
|
|
49
49
|
┌────┐
|
50
50
|
q_0: ┤ √X ├
|
@@ -220,7 +220,7 @@ class CSXGate(SingletonControlledGate):
|
|
220
220
|
|
221
221
|
**Circuit symbol:**
|
222
222
|
|
223
|
-
..
|
223
|
+
.. parsed-literal::
|
224
224
|
|
225
225
|
q_0: ──■──
|
226
226
|
┌─┴──┐
|
@@ -249,8 +249,7 @@ class CSXGate(SingletonControlledGate):
|
|
249
249
|
which in our case would be `q_1`. Thus a textbook matrix for this
|
250
250
|
gate will be:
|
251
251
|
|
252
|
-
..
|
253
|
-
|
252
|
+
.. parsed-literal::
|
254
253
|
┌────┐
|
255
254
|
q_0: ┤ √X ├
|
256
255
|
└─┬──┘
|
@@ -47,7 +47,7 @@ class TGate(SingletonGate):
|
|
47
47
|
|
48
48
|
**Circuit symbol:**
|
49
49
|
|
50
|
-
..
|
50
|
+
.. parsed-literal::
|
51
51
|
|
52
52
|
┌───┐
|
53
53
|
q_0: ┤ T ├
|
@@ -124,7 +124,7 @@ class TdgGate(SingletonGate):
|
|
124
124
|
|
125
125
|
**Circuit symbol:**
|
126
126
|
|
127
|
-
..
|
127
|
+
.. parsed-literal::
|
128
128
|
|
129
129
|
┌─────┐
|
130
130
|
q_0: ┤ Tdg ├
|