To solve a real, symmetric eigenvalue problem you need the following three EISPACK subroutines: tred2.f -- tridiagonalizes matrix tql2.f -- diagonalizes matrix obtained by tred2 pythag.f -- called by tql2 The call sequence is call tred2(N,N,A,d,e,A) call tql2(N,N,d,e,A,ierr) A - real*8 (double prec.) symmetric matrix of dimension NxN N - its dimension, integer d,e - real*8 vectors of length N (workspace) ierr- error flag, integer on output d contains the eigenvalues in ascending order, and the columns of A contain the corresponding normalized eigenvectors. For more info see source code!