covariance seems to work, though there is rounding error