LAPACK 3.11.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
zlarfy.f
Go to the documentation of this file.
1*> \brief \b ZLARFY
2*
3* =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6* http://www.netlib.org/lapack/explore-html/
7*
8* Definition:
9* ===========
10*
11* SUBROUTINE ZLARFY( UPLO, N, V, INCV, TAU, C, LDC, WORK )
12*
13* .. Scalar Arguments ..
14* CHARACTER UPLO
15* INTEGER INCV, LDC, N
16* COMPLEX*16 TAU
17* ..
18* .. Array Arguments ..
19* COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
20* ..
21*
22*
23*> \par Purpose:
24* =============
25*>
26*> \verbatim
27*>
28*> ZLARFY applies an elementary reflector, or Householder matrix, H,
29*> to an n x n Hermitian matrix C, from both the left and the right.
30*>
31*> H is represented in the form
32*>
33*> H = I - tau * v * v'
34*>
35*> where tau is a scalar and v is a vector.
36*>
37*> If tau is zero, then H is taken to be the unit matrix.
38*> \endverbatim
39*
40* Arguments:
41* ==========
42*
43*> \param[in] UPLO
44*> \verbatim
45*> UPLO is CHARACTER*1
46*> Specifies whether the upper or lower triangular part of the
47*> Hermitian matrix C is stored.
48*> = 'U': Upper triangle
49*> = 'L': Lower triangle
50*> \endverbatim
51*>
52*> \param[in] N
53*> \verbatim
54*> N is INTEGER
55*> The number of rows and columns of the matrix C. N >= 0.
56*> \endverbatim
57*>
58*> \param[in] V
59*> \verbatim
60*> V is COMPLEX*16 array, dimension
61*> (1 + (N-1)*abs(INCV))
62*> The vector v as described above.
63*> \endverbatim
64*>
65*> \param[in] INCV
66*> \verbatim
67*> INCV is INTEGER
68*> The increment between successive elements of v. INCV must
69*> not be zero.
70*> \endverbatim
71*>
72*> \param[in] TAU
73*> \verbatim
74*> TAU is COMPLEX*16
75*> The value tau as described above.
76*> \endverbatim
77*>
78*> \param[in,out] C
79*> \verbatim
80*> C is COMPLEX*16 array, dimension (LDC, N)
81*> On entry, the matrix C.
82*> On exit, C is overwritten by H * C * H'.
83*> \endverbatim
84*>
85*> \param[in] LDC
86*> \verbatim
87*> LDC is INTEGER
88*> The leading dimension of the array C. LDC >= max( 1, N ).
89*> \endverbatim
90*>
91*> \param[out] WORK
92*> \verbatim
93*> WORK is COMPLEX*16 array, dimension (N)
94*> \endverbatim
95*
96* Authors:
97* ========
98*
99*> \author Univ. of Tennessee
100*> \author Univ. of California Berkeley
101*> \author Univ. of Colorado Denver
102*> \author NAG Ltd.
103*
104*> \ingroup complex16_eig
105*
106* =====================================================================
107 SUBROUTINE zlarfy( UPLO, N, V, INCV, TAU, C, LDC, WORK )
108*
109* -- LAPACK test routine --
110* -- LAPACK is a software package provided by Univ. of Tennessee, --
111* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
112*
113* .. Scalar Arguments ..
114 CHARACTER UPLO
115 INTEGER INCV, LDC, N
116 COMPLEX*16 TAU
117* ..
118* .. Array Arguments ..
119 COMPLEX*16 C( LDC, * ), V( * ), WORK( * )
120* ..
121*
122* =====================================================================
123*
124* .. Parameters ..
125 COMPLEX*16 ONE, ZERO, HALF
126 parameter( one = ( 1.0d+0, 0.0d+0 ),
127 $ zero = ( 0.0d+0, 0.0d+0 ),
128 $ half = ( 0.5d+0, 0.0d+0 ) )
129* ..
130* .. Local Scalars ..
131 COMPLEX*16 ALPHA
132* ..
133* .. External Subroutines ..
134 EXTERNAL zaxpy, zhemv, zher2
135* ..
136* .. External Functions ..
137 COMPLEX*16 ZDOTC
138 EXTERNAL zdotc
139* ..
140* .. Executable Statements ..
141*
142 IF( tau.EQ.zero )
143 $ RETURN
144*
145* Form w:= C * v
146*
147 CALL zhemv( uplo, n, one, c, ldc, v, incv, zero, work, 1 )
148*
149 alpha = -half*tau*zdotc( n, work, 1, v, incv )
150 CALL zaxpy( n, alpha, v, incv, work, 1 )
151*
152* C := C - v * w' - w * v'
153*
154 CALL zher2( uplo, n, -tau, v, incv, work, 1, c, ldc )
155*
156 RETURN
157*
158* End of ZLARFY
159*
160 END
subroutine zaxpy(N, ZA, ZX, INCX, ZY, INCY)
ZAXPY
Definition: zaxpy.f:88
subroutine zhemv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHEMV
Definition: zhemv.f:154
subroutine zher2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZHER2
Definition: zher2.f:150
subroutine zlarfy(UPLO, N, V, INCV, TAU, C, LDC, WORK)
ZLARFY
Definition: zlarfy.f:108