Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK. Go to the latest version

RZXGate

class RZXGate(theta)

GitHub

A parameteric 2-qubit ZXZ \otimes X interaction (rotation about ZX).

This gate is maximally entangling at θ=π/2\theta = \pi/2.

The cross-resonance gate (CR) for superconducting qubits implements a ZX interaction (however other terms are also present in an experiment).

Circuit Symbol:

     ┌─────────┐
q_0:0
Rzx(θ)
q_1:1
     └─────────┘

Matrix Representation:

RZX(θ) q0,q1=exp(iθ2XZ)=(cos(θ2)0isin(θ2)00cos(θ2)0isin(θ2)isin(θ2)0cos(θ2)00isin(θ2)0cos(θ2))\providecommand{\th}{\frac{\theta}{2}}\\\begin{split}R_{ZX}(\theta)\ q_0, q_1 = exp(-i \frac{\theta}{2} X{\otimes}Z) = \begin{pmatrix} \cos(\th) & 0 & -i\sin(\th) & 0 \\ 0 & \cos(\th) & 0 & i\sin(\th) \\ -i\sin(\th) & 0 & \cos(\th) & 0 \\ 0 & i\sin(\th) & 0 & \cos(\th) \end{pmatrix}\end{split}
Note

In Qiskit’s convention, higher qubit indices are more significant (little endian convention). In the above example we apply the gate on (q_0, q_1) which results in the XZX \otimes Z tensor order. Instead, if we apply it on (q_1, q_0), the matrix will be ZXZ \otimes X:

     ┌─────────┐
q_0:1
Rzx(θ)
q_1:0
     └─────────┘
RZX(θ) q1,q0=exp(iθ2ZX)=(cos(θ2)isin(θ2)00isin(θ2)cos(θ2)0000cos(θ2)isin(θ2)00isin(θ2)cos(θ2))\providecommand{\th}{\frac{\theta}{2}}\\\begin{split}R_{ZX}(\theta)\ q_1, q_0 = exp(-i \frac{\theta}{2} Z{\otimes}X) = \begin{pmatrix} \cos(\th) & -i\sin(\th) & 0 & 0 \\ -i\sin(\th) & \cos(\th) & 0 & 0 \\ 0 & 0 & \cos(\th) & i\sin(\th) \\ 0 & 0 & i\sin(\th) & \cos(\th) \end{pmatrix}\end{split}

This is a direct sum of RX rotations, so this gate is equivalent to a uniformly controlled (multiplexed) RX gate:

RZX(θ) q1,q0=(RX(θ)00RX(θ))\begin{split}R_{ZX}(\theta)\ q_1, q_0 = \begin{pmatrix} RX(\theta) & 0 \\ 0 & RX(-\theta) \end{pmatrix}\end{split}

Examples:

RZX(θ=0)=IR_{ZX}(\theta = 0) = I RZX(θ=2π)=IR_{ZX}(\theta = 2\pi) = -I RZX(θ=π)=iZXR_{ZX}(\theta = \pi) = -i Z \otimes X RZX(θ=π2)=12(10i0010ii0100i01)\begin{split}RZX(\theta = \frac{\pi}{2}) = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 0 & -i & 0 \\ 0 & 1 & 0 & i \\ -i & 0 & 1 & 0 \\ 0 & i & 0 & 1 \end{pmatrix}\end{split}

Create new RZX gate.


Attributes

decompositions

Get the decompositions of the instruction from the SessionEquivalenceLibrary.

definition

Return definition in terms of other basic gates.

label

Type: str

Return gate label

Return type

str

params

return instruction params.


Methods

add_decomposition

RZXGate.add_decomposition(decomposition)

Add a decomposition of the instruction to the SessionEquivalenceLibrary.

assemble

RZXGate.assemble()

Assemble a QasmQobjInstruction

Return type

Instruction

broadcast_arguments

RZXGate.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]], []

The general broadcasting rules are:

  • 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

RZXGate.c_if(classical, val)

Add classical condition on register classical and value val.

control

RZXGate.control(num_ctrl_qubits=1, label=None, ctrl_state=None)

Return controlled version of gate. See ControlledGate for usage.

Parameters

  • num_ctrl_qubits (Optional[int]) – number of controls to add to gate (default=1)
  • label (Optional[str]) – optional gate label
  • ctrl_state (Union[int, str, 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

RZXGate.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

RZXGate.inverse()

Return inverse RZX gate (i.e. with the negative rotation angle).

is_parameterized

RZXGate.is_parameterized()

Return True .IFF. instruction is parameterized else False

mirror

RZXGate.mirror()

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

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

Returns

a fresh gate with sub-gates reversed

Return type

qiskit.circuit.Instruction

power

RZXGate.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

RZXGate.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

RZXGate.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.

to_matrix

RZXGate.to_matrix()

Return a Numpy.array for the gate unitary matrix.

Raises

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

Return type

ndarray

Was this page helpful?
Report a bug or request content on GitHub.