code: def split(
      x: JaxArray,
      /,
      *,
      copy: Optional[bool] = None,
      num_or_size_splits: Optional[
          Union[int, Sequence[int], JaxArray]
      ] = None,
      axis: int = 0,
      with_remainder: bool = False,
  ) -> List[JaxArray]:
      if x.shape == ():
          if num_or_size_splits is not None and num_or_size_splits != 1:
              raise ivy.utils.exceptions.IvyException(
                  "input array had no shape, but num_sections specified was"
                  f" {num_or_size_splits}"
              )
          return [x]
      if isinstance(num_or_size_splits, jnp.ndarray):
          num_or_size_splits = num_or_size_splits.tolist()
      if num_or_size_splits is None:
          num_or_size_splits = x.shape[axis]
      elif isinstance(num_or_size_splits, int) and with_remainder:
          num_chunks = x.shape[axis] / num_or_size_splits
          num_chunks_int = math.floor(num_chunks)
          remainder = num_chunks - num_chunks_int
          if remainder != 0:
              num_or_size_splits = [
                  num_or_size_splits
              ] * num_chunks_int + [int(remainder * num_or_size_splits)]
      if isinstance(num_or_size_splits, (list, tuple)):
          num_or_size_splits = np.cumsum(
              np.array(num_or_size_splits[:-1])
          )
      return jnp.split(x, num_or_size_splits, axis)
  
imports: import math
  from numbers import Number
  from typing import Union, Tuple, Optional, List, Sequence, Iterable
  import jax.numpy
  import numpy
  import ivy
  from ivy.func_wrapper import with_unsupported_dtypes
  from ivy.functional.backends.jax import JaxArray
  from .None import backend_version
label_desc: Use image node_id 10 for calling a global function with example usage: split() and returns: jnp, list