code: def celu(
      x: Union[ivy.Array, ivy.NativeArray],
      /,
      *,
      alpha: float = 1.0,
      complex_mode: Literal["split", "magnitude", "jax"] = "jax",
      out: Optional[ivy.Array] = None,
  ) -> ivy.Array:
      """Apply the Continuously Differentiable Exponential Linear Unit (CELU)
      activation function to each element of the input.
  
      Parameters
      ----------
      x
          Input array.
      alpha
          The alpha value (negative slope) for the CELU formulation. Default is ``1.0``
      complex_mode
          optional specifier for how to handle complex data types. See
          ``ivy.func_wrapper.handle_complex_input`` for more detail.
      out
          optional output array, for writing the result to. It must have a shape that the
          inputs broadcast to.
  
      Returns
      -------
      ret
          The input array with celu applied element-wise.
  
  
      Examples
      --------
      With :class:`ivy.Array` input:
  
      >>> x = ivy.array([0.39, -0.85])
      >>> y = ivy.celu(x)
      >>> y
      ivy.array([ 0.39, -0.57])
  
      With :class:`ivy.Container` input:
  
      >>> x = ivy.Container(a=ivy.array([0.39, -0.85]), b=ivy.array([1., -0.2]))
      >>> y = ivy.celu(x)
      >>> y
      {
          a: ivy.array([0.38999999, -0.57]),
          b: ivy.array([1., -0.18])
      }
      """
      return current_backend(x).celu(x, alpha=alpha, out=out)
  
imports: from typing import Union, Optional, Callable, Literal
  import ivy
  from ivy.utils.backend import current_backend
  from ivy.utils.exceptions import handle_exceptions
  from ivy.func_wrapper import handle_array_function, handle_nestable, to_native_arrays_and_back, handle_array_like_without_promotion, handle_out_argument, inputs_to_ivy_arrays, handle_device, handle_backend_invalid, handle_complex_input
label_desc: Use image node_id 16 for calling a global function with example usage: celu() and returns: current_backend