'Construct the operator.'

def __init__(self, sk, yk):

    if ((sk.shape != yk.shape) or (sk.ndim != 2)):
        raise ValueError('sk    and    yk    must    have    matching    shape,    (n_corrs,    n)')
    (n_corrs, n) = sk.shape
    super(LbfgsInvHessProduct, self).__init__(dtype=np.float64, shape=(n, n))
    self.sk = sk
    self.yk = yk
    self.n_corrs = n_corrs
    self.rho = (1 / np.einsum('ij,ij->i', sk, yk))
