title: scipy.linalg.eig return complex eigenvalues for covariance matrix?
body: <p>The eigenvalues of a covariance matrix should be real and non-negative because covariance matrices are symmetric and semi positive definite.</p>
  
  <p>However, take a look at the following experiment with scipy:</p>
  
  <pre><code>&gt;&gt;&gt; a=np.random.random(5)
  &gt;&gt;&gt; b=np.random.random(5)
  &gt;&gt;&gt; ab = np.vstack((a,b)).T
  &gt;&gt;&gt; C=np.cov(ab)
  &gt;&gt;&gt; eig(C)
  7.90174997e-01 +0.00000000e+00j,
  2.38344473e-17 +6.15983679e-17j,
  2.38344473e-17 -6.15983679e-17j,
  -1.76100435e-17 +0.00000000e+00j,   
  5.42658040e-33 +0.00000000e+00j
  </code></pre>
  
  <p><strong>However</strong>, reproducing the above example in Matlab works correctly:</p>
  
  <pre><code>a = [0.6271, 0.4314, 0.3453, 0.8073, 0.9739]
  b = [0.1924, 0.3680, 0.0568, 0.1831, 0.0176]
  C=cov([a;b])
  eig(C)
  -0.0000
  -0.0000
   0.0000
   0.0000
   0.7902
  </code></pre>