class_docstr: CZ(wires)
  The controlled-Z operator
  
  .. math:: CZ = \begin{bmatrix}
          1 & 0 & 0 & 0 \\
          0 & 1 & 0 & 0\\
          0 & 0 & 1 & 0\\
          0 & 0 & 0 & -1
      \end{bmatrix}.
  
  .. note:: The first wire provided corresponds to the **control qubit**.
  
  **Details:**
  
  * Number of wires: 2
  * Number of parameters: 0
  
  Args:
      wires (Sequence[int]): the wires the operation acts on
class_docstr_tok: ["CZ","(","wires",")","The","controlled-Z","operator","..","math",":",":","CZ","=","\\begin","{","bmatrix","}","1","&","0","&","0","&","0","\\\\","0","&","1","&","0","&","0\\\\","0","&","0","&","1","&","0\\\\","0","&","0","&","0","&","-1","\\end","{","bmatrix","}",".","..","note",":",":","The","first","wire","provided","corresponds","to","the","*","*","control","qubit","*","*",".","*","*","Details",":","*","*","*","Number","of","wires",":","2","*","Number","of","parameters",":","0","Args",":","wires","(","Sequence","[","int","]",")",":","the","wires","the","operation","acts","on"]
docstr: Representation of the operator as a canonical matrix in the computational basis (static method).
  
  The canonical matrix is the textbook matrix representation that does not consider wires.
  Implicitly, this assumes that the wires of the operator correspond to the global wire order.
  
  .. seealso:: :meth:`~.CZ.matrix`
  
  Returns:
      ndarray: matrix
  
  **Example**
  
  >>> print(qml.CZ.compute_matrix())
  [[ 1  0  0  0]
   [ 0  1  0  0]
   [ 0  0  1  0]
   [ 0  0  0 -1]]
docstr_tok: ["Representation","of","the","operator","as","a","canonical","matrix","in","the","computational","basis","(","static","method",")",".","The","canonical","matrix","is","the","textbook","matrix","representation","that","does","not","consider","wires",".","Implicitly",",","this","assumes","that","the","wires","of","the","operator","correspond","to","the","global","wire","order",".","..","seealso",":",":",":","meth",":","`","~.CZ.matrix","`","Returns",":","ndarray",":","matrix","*","*","Example","*","*",">",">",">","print","(","qml.CZ.compute_matrix","(",")",")","[","[","1","0","0","0","]","[","0","1","0","0","]","[","0","0","1","0","]","[","0","0","0","-1","]","]"]
code: def compute_matrix():  # pylint: disable=arguments-differ
      r"""Representation of the operator as a canonical matrix in the computational basis (static method).
  
      The canonical matrix is the textbook matrix representation that does not consider wires.
      Implicitly, this assumes that the wires of the operator correspond to the global wire order.
  
      .. seealso:: :meth:`~.CZ.matrix`
  
      Returns:
          ndarray: matrix
  
      **Example**
  
      >>> print(qml.CZ.compute_matrix())
      [[ 1  0  0  0]
       [ 0  1  0  0]
       [ 0  0  1  0]
       [ 0  0  0 -1]]
      """
      return np.array(
          [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, -1]]
      )
  
imports: import warnings
  from typing import Iterable
  from functools import lru_cache
  import numpy
  import pennylane
  from pennylane.operation import AnyWires
  from pennylane.ops.qubit.non_parametric_ops import PauliY, S, PauliZ, CCZ
  from pennylane.ops.qubit.matrix_ops import QubitUnitary
  from .controlled import ControlledOp
label_desc: Use image node_id 4 for calling the CZ obj's underlying member method code with example usage: obj.compute_matrix() and returns: np