code: def frexp(x: ArrayLike, /) -> tuple[Array, Array]:
      check_arraylike("frexp", x)
      (x,) = promote_dtypes_inexact(x)
      if dtypes.issubdtype(x.dtype, np.complexfloating):
          raise TypeError(
              "frexp does not support complex-valued inputs"
          )
  
      dtype = dtypes.dtype(x)
      info = dtypes.finfo(dtype)
      mask = (1 << info.nexp) - 1
      bias = 1 - info.minexp
  
      x1, x2 = _normalize_float(x)
      x2 += ((x1 >> info.nmant) & mask) - bias + 1
      x1 &= ~(mask << info.nmant)
      x1 |= (bias - 1) << info.nmant
      x1 = lax.bitcast_convert_type(x1, dtype)
  
      cond = isinf(x) | isnan(x) | (x == 0)
      x2 = _where(cond, lax._zeros(x2), x2)
      return _where(cond, x, x1), lax.convert_element_type(x2, np.int32)
  
imports: from __future__ import annotations
  from functools import partial
  import operator
  from textwrap import dedent
  from typing import Any, Callable, overload
  import numpy
  from jax._src import core
  from jax._src import dtypes
  from jax._src.api import jit
  from jax._src.custom_derivatives import custom_jvp
  from jax._src.lax import lax
  from jax._src.typing import Array, ArrayLike
  from jax._src.numpy.util import check_arraylike, promote_args, promote_args_inexact, promote_args_numeric, promote_dtypes_inexact, promote_dtypes_numeric, promote_shapes, _where, _wraps, check_no_float0s
label_desc: Use image node_id 37 for calling a global function with example usage: frexp() and returns: _where,  lax