code: def lstm_grad_grad(
      c_prev,
      a,
      i,
      f,
      o,
      c,
      gc,
      gh,
      ggc_prev,
      gga,
      ggi,
      ggf,
      ggo,
      gc_prev,
      ga,
      gi,
      gf,
      go,
      gc_next,
      ggc,
      ggh,
  ):
      xp = backend.get_array_module(a)
      sig_o = _sigmoid(o, xp)
      gsig_o = _grad_sigmoid(sig_o)
      ggsig_o = _grad_grad_sigmoid(sig_o)
      sig_i = _sigmoid(i, xp)
      gsig_i = _grad_sigmoid(sig_i)
      ggsig_i = _grad_grad_sigmoid(sig_i)
      sig_f = _sigmoid(f, xp)
      gsig_f = _grad_sigmoid(sig_f)
      ggsig_f = _grad_grad_sigmoid(sig_f)
      tanh_a = xp.tanh(a)
      gtanh_a = _grad_tanh(tanh_a)
      ggtanh_a = _grad_grad_tanh(tanh_a, gtanh_a)
      tanh_c = xp.tanh(c)
      gtanh_c = _grad_tanh(tanh_c)
      ggtanh_c = _grad_grad_tanh(tanh_c, gtanh_c)
  
      gc_bar = gh * sig_o * gtanh_c + gc
  
      gc_prev[:] = ggf * gc_bar * gsig_f
      ga[:] = (gga * sig_i * ggtanh_a + ggi * gtanh_a * gsig_i) * gc_bar
      gi[:] = (gga * gtanh_a * gsig_i + ggi * tanh_a * ggsig_i) * gc_bar
      gf[:] = (
          ggc_prev * (gh * sig_o * gtanh_c + gc) * gsig_f
          + ggf * gc_bar * c_prev * ggsig_f
      )
  
      ggc[:] = (
          ggc_prev * sig_f
          + gga * sig_i * gtanh_a
          + ggi * tanh_a * gsig_i
          + ggf * c_prev * gsig_f
      )
  
      dgc_do = gh * gsig_o * gtanh_c
      go[:] = ggc * dgc_do + ggo * gh * tanh_c * ggsig_o
      dgc_dc = gh * sig_o * ggtanh_c
      gc_next[:] = ggc * dgc_dc + ggo * gh * gtanh_c * gsig_o
      ggh[:] = ggc * sig_o * gtanh_c + ggo * tanh_c * gsig_o
      return gc_prev, ga, gi, gf, go, gc_next, ggc, ggh
  
imports: import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer.backends import intel64
  from chainer import function
  from chainer import function_node
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 7 for calling a global function with example usage: lstm_grad_grad(c_prev, a, i, f, o, c, gc, gh, ggc_prev, gga, ggi, ggf, ggo, gc_prev, ga, gi, gf, go, gc_next, ggc, ggh) and returns: gc_prev,  ga,  gi,  gf,  go,  gc_next,  ggc,  ggh