INVIT(3F)

INVIT, SINVIT - EISPACK routine. This subroutine finds those eigenvectors of a REAL UPPER Hessenberg matrix corresponding to specified eigenvalues, using inverse iteration.

As shipped in IRIX 6.5.22. Unchanged since IRIX 6.5.

NAME
     INVIT, SINVIT   -  EISPACK routine.  This subroutine finds those
     eigenvectors of a REAL UPPER Hessenberg matrix corresponding to specified
     eigenvalues, using inverse iteration.


SYNOPSYS
          subroutine  invit(nm,n,a,wr,wi,select,mm,m,z,ierr,rm1,rv1,rv2)
          integer          nm, n, mm, m, ierr
          double precision a(nm,n), wr(n), wi(n), z(nm,mm)
          double precision rm1(n,n), rv1(n), rv2(n)
          logical          select(n)

          subroutine sinvit(nm,n,a,wr,wi,select,mm,m,z,ierr,rm1,rv1,rv2)
          integer          nm, n, mm, m, ierr
          real             a(nm,n), wr(n), wi(n), z(nm,mm)
          real             rm1(n,n), rv1(n), rv2(n)
          logical          select(n)



DESCRIPTION
     On INPUT

     NM must be set to the row dimension of two-dimensional array parameters
     as declared in the calling program dimension statement.

     N is the order of the matrix.

     A contains the Hessenberg matrix.

     WR and WI contain the real and imaginary parts, respectively, of the
     eigenvalues of the matrix.  The eigenvalues MUST be stored in a manner
     IDENTICAL to that of subroutine  HQR, which recognizes possible splitting
     of the matrix.

     SELECT specifies the eigenvectors to be found. The eigenvector
     corresponding to the J-th eigenvalue is specified by setting SELECT(J) to
     .TRUE.

     MM should be set to an upper bound for the number of columns required to
     store the eigenvectors to be found.  NOTE that two columns are required
     to store the eigenvector corresponding to a complex eigenvalue.  On
     OUTPUT

     A and WI are unaltered.

     WR may have been altered since close eigenvalues are perturbed slightly
     in searching for independent eigenvectors.

     SELECT may have been altered.  If the elements corresponding to a pair of
     conjugate complex eigenvalues were each initially set to .TRUE., the
     program resets the second of the two elements to .FALSE.

     M is the number of columns actually used to store the eigenvectors.

     Z contains the real and imaginary parts of the eigenvectors. If the next
     selected eigenvalue is real, the next column of Z contains its
     eigenvector.  If the eigenvalue is complex, the next two columns of Z
     contain the real and imaginary parts of its eigenvector.  The
     eigenvectors are normalized so that the component of largest magnitude is
     1.  Any vector which fails the acceptance test is set to zero.

     IERR is set to ZERO       for normal return, -(2*N+1)   if more than MM
     columns of Z are necessary
        to store the eigenvectors corresponding to
        the specified eigenvalues.  -K         if the iteration corresponding
     to the K-th
        value fails, -(N+K)     if both error situations occur.

     RM1 , RV1, and RV2 are temporary storage arrays.  Note that RM1 is square
     of dimension N by N and, augmented by two columns of Z, is the transpose
     of the corresponding ALGOL B array.  The ALGOL procedure GUESSVEC appears
     in INVIT in line.  Calls PYTHAG(A,B) for sqrt(A**2 + B**2).  Calls CDIV
     for complex division.  Questions and comments should be directed to B. S.
     Garbow, APPLIED MATHEMATICS DIVISION, ARGONNE NATIONAL LABORATORY