code: def test_complex_fir_dlti(self, xp, scp):
      # centre frequency for filter [Hz]
      fcentre = 50
      # filter passband width [Hz]
      fwidth = 5
      # sample rate [Hz]
      fs = 1e3
      numtaps = 20
  
      # FIR filter about 0Hz
      bbase = scp.signal.firwin(numtaps, fwidth / 2, fs=fs)
  
      # rotate these to desired frequency
      zbase = xp.roots(bbase)
      zrot = zbase * xp.exp(2j * xp.pi * fcentre / fs)
      # FIR filter about 50Hz, maintaining passband gain of 0dB
      bz = bbase[0] * xp.poly(zrot)
  
      system = scp.signal.dlti(bz, 1)
  
      t = xp.arange(200) / fs
  
      # input
      u = xp.exp(2j * xp.pi * fcentre * t) + 0.5 * xp.exp(
          -2j * xp.pi * fcentre * t
      )
  
      ynzp = scp.signal.decimate(u, 2, ftype=system, zero_phase=False)
      yzp = scp.signal.decimate(u, 2, ftype=system, zero_phase=True)
      return ynzp, yzp
  
imports: import cupy
  from cupy import testing
  import cupyx.scipy.signal
  import cupyx.scipy.signal.windows
  import numpy
  import pytest
  from math import gcd
label_desc: Use image node_id 14 for calling the TestDecimate obj's underlying member method code with example usage: obj.test_complex_fir_dlti(xp, scp) and returns: ynzp,  yzp