code: def svd(
      a: ArrayLike,
      full_matrices: bool = True,
      compute_uv: bool = True,
      hermitian: bool = False,
  ) -> Array | tuple[Array, Array, Array]:
      check_arraylike("jnp.linalg.svd", a)
      (a,) = promote_dtypes_inexact(jnp.asarray(a))
      if hermitian:
          w, v = lax_linalg.eigh(a)
          s = lax.abs(v)
          if compute_uv:
              sign = lax.sign(v)
              idxs = lax.broadcasted_iota(
                  np.int64, s.shape, dimension=s.ndim - 1
              )
              s, idxs, sign = lax.sort(
                  (s, idxs, sign), dimension=-1, num_keys=1
              )
              s = lax.rev(s, dimensions=[s.ndim - 1])
              idxs = lax.rev(idxs, dimensions=[s.ndim - 1])
              sign = lax.rev(sign, dimensions=[s.ndim - 1])
              u = jnp.take_along_axis(w, idxs[..., None, :], axis=-1)
              vh = _H(u * sign[..., None, :].astype(u.dtype))
              return u, s, vh
          else:
              return lax.rev(
                  lax.sort(s, dimension=-1), dimensions=[s.ndim - 1]
              )
  
      return lax_linalg.svd(
          a, full_matrices=full_matrices, compute_uv=compute_uv
      )
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  from functools import partial
  import numpy
  import textwrap
  import operator
  from typing import Literal, cast, overload
  import jax
  from jax import jit, custom_jvp
  from jax import lax
  from jax._src.lax import lax
  from jax._src.lax import linalg
  from jax._src.numpy import lax_numpy
  from jax._src.numpy import reductions, ufuncs
  from jax._src.numpy.util import _wraps, promote_dtypes_inexact, check_arraylike
  from jax._src.util import canonicalize_axis
  from jax._src.typing import ArrayLike, Array
label_desc: Use image node_id 9 for calling a global function with example usage: svd(a, full_matrices, compute_uv, hermitian) and returns: lax_linalg, u,  s,  vh, lax