code: def logsumexp(
      ary,
      *,
      b=None,
      b_inv=None,
      axis=None,
      keepdims=False,
      out=None,
      copy=True,
  ):
      """Stable logsumexp when b >= 0 and b is scalar.
  
      b_inv overwrites b unless b_inv is None.
      """
      # check dimensions for result arrays
      ary = np.asarray(ary)
      if ary.dtype.kind == "i":
          ary = ary.astype(np.float64)
      dtype = ary.dtype.type
      shape = ary.shape
      shape_len = len(shape)
      if isinstance(axis, Sequence):
          axis = tuple(
              axis_i if axis_i >= 0 else shape_len + axis_i
              for axis_i in axis
          )
          agroup = axis
      else:
          axis = (
              axis
              if (axis is None) or (axis >= 0)
              else shape_len + axis
          )
          agroup = (axis,)
      shape_max = (
          tuple(1 for _ in shape)
          if axis is None
          else tuple(
              1 if i in agroup else d for i, d in enumerate(shape)
          )
      )
      # create result arrays
      if out is None:
          if not keepdims:
              out_shape = (
                  tuple()
                  if axis is None
                  else tuple(
                      d for i, d in enumerate(shape) if i not in agroup
                  )
              )
          else:
              out_shape = shape_max
          out = np.empty(out_shape, dtype=dtype)
      if b_inv == 0:
          return (
              np.full_like(out, np.inf, dtype=dtype)
              if out.shape
              else np.inf
          )
      if b_inv is None and b == 0:
          return np.full_like(out, -np.inf) if out.shape else -np.inf
      ary_max = np.empty(shape_max, dtype=dtype)
      # calculations
      ary.max(axis=axis, keepdims=True, out=ary_max)
      if copy:
          ary = ary.copy()
      ary -= ary_max
      np.exp(ary, out=ary)
      ary.sum(axis=axis, keepdims=keepdims, out=out)
      np.log(out, out=out)
      if b_inv is not None:
          ary_max -= np.log(b_inv)
      elif b:
          ary_max += np.log(b)
      out += ary_max if keepdims else ary_max.squeeze()
      # transform to scalar if possible
      return out if out.shape else dtype(out)
  
imports: import warnings
  from collections.abc import Sequence
  from copy import copy
  from copy import deepcopy
  import numpy
  import pandas
  from scipy.fftpack import next_fast_len
  from scipy.interpolate import CubicSpline
  from scipy.stats.mstats import mquantiles
  from xarray import apply_ufunc
  from ..None import _log
  from ..utils import conditional_jit, conditional_vect, conditional_dask
  from .density_utils import histogram
label_desc: Use image node_id 6 for calling a global function with example usage: logsumexp(ary) and returns: unknown, unknown, unknown