You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version

# UCPauliRotGate

class `UCPauliRotGate(angle_list, rot_axis)`

GitHub

Uniformly controlled rotations (also called multiplexed rotations). The decomposition is based on ‘Synthesis of Quantum Logic Circuits’ by Shende et al. (https://arxiv.org/pdf/quant-ph/0406176.pdf)

Input: angle_list = list of (real) rotation angles [a_0,…,a_{2^k-1}]. Must have at least one entry.

rot_axis = rotation axis for the single qubit rotations

(currently, ‘X’, ‘Y’ and ‘Z’ are supported)

Create a new gate.

Parameters

• name – The Qobj name of the gate.
• num_qubits – The number of qubits the gate acts on.
• params – A list of parameters.
• label – An optional label for the gate.

## Methods

`UCPauliRotGate.add_decomposition(decomposition)`

Add a decomposition of the instruction to the SessionEquivalenceLibrary.

### assemble

`UCPauliRotGate.assemble()`

Assemble a QasmQobjInstruction

`UCPauliRotGate.broadcast_arguments(qargs, cargs)`

Validation and handling of the arguments and its relationship.

For example, `cx([q[0],q[1]], q[2])` means `cx(q[0], q[2]); cx(q[1], q[2])`. This method yields the arguments in the right grouping. In the given example:

``````in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []``````

• If len(qargs) == 1:

``[q[0], q[1]] -> [q[0]],[q[1]]``
• If len(qargs) == 2:

``````[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
[[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
[[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]``````
• If len(qargs) >= 3:

``[q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]``

Parameters

• qargs (`List`) – List of quantum bit arguments.
• cargs (`List`) – List of classical bit arguments.

Return type

`Tuple`[`List`, `List`]

Returns

A tuple with single arguments.

Raises

CircuitError – If the input is not valid. For example, the number of arguments does not match the gate expectation.

### c_if

`UCPauliRotGate.c_if(classical, val)`

Set a classical equality condition on this instruction between the register or cbit `classical` and value `val`.

Note

This is a setter method, not an additive one. Calling this multiple times will silently override any previously set condition; it does not stack.

### control

`UCPauliRotGate.control(num_ctrl_qubits=1, label=None, ctrl_state=None)`

Return controlled version of gate. See `ControlledGate` for usage.

Parameters

• num_ctrl_qubits (`int`) – number of controls to add to gate (default=1)
• label (`Optional`[`str`]) – optional gate label
• ctrl_state (`Union`[`str`, `int`, `None`]) – The control state in decimal or as a bitstring (e.g. ‘111’). If None, use 2**num_ctrl_qubits-1.

Returns

Controlled version of gate. This default algorithm uses num_ctrl_qubits-1 ancillae qubits so returns a gate of size num_qubits + 2*num_ctrl_qubits - 1.

Return type

qiskit.circuit.ControlledGate

Raises

QiskitError – unrecognized mode or invalid ctrl_state

### copy

`UCPauliRotGate.copy(name=None)`

Copy of the instruction.

Parameters

name (str) – name to be given to the copied circuit, if None then the name stays the same.

Returns

a copy of the current instruction, with the name

updated if it was provided

Return type

qiskit.circuit.Instruction

### inverse

`UCPauliRotGate.inverse()`

Invert this instruction.

If the instruction is composite (i.e. has a definition), then its definition will be recursively inverted.

Special instructions inheriting from Instruction can implement their own inverse (e.g. T and Tdg, Barrier, etc.)

Returns

a fresh instruction for the inverse

Return type

qiskit.circuit.Instruction

Raises

CircuitError – if the instruction is not composite and an inverse has not been implemented for it.

### is_parameterized

`UCPauliRotGate.is_parameterized()`

Return True .IFF. instruction is parameterized else False

### power

`UCPauliRotGate.power(exponent)`

Creates a unitary gate as gate^exponent.

Parameters

exponent (float) – Gate^exponent

Returns

To which to_matrix is self.to_matrix^exponent.

Return type

qiskit.extensions.UnitaryGate

Raises

CircuitError – If Gate is not unitary

### qasm

`UCPauliRotGate.qasm()`

Return a default OpenQASM string for the instruction.

Derived instructions may override this to print in a different format (e.g. measure q[0] -> c[0];).

### repeat

`UCPauliRotGate.repeat(n)`

Creates an instruction with gate repeated n amount of times.

Parameters

n (int) – Number of times to repeat the instruction

Returns

Containing the definition.

Return type

qiskit.circuit.Instruction

Raises

CircuitError – If n < 1.

### reverse_ops

`UCPauliRotGate.reverse_ops()`

For a composite instruction, reverse the order of sub-instructions.

This is done by recursively reversing all sub-instructions. It does not invert any gate.

Returns

a new instruction with

sub-instructions reversed.

Return type

qiskit.circuit.Instruction

### soft_compare

`UCPauliRotGate.soft_compare(other)`

Soft comparison between gates. Their names, number of qubits, and classical bit numbers must match. The number of parameters must match. Each parameter is compared. If one is a ParameterExpression then it is not taken into account.

Parameters

other (instruction) – other instruction.

Returns

are self and other equal up to parameter expressions.

Return type

bool

### to_matrix

`UCPauliRotGate.to_matrix()`

Return a Numpy.array for the gate unitary matrix.

Returns

if the Gate subclass has a matrix definition.

Return type

np.ndarray

Raises

CircuitError – If a Gate subclass does not implement this method an exception will be raised when this base class method is called.

### validate_parameter

`UCPauliRotGate.validate_parameter(parameter)`

Gate parameters should be int, float, or ParameterExpression

## Attributes

### condition_bits

Get Clbits in condition.

Return type

`List`[`Clbit`]

### decompositions

Get the decompositions of the instruction from the SessionEquivalenceLibrary.

### definition

Return definition in terms of other basic gates.

### duration

Get the duration.

### label

Return instruction label

Return type

`str`

Return the name.

### num_clbits

Return the number of clbits.

### num_qubits

Return the number of qubits.

### params

return instruction params.

### unit

Get the time unit of duration.