code: def histogram(data, bins, range_hist=None):
      """Conditionally jitted histogram.
  
      Parameters
      ----------
      data : array-like
          Input data. Passed as first positional argument to ``np.histogram``.
      bins : int or array-like
          Passed as keyword argument ``bins`` to ``np.histogram``.
      range_hist : (float, float), optional
          Passed as keyword argument ``range`` to ``np.histogram``.
  
      Returns
      -------
      hist : array
          The number of counts per bin.
      density : array
          The density corresponding to each bin.
      bin_edges : array
          The edges of the bins used.
      """
      hist, bin_edges = np.histogram(data, bins=bins, range=range_hist)
      hist_dens = hist / (hist.sum() * np.diff(bin_edges))
      return hist, hist_dens, bin_edges
  
imports: import warnings
  import numpy
  from scipy.fftpack import fft
  from scipy.optimize import brentq
  from scipy.signal import convolve, convolve2d, gaussian
  from scipy.sparse import coo_matrix
  from scipy.special import ive
  from ..utils import _cov, _dot, _stack, conditional_jit
label_desc: Use image node_id 25 for calling a global function with example usage: histogram(data, bins, range_hist) and returns: hist,  hist_dens,  bin_edges