code: def solve(a: ArrayLike, b: ArrayLike) -> Array:
      check_arraylike("jnp.linalg.solve", a, b)
      a, b = promote_dtypes_inexact(jnp.asarray(a), jnp.asarray(b))
      # TODO(jakevdp): this condition matches the broadcasting behavior in numpy < 2.0.
      # For the array API specification, we would check only if b.ndim == 1.
      if b.ndim == 1 or a.ndim == b.ndim + 1:
          signature = "(m,m),(m)->(m)"
      else:
          signature = "(m,m),(m,n)->(m,n)"
      return jnp.vectorize(lax_linalg._solve, signature=signature)(a, b)
  
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 32 for calling a global function with example usage: solve(a, b) and returns: jnp