code: def equal(x1, x2, out=None, where=None, **kwargs):
      """
      Return (x1 == x2) element-wise.
  
      Parameters
      ----------
      x1, x2 : array_like
          Input tensors of the same shape.
      out : Tensor, None, or tuple of Tensor and None, optional
          A location into which the result is stored. If provided, it must have
          a shape that the inputs broadcast to. If not provided or `None`,
          a freshly-allocated array is returned. A tuple (possible only as a
          keyword argument) must have length equal to the number of outputs.
      where : array_like, optional
          Values of True indicate to calculate the ufunc at that position, values
          of False indicate to leave the value in the output alone.
      **kwargs
          For other keyword-only arguments, see the
          :ref:`ufunc docs <ufuncs.kwargs>`.
  
      Returns
      -------
      out : Tensor or bool
          Output tensor of bools, or a single bool if x1 and x2 are scalars.
  
      See Also
      --------
      not_equal, greater_equal, less_equal, greater, less
  
      Examples
      --------
      >>> import mars.tensor as mt
  
      >>> mt.equal([0, 1, 3], mt.arange(3)).execute()
      array([ True,  True, False])
  
      What is compared are values, not types. So an int (1) and a tensor of
      length one can evaluate as True:
  
      >>> mt.equal(1, mt.ones(1))
      array([ True])
      """
  
      op = TensorEqual(**kwargs)
      return op(x1, x2, out=out, where=where)
  
file_path: mars/mars/tensor/arithmetic/equal.py
imports: import numpy
  from ...None import opcodes
  from ..utils import inject_dtype
  from .core import TensorBinOp
  from .utils import arithmetic_operand
label_desc: Use image node_id 1 for calling a global function with example usage: equal(x1, x2, out, where) and returns: op