LAPACK 3.12.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches
slarfy.f
Go to the documentation of this file.
1*> \brief \b SLARFY
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 SLARFY( UPLO, N, V, INCV, TAU, C, LDC, WORK )
12*
13* .. Scalar Arguments ..
14* CHARACTER UPLO
15* INTEGER INCV, LDC, N
16* REAL TAU
17* ..
18* .. Array Arguments ..
19* REAL C( LDC, * ), V( * ), WORK( * )
20* ..
21*
22*
23*> \par Purpose:
24* =============
25*>
26*> \verbatim
27*>
28*> SLARFY applies an elementary reflector, or Householder matrix, H,
29*> to an n x n symmetric 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*> symmetric 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 REAL 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 REAL
75*> The value tau as described above.
76*> \endverbatim
77*>
78*> \param[in,out] C
79*> \verbatim
80*> C is REAL 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 REAL 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 larfy
105*
106* =====================================================================
107 SUBROUTINE slarfy( 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 REAL TAU
117* ..
118* .. Array Arguments ..
119 REAL C( LDC, * ), V( * ), WORK( * )
120* ..
121*
122* =====================================================================
123*
124* .. Parameters ..
125 REAL ONE, ZERO, HALF
126 parameter( one = 1.0e+0, zero = 0.0e+0, half = 0.5e+0 )
127* ..
128* .. Local Scalars ..
129 REAL ALPHA
130* ..
131* .. External Subroutines ..
132 EXTERNAL saxpy, ssymv, ssyr2
133* ..
134* .. External Functions ..
135 REAL SDOT
136 EXTERNAL sdot
137* ..
138* .. Executable Statements ..
139*
140 IF( tau.EQ.zero )
141 \$ RETURN
142*
143* Form w:= C * v
144*
145 CALL ssymv( uplo, n, one, c, ldc, v, incv, zero, work, 1 )
146*
147 alpha = -half*tau*sdot( n, work, 1, v, incv )
148 CALL saxpy( n, alpha, v, incv, work, 1 )
149*
150* C := C - v * w' - w * v'
151*
152 CALL ssyr2( uplo, n, -tau, v, incv, work, 1, c, ldc )
153*
154 RETURN
155*
156* End of SLARFY
157*
158 END
subroutine saxpy(n, sa, sx, incx, sy, incy)
SAXPY
Definition saxpy.f:89
subroutine ssymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
SSYMV
Definition ssymv.f:152
subroutine ssyr2(uplo, n, alpha, x, incx, y, incy, a, lda)
SSYR2
Definition ssyr2.f:147
subroutine slarfy(uplo, n, v, incv, tau, c, ldc, work)
SLARFY
Definition slarfy.f:108