Previous: imtql2 Up: ../eispad.html Next: invit


IMTQLV(N,D,E,E2,W,IND,IERR,RV1)

       SUBROUTINE IMTQLV(N,D,E,E2,W,IND,IERR,RV1)
 C
       INTEGER I,J,K,L,M,N,II,MML,TAG,IERR
       DOUBLE PRECISION D(N),E(N),E2(N),W(N),RV1(N)
       DOUBLE PRECISION B,C,F,G,P,R,S,TST1,TST2,PYTHAG
       INTEGER IND(N)
 C
 C     THIS SUBROUTINE IS A VARIANT OF  IMTQL1  WHICH IS A TRANSLATION OF
 C     ALGOL PROCEDURE IMTQL1, NUM. MATH. 12, 377-383(1968) BY MARTIN AND
 C     WILKINSON, AS MODIFIED IN NUM. MATH. 15, 450(1970) BY DUBRULLE.
 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 241-248(1971).
 C
 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A SYMMETRIC TRIDIAGONAL
 C     MATRIX BY THE IMPLICIT QL METHOD AND ASSOCIATES WITH THEM
 C     THEIR CORRESPONDING SUBMATRIX INDICES.
 C
 C     ON INPUT
 C
 C        N IS THE ORDER OF THE MATRIX.
 C
 C        D CONTAINS THE DIAGONAL ELEMENTS OF THE INPUT MATRIX.
 C
 C        E CONTAINS THE SUBDIAGONAL ELEMENTS OF THE INPUT MATRIX
 C          IN ITS LAST N-1 POSITIONS.  E(1) IS ARBITRARY.
 C
 C        E2 CONTAINS THE SQUARES OF THE CORRESPONDING ELEMENTS OF E.
 C          E2(1) IS ARBITRARY.
 C
 C     ON OUTPUT
 C
 C        D AND E ARE UNALTERED.
 C
 C        ELEMENTS OF E2, CORRESPONDING TO ELEMENTS OF E REGARDED
 C          AS NEGLIGIBLE, HAVE BEEN REPLACED BY ZERO CAUSING THE
 C          MATRIX TO SPLIT INTO A DIRECT SUM OF SUBMATRICES.
 C          E2(1) IS ALSO SET TO ZERO.
 C
 C        W CONTAINS THE EIGENVALUES IN ASCENDING ORDER.  IF AN
 C          ERROR EXIT IS MADE, THE EIGENVALUES ARE CORRECT AND
 C          ORDERED FOR INDICES 1,2,...IERR-1, BUT MAY NOT BE
 C          THE SMALLEST EIGENVALUES.
 C
 C        IND CONTAINS THE SUBMATRIX INDICES ASSOCIATED WITH THE
 C          CORRESPONDING EIGENVALUES IN W -- 1 FOR EIGENVALUES
 C          BELONGING TO THE FIRST SUBMATRIX FROM THE TOP,
 C          2 FOR THOSE BELONGING TO THE SECOND SUBMATRIX, ETC..
 C
 C        IERR IS SET TO
 C          ZERO       FOR NORMAL RETURN,
 C          J          IF THE J-TH EIGENVALUE HAS NOT BEEN
 C                     DETERMINED AFTER 30 ITERATIONS.
 C
 C        RV1 IS A TEMPORARY STORAGE ARRAY.
 C
 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