code: def _batch_promotion(*args, default_dtype="float64"):
      # Promote all types
      promote_types = set()
  
      for arg in args:
          if args is None:
              continue
          if isinstance(arg, (float, int)):
              continue
          promote_types.add(ivy.dtype(arg))
  
      if "float64" in promote_types:
          return "float64"
  
      if "float32" in promote_types:
          return "float32"
  
      if "float16" in promote_types:
          return "float32" if "bfloat16" in promote_types else "float16"
  
      if "bfloat16" in promote_types:
          return "bfloat16"
  
      if "int64" in promote_types or "uint64" in promote_types:
          return "float64"
  
      ints = ["int8", "int16", "int32"]
      if "uint32" in promote_types and any(
          d in promote_types for d in ints
      ):
          return "float64"
  
      return default_dtype
  
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 1 for calling a global function with example usage: _batch_promotion() and returns: default_dtype, str, str, unknown, str, str, str