code: def test_stft_double_backward(
      ctx,
      seed,
      window_size,
      stride,
      fft_size,
      window_type,
      center,
      pad_mode,
      as_istft_backward,
  ):
      from nbla_test_utils import backward_function_tester
  
      backend = ctx.backend[0].split(":")[0]
      if backend == "cuda":
          pytest.skip(
              "CUDA Convolution N-D is only supported in CUDNN extension"
          )
  
      rng = np.random.RandomState(seed)
      x_shape = create_stft_input_shape(window_size)
      inputs = [rng.randn(*x_shape).astype(np.float32)]
  
      # Some conditions are skipped for the reason of ISTFT use.
      if as_istft_backward:
          # Ignore violation of NOLA condition
          length = x_shape[1]
          if is_nola_violation(
              window_type, window_size, stride, fft_size, length, center
          ):
              pytest.skip("NOLA condition violation.")
  
          if pad_mode != "constant":
              # Normal ISTFT never use `pad_mode` and just slice the output. Thus, `padmode` must be `"constant"` for STFT as a backward of normal ISTFT.`
              pytest.skip(
                  '`pad_mode` must be "constant" when `as_istft_backward == True`.'
              )
  
      func_args = [
          window_size,
          stride,
          fft_size,
          window_type,
          center,
          pad_mode,
          as_istft_backward,
      ]
      backward_function_tester(
          rng, F.stft, inputs=inputs, func_args=func_args, ctx=ctx
      )
  
file_path: nnabla/python/test/function/test_stft.py
imports: import pytest
  import numpy
  import nnabla
  import nnabla.functions
  import librosa
  from nbla_test_utils import list_context
label_desc: Use image node_id 7 for calling a global function with example usage: test_stft_double_backward(ctx, seed, window_size, stride, fft_size, window_type, center, pad_mode, as_istft_backward) without return types