code: def G(self):
          
          if self.c is None:
              raise RuntimeError('Inverse cross spectral density requires '
                                 'invertible noise covariance matrix c.')
          A = self.A()
          # TODO: can we do that more efficiently?
          G = np.einsum('ji..., jk... ->ik...', A.conj(), self.Cinv())
          G = np.einsum('ij..., jk... ->ik...', G, A)
          return G
docs: Inverse cross-spectral density.
  
          .. math:: \mathbf{G}(f) = \mathbf{A}(f) \mathbf{C}^{-1} \mathbf{A}'(f)