In `eigen.jl`

function `eigen()`

calls `eigen!()`

which appears to call

`LAPACK.geevx!()`

for all types of matrices (symmetric and non-symmetric).

For symmetric matrices this results in insufficiently orthogonal eigenvectors

- the orthogonality is worse than
`norm(A)*eps()`

.

For symmetric matrix the wrapper should call`LAPACK.syev!`

.

This is illustrated by the following example in Julia 1.0.2:

```
# Example
using LinearAlgebra
import Random
Random.seed!(123)
n=1600
D=rand(n)
a=rand(n)
A=diagm(0=>D)+a*a'
λ,X=eigen(A)
μ,Y=LAPACK.syev!('V','U',deepcopy(A))
# Relative residuals and orthogonality
opnorm(A*X-X*diagm(0=>λ))/opnorm(A), opnorm(X'*X-I),
opnorm(A*Y-Y*diagm(0=>μ))/opnorm(A), opnorm(Y'*Y-I)
```