MCXRecursive#

class qiskit.circuit.library.MCXRecursive(num_ctrl_qubits=None, label=None, ctrl_state=None)[source]#

Bases: MCXGate

Implement the multi-controlled X gate using recursion.

Using a single ancilla qubit, the multi-controlled X gate is recursively split onto four sub-registers. This is done until we reach the 3- or 4-controlled X gate since for these we have a concrete implementation that do not require ancillas.

Create new MCX gate.

Attributes

condition_bits#

Get Clbits in condition.

ctrl_state#

Return the control state of the gate as a decimal integer.

decompositions#

Get the decompositions of the instruction from the SessionEquivalenceLibrary.

definition#

Return definition in terms of other basic gates. If the gate has open controls, as determined from self.ctrl_state, the returned definition is conjugated with X without changing the internal _definition.

duration#

Get the duration.

label#

Return instruction label

name#

Get name of gate. If the gate has open controls the gate name will become:

<original_name_o<ctrl_state>

where <original_name> is the gate name for the default case of closed control qubits and <ctrl_state> is the integer value of the control state for the gate.

num_ancilla_qubits#

The number of ancilla qubits.

num_clbits#

Return the number of clbits.

num_ctrl_qubits#

Get number of control qubits.

Returns:

The number of control qubits for the gate.

Return type:

int

num_qubits#

Return the number of qubits.

params#

Get parameters from base_gate.

Returns:

List of gate parameters.

Return type:

list

Raises:

CircuitError -- Controlled gate does not define a base gate

unit#

Get the time unit of duration.

Methods

static get_num_ancilla_qubits(num_ctrl_qubits, mode='recursion')[source]#

Get the number of required ancilla qubits.

inverse()[source]#

Invert this gate. The MCX is its own inverse.