code: def complex_mul(cqt_filter, stft):
      """Since PyTorch does not support complex numbers and its operation.
      We need to write our own complex multiplication function. This one is specially
      designed for CQT usage.
  
      Parameters
      ----------
      cqt_filter : tuple of torch.Tensor
          The tuple is in the format of ``(real_torch_tensor, imag_torch_tensor)``
  
      Returns
      -------
      tuple of torch.Tensor
          The output is in the format of ``(real_torch_tensor, imag_torch_tensor)``
      """
  
      cqt_filter_real = cqt_filter[0]
      cqt_filter_imag = cqt_filter[1]
      fourier_real = stft[0]
      fourier_imag = stft[1]
  
      CQT_real = torch.matmul(
          cqt_filter_real, fourier_real
      ) - torch.matmul(cqt_filter_imag, fourier_imag)
      CQT_imag = torch.matmul(
          cqt_filter_real, fourier_imag
      ) + torch.matmul(cqt_filter_imag, fourier_real)
  
      return CQT_real, CQT_imag
  
imports: import sys
  import torch
  from torch.nn.functional import conv1d, fold
  import numpy
  from time import time
  import math
  from scipy.signal import get_window
  from scipy import signal
  from scipy.fftpack import fft
  import warnings
  from nnAudio.librosa_functions import *
label_desc: Use image node_id 10 for calling a global function with example usage: complex_mul(cqt_filter, stft) and returns: CQT_real,  CQT_imag