1DLAQR4(1) LAPACK auxiliary routine (version 3.2) DLAQR4(1)
2
3
4
6 DLAQR4 - DLAQR4 compute the eigenvalues of a Hessenberg matrix H and,
7 optionally, the matrices T and Z from the Schur decomposition H = Z T
8 Z**T, where T is an upper quasi-triangular matrix (the Schur form),
9 and Z is the orthogonal matrix of Schur vectors
10
12 SUBROUTINE DLAQR4( WANTT, WANTZ, N, ILO, IHI, H, LDH, WR, WI, ILOZ,
13 IHIZ, Z, LDZ, WORK, LWORK, INFO )
14
15 INTEGER IHI, IHIZ, ILO, ILOZ, INFO, LDH, LDZ, LWORK, N
16
17 LOGICAL WANTT, WANTZ
18
19 DOUBLE PRECISION H( LDH, * ), WI( * ), WORK( * ), WR( * ),
20 Z( LDZ, * )
21
23 DLAQR4 computes the eigenvalues of a Hessenberg matrix H
24 and, optionally, the matrices T and Z from the Schur decomposition
25 H = Z T Z**T, where T is an upper quasi-triangular matrix (the
26 Schur form), and Z is the orthogonal matrix of Schur vectors.
27 Optionally Z may be postmultiplied into an input orthogonal
28 matrix Q so that this routine can give the Schur factorization
29 of a matrix A which has been reduced to the Hessenberg form H
30 by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.
31
33 WANTT (input) LOGICAL
34 = .TRUE. : the full Schur form T is required;
35 = .FALSE.: only eigenvalues are required.
36
37 WANTZ (input) LOGICAL
38 = .TRUE. : the matrix of Schur vectors Z is required;
39 = .FALSE.: Schur vectors are not required.
40
41 N (input) INTEGER
42 The order of the matrix H. N .GE. 0.
43
44 ILO (input) INTEGER
45 IHI (input) INTEGER It is assumed that H is already upper tri‐
46 angular in rows and columns 1:ILO-1 and IHI+1:N and, if ILO.GT.1,
47 H(ILO,ILO-1) is zero. ILO and IHI are normally set by a previous
48 call to DGEBAL, and then passed to DGEHRD when the matrix output
49 by DGEBAL is reduced to Hessenberg form. Otherwise, ILO and IHI
50 should be set to 1 and N, respectively. If N.GT.0, then
51 1.LE.ILO.LE.IHI.LE.N. If N = 0, then ILO = 1 and IHI = 0.
52
53 H (input/output) DOUBLE PRECISION array, dimension (LDH,N)
54 On entry, the upper Hessenberg matrix H. On exit, if INFO = 0
55 and WANTT is .TRUE., then H contains the upper quasi-triangular
56 matrix T from the Schur decomposition (the Schur form); 2-by-2
57 diagonal blocks (corresponding to complex conjugate pairs of ei‐
58 genvalues) are returned in standard form, with H(i,i) =
59 H(i+1,i+1) and H(i+1,i)*H(i,i+1).LT.0. If INFO = 0 and WANTT is
60 .FALSE., then the contents of H are unspecified on exit. (The
61 output value of H when INFO.GT.0 is given under the description
62 of INFO below.) This subroutine may explicitly set H(i,j) = 0
63 for i.GT.j and j = 1, 2, ... ILO-1 or j = IHI+1, IHI+2, ... N.
64
65 LDH (input) INTEGER
66 The leading dimension of the array H. LDH .GE. max(1,N).
67
68 WR (output) DOUBLE PRECISION array, dimension (IHI)
69 WI (output) DOUBLE PRECISION array, dimension (IHI) The real
70 and imaginary parts, respectively, of the computed eigenvalues of
71 H(ILO:IHI,ILO:IHI) are stored in WR(ILO:IHI)
72 and WI(ILO:IHI). If two eigenvalues are computed as a complex
73 conjugate pair, they are stored in consecutive elements of WR and
74 WI, say the i-th and (i+1)th, with WI(i) .GT. 0 and WI(i+1) .LT.
75 0. If WANTT is .TRUE., then the eigenvalues are stored in the
76 same order as on the diagonal of the Schur form returned in H,
77 with WR(i) = H(i,i) and, if H(i:i+1,i:i+1) is a 2-by-2 diagonal
78 block, WI(i) = sqrt(-H(i+1,i)*H(i,i+1)) and WI(i+1) = -WI(i).
79
80 ILOZ (input) INTEGER
81 IHIZ (input) INTEGER Specify the rows of Z to which trans‐
82 formations must be applied if WANTZ is .TRUE.. 1 .LE. ILOZ
83 .LE. ILO; IHI .LE. IHIZ .LE. N.
84
85 Z (input/output) DOUBLE PRECISION array, dimension (LDZ,IHI)
86 If WANTZ is .FALSE., then Z is not referenced. If WANTZ is
87 .TRUE., then Z(ILO:IHI,ILOZ:IHIZ) is
88 replaced by Z(ILO:IHI,ILOZ:IHIZ)*U where U is the
89 orthogonal Schur factor of H(ILO:IHI,ILO:IHI). (The output value
90 of Z when INFO.GT.0 is given under the description of INFO
91 below.)
92
93 LDZ (input) INTEGER
94 The leading dimension of the array Z. if WANTZ is .TRUE. then
95 LDZ.GE.MAX(1,IHIZ). Otherwize, LDZ.GE.1.
96
97 WORK (workspace/output) DOUBLE PRECISION array, dimension LWORK
98 On exit, if LWORK = -1, WORK(1) returns an estimate of the opti‐
99 mal value for LWORK. LWORK (input) INTEGER The dimension of the
100 array WORK. LWORK .GE. max(1,N) is sufficient, but LWORK typi‐
101 cally as large as 6*N may be required for optimal performance. A
102 workspace query to determine the optimal workspace size is recom‐
103 mended. If LWORK = -1, then DLAQR4 does a workspace query. In
104 this case, DLAQR4 checks the input parameters and estimates the
105 optimal workspace size for the given values of N, ILO and IHI.
106 The estimate is returned in WORK(1). No error message related to
107 LWORK is issued by XERBLA. Neither H nor Z are accessed.
108
109 INFO (output) INTEGER
110 = 0: successful exit
111 the eigenvalues. Elements 1:ilo-1 and i+1:n of WR and WI contain
112 those eigenvalues which have been successfully computed. (Fail‐
113 ures are rare.) If INFO .GT. 0 and WANT is .FALSE., then on
114 exit, the remaining unconverged eigenvalues are the eigen- values
115 of the upper Hessenberg matrix rows and columns ILO through INFO
116 of the final, output value of H. If INFO .GT. 0 and WANTT is
117 .TRUE., then on exit
118
119 (*) (initial value of H)*U = U*(final value of H)
120 where U is an orthogonal matrix. The final value of H is upper
121 Hessenberg and quasi-triangular in rows and columns INFO+1 through
122 IHI. If INFO .GT. 0 and WANTZ is .TRUE., then on exit (final
123 value of Z(ILO:IHI,ILOZ:IHIZ) = (initial value of
124 Z(ILO:IHI,ILOZ:IHIZ)*U where U is the orthogonal matrix in (*)
125 (regard- less of the value of WANTT.) If INFO .GT. 0 and WANTZ is
126 .FALSE., then Z is not accessed.
127
128
129
130 LAPACK auxiliary routine (versionNo3v.e2m)ber 2008 DLAQR4(1)