Previous: imtqlv Up: ../eispad.html Next: minfit


INVIT(NM,N,A,WR,WI,SELECT,MM,M,Z,IERR,RM1,RV1,RV2)

       SUBROUTINE INVIT(NM,N,A,WR,WI,SELECT,MM,M,Z,IERR,RM1,RV1,RV2)
 C
       INTEGER I,J,K,L,M,N,S,II,IP,MM,MP,NM,NS,N1,UK,IP1,ITS,KM1,IERR
       DOUBLE PRECISION A(NM,N),WR(N),WI(N),Z(NM,MM),RM1(N,N),
      X       RV1(N),RV2(N)
       DOUBLE PRECISION T,W,X,Y,EPS3,NORM,NORMV,EPSLON,GROWTO,ILAMBD,
      X       PYTHAG,RLAMBD,UKROOT
       LOGICAL SELECT(N)
 C
 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE INVIT
 C     BY PETERS AND WILKINSON.
 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 418-439(1971).
 C
 C     THIS SUBROUTINE FINDS THOSE EIGENVECTORS OF A REAL UPPER
 C     HESSENBERG MATRIX CORRESPONDING TO SPECIFIED EIGENVALUES,
 C     USING INVERSE ITERATION.
 C
 C     ON INPUT
 C
 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
 C          DIMENSION STATEMENT.
 C
 C        N IS THE ORDER OF THE MATRIX.
 C
 C        A CONTAINS THE HESSENBERG MATRIX.
 C
 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS, RESPECTIVELY,
 C          OF THE EIGENVALUES OF THE MATRIX.  THE EIGENVALUES MUST BE
 C          STORED IN A MANNER IDENTICAL TO THAT OF SUBROUTINE  HQR,
 C          WHICH RECOGNIZES POSSIBLE SPLITTING OF THE MATRIX.
 C
 C        SELECT SPECIFIES THE EIGENVECTORS TO BE FOUND. THE
 C          EIGENVECTOR CORRESPONDING TO THE J-TH EIGENVALUE IS
 C          SPECIFIED BY SETTING SELECT(J) TO .TRUE..
 C
 C        MM SHOULD BE SET TO AN UPPER BOUND FOR THE NUMBER OF
 C          COLUMNS REQUIRED TO STORE THE EIGENVECTORS TO BE FOUND.
 C          NOTE THAT TWO COLUMNS ARE REQUIRED TO STORE THE
 C          EIGENVECTOR CORRESPONDING TO A COMPLEX EIGENVALUE.
 C
 C     ON OUTPUT
 C
 C        A AND WI ARE UNALTERED.
 C
 C        WR MAY HAVE BEEN ALTERED SINCE CLOSE EIGENVALUES ARE PERTURBED
 C          SLIGHTLY IN SEARCHING FOR INDEPENDENT EIGENVECTORS.
 C
 C        SELECT MAY HAVE BEEN ALTERED.  IF THE ELEMENTS CORRESPONDING
 C          TO A PAIR OF CONJUGATE COMPLEX EIGENVALUES WERE EACH
 C          INITIALLY SET TO .TRUE., THE PROGRAM RESETS THE SECOND OF
 C          THE TWO ELEMENTS TO .FALSE..
 C
 C        M IS THE NUMBER OF COLUMNS ACTUALLY USED TO STORE
 C          THE EIGENVECTORS.
 C
 C        Z CONTAINS THE REAL AND IMAGINARY PARTS OF THE EIGENVECTORS.
 C          IF THE NEXT SELECTED EIGENVALUE IS REAL, THE NEXT COLUMN
 C          OF Z CONTAINS ITS EIGENVECTOR.  IF THE EIGENVALUE IS
 C          COMPLEX, THE NEXT TWO COLUMNS OF Z CONTAIN THE REAL AND
 C          IMAGINARY PARTS OF ITS EIGENVECTOR.  THE EIGENVECTORS ARE
 C          NORMALIZED SO THAT THE COMPONENT OF LARGEST MAGNITUDE IS 1.
 C          ANY VECTOR WHICH FAILS THE ACCEPTANCE TEST IS SET TO ZERO.
 C
 C        IERR IS SET TO
 C          ZERO       FOR NORMAL RETURN,
 C          -(2*N+1)   IF MORE THAN MM COLUMNS OF Z ARE NECESSARY
 C                     TO STORE THE EIGENVECTORS CORRESPONDING TO
 C                     THE SPECIFIED EIGENVALUES.
 C          -K         IF THE ITERATION CORRESPONDING TO THE K-TH
 C                     VALUE FAILS,
 C          -(N+K)     IF BOTH ERROR SITUATIONS OCCUR.
 C
 C        RM1, RV1, AND RV2 ARE TEMPORARY STORAGE ARRAYS.  NOTE THAT RM1
 C          IS SQUARE OF DIMENSION N BY N AND, AUGMENTED BY TWO COLUMNS
 C          OF Z, IS THE TRANSPOSE OF THE CORRESPONDING ALGOL B ARRAY.
 C
 C     THE ALGOL PROCEDURE GUESSVEC APPEARS IN INVIT IN LINE.
 C
 C     CALLS CDIV FOR COMPLEX DIVISION.
 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
 C
 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
 C
 C     THIS VERSION DATED AUGUST 1983.
 C
 C     ------------------------------------------------------------------
 C