# Eigenvalues using rgg.f

Hey folks, I'm having an issue using a routine from the netlib that is supposed to calculate eigenvalues and eigenvectors. The canned routine can be found here:

http://www.netlib.org/seispack/rgg.f

I want to find the eigenvalues of a matrix (a more complex hamiltonian), so for my simple attempt to get this code to work, I input the diagonal matrix with 1 and 2 on the diagonals. So if everything worked fine, this canned routine should just spit out 1 and 2. So my issue comes in when I run this, it spits out a segmentation fault error and I can't sort out why it isn't working. Anyone have any insight into where I'm going wrong? My trial code is given below.

program trial
implicit none

double precision, allocatable, dimension(:,:) :: hamiltonian
double precision, allocatable, dimension(:,:) :: identity
double precision, allocatable, dimension(:) :: reigenval
double precision, allocatable, dimension(:) :: ieigenval
double precision, allocatable, dimension(:) :: denom
double precision, allocatable, dimension(:,:) :: eigenvec

double precision trueValue(100)
integer i, j, m, n, k, gridsize

gridsize = 2

k = gridsize

allocate(hamiltonian(k,k),identity(k,k),reigenval(k),ieigenval(k),denom(k),eigenvec(k,k))

! makes the matrices
do i=1, gridsize
do j=1, gridsize
hamiltonian(i,j) = delta(i,j)*i
identity(i,j) = delta(i,j)
enddo
enddo

! calls the canned routine
call rgg(k,k,hamiltonian,identity,reigenval,ieigenval,denom,0,eigenvec,0)

open (unit=15, file='eigenvalueSHO.txt', access='append', status='new')

do i=1, gridsize
write(15,*) i, reigenval(i)
enddo

close(unit=15)

deallocate(hamiltonian,identity,reigenval,ieigenval,denom,eigenvec)

contains

! function to calculate kronecker delta

integer, intent(in) :: m
integer, intent(in) :: n

if (m .eq. n) then
else