code: def power(x1: ArrayLike, x2: ArrayLike, /) -> Array:
      check_arraylike("power", x1, x2)
      check_no_float0s("power", x1, x2)
  
      # We apply special cases, both for algorithmic and autodiff reasons:
      #  1. for *concrete* integer scalar powers (and arbitrary bases), we use
      #     unrolled binary exponentiation specialized on the exponent, which is
      #     more precise for e.g. x ** 2 when x is a float (algorithmic reason!);
      #  2. for integer bases and integer powers, use unrolled binary exponentiation
      #     where the number of steps is determined by a max bit width of 64
      #     (algorithmic reason!);
      #  3. for integer powers and float/complex bases, we apply the lax primitive
      #     without any promotion of input types because in this case we want the
      #     function to be differentiable wrt its first argument at 0;
      #  3. for other cases, perform jnp dtype promotion on the arguments then apply
      #     lax.pow.
  
      # Case 1: concrete integer scalar powers:
      if isinstance(core.get_aval(x2), core.ConcreteArray):
          try:
              x2 = operator.index(x2)  # type: ignore[arg-type]
          except TypeError:
              pass
          else:
              (x1,) = promote_dtypes_numeric(x1)
              return lax.integer_pow(x1, x2)
  
      # Handle cases #2 and #3 under a jit:
      return _power(x1, x2)
  
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 23 for calling a global function with example usage: power() and returns: _power, lax