Coherence.

        .. math:: \mathrm{COH}_{ij}(f) = \\frac{S_{ij}(f)}
                                               {\sqrt{S_{ii}(f) S_{jj}(f)}}

        References
        ----------
        P. L. Nunez, R. Srinivasan, A. F. Westdorp, R. S. Wijesinghe,
        D. M. Tucker, R. B. Silverstein, P. J. Cadusch. EEG coherency I:
        statistics, reference electrode, volume conduction, Laplacians,
        cortical imaging, and interpretation at multiple scales. Electroenceph.
        Clin. Neurophysiol. 103(5): 499-515, 1997.

def COH(self):
        """Coherence.

        .. math:: \mathrm{COH}_{ij}(f) = \\frac{S_{ij}(f)}
                                               {\sqrt{S_{ii}(f) S_{jj}(f)}}

        References
        ----------
        P. L. Nunez, R. Srinivasan, A. F. Westdorp, R. S. Wijesinghe,
        D. M. Tucker, R. B. Silverstein, P. J. Cadusch. EEG coherency I:
        statistics, reference electrode, volume conduction, Laplacians,
        cortical imaging, and interpretation at multiple scales. Electroenceph.
        Clin. Neurophysiol. 103(5): 499-515, 1997.
        """
        S = self.S()
        # TODO: can we do that more efficiently?
        return S / np.sqrt(np.einsum('ii..., jj... ->ij...', S, S.conj()))