code: def cheb2ap(N, rs):
      """
      Return (z,p,k) for Nth-order Chebyshev type I analog lowpass filter.
  
      The returned filter prototype has `rs` decibels of ripple in the stopband.
  
      The filter's angular (e.g. rad/s) cutoff frequency is normalized to 1,
      defined as the point at which the gain first reaches ``-rs``.
  
      See Also
      --------
      cheby2 : Filter design function using this prototype
  
      """
      if abs(int(N)) != N:
          raise ValueError("Filter order must be a nonnegative integer")
      elif N == 0:
          # Avoid divide-by-zero warning
          return cupy.array([]), cupy.array([]), 1
  
      # Ripple factor (epsilon)
      de = 1.0 / cupy.sqrt(10 ** (0.1 * rs) - 1)
      mu = cupy.arcsinh(1.0 / de) / N
  
      if N % 2:
          m = cupy.concatenate(
              (cupy.arange(-N + 1, 0, 2), cupy.arange(2, N, 2))
          )
      else:
          m = cupy.arange(-N + 1, N, 2)
  
      z = -cupy.conjugate(1j / cupy.sin(m * pi / (2.0 * N)))
  
      # Poles around the unit circle like Butterworth
      p = -cupy.exp(1j * pi * cupy.arange(-N + 1, N, 2) / (2 * N))
      # Warp into Chebyshev II
      p = cupy.sinh(mu) * p.real + 1j * cupy.cosh(mu) * p.imag
      p = 1.0 / p
  
      k = (cupy.prod(-p, axis=0) / cupy.prod(-z, axis=0)).real
      return z, p, k
  
imports: import warnings
  import math
  from math import pi, prod
  import cupy
  from cupyx.scipy.special import binom
  import cupyx.scipy.special
  from cupyx.scipy.signal import _optimize
  from cupyx.scipy.signal._polyutils import roots, poly
  from cupyx.scipy.signal._lti_conversion import abcd_normalize
label_desc: Use image node_id 31 for calling a global function with example usage: cheb2ap(N, rs) and returns: z,  p,  k, cupy,  cupy,  int