code: def clip(a, a_min, a_max, out=None):
      """
      Clip (limit) the values in a tensor.
  
      Given an interval, values outside the interval are clipped to
      the interval edges.  For example, if an interval of ``[0, 1]``
      is specified, values smaller than 0 become 0, and values larger
      than 1 become 1.
  
      Parameters
      ----------
      a : array_like
          Tensor containing elements to clip.
      a_min : scalar or array_like or `None`
          Minimum value. If `None`, clipping is not performed on lower
          interval edge. Not more than one of `a_min` and `a_max` may be
          `None`.
      a_max : scalar or array_like or `None`
          Maximum value. If `None`, clipping is not performed on upper
          interval edge. Not more than one of `a_min` and `a_max` may be
          `None`. If `a_min` or `a_max` are array_like, then the three
          arrays will be broadcasted to match their shapes.
      out : Tensor, optional
          The results will be placed in this tensor. It may be the input
          array for in-place clipping.  `out` must be of the right shape
          to hold the output.  Its type is preserved.
  
      Returns
      -------
      clipped_array : Tensor
          An tensor with the elements of `a`, but where values
          < `a_min` are replaced with `a_min`, and those > `a_max`
          with `a_max`.
  
      Examples
      --------
      >>> import mars.tensor as mt
  
      >>> a = mt.arange(10)
      >>> mt.clip(a, 1, 8).execute()
      array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
      >>> a.execute()
      array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
      >>> mt.clip(a, 3, 6, out=a).execute()
      array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
      >>> a = mt.arange(10)
      >>> a.execute()
      array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
      >>> mt.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8).execute()
      array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])
  
      """
      op = TensorClip(a=a, a_min=a_min, a_max=a_max, out=out)
      return op(a, a_min, a_max, out=out)
  
imports: from numbers import Number
  import numpy
  from ...None import opcodes
  from ...serialization.serializables import KeyField, AnyField
  from ...core import ENTITY_TYPE
  from ..array_utils import as_same_device, device
  from ..core import Tensor
  from ..utils import broadcast_shape
  from ..datasource import tensor
  from .core import TensorOperand, TensorElementWise, filter_inputs
label_desc: Use image node_id 1 for calling a global function with example usage: clip(a, a_min, a_max, out) and returns: op