      SUBROUTINE EIGENV(A,ZK,YK,NN,CTOL,MAXIT,ICOUNT,ESHIFT,EIGV)
CDEP  
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
      DIMENSION A(NN,NN),ZK(NN),YK(NN)      
      EXTERNAL DOTVEC
C.. ITERATE
      EIGVAL=ESHIFT
      NITER=0
 100  CONTINUE
      EIGLAM=EIGVAL
      NITER=NITER+1
      IF (NITER.GT.MAXIT) STOP '**EIGENV: TOO MANY ITERATIONS'
      RECIP=1/DSQRT(DOTVEC(ZK,ZK,NN))
      DO 300 I=1,NN
C*    YK(I)=ZK(I)*RECIP
         ZK(I)=ZK(I)*RECIP
         YK(I)=ZK(I)
 300  CONTINUE
      CALL DECOM3(2,A,ZK,NN)
C*    CALL MATVEC(A,YK,NN,ZK)
      EIGNEW=DOTVEC(YK,ZK,NN)
      EIGVAL=ESHIFT+1/EIGNEW
C*    EIGVAL=EIGNEW
      WRITE(6,1000) NITER,EIGVAL,EIGNEW,DABS(ZK(1))
 1000 FORMAT(1X,I5,': ',1P,G13.5,' - ',G13.5,' CONTROL VALUE: ',G13.5)
      C=DABS(1.-EIGLAM/EIGVAL)
      IF (C.GT.CTOL) GOTO 100
 200  CONTINUE            
      WRITE(6,1010) ICOUNT,EIGVAL,NITER
 1010 FORMAT(
     +     2X,'>>> ',I5,'. EIGENVALUE=',1P,G20.10,', ITERATIONS=',I5/)
      EIGV=EIGVAL
      RETURN
      END
