paddle_quantum.gate.multi_qubit_gate

The source file of the classes for multi-qubit gates.

class paddle_quantum.gate.multi_qubit_gate.CNOT(qubits_idx=None, num_qubits=None, depth=1, cnot_idx=None)

Bases: Gate

A collection of CNOT gates.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CNOT=|00|I+|11|X=[1000010000010010]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • cnot_idx (List[int] | None) – CNOT gate index. Defaults to None.

paddle_quantum.gate.multi_qubit_gate.CX

alias of CNOT

class paddle_quantum.gate.multi_qubit_gate.CY(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of controlled Y gates.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CY=|00|I+|11|Y=[100001000001j001j0]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

class paddle_quantum.gate.multi_qubit_gate.CZ(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of controlled Z gates.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CZ=|00|I+|11|Z=[1000010000100001]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

class paddle_quantum.gate.multi_qubit_gate.SWAP(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of SWAP gates.

The matrix form of such a gate is:

SWAP=[1000001001000001]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

class paddle_quantum.gate.multi_qubit_gate.CP(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of controlled P gates.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

[100001000010000eiθ]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.CRX(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of controlled rotation gates about the x-axis.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CRx=|00|I+|11|Rx=[1000010000cosθ2isinθ200isinθ2cosθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.CRY(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of controlled rotation gates about the y-axis.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CRy=|00|I+|11|Ry=[1000010000cosθ2sinθ200sinθ2cosθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.CRZ(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of controlled rotation gates about the z-axis.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CRz=|00|I+|11|Rz=[1000010000eiθ20000eiθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.CU(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of controlled single-qubit rotation gates.

For a 2-qubit quantum circuit, when qubits_idx is [0, 1], the matrix form of such a gate is:

CU=[1000010000cosθ2eiλsinθ200eiϕsinθ2ei(ϕ+λ)cosθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.RXX(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of RXX gates.

The matrix form of such a gate is:

RXX(θ)=[cosθ200isinθ20cosθ2isinθ200isinθ2cosθ20isinθ200cosθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.RYY(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of RYY gates.

The matrix form of such a gate is:

RYY(θ)=[cosθ200isinθ20cosθ2isinθ200isinθ2cosθ20isinθ200cosθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.RZZ(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of RZZ gates.

The matrix form of such a gate is:

RZZ(θ)=[eiθ20000eiθ20000eiθ20000eiθ2]
Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.MS(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of Mølmer-Sørensen (MS) gates for trapped ion devices.

The matrix form of such a gate is:

MS=RXX(π2)=12[100i01i00i10i001]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

class paddle_quantum.gate.multi_qubit_gate.CSWAP(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of CSWAP (Fredkin) gates.

The matrix form of such a gate is:

CSWAP=[1000000001000000001000000001000000001000000000100000010000000001]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

class paddle_quantum.gate.multi_qubit_gate.CCX(qubits_idx=None, num_qubits=None, depth=1)

Bases: Gate

A collection of CCX (Toffoli) gates.

The matrix form of such a gate is:

[1000000001000000001000000001000000001000000001000000000100000010]
Parameters:
  • qubits_idx (Iterable | int | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

paddle_quantum.gate.multi_qubit_gate.Toffoli

alias of CCX

class paddle_quantum.gate.multi_qubit_gate.UniversalTwoQubits(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of universal two-qubit gates. One of such a gate requires 15 parameters.

Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.

class paddle_quantum.gate.multi_qubit_gate.UniversalThreeQubits(qubits_idx=None, num_qubits=None, depth=1, param=None, param_sharing=False)

Bases: ParamGate

A collection of universal three-qubit gates. One of such a gate requires 81 parameters.

Parameters:
  • qubits_idx (Iterable | str | None) – Indices of the qubits on which the gates are applied. Defaults to 'cycle'.

  • num_qubits (int | None) – Total number of qubits. Defaults to None.

  • depth (int | None) – Number of layers. Defaults to 1.

  • param (Tensor | float | None) – Parameters of the gates. Defaults to None.

  • param_sharing (bool | None) – Whether gates in the same layer share a parameter. Defaults to False.

Raises:

ValueError – The param must be paddle.Tensor or float.