class_docstr: tests for qml.ops.ctrl_decomp_zyz
docstr: Test that the operations in the decomposition are correct.
docstr_tok: ["Test","that","the","operations","in","the","decomposition","are","correct","."]
code: def test_correct_decomp(self):
      """Test that the operations in the decomposition are correct."""
      phi, theta, omega = 0.123, 0.456, 0.789
      op = qml.Rot(phi, theta, omega, wires=0)
      control_wires = [1, 2, 3]
      decomps = ctrl_decomp_zyz(op, Wires(control_wires))
  
      expected_ops = [
          qml.RZ(0.123, wires=0),
          qml.RY(0.456 / 2, wires=0),
          qml.MultiControlledX(wires=control_wires + [0]),
          qml.RY(-0.456 / 2, wires=0),
          qml.RZ(-(0.123 + 0.789) / 2, wires=0),
          qml.MultiControlledX(wires=control_wires + [0]),
          qml.RZ((0.789 - 0.123) / 2, wires=0),
      ]
      assert all(
          qml.equal(decomp_op, expected_op)
          for decomp_op, expected_op in zip(decomps, expected_ops)
      )
      assert len(decomps) == 7
  
imports: import pytest
  import numpy
  import pennylane
  from pennylane.ops import ctrl_decomp_zyz
  from pennylane.wires import Wires
  from pennylane.ops.op_math.controlled_decompositions import _ctrl_decomp_bisect_od, _ctrl_decomp_bisect_md, _ctrl_decomp_bisect_general, ctrl_decomp_bisect, _convert_to_su2, _bisect_compute_a, _bisect_compute_b
  from pennylane.ops.op_math.controlled import Controlled
  from pennylane import math
label_desc: Use image node_id 4 for calling the TestControlledDecompositionZYZ obj's underlying member method code with example usage: obj.test_correct_decomp() without return types