1
*> \brief \b DGEHD2 reduces a general square matrix to upper Hessenberg form using an unblocked algorithm.
3
* =========== DOCUMENTATION ===========
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
9
*> Download DGEHD2 + dependencies
10
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgehd2.f">
12
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgehd2.f">
14
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgehd2.f">
21
* SUBROUTINE DGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO )
23
* .. Scalar Arguments ..
24
* INTEGER IHI, ILO, INFO, LDA, N
26
* .. Array Arguments ..
27
* DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
36
*> DGEHD2 reduces a real general matrix A to upper Hessenberg form H by
37
*> an orthogonal similarity transformation: Q**T * A * Q = H .
46
*> The order of the matrix A. N >= 0.
58
*> It is assumed that A is already upper triangular in rows
59
*> and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
60
*> set by a previous call to DGEBAL; otherwise they should be
61
*> set to 1 and N respectively. See Further Details.
62
*> 1 <= ILO <= IHI <= max(1,N).
67
*> A is DOUBLE PRECISION array, dimension (LDA,N)
68
*> On entry, the n by n general matrix to be reduced.
69
*> On exit, the upper triangle and the first subdiagonal of A
70
*> are overwritten with the upper Hessenberg matrix H, and the
71
*> elements below the first subdiagonal, with the array TAU,
72
*> represent the orthogonal matrix Q as a product of elementary
73
*> reflectors. See Further Details.
79
*> The leading dimension of the array A. LDA >= max(1,N).
84
*> TAU is DOUBLE PRECISION array, dimension (N-1)
85
*> The scalar factors of the elementary reflectors (see Further
91
*> WORK is DOUBLE PRECISION array, dimension (N)
97
*> = 0: successful exit.
98
*> < 0: if INFO = -i, the i-th argument had an illegal value.
104
*> \author Univ. of Tennessee
105
*> \author Univ. of California Berkeley
106
*> \author Univ. of Colorado Denver
109
*> \date September 2012
111
*> \ingroup doubleGEcomputational
113
*> \par Further Details:
114
* =====================
118
*> The matrix Q is represented as a product of (ihi-ilo) elementary
121
*> Q = H(ilo) H(ilo+1) . . . H(ihi-1).
123
*> Each H(i) has the form
125
*> H(i) = I - tau * v * v**T
127
*> where tau is a real scalar, and v is a real vector with
128
*> v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
129
*> exit in A(i+2:ihi,i), and tau in TAU(i).
131
*> The contents of A are illustrated by the following example, with
132
*> n = 7, ilo = 2 and ihi = 6:
134
*> on entry, on exit,
136
*> ( a a a a a a a ) ( a a h h h h a )
137
*> ( a a a a a a ) ( a h h h h a )
138
*> ( a a a a a a ) ( h h h h h h )
139
*> ( a a a a a a ) ( v2 h h h h h )
140
*> ( a a a a a a ) ( v2 v3 h h h h )
141
*> ( a a a a a a ) ( v2 v3 v4 h h h )
144
*> where a denotes an element of the original matrix A, h denotes a
145
*> modified element of the upper Hessenberg matrix H, and vi denotes an
146
*> element of the vector defining H(i).
149
* =====================================================================
1
150
SUBROUTINE DGEHD2( N, ILO, IHI, A, LDA, TAU, WORK, INFO )
2
c $Id: dgehd2.f 19697 2010-10-29 16:57:34Z d3y133 $
4
* -- LAPACK routine (version 2.0) --
5
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
6
* Courant Institute, Argonne National Lab, and Rice University
152
* -- LAPACK computational routine (version 3.4.2) --
153
* -- LAPACK is a software package provided by Univ. of Tennessee, --
154
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
9
157
* .. Scalar Arguments ..
10
158
INTEGER IHI, ILO, INFO, LDA, N
13
161
DOUBLE PRECISION A( LDA, * ), TAU( * ), WORK( * )
19
* DGEHD2 reduces a real general matrix A to upper Hessenberg form H by
20
* an orthogonal similarity transformation: Q' * A * Q = H .
26
* The order of the matrix A. N >= 0.
30
* It is assumed that A is already upper triangular in rows
31
* and columns 1:ILO-1 and IHI+1:N. ILO and IHI are normally
32
* set by a previous call to DGEBAL; otherwise they should be
33
* set to 1 and N respectively. See Further Details.
34
* 1 <= ILO <= IHI <= max(1,N).
36
* A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
37
* On entry, the n by n general matrix to be reduced.
38
* On exit, the upper triangle and the first subdiagonal of A
39
* are overwritten with the upper Hessenberg matrix H, and the
40
* elements below the first subdiagonal, with the array TAU,
41
* represent the orthogonal matrix Q as a product of elementary
42
* reflectors. See Further Details.
45
* The leading dimension of the array A. LDA >= max(1,N).
47
* TAU (output) DOUBLE PRECISION array, dimension (N-1)
48
* The scalar factors of the elementary reflectors (see Further
51
* WORK (workspace) DOUBLE PRECISION array, dimension (N)
53
* INFO (output) INTEGER
54
* = 0: successful exit.
55
* < 0: if INFO = -i, the i-th argument had an illegal value.
60
* The matrix Q is represented as a product of (ihi-ilo) elementary
63
* Q = H(ilo) H(ilo+1) . . . H(ihi-1).
65
* Each H(i) has the form
67
* H(i) = I - tau * v * v'
69
* where tau is a real scalar, and v is a real vector with
70
* v(1:i) = 0, v(i+1) = 1 and v(ihi+1:n) = 0; v(i+2:ihi) is stored on
71
* exit in A(i+2:ihi,i), and tau in TAU(i).
73
* The contents of A are illustrated by the following example, with
74
* n = 7, ilo = 2 and ihi = 6:
78
* ( a a a a a a a ) ( a a h h h h a )
79
* ( a a a a a a ) ( a h h h h a )
80
* ( a a a a a a ) ( h h h h h h )
81
* ( a a a a a a ) ( v2 h h h h h )
82
* ( a a a a a a ) ( v2 v3 h h h h )
83
* ( a a a a a a ) ( v2 v3 v4 h h h )
86
* where a denotes an element of the original matrix A, h denotes a
87
* modified element of the upper Hessenberg matrix H, and vi denotes an
88
* element of the vector defining H(i).
90
164
* =====================================================================
92
166
* .. Parameters ..