code: def eigh(
      a: ArrayLike,
      UPLO: str | None = None,
      symmetrize_input: bool = True,
  ) -> tuple[Array, Array]:
      check_arraylike("jnp.linalg.eigh", a)
      if UPLO is None or UPLO == "L":
          lower = True
      elif UPLO == "U":
          lower = False
      else:
          msg = f"UPLO must be one of None, 'L', or 'U', got {UPLO}"
          raise ValueError(msg)
  
      (a,) = promote_dtypes_inexact(jnp.asarray(a))
      v, w = lax_linalg.eigh(
          a, lower=lower, symmetrize_input=symmetrize_input
      )
      return w, v
  
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 23 for calling a global function with example usage: eigh(a, UPLO, symmetrize_input) and returns: w,  v