There are two choices for the argument uplo.
uplo
Must be 'U' or 'L' .
If uplo = 'U' , a stores the upper triangular part of A.
If uplo = 'L' , a stores the lower triangular part of A.
Is it still rightful if the matrix holds all the elements (both upper and lower parts)?
The matrix is overwritten by the eigenvectors on exit. I am not sure if the upper or lower triangular part is not initialized to zeros, the output eigenvectors are still correct.