code: def normalize(
      x, axis=-1, mean=None, variance=None, epsilon=1e-5, where=None
  ):
      default = (
          "float64"
          if mean is not None and variance is not None
          else "float32"
      )
  
      x_typed = _type_conversion(x)
      if mean is None:
          mean = _mean(x_typed, axis=axis, keepdims=True, where=where)
      if variance is None:
          variance = _mean(
              ivy.square(x).astype(x_typed.dtype),
              axis=axis,
              keepdims=True,
              where=where,
          ) - ivy.square(mean)
  
      res = (x - mean) / ivy.sqrt(
          variance + ivy.asarray(epsilon, dtype=x_typed.dtype)
      )
  
      out_type = _batch_promotion(
          x, mean, variance, default_dtype=default
      )
  
      return ivy.asarray(res, dtype=out_type)
  
imports: import ivy
  from ivy.functional.frontends.jax.func_wrapper import to_ivy_arrays_and_back
  from ivy.func_wrapper import with_supported_dtypes
label_desc: Use image node_id 20 for calling a global function with example usage: normalize(x, axis, mean, variance, epsilon, where) and returns: ivy