NUMAL Section 3.3.1.2.1

BEGIN SECTION : 3.3.1.2.1 (July, 1974)

AUTHORS: T.J. DEKKER, W. HOFFMANN.

CONTRIBUTORS: W. HOFFMANN, S.P.N. VAN KAMPEN.

INSTITUTE: MATHEMATICAL CENTRE.

RECEIVED: 731115.

BRIEF DESCRIPTION:

    THIS SECTION CONTAINS FIVE PROCEDURES:
    A) REAVALQRI CALCULATES  THE EIGENVALUES  OF A REAL UPPER-HESSEN-
    BERG  MATRIX, PROVIDED THAT  ALL EIGENVALUES ARE REAL, BY MEANS  OF
    SINGLE QR ITERATION;
    B) REAVECHES CALCULATES  ONE EIGENVECTOR  CORRESPONDING TO  A GIVEN
    REAL EIGENVALUE  OF A  REAL UPPER-HESSENBERG MATRIX  BY MEANS  OF
    INVERSE ITERATION;
    C) REAQRI  CALCULATES  THE EIGENVALUES AND  EIGENVECTORS OF  A REAL
    UPPER-HESSENBERG MATRIX, PROVIDED THAT  ALL EIGENVALUES ARE REAL,
    BY MEANS OF SINGLE QR ITERATION;
    D) COMVALQRI CALCULATES THE REAL  AND COMPLEX EIGENVALUES OF A REAL
    UPPER-HESSENBERG MATRIX BY MEANS OF DOUBLE QR ITERATION;
    E) COMVECHES CALCULATES ONE  EIGENVECTOR  CORRESPONDING  TO A GIVEN
    COMPLEX EIGENVALUE OF A REAL UPPER-HESSENBERG MATRIX  BY MEANS OF
    INVERSE ITERATION.

KEYWORDS:

    EIGENVALUE,
    EIGENVECTOR,
    UPPER-HESSENBERG MATRIX,
    QR ITERATION,
    INVERSE ITERATION.


SUBSECTION: REAVALQRI.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE IS:
    "INTEGER" "PROCEDURE" REAVALQRI(A, N, EM, VAL); "VALUE" N;
    "INTEGER" N; "ARRAY" A, EM, VAL;
    "CODE" 34180;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N,1:N];
            ENTRY: THE ELEMENTS OF THE  REAL UPPER-HESSENBERG  MATRIX
                   MUST BE  GIVEN  IN THE UPPER TRIANGLE  AND THE FIRST
                   SUBDIAGONAL OF ARRAY A;
            EXIT:  THE HESSENBERG PART OF ARRAY A IS ALTERED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE GIVEN MATRIX;
    EM:     <ARRAY IDENTIFIER>;
            "ARRAY" EM[0:5];
            ENTRY: EM[0], THE MACHINE PRECISION;
                   EM[1], A NORM OF THE GIVEN MATRIX;
                   EM[2], THE  RELATIVE TOLERANCE USED  FOR THE  QR
                          ITERATION;
                          IF  THE ABSOLUTE  VALUE  OF SOME  SUBDIAGONAL
                          ELEMENT IS  SMALLER THAN  EM[1] * EM[2], THEN
                          THIS ELEMENT IS  NEGLECTED AND  THE MATRIX IS
                          PARTITIONED;
                   EM[4], THE  MAXIMUM  ALLOWED  NUMBER  OF ITERATIONS;
                   FOR THE  CD CYBER 73-28  SUITABLE VALUES  OF THE
                   DATA TO BE GIVEN IN EM ARE:
                   EM[0] = "-14,
                   EM[2] > EM[0] (E.G. EM[2] = "-13),
                   EM[4] = 10 * N;
            EXIT:  EM[3], THE MAXIMUM ABSOLUTE VALUE OF THE SUBDIAGONAL
                          ELEMENTS NEGLECTED;
                   EM[5], THE  NUMBER OF QR  ITERATIONS  PERFORMED;
                          IF THE  ITERATION  PROCESS IS  NOT  COMPLETED
                          WITHIN EM[4] ITERATIONS, THE VALUE  EM[4] + 1
                          IS DELIVERED  AND IN THIS CASE  ONLY THE LAST
                          N - K ELEMENTS OF VAL  ARE APPROXIMATE EIGEN-
                          VALUES  OF  THE  GIVEN  MATRIX,  WHERE  K  IS
                          DELIVERED IN REAVALQRI;
    VAL:    <ARRAY IDENTIFIER>;
            "ARRAY" VAL[1:N];
            THE EIGENVALUES OF  THE GIVEN MATRIX  ARE DELIVERED IN VAL.

    MOREOVER:
    REAVALQRI DELIVERS 0, PROVIDED THAT THE PROCESS IS COMPLETED WITHIN
    EM[4] ITERATIONS; OTHERWISE REAVALQRI DELIVERS THE NUMBER OF EIGEN-
    VALUES NOT CALCULATED.

PROCEDURES USED:

    ROTCOL = CP34040,
    ROTROW = CP34041.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N CUBED.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    THE METHOD  USED IN  THE PROCEDURE  REAVALQRI  IS THE SINGLE QR
    ITERATION OF FRANCIS (SEE REF[1], P. 54, REF[2] P. 515 - 543  AND
    REF[3]). THE EIGENVALUES  OF A REAL  UPPER-HESSENBERG MATRIX  ARE
    CALCULATED, PROVIDED THAT  THE MATRIX HAS  REAL  EIGENVALUES  ONLY.

REFERENCES:
    [1]. T.J. DEKKER AND W. HOFFMANN.
         ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2.
         MC TRACT 23, 1968, MATH. CENTR., AMSTERDAM.
    [2]. J.H. WILKINSON.
         THE ALGEBRAIC EIGENVALUE PROBLEM.
         CLARENDON PRESS, OXFORD, 1965.
    [3]. J.G. FRANCIS.
         THE QR TRANSFORMATION, PARTS 1 AND 2.
         COMP. J. 4 (1961), 265 - 271 AND 332 - 345.

EXAMPLE OF USE:

    THE PROCEDURE REAVALQRI  IS USED  IN REAEIGVAL, SECTION  3.3.1.2.2.


SUBSECTION: REAVECHES.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE IS:
    "PROCEDURE" REAVECHES(A, N, LAMBDA, EM, V); "VALUE" N, LAMBDA;
    "INTEGER" N; "REAL" LAMBDA; "ARRAY" A, EM, V;
    "CODE" 34181;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N,1:N];
            ENTRY: THE ELEMENTS OF THE  REAL UPPER-HESSENBERG  MATRIX
                   MUST BE  GIVEN  IN THE UPPER TRIANGLE  AND THE FIRST
                   SUBDIAGONAL OF ARRAY A;
            EXIT:  THE HESSENBERG PART OF ARRAY A IS ALTERED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE GIVEN MATRIX;
    LAMBDA: <ARITHMETIC EXPRESSION>;
            THE GIVEN REAL EIGENVALUE OF THE UPPER-HESSENBERG MATRIX;
    EM:     <ARRAY IDENTIFIER>;
            "ARRAY" EM[0:9];
            ENTRY: EM[0], THE MACHINE PRECISION;
                   EM[1], A NORM OF THE GIVEN MATRIX;
                   EM[6], THE TOLERANCE  USED FOR THE  EIGENVECTOR; THE
                          INVERSE  ITERATION  ENDS IF  THE  EUCLIDIAN
                          NORM  OF THE  RESIDUE VECTOR  IS SMALLER THAN
                          EM[1] * EM[6];
                   EM[8], THE  MAXIMUM  ALLOWED  NUMBER  OF ITERATIONS;
                   FOR THE  CD CYBER 73-28  SUITABLE VALUES  OF THE
                   DATA TO BE GIVEN IN EM ARE:
                   EM[0] = "-14,
                   EM[6] = "-10,
                   EM[8] = 5;
            EXIT:  EM[7], THE EUCLIDIAN NORM OF THE RESIDUE VECTOR OF
                          THE CALCULATED EIGENVECTOR;
                   EM[9], THE NUMBER OF  INVERSE ITERATIONS  PERFORMED;
                          IF  EM[7] REMAINS  LARGER THAN  EM[1] * EM[6]
                          DURING EM[8] ITERATIONS, THE VALUE  EM[8] + 1
                          IS DELIVERED;
    V:      <ARRAY IDENTIFIER>;
            "ARRAY" V[1:N];
            THE CALCULATED EIGENVECTOR IS DELIVERED IN V.

PROCEDURES USED:

    VECVEC = CP34010,
    MATVEC = CP34011.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N SQUARED.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    THE PROCEDURE REAVECHES CALCULATES  AN EIGENVECTOR CORRESPONDING TO
    A GIVEN  APPROXIMATE REAL  EIGENVALUE OF A REAL  UPPER-HESSENBERG
    MATRIX, BY MEANS  OF INVERSE  ITERATION (SEE REF[1], P. 55, REF[2],
    P. 619 - 629 AND REF[3]).

REFERENCES:
    [1]. T.J. DEKKER AND W. HOFFMANN.
         ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2.
         MC TRACT 23, 1968, MATH. CENTR., AMSTERDAM.
    [2]. J.H. WILKINSON.
         THE ALGEBRAIC EIGENVALUE PROBLEM.
         CLARENDON PRESS, OXFORD, 1965.
    [3]. J.M. VARAH.
         EIGENVECTORS OF A REAL MATRIX BY INVERSE ITERATION.
         STANFORD UNIVERSITY, TECH. REP. NO. CS 34, 1966.

EXAMPLE OF USE:

    THE PROCEDURE  REAVECHES  IS  USED  IN REAEIG1, SECTION  3.3.1.2.2.


SUBSECTION: REAQRI.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE IS:
    "INTEGER" "PROCEDURE" REAQRI(A, N, EM, VAL, VEC); "VALUE" N;
    "INTEGER" N; "ARRAY" A, EM, VAL, VEC;
    "CODE" 34186;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N,1:N];
            ENTRY: THE ELEMENTS OF THE  REAL UPPER-HESSENBERG  MATRIX
                   MUST BE  GIVEN  IN THE UPPER TRIANGLE  AND THE FIRST
                   SUBDIAGONAL OF ARRAY A;
            EXIT:  THE HESSENBERG PART OF ARRAY A IS ALTERED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE GIVEN MATRIX;
    EM:     <ARRAY IDENTIFIER>;
            "ARRAY" EM[0:5];
            ENTRY: EM[0], THE MACHINE PRECISION;
                   EM[1], A NORM OF THE GIVEN MATRIX;
                   EM[2], THE  RELATIVE TOLERANCE USED  FOR THE  QR
                          ITERATION;
                          IF  THE ABSOLUTE  VALUE  OF SOME  SUBDIAGONAL
                          ELEMENT IS  SMALLER THAN  EM[1] * EM[2], THEN
                          THIS ELEMENT IS  NEGLECTED AND  THE MATRIX IS
                          PARTITIONED;
                   EM[4], THE  MAXIMUM  ALLOWED  NUMBER  OF ITERATIONS;
                   FOR THE  CD CYBER 73-28  SUITABLE VALUES  OF THE
                   DATA TO BE GIVEN IN EM ARE:
                   EM[0] = "-14,
                   EM[2] > EM[0] (E.G. EM[2] = "-13),
                   EM[4] = 10 * N;
            EXIT:  EM[3], THE MAXIMUM ABSOLUTE VALUE OF THE SUBDIAGONAL
                          ELEMENTS NEGLECTED;
                   EM[5], THE  NUMBER OF QR  ITERATIONS  PERFORMED;
                          IF THE  ITERATION  PROCESS IS  NOT  COMPLETED
                          WITHIN EM[4] ITERATIONS, THE VALUE  EM[4] + 1
                          IS  DELIVERED; IN  THIS  CASE  ONLY  THE LAST
                          N - K ELEMENTS  OF  VAL  AND  THE  LAST N - K
                          COLUMNS OF VEC  ARE APPROXIMATED  EIGENVALUES
                          AND EIGENVECTORS OF THE GIVEN MATRIX, WHERE K
                          IS DELIVERED IN REAQRI;
    VAL:    <ARRAY IDENTIFIER>;
            "ARRAY" VAL[1:N];
            THE EIGENVALUES OF  THE GIVEN MATRIX  ARE DELIVERED IN VAL;
    VEC:    <ARRAY IDENTIFIER>;
            "ARRAY" VEC[1:N,1:N];
            THE  CALCULATED  EIGENVECTORS, CORRESPONDING  TO THE EIGEN-
            VALUES  IN ARRAY VAL[1:N], ARE DELIVERED  IN THE COLUMNS OF
            ARRAY VEC.

    MOREOVER:
    REAQRI DELIVERS 0, PROVIDED  THAT THE  PROCESS IS COMPLETED  WITHIN
    EM[4] ITERATIONS; OTHERWISE  REAQRI DELIVERS  THE NUMBER OF  EIGEN-
    VALUES AND EIGENVECTORS NOT CALCULATED.

PROCEDURES USED:

    MATVEC = CP34011,
    ROTCOL = CP34040,
    ROTROW = CP34041.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N CUBED.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    THE  PROCEDURE  REAQRI  CALCULATES  THE  EIGENVALUES  OF AN  UPPER-
    HESSENBERG MATRIX BY MEANS OF SINGLE QR ITERATION (SEE METHOD
    AND PERFORMANCE OF REAVALQRI, THIS SECTION).
    THE EIGENVECTORS  ARE CALCULATED  BY A  DIRECT  METHOD (SEE REF[1],
    P. 55-56), IN CONTRAST WITH REAVECHES WHICH USES INVERSE ITERATION.
    IF THE HESSENBERG MATRIX  IS NOT TOO ILL-CONDITIONED WITH RESPECT
    TO ITS  EIGENVALUE  PROBLEM, THEN  THIS METHOD  YIELDS  NUMERICALLY
    INDEPENDENT EIGENVECTORS AND IS COMPETITIVE WITH  INVERSE ITERATION
    AS TO ACCURACY AND COMPUTATION TIME.
    IF THE QR ITERATION PROCESS  IS NOT COMPLETED  WITHIN THE GIVEN
    NUMBER  OF  ITERATIONS, NOT ALL  EIGENVALUES  AND  EIGENVECTORS ARE
    DELIVERED.
    THE PROCEDURE REAQRI  SHOULD  BE USED ONLY  IF ALL EIGENVALUES  ARE
    REAL.

REFERENCES:
    [1]. T.J. DEKKER AND W. HOFFMANN.
         ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2.
         MC TRACT 23, 1968, MATH. CENTR., AMSTERDAM.

EXAMPLE OF USE:

    THE PROCEDURE REAQRI IS USED IN REAEIG3, SECTION 3.3.1.2.2.


SUBSECTION: COMVALQRI.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE IS:
    "INTEGER" "PROCEDURE" COMVALQRI(A, N, EM, RE, IM); "VALUE" N;
    "INTEGER" N; "ARRAY" A, EM, RE, IM;
    "CODE" 34190;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N,1:N];
            ENTRY: THE ELEMENTS OF THE  REAL UPPER-HESSENBERG  MATRIX
                   MUST BE  GIVEN  IN THE UPPER TRIANGLE  AND THE FIRST
                   SUBDIAGONAL OF ARRAY A;
            EXIT:  THE HESSENBERG PART OF ARRAY A IS ALTERED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE GIVEN MATRIX;
    EM:     <ARRAY IDENTIFIER>;
            "ARRAY" EM[0:5];
            ENTRY: EM[0], THE MACHINE PRECISION;
                   EM[1], A NORM OF THE GIVEN MATRIX;
                   EM[2], THE  RELATIVE TOLERANCE USED  FOR THE  QR
                          ITERATION;
                          IF  THE ABSOLUTE  VALUE  OF SOME  SUBDIAGONAL
                          ELEMENT IS  SMALLER THAN  EM[1] * EM[2], THEN
                          THIS ELEMENT IS  NEGLECTED AND  THE MATRIX IS
                          PARTITIONED;
                   EM[4], THE  MAXIMUM  ALLOWED  NUMBER  OF ITERATIONS;
                   FOR THE  CD CYBER 73-28  SUITABLE VALUES  OF THE
                   DATA TO BE GIVEN IN EM ARE:
                   EM[0] = "-14,
                   EM[2] > EM[0] (E.G. EM[2] = "-13),
                   EM[4] = 10 * N;
            EXIT:  EM[3], THE MAXIMUM ABSOLUTE VALUE OF THE SUBDIAGONAL
                          ELEMENTS NEGLECTED;
                   EM[5], THE  NUMBER OF QR  ITERATIONS  PERFORMED;
                          IF THE  ITERATION  PROCESS IS  NOT  COMPLETED
                          WITHIN EM[4] ITERATIONS, THE VALUE  EM[4] + 1
                          IS DELIVERED  AND IN THIS CASE  ONLY THE LAST
                          N - K ELEMENTS OF  RE AND IM  ARE APPROXIMATE
                          EIGENVALUES OF  THE  GIVEN MATRIX, WHERE K IS
                          DELIVERED IN COMVALQRI;
    RE,IM:  <ARRAY IDENTIFIER>;
            "ARRAY" RE, IM[1:N];
            THE REAL AND IMAGINARY PARTS  OF THE CALCULATED EIGENVALUES
            OF THE GIVEN MATRIX ARE DELIVERED IN ARRAY RE, IM[1:N], THE
            MEMBERS  OF  EACH  NONREAL  COMPLEX  CONJUGATE  PAIR  BEING
            CONSECUTIVE.

    MOREOVER:
    COMVALQRI DELIVERS 0, PROVIDED THAT THE PROCESS IS COMPLETED WITHIN
    EM[4] ITERATIONS; OTHERWISE COMVALQRI DELIVERS THE NUMBER OF EIGEN-
    VALUES NOT CALCULATED.

PROCEDURES USED: NONE.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N CUBED.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    THE METHOD USED IN THE PROCEDURE COMVALQRI FOR CALCULATING THE REAL
    AND COMPLEX EIGENVALUES  OF A REAL UPPER-HESSENBERG MATRIX IS THE
    DOUBLE QR  ITERATION  OF  FRANCIS (SEE REF[1], P. 74,  REF[2]
    P. 528 - 537 AND REF[3]).

REFERENCES:
    [1]. T.J. DEKKER AND W. HOFFMANN.
         ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2.
         MC TRACT 23, 1968, MATH. CENTR., AMSTERDAM.
    [2]. J.H. WILKINSON.
         THE ALGEBRAIC EIGENVALUE PROBLEM.
         CLARENDON PRESS, OXFORD, 1965.
    [3]. J.G. FRANCIS.
         THE QR TRANSFORMATION, PARTS 1 AND 2.
         COMP. J. 4 (1961), 265 - 271 AND 332 - 345.

EXAMPLE OF USE:

    THE COMPLEX EIGENVALUES  AND -VECTORS OF H, WITH N = 4 AND H[I,J] =
    "IF" I = 1 "THEN" -1 "ELSE" "IF" I - J = 1 "THEN" 1 "ELSE" 0,   MAY
    BE OBTAINED BY THE FOLLOWING PROGRAM:

    "BEGIN" "INTEGER" I, J, M;
        "ARRAY" A[1:4,1:4], RE, IM[1:4], EM[0:9];

        EM[0]:= "-14; EM[2]:= "-13; EM[1]:= 4; EM[4]:= 40;
        EM[6]:= "-10; EM[8]:= 5;
        "FOR" I:= 1, 2, 3, 4 "DO" "FOR" J:= 1, 2, 3, 4 "DO" A[I,J]:=
        "IF" I = 1 "THEN" -1 "ELSE" "IF" I - J = 1 "THEN" 1 "ELSE" 0;
        M:= COMVALQRI(A, 4, EM, RE, IM); OUTPUT(61, "("D, /")", M);

        "FOR" J:= M + 1 "STEP" 1 "UNTIL" 4 "DO"
        "BEGIN" "INTEGER" K; "ARRAY" U, V[1:4];
            "FOR" I:= 1, 2, 3, 4 "DO" "FOR" K:= 1, 2, 3, 4 "DO"
            A[I,K]:= "IF" I = 1 "THEN" -1 "ELSE"
            "IF" I - K = 1 "THEN" 1 "ELSE" 0;
            COMVECHES(A, 4, RE[J], IM[J], EM, U, V);
            OUTPUT(61, "("/, 2(+.13D"+2D, 2B), 2/")", RE[J], IM[J]);
            "FOR" I:= 1, 2, 3, 4 "DO"
            OUTPUT(61, "("21B, 2(+.13D"+2D, 2B), /")", U[I], V[I])
        "END";
        OUTPUT(61, "("/, 2(.2D"+2D, /), 2(ZD, /)")",
        EM[3], EM[7], EM[5], EM[9])
    "END"

    THE PROGRAM DELIVERS (THE RESULTS ARE CORRECT UP TO TWELVE DIGITS):

    THE NUMBER OF NOT CALCULATED EIGENVALUES: 0

    THE EIGENVALUES AND -VECTORS:

    +.3090169943750"+00  +.9510565162952"+00

                         -.2527643931136"+00  -.4314048696688"+00
                         -.4883989055049"+00  +.1070817869743"+00
                         -.4908273055667"-01  +.4975850535950"+00
                         +.4580641097602"+00  +.2004426884413"+00

    +.3090169943750"+00  -.9510565162952"+00

                         -.2527643931136"+00  +.4314048696688"+00
                         -.4883989055049"+00  -.1070817869743"+00
                         -.4908273055667"-01  -.4975850535950"+00
                         +.4580641097602"+00  -.2004426884413"+00

    -.8090169943749"+00  +.5877852522924"+00

                         +.1095191711534"+00  -.4878581260468"+00
                         -.3753586823743"+00  +.3303117611685"+00
                         +.4978239349006"+00  -.4659753040772"-01
                         -.4301373647081"+00  -.2549153731770"+00

    -.8090169943749"+00  -.5877852522924"+00

                         +.1095191711534"+00  +.4878581260468"+00
                         -.3753586823743"+00  -.3303117611685"+00
                         +.4978239349006"+00  +.4659753040772"-01
                         -.4301373647081"+00  +.2549153731770"+00

   THE ARRAY EM: EM[3] = .67"-22
                 EM[7] = .17"-13
                 EM[5] = 9
                 EM[9] = 1 .


SUBSECTION: COMVECHES.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE IS:
    "PROCEDURE" COMVECHES(A, N, LAMBDA, MU, EM, U, V);
    "VALUE" N, LAMBDA, MU;
    "INTEGER" N; "REAL" LAMBDA, MU; "ARRAY" A, EM, U, V;
    "CODE" 34191;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A:      <ARRAY IDENTIFIER>;
            "ARRAY" A[1:N,1:N];
            ENTRY: THE ELEMENTS OF THE  REAL UPPER-HESSENBERG  MATRIX
                   MUST BE  GIVEN  IN THE UPPER TRIANGLE  AND THE FIRST
                   SUBDIAGONAL OF ARRAY A;
            EXIT:  THE HESSENBERG PART OF ARRAY A IS ALTERED;
    N:      <ARITHMETIC EXPRESSION>;
            THE ORDER OF THE GIVEN MATRIX;
    LAMBDA, MU:
            <ARITHMETIC EXPRESSION>;
            THE REAL AND IMAGINARY PART OF THE GIVEN EIGENVALUE;
    EM:     <ARRAY IDENTIFIER>;
            "ARRAY" EM[0:9];
            ENTRY: EM[0], THE MACHINE PRECISION;
                   EM[1], A NORM OF THE GIVEN MATRIX;
                   EM[6], THE TOLERANCE  USED FOR THE  EIGENVECTOR; THE
                          INVERSE  ITERATION  ENDS IF  THE  EUCLIDIAN
                          NORM  OF THE  RESIDUE VECTOR  IS SMALLER THAN
                          EM[1] * EM[6];
                   EM[8], THE  MAXIMUM  ALLOWED  NUMBER  OF ITERATIONS;
                   FOR THE  CD CYBER 73-28  SUITABLE VALUES  OF THE
                   DATA TO BE GIVEN IN EM ARE:
                   EM[0] = "-14,
                   EM[6] = "-10,
                   EM[8] = 5;
            EXIT:  EM[7], THE EUCLIDIAN NORM OF THE RESIDUE VECTOR OF
                          THE CALCULATED EIGENVECTOR;
                   EM[9], THE NUMBER OF  INVERSE ITERATIONS  PERFORMED;
                          IF  EM[7] REMAINS  LARGER THAN  EM[1] * EM[6]
                          DURING EM[8] ITERATIONS, THE VALUE  EM[8] + 1
                          IS DELIVERED;
    U, V:   <ARRAY IDENTIFIER>;
            "ARRAY" U, V[1:N];
            THE REAL AND IMAGINARY  PARTS OF THE CALCULATED EIGENVECTOR
            ARE DELIVERED IN THE ARRAYS U, V[1:N].

PROCEDURES USED:

    VECVEC = CP34010,
    MATVEC = CP34011,
    TAMVEC = CP34012.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N SQUARED.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE:

    THE PROCEDURE COMVECHES CALCULATES  AN EIGENVECTOR CORRESPONDING TO
    A GIVEN APPROXIMATE EIGENVALUE OF A REAL UPPER-HESSENBERG MATRIX,
    BY   MEANS  OF   INVERSE  ITERATION  (SEE  REF[1],  P. 75,  REF[2],
    P. 629 - 633 AND REF[3]).

REFERENCES:
    [1]. T.J. DEKKER AND W. HOFFMANN.
         ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2.
         MC TRACT 23, 1968, MATH. CENTR., AMSTERDAM.
    [2]. J.H. WILKINSON.
         THE ALGEBRAIC EIGENVALUE PROBLEM.
         CLARENDON PRESS, OXFORD, 1965.
    [3]. J.M. VARAH.
         EIGENVECTORS OF A REAL MATRIX BY INVERSE ITERATION.
         STANFORD UNIVERSITY, TECH. REP. NO. CS 34, 1966.

EXAMPLE OF USE:

    SEE EXAMPLE OF USE OF COMVALQRI, THIS SECTION.

SOURCE TEXT(S) :
"CODE" 34180;
"CODE" 34181;
"CODE" 34186;
"CODE" 34190;
"CODE" 34191;