qml.estimator.ops.QubitUnitary

class QubitUnitary(num_wires=None, precision=None, wires=None)[source]

Bases: ResourceOperator

Resource class for the QubitUnitary template.

Parameters:
  • num_wires (int | None) – the number of qubits the operation acts upon

  • precision (Union[float, None], optional) – The precision used when preparing the single qubit rotations used to synthesize the n-qubit unitary.

  • wires (Sequence[int], None) – the wires the operation acts on

Resources:

The resources are defined by combining the two equalities in Möttönen and Vartiainen (2005), Fig 14 , we can express an \(n\) qubit unitary as four \(n - 1\) qubit unitaries and three multiplexed rotations via (SelectPauliRot). Specifically, the cost is given by:

  • 1-qubit unitary, the cost is approximated as a single RZ rotation.

  • 2-qubit unitary, the cost is approximated as four single qubit rotations and three CNOT gates.

  • 3-qubit unitary or more, the cost is given according to the reference above, recursively.

See also

The associated PennyLane operation QubitUnitary.

Example

The resources for this operation are computed using:

>>> import pennylane.estimator as qre
>>> qu = qre.QubitUnitary(num_wires=3)
>>> gate_set =["RZ", "RY", "CNOT"]
>>> print(qre.estimate(qu, gate_set))
--- Resources: ---
 Total wires: 3
    algorithmic wires: 3
    allocated wires: 0
         zero state: 0
         any state: 0
 Total gates : 52
  'RZ': 24,
  'RY': 4,
  'CNOT': 24

resource_keys

resource_params

Returns a dictionary containing the minimal information needed to compute the resources.

resource_keys = {'num_wires', 'precision'}
resource_params

Returns a dictionary containing the minimal information needed to compute the resources.

Returns:

A dictionary containing the resource parameters:
  • num_wires (int): the number of qubits the operation acts upon

  • precision (Union[float, None], optional): The precision used when preparing the single qubit rotations used to synthesize the n-qubit unitary.

Return type:

dict

resource_decomp(num_wires[, precision])

Returns a list representing the resources of the operator.

resource_rep(num_wires[, precision])

Returns a compressed representation containing only the parameters of the Operator that are needed to compute the resources.

classmethod resource_decomp(num_wires, precision=None)[source]

Returns a list representing the resources of the operator. Each object in the list represents a gate and the number of times it occurs in the circuit.

Parameters:
  • num_wires (int) – the number of qubits the operation acts upon

  • precision (Union[float, None], optional) – The precision used when preparing the single qubit rotations used to synthesize the n-qubit unitary.

Resources:

The resources are defined by combining the two equalities in Möttönen and Vartiainen (2005), Fig 14, we can express an \(n\)- qubit unitary as four \(n - 1\)-qubit unitaries and three multiplexed rotations via (SelectPauliRot). Specifically, the cost is given by:

  • 1-qubit unitary, the cost is approximated as a single RZ rotation.

  • 2-qubit unitary, the cost is approximated as four single qubit rotations and three CNOT gates.

  • 3-qubit unitary or more, the cost is given according to the reference above, recursively.

Returns:

A list of GateCount objects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.

Return type:

list[GateCount]

classmethod resource_rep(num_wires, precision=None)[source]

Returns a compressed representation containing only the parameters of the Operator that are needed to compute the resources.

Parameters:
  • num_wires (int) – the number of qubits the operation acts upon

  • precision (Union[float, None], optional) – The precision used when preparing the single qubit rotations used to synthesize the n-qubit unitary.

Returns:

the operator in a compressed representation

Return type:

CompressedResourceOp

Contents

Using PennyLane

Release news

Development

API

Internals