code: def _compute_rdp_sample_without_replacement_scalar(q, sigma, alpha):
      """Compute RDP of the Sampled Gaussian mechanism at order alpha.
  
      Args:
        q: The sampling proportion =  m / n.  Assume m is an integer <= n.
        sigma: The std of the additive Gaussian noise.
        alpha: The order at which RDP is computed.
  
      Returns:
        RDP at alpha, can be np.inf.
      """
  
      assert (q <= 1) and (q >= 0) and (alpha >= 1)
  
      if q == 0:
          return 0
  
      if q == 1.0:
          return alpha / (2 * sigma**2)
  
      if np.isinf(alpha):
          return np.inf
  
      if float(alpha).is_integer():
          return _compute_rdp_sample_without_replacement_int(
              q, sigma, alpha
          ) / (alpha - 1)
      else:
          # When alpha not an integer, we apply Corollary 10 of [WBK19] to interpolate
          # the CGF and obtain an upper bound
          alpha_f = math.floor(alpha)
          alpha_c = math.ceil(alpha)
  
          x = _compute_rdp_sample_without_replacement_int(
              q, sigma, alpha_f
          )
          y = _compute_rdp_sample_without_replacement_int(
              q, sigma, alpha_c
          )
          t = alpha - alpha_f
          return ((1 - t) * x + t * y) / (alpha - 1)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import sys
  import numpy
  from scipy import special
  import six
label_desc: Use image node_id 17 for calling a global function with example usage: _compute_rdp_sample_without_replacement_scalar(q, sigma, alpha) and returns: int, unknown, np, unknown, unknown