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 – the operator class to retrieve decomposition rules for.

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