Previous: comqr Up: ../eispad.html Next: cortb


COMQR2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)

       SUBROUTINE COMQR2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
 C
       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
       DOUBLE PRECISION HR(NM,N),HI(NM,N),WR(N),WI(N),ZR(NM,N),ZI(NM,N),
      X       ORTR(IGH),ORTI(IGH)
       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
      X       PYTHAG
 C
 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
 C     AND WILKINSON.
 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
 C
 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
 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        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
 C          SET LOW=1, IGH=N.
 C
 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
 C
 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
 C          ARBITRARY.
 C
 C     ON OUTPUT
 C
 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
 C          HAVE BEEN DESTROYED.
 C
 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
 C          FOR INDICES IERR+1,...,N.
 C
 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
 C          THE EIGENVECTORS HAS BEEN FOUND.
 C
 C        IERR IS SET TO
 C          ZERO       FOR NORMAL RETURN,
 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
 C
 C     CALLS CDIV FOR COMPLEX DIVISION.
 C     CALLS CSROOT FOR COMPLEX SQUARE ROOT.
 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