code: def backward(self, indexes, grad_outputs):
      p, x, y, gz = self.get_retained_inputs()
      ggp, ggx, ggy = grad_outputs
      gp = gz * (ggx - ggy)
      gx = gz * ggp
      gy = -gx
      ggz = (x - y) * ggp + p * ggx + (1 - p) * ggy
      return gp, gx, gy, ggz
  
file_path: chainer/chainer/functions/math/linear_interpolate.py
imports: from chainer.backends import cuda
  from chainer import function_node
  from chainer import utils
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the LinearInterpolateGrad obj's underlying member method code with example usage: obj.backward(indexes, grad_outputs) and returns: gp,  gx,  gy,  ggz