catalyst.passes.merge_rotations¶
- merge_rotations(fn=None)[source]¶
Specify that the
-merge-rotations
MLIR compiler pass for merging roations (peephole) will be applied.The full list of supported gates are as follows:
qml.RX
,qml.CRX
,qml.RY
,qml.CRY
,qml.RZ
,qml.CRZ
,qml.PhaseShift
,qml.ControlledPhaseShift
,qml.Rot
,qml.CRot
,qml.MultiRZ
.Note
Unlike PennyLane circuit transformations, the QNode itself will not be changed or transformed by applying these decorators.
As a result, circuit inspection tools such as
draw()
will continue to display the circuit as written in Python.- Parameters
fn (QNode) – the QNode to apply the cancel inverses compiler pass to
- Return type
QNode
Example
In this example the three
qml.RX
will be merged in a single one with the sum of angles as parameter.from catalyst.debug import get_compilation_stage from catalyst.passes import merge_rotations dev = qml.device("lightning.qubit", wires=1) @qjit(keep_intermediate=True) @merge_rotations @qml.qnode(dev) def circuit(x: float): qml.RX(x, wires=0) qml.RX(0.1, wires=0) qml.RX(x**2, wires=0) return qml.expval(qml.PauliZ(0))
>>> circuit(0.54) Array(0.5965506257017892, dtype=float64)
code/api/catalyst.passes.merge_rotations
Download Python script
Download Notebook
View on GitHub