*DECK BQR SUBROUTINE BQR (NM, N, MB, A, T, R, IERR, NV, RV) C***BEGIN PROLOGUE BQR C***PURPOSE Compute some of the eigenvalues of a real symmetric C matrix using the QR method with shifts of origin. C***LIBRARY SLATEC (EISPACK) C***CATEGORY D4A6 C***TYPE SINGLE PRECISION (BQR-S) C***KEYWORDS EIGENVALUES, EISPACK C***AUTHOR Smith, B. T., et al. C***DESCRIPTION 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 the two-dimensional C array parameter, A, as declared in the calling program C dimension statement. NM is an INTEGER variable. C C N is the order of the matrix A. N is an INTEGER variable. C N must be less than or equal to NM. 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. MB is an INTEGER variable. C MB must be less than or equal to N on first call. 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. A is a two-dimensional REAL array, C dimensioned A(NM,MB). 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. T is a REAL variable. 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 R is a REAL variable. C C NV must be set to the dimension of the array parameter RV C as declared in the calling program dimension statement. C NV is an INTEGER variable. 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 where I is the identity matrix. 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 an INTEGER flag set to C Zero for normal return, C J if the J-th eigenvalue has not been C determined after a total of 30 iterations. C C RV is a one-dimensional REAL array of dimension NV which is C at least (2*MB**2+4*MB-3), used for temporary storage. The C first (3*MB-2) locations correspond to the ALGOL array B, C the next (2*MB-1) locations correspond to the ALGOL array H, C and the final (2*MB**2-MB) locations correspond to the MB C 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(A,B) for SQRT(A**2 + B**2). C C Questions and comments should be directed to B. S. Garbow, C Applied Mathematics Division, ARGONNE NATIONAL LABORATORY C ------------------------------------------------------------------ C C***REFERENCES B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, C Y. Ikebe, V. C. Klema and C. B. Moler, Matrix Eigen- C system Routines - EISPACK Guide, Springer-Verlag, C 1976. C***ROUTINES CALLED PYTHAG C***REVISION HISTORY (YYMMDD) C 760101 DATE WRITTEN C 890531 Changed all specific intrinsics to generic. (WRB) C 890831 Modified array declarations. (WRB) C 890831 REVISION DATE from Version 3.2 C 891214 Prologue converted to Version 4.0 format. (BAB) C 920501 Reformatted the REFERENCES section. (WRB) C***END PROLOGUE BQR