Previous: bisect Up: ../eispas.html Next: cbabk2


BQR(NM,N,MB,A,T,R,IERR,NV,RV)

       SUBROUTINE BQR(NM,N,MB,A,T,R,IERR,NV,RV)
 C
       INTEGER I,J,K,L,M,N,II,IK,JK,JM,KJ,KK,KM,LL,MB,MK,MN,MZ,
      X        M1,M2,M3,M4,NI,NM,NV,ITS,KJ1,M21,M31,IERR,IMULT
       REAL A(NM,MB),RV(NV)
       REAL F,G,Q,R,S,T,TST1,TST2,SCALE,PYTHAG
 C
 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE BQR,
 C     NUM. MATH. 16, 85-92(1970) BY MARTIN, REINSCH, AND WILKINSON.
 C     HANDBOOK FOR AUTO. COMP., VOL II-LINEAR ALGEBRA, 266-272(1971).
 C
 C     THIS SUBROUTINE FINDS THE EIGENVALUE OF SMALLEST (USUALLY)
 C     MAGNITUDE OF A REAL SYMMETRIC BAND MATRIX USING THE
 C     QR ALGORITHM WITH SHIFTS OF ORIGIN.  CONSECUTIVE CALLS
 C     CAN BE MADE TO FIND FURTHER EIGENVALUES.
 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        MB IS THE (HALF) BAND WIDTH OF THE MATRIX, DEFINED AS THE
 C          NUMBER OF ADJACENT DIAGONALS, INCLUDING THE PRINCIPAL
 C          DIAGONAL, REQUIRED TO SPECIFY THE NON-ZERO PORTION OF THE
 C          LOWER TRIANGLE OF THE MATRIX.
 C
 C        A CONTAINS THE LOWER TRIANGLE OF THE SYMMETRIC BAND INPUT
 C          MATRIX STORED AS AN N BY MB ARRAY.  ITS LOWEST SUBDIAGONAL
 C          IS STORED IN THE LAST N+1-MB POSITIONS OF THE FIRST COLUMN,
 C          ITS NEXT SUBDIAGONAL IN THE LAST N+2-MB POSITIONS OF THE
 C          SECOND COLUMN, FURTHER SUBDIAGONALS SIMILARLY, AND FINALLY
 C          ITS PRINCIPAL DIAGONAL IN THE N POSITIONS OF THE LAST COLUMN.
 C          CONTENTS OF STORAGES NOT PART OF THE MATRIX ARE ARBITRARY.
 C          ON A SUBSEQUENT CALL, ITS OUTPUT CONTENTS FROM THE PREVIOUS
 C          CALL SHOULD BE PASSED.
 C
 C        T SPECIFIES THE SHIFT (OF EIGENVALUES) APPLIED TO THE DIAGONAL
 C          OF A IN FORMING THE INPUT MATRIX. WHAT IS ACTUALLY DETERMINED
 C          IS THE EIGENVALUE OF A+TI (I IS THE IDENTITY MATRIX) NEAREST
 C          TO T.  ON A SUBSEQUENT CALL, THE OUTPUT VALUE OF T FROM THE
 C          PREVIOUS CALL SHOULD BE PASSED IF THE NEXT NEAREST EIGENVALUE
 C          IS SOUGHT.
 C
 C        R SHOULD BE SPECIFIED AS ZERO ON THE FIRST CALL, AND AS ITS
 C          OUTPUT VALUE FROM THE PREVIOUS CALL ON A SUBSEQUENT CALL.
 C          IT IS USED TO DETERMINE WHEN THE LAST ROW AND COLUMN OF
 C          THE TRANSFORMED BAND MATRIX CAN BE REGARDED AS NEGLIGIBLE.
 C
 C        NV MUST BE SET TO THE DIMENSION OF THE ARRAY PARAMETER RV
 C          AS DECLARED IN THE CALLING PROGRAM DIMENSION STATEMENT.
 C
 C     ON OUTPUT
 C
 C        A CONTAINS THE TRANSFORMED BAND MATRIX.  THE MATRIX A+TI
 C          DERIVED FROM THE OUTPUT PARAMETERS IS SIMILAR TO THE
 C          INPUT A+TI TO WITHIN ROUNDING ERRORS.  ITS LAST ROW AND
 C          COLUMN ARE NULL (IF IERR IS ZERO).
 C
 C        T CONTAINS THE COMPUTED EIGENVALUE OF A+TI (IF IERR IS ZERO).
 C
 C        R CONTAINS THE MAXIMUM OF ITS INPUT VALUE AND THE NORM OF THE
 C          LAST COLUMN OF THE INPUT MATRIX A.
 C
 C        IERR IS SET TO
 C          ZERO       FOR NORMAL RETURN,
 C          N          IF THE EIGENVALUE HAS NOT BEEN
 C                     DETERMINED AFTER 30 ITERATIONS.
 C
 C        RV IS A TEMPORARY STORAGE ARRAY OF DIMENSION AT LEAST
 C          (2*MB**2+4*MB-3).  THE FIRST (3*MB-2) LOCATIONS CORRESPOND
 C          TO THE ALGOL ARRAY B, THE NEXT (2*MB-1) LOCATIONS CORRESPOND
 C          TO THE ALGOL ARRAY H, AND THE FINAL (2*MB**2-MB) LOCATIONS
 C          CORRESPOND TO THE MB BY (2*MB-1) ALGOL ARRAY U.
 C
 C     NOTE. FOR A SUBSEQUENT CALL, N SHOULD BE REPLACED BY N-1, BUT
 C     MB SHOULD NOT BE ALTERED EVEN WHEN IT EXCEEDS THE CURRENT N.
 C
 C     CALLS PYTHAG FOR  SQRT(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