qp.decomposition.list_decomps¶
- list_decomps(op)[source]¶
Lists all stored decomposition rules for an operator class.
Note
This function is only relevant when the new experimental graph-based decomposition system (introduced in v0.41) is enabled via
enable_graph(). This new way of doing decompositions is generally more resource efficient and accommodates multiple alternative decomposition rules for an operator.- Parameters:
op (type or Operator or str) – the operator or operator type to retrieve decomposition rules for. For symbolic operators, use strings like
"Adjoint(RY)","Pow(H)","C(RX)", etc.- Returns:
a collection of decomposition rules registered for the given operator.
- Return type:
Example
>>> import pennylane as qp >>> qp.list_decomps(qp.CRX) DecompCollection([ DecompositionRule(name=_crx_to_rx_cz), DecompositionRule(name=_crx_to_rz_ry), DecompositionRule(name=_crx_to_h_crz), DecompositionRule(name=_crx_to_ppr) ]) >>> print(qp.list_decomps(qp.CRX)) Available Decomposition Rules: 0: _crx_to_rx_cz 1: _crx_to_rz_ry 2: _crx_to_h_crz 3: _crx_to_ppr
Each decomposition rule can be accessed by name or by index.
>>> qp.list_decomps(qp.CRX)['_crx_to_ppr'] DecompositionRule(name=_crx_to_ppr) >>> print(qp.list_decomps(qp.CRX)[0]) @register_resources(_crx_to_rx_cz_resources) def _crx_to_rx_cz(phi: TensorLike, wires: WiresLike, **__): qp.RX(phi / 2, wires=wires[1]) qp.CZ(wires=wires) qp.RX(-phi / 2, wires=wires[1]) qp.CZ(wires=wires) >>> print(qp.draw(qp.list_decomps(qp.CRX)[0])(0.5, wires=[0, 1])) 0: ───────────╭●────────────╭●─┤ 1: ──RX(0.25)─╰Z──RX(-0.25)─╰Z─┤
code/api/pennylane.decomposition.list_decomps
Download Python script
Download Notebook
View on GitHub