      program speedtri1
C
C  a benchmark program for eigenvalues of a 
C  tridiagonal matrix
C
C  CWJ  SDSU March 2005
C
C
      implicit none

      integer size
      parameter(size=500)
      
      integer n

      real a(size,size)  ! the matrix in question
      real e(size)       ! eigenvalues
      real work(size)
      real vec(size,size) ! eigenvectors
      real diag(size),offdiag(size)
      integer i,j

      n = size

      call filldiag(size,n,diag,offdiag)
      do i = 1,n
         do j = 1,n
             vec(i,j) =0.0
         enddo
         vec(i,i) = 1.0
      enddo
      call tqli(diag,offdiag,n,size,vec)
      end

C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

      subroutine filldiag(size,n,d,o)
C
C  fills a matrix with random elements
C  makes it symmetric
C   
C  calls function GAUSSVAR (from RANLIB)

      implicit none
      integer size
      real d(size),o(size)
      integer n
      integer i
      integer seed
      data seed/17891/

      real gaussvar

      do i = 1,n
        d(i) = gaussvar(seed)
        o(i) =gaussvar(seed)
      enddo
      return
      end


      

