qml.estimator.ops.MultiRZ¶
- class MultiRZ(num_wires=None, precision=None, wires=None)[source]
Bases:
ResourceOperator
Resource class for the MultiRZ gate.
- Parameters:
num_wires (int | None) – the number of wires the operation acts upon
precision (float | None) – error threshold for Clifford + T decomposition of this operation
wires (Sequence[int] | None) – the wires the operation acts on
- Resources:
The resources come from Section VIII (Figure 3) of The Bravyi-Kitaev transformation for quantum computation of electronic structure paper.
Specifically, the resources are given by one
RZ
gate and a cascade of \(2 \times (n - 1)\)CNOT
gates where \(n\) is the number of qubits the gate acts on.
See also
The corresponding PennyLane operation
MultiRZ
.Example
The resources for this operation are computed using:
>>> import pennylane.estimator as qre >>> multi_rz = qre.MultiRZ(num_wires=3) >>> gate_set = {"CNOT", "RZ"} >>> >>> print(qml.estimator.estimate(multi_rz, gate_set)) --- Resources: --- Total wires: 3 algorithmic wires: 3 allocated wires: 0 zero state: 0 any state: 0 Total gates : 5 'RZ': 1, 'CNOT': 4
Attributes
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 (float): error threshold for Clifford + T decomposition of this operation
- Return type:
dict
Methods
adjoint_resource_decomp
(target_resource_params)Returns a list representing the resources for the adjoint of the operator.
controlled_resource_decomp
(num_ctrl_wires, ...)Returns a list representing the resources for a controlled version of the operator.
pow_resource_decomp
(pow_z, ...)Returns a list representing the resources for an operator raised to a power.
resource_decomp
(num_wires[, precision])Returns a list representing the resources for a controlled version of the operator.
resource_rep
(num_wires[, precision])Returns a compressed representation containing only the parameters of the Operator that are needed to compute a resource estimation.
- classmethod adjoint_resource_decomp(target_resource_params)[source]¶
Returns a list representing the resources for the adjoint of the operator.
- Parameters:
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator
- Resources:
The adjoint of this operator just changes the sign of the phase, thus the resources of the adjoint operation results in the original operation.
- 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 controlled_resource_decomp(num_ctrl_wires, num_zero_ctrl, target_resource_params=None)[source]¶
Returns a list representing the resources for a controlled version of the operator.
- Parameters:
num_ctrl_wires (int) – the number of qubits the operation is controlled on
num_zero_ctrl (int) – the number of control qubits, that are controlled when in the \(|0\rangle\) state
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator
- Resources:
The resources are derived from the following identity. If an operation \(\hat{A}\) can be expressed as \(\hat{A} \ = \ \hat{U} \cdot \hat{B} \cdot \hat{U}^{\dagger}\) then the controlled operation \(C\hat{A}\) can be expressed as:
\[C\hat{A} \ = \ \hat{U} \cdot C\hat{B} \cdot \hat{U}^{\dagger}\]Specifically, the resources are one multi-controlled RZ-gate and a cascade of \(2 * (n - 1)\)
CNOT
gates where \(n\) is the number of qubits the gate acts on.
- 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 pow_resource_decomp(pow_z, target_resource_params)[source]¶
Returns a list representing the resources for an operator raised to a power.
- Parameters:
pow_z (int) – the power that the operator is being raised to
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator.
- Resources:
Taking arbitrary powers of a general rotation produces a sum of rotations. The resources simplify to just one total multi-RZ rotation.
- 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_decomp(num_wires, precision=None)[source]¶
Returns a list representing the resources for a controlled version of the operator.
- Parameters:
num_wires (int) – the number of qubits the operation acts upon
precision (float) – error threshold for Clifford + T decomposition of this operation
- Resources:
The resources come from Section VIII (Figure 3) of The Bravyi-Kitaev transformation for quantum computation of electronic structure paper.
Specifically, the resources are given by one
RZ
gate and a cascade of \(2 \times (n - 1)\)CNOT
gates where \(n\) is the number of qubits the gate acts on.
- 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 a resource estimation.
- Parameters:
num_wires (int) – the number of qubits the operation acts upon
precision (float) – error threshold for Clifford + T decomposition of this operation
- Returns:
the operator in a compressed representation
- Return type: