'Return a dense array representation of this operator.
Returns
arr : ndarray, shape=(n, n)
An array with the same shape and containing
the same data represented by this `LinearOperator`.'

def todense(self):

    (s, y, n_corrs, rho) = (self.sk, self.yk, self.n_corrs, self.rho)
    I = np.eye(dtype=self.dtype, *self.shape)
    Hk = I
    for i in range(n_corrs):
        A1 = (I - ((s[i][:, np.newaxis] * y[i][np.newaxis, :]) * rho[i]))
        A2 = (I - ((y[i][:, np.newaxis] * s[i][np.newaxis, :]) * rho[i]))
        Hk = (np.dot(A1, np.dot(Hk, A2)) + ((rho[i] * s[i][:, np.newaxis]) * s[i][np.newaxis, :]))
    return Hk
