code: def _clip(
      a,
      a_min,
      a_max,
      /,
      out=None,
      *,
      where=True,
      casting="same_kind",
      order="K",
      dtype=None,
      subok=True,
  ):
      ivy.utils.assertions.check_all_or_any_fn(
          a_min,
          a_max,
          fn=ivy.exists,
          type="any",
          limit=[1, 2],
          message="at most one of a_min and a_max can be None",
      )
      if a_min is None:
          ret = ivy.minimum(a, a_max, out=out)
      elif a_max is None:
          ret = ivy.maximum(a, a_min, out=out)
      else:
          ret = ivy.clip(a, a_min, a_max, out=out)
      if ivy.is_array(where):
          ret = ivy.where(
              where, ret, ivy.default(out, ivy.zeros_like(ret)), out=out
          )
      return ret
  
file_path: ivy/ivy/functional/frontends/numpy/mathematical_functions/miscellaneous.py
imports: import ivy
  from ivy.functional.frontends.numpy.func_wrapper import to_ivy_arrays_and_back, handle_numpy_casting, handle_numpy_dtype, from_zero_dim_arrays_to_scalar, handle_numpy_out
  from ivy.func_wrapper import with_supported_dtypes
label_desc: Use image node_id 3 for calling a global function with example usage: _clip(out) and returns: ret