// CovarianceMatrix returns the covariance matrix of the distribution. Upon // return, the value at element {i, j} of the covariance matrix is equal to // the covariance of the i^th and j^th variables. // covariance(i, j) = E[(x_i - E[x_i])(x_j - E[x_j])] // If the input matrix is nil a new matrix is allocated, otherwise the result // is stored in-place into the input. func (n *Normal) CovarianceMatrix(s *mat64.SymDense) *mat64.SymDense { if s == nil { s = mat64.NewSymDense(n.Dim(), nil) } sn := s.Symmetric() if sn != n.Dim() { panic("normal: input matrix size mismatch") } n.setSigma() s.CopySym(n.sigma) return s }