code: def cheb1ap(N, rp):
      """
      Return (z,p,k) for Nth-order Chebyshev type I analog lowpass filter.
  
      The returned filter prototype has `rp` decibels of ripple in the passband.
  
      The filter's angular (e.g. rad/s) cutoff frequency is normalized to 1,
      defined as the point at which the gain first drops below ``-rp``.
  
      See Also
      --------
      cheby1 : 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 error
          # Even order filters have DC gain of -rp dB
          return cupy.array([]), cupy.array([]), 10 ** (-rp / 20)
      z = cupy.array([])
  
      # Ripple factor (epsilon)
      eps = cupy.sqrt(10 ** (0.1 * rp) - 1.0)
      mu = 1.0 / N * cupy.arcsinh(1 / eps)
  
      # Arrange poles in an ellipse on the left half of the S-plane
      m = cupy.arange(-N + 1, N, 2)
      theta = pi * m / (2 * N)
      p = -cupy.sinh(mu + 1j * theta)
  
      k = cupy.prod(-p, axis=0).real
      if N % 2 == 0:
          k = k / cupy.sqrt(1 + eps * eps)
  
      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 30 for calling a global function with example usage: cheb1ap(N, rp) and returns: z,  p,  k, cupy,  cupy,  unknown