code: def igft(self, s_hat):
          r
          s_hat = self._check_signal(s_hat)
          return np.tensordot(self.U, s_hat, ([1], [0]))
docs: r"""Compute the inverse graph Fourier transform.
  
          The inverse graph Fourier transform of a Fourier domain signal
          :math:`\hat{s}` is defined as
  
          .. math:: s = U \hat{s},
  
          where :math:`U` is the Fourier basis :attr:`U`.
  
          Parameters
          ----------
          s_hat : array_like
              Graph signal in the Fourier domain.
  
          Returns
          -------
          s : ndarray
              Representation of s_hat in the vertex domain.
  
          Examples
          --------
          >>> G = graphs.Logo()
          >>> G.compute_fourier_basis()
          >>> s_hat = np.random.normal(size=(G.N, 5, 1))
          >>> s = G.igft(s_hat)
          >>> s_hat_star = G.gft(s)
          >>> np.all((s_hat - s_hat_star) < 1e-10)
          True