ControlledGate¶
- class ControlledGate(name, num_qubits, params, label=None, num_ctrl_qubits=1, definition=None, ctrl_state=None)[source]¶
Controlled unitary gate.
Create a new ControlledGate. In the new gate the first
num_ctrl_qubits
of the gate are the controls.- Parameters
name (
str
) – The name of the gate.num_qubits (
int
) – The number of qubits the gate acts on.params (
List
) – A list of parameters for the gate.label (
Optional
[str
]) – An optional label for the gate.num_ctrl_qubits (
Optional
[int
]) – Number of control qubits.definition (
Optional
[List
[Tuple
[Gate
,List
[Qubit
],List
[Clbit
]]]]) – A list of gate rules for implementing this gate. The elements of the list are tuples of (Gate()
, [qubit_list], [clbit_list]).ctrl_state (
Union
[int
,str
,None
]) – The control state in decimal or as a bitstring (e.g. ‘111’). If specified as a bitstring the length must equal num_ctrl_qubits, MSB on left. If None, use 2**num_ctrl_qubits-1.
- Raises
CircuitError – If
num_ctrl_qubits
>=num_qubits
.CircuitError – ctrl_state < 0 or ctrl_state > 2**num_ctrl_qubits.
Examples:
Create a controlled standard gate and apply it to a circuit.
from qiskit import QuantumCircuit, QuantumRegister from qiskit.circuit.library.standard_gates import HGate qr = QuantumRegister(3) qc = QuantumCircuit(qr) c3h_gate = HGate().control(2) qc.append(c3h_gate, qr) qc.draw()
q0_0: ──■── │ q0_1: ──■── ┌─┴─┐ q0_2: ┤ H ├ └───┘
Create a controlled custom gate and apply it to a circuit.
from qiskit import QuantumCircuit, QuantumRegister from qiskit.circuit.library.standard_gates import HGate qc1 = QuantumCircuit(2) qc1.x(0) qc1.h(1) custom = qc1.to_gate().control(2) qc2 = QuantumCircuit(4) qc2.append(custom, [0, 3, 1, 2]) qc2.draw()
q_0: ──────■─────── ┌─────┴──────┐ q_1: ┤0 ├ │ circuit12 │ q_2: ┤1 ├ └─────┬──────┘ q_3: ──────■───────
Attributes
Return the control state of the gate as a decimal integer.
Get the decompositions of the instruction from the SessionEquivalenceLibrary.
Return definition in terms of other basic gates.
Return gate label
return instruction params.
Methods
ControlledGate.add_decomposition
(decomposition)Add a decomposition of the instruction to the SessionEquivalenceLibrary.
Assemble a QasmQobjInstruction
ControlledGate.broadcast_arguments
(qargs, cargs)Validation and handling of the arguments and its relationship.
ControlledGate.c_if
(classical, val)Add classical condition on register classical and value val.
ControlledGate.control
([num_ctrl_qubits, …])Return controlled version of gate.
ControlledGate.copy
([name])Copy of the instruction.
Invert this gate by calling inverse on the base gate.
Return True .IFF.
For a composite instruction, reverse the order of sub-gates.
ControlledGate.power
(exponent)Creates a unitary gate as gate^exponent.
Return a default OpenQASM string for the instruction.
Creates an instruction with gate repeated n amount of times.
Return a Numpy.array for the gate unitary matrix.