qml.list_decomps

list_decomps(op_type)[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 (type or str) – the operator class to retrieve decomposition rules for. For symbolic operators, use strings such as "Adjoint(RY)", "Pow(H)", "C(RX)", etc.

Returns:

a list of decomposition rules registered for the given operator.

Return type:

list[DecompositionRule]

Example

>>> import pennylane as qml
>>> qml.list_decomps(qml.CRX)
[<pennylane.decomposition.decomposition_rule.DecompositionRule at 0x136da9de0>,
 <pennylane.decomposition.decomposition_rule.DecompositionRule at 0x136da9db0>,
 <pennylane.decomposition.decomposition_rule.DecompositionRule at 0x136da9f00>]

Each decomposition rule can be inspected:

>>> print(qml.list_decomps(qml.CRX)[0])
@register_resources(_crx_to_rx_cz_resources)
def _crx_to_rx_cz(phi, wires, **__):
    qml.RX(phi / 2, wires=wires[1]),
    qml.CZ(wires=wires),
    qml.RX(-phi / 2, wires=wires[1]),
    qml.CZ(wires=wires),
>>> print(qml.draw(qml.list_decomps(qml.CRX)[0])(0.5, wires=[0, 1]))
0: ───────────╭●────────────╭●─┤
1: ──RX(0.25)─╰Z──RX(-0.25)─╰Z─┤

Contents

Using PennyLane

Release news

Development

API

Internals