code: @Override
      public void backward() {
          // TODO: This is less numerically stable than the O(n^2) method of
          // multiplying \prod_{j=1}^{i-1} x_j \prod_{j+1}^n x_j  
          Tensor x = modIn.getOutput();
          Tensor xAdj = modIn.getOutputAdj();
          Tensor tmp = new Tensor(xAdj); // copy
          tmp.fill(yAdj.getValue(0));
          tmp.multiply(y.getValue(0));
          tmp.elemDivide(x);
          xAdj.elemAdd(tmp);
      }
docs: Backward pass: dG/dx_i += dG/dy dy/dx_i = dG/dy \prod_{j \neq i} x_j