code: def logaddexp2(x1: ArrayLike, x2: ArrayLike, /) -> Array:
      x1, x2 = promote_args_inexact("logaddexp2", x1, x2)
      amax = lax.max(x1, x2)
      if dtypes.issubdtype(x1.dtype, np.floating):
          delta = lax.sub(x1, x2)
          return lax.select(
              lax._isnan(delta),
              lax.add(x1, x2),  # NaNs or infinities of the same sign.
              lax.add(
                  amax,
                  lax.div(
                      lax.log1p(exp2(lax.neg(lax.abs(delta)))),
                      _constant_like(x1, np.log(2)),
                  ),
              ),
          )
      else:
          delta = lax.sub(
              lax.add(x1, x2), lax.mul(amax, _constant_like(amax, 2))
          )
          out = lax.add(
              amax,
              lax.div(
                  lax.log1p(exp2(delta)), _constant_like(x1, np.log(2))
              ),
          )
          return lax.complex(
              lax.real(out),
              _wrap_between(lax.imag(out), np.pi / np.log(2)),
          )
  
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 29 for calling a global function with example usage: logaddexp2() and returns: lax, lax