docs: def two_qubit_matrix_to_operations(q0: ops.Qid,
                                     q1: ops.Qid,
                                     mat: np.ndarray,
                                     allow_partial_czs: bool,
                                     atol: float = 1e-8,
                                     clean_operations: bool = True,
                                     ) -> List[ops.Operation]:
      """Decomposes a two-qubit operation into Z/XY/CZ gates.
  
      Args:
          q0: The first qubit being operated on.
          q1: The other qubit being operated on.
          mat: Defines the operation to apply to the pair of qubits.
          allow_partial_czs: Enables the use of Partial-CZ gates.
          atol: A limit on the amount of absolute error introduced by the
              construction.
          clean_operations: Enables optimizing resulting operation list by
              merging operations and ejecting phased Paulis and Z operations.
  
      Returns:
          A list of operations implementing the matrix.
      """
      kak = linalg.kak_decomposition(mat, atol=atol)
      operations = _kak_decomposition_to_operations(
          q0, q1, kak, allow_partial_czs, atol=atol)
      if clean_operations:
          return _cleanup_operations(operations)
      else:
          return operations