LAPACK  3.10.0
LAPACK: Linear Algebra PACKage
clarfy.f
Go to the documentation of this file.
1 *> \brief \b CLARFY
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 CLARFY( UPLO, N, V, INCV, TAU, C, LDC, WORK )
12 *
13 * .. Scalar Arguments ..
14 * CHARACTER UPLO
15 * INTEGER INCV, LDC, N
16 * COMPLEX TAU
17 * ..
18 * .. Array Arguments ..
19 * COMPLEX C( LDC, * ), V( * ), WORK( * )
20 * ..
21 *
22 *
23 *> \par Purpose:
24 * =============
25 *>
26 *> \verbatim
27 *>
28 *> CLARFY 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 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
75 *> The value tau as described above.
76 *> \endverbatim
77 *>
78 *> \param[in,out] C
79 *> \verbatim
80 *> C is COMPLEX 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 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 complexOTHERauxiliary
105 *
106 * =====================================================================
107  SUBROUTINE clarfy( 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 TAU
117 * ..
118 * .. Array Arguments ..
119  COMPLEX C( LDC, * ), V( * ), WORK( * )
120 * ..
121 *
122 * =====================================================================
123 *
124 * .. Parameters ..
125  COMPLEX ONE, ZERO, HALF
126  parameter( one = ( 1.0e+0, 0.0e+0 ),
127  $ zero = ( 0.0e+0, 0.0e+0 ),
128  $ half = ( 0.5e+0, 0.0e+0 ) )
129 * ..
130 * .. Local Scalars ..
131  COMPLEX ALPHA
132 * ..
133 * .. External Subroutines ..
134  EXTERNAL caxpy, chemv, cher2
135 * ..
136 * .. External Functions ..
137  COMPLEX CDOTC
138  EXTERNAL cdotc
139 * ..
140 * .. Executable Statements ..
141 *
142  IF( tau.EQ.zero )
143  $ RETURN
144 *
145 * Form w:= C * v
146 *
147  CALL chemv( uplo, n, one, c, ldc, v, incv, zero, work, 1 )
148 *
149  alpha = -half*tau*cdotc( n, work, 1, v, incv )
150  CALL caxpy( n, alpha, v, incv, work, 1 )
151 *
152 * C := C - v * w' - w * v'
153 *
154  CALL cher2( uplo, n, -tau, v, incv, work, 1, c, ldc )
155 *
156  RETURN
157 *
158 * End of CLARFY
159 *
160  END
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
Definition: caxpy.f:88
subroutine cher2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CHER2
Definition: cher2.f:150
subroutine chemv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CHEMV
Definition: chemv.f:154
subroutine clarfy(UPLO, N, V, INCV, TAU, C, LDC, WORK)
CLARFY
Definition: clarfy.f:108