LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages

◆ zlarfy()

subroutine zlarfy ( character uplo,
integer n,
complex*16, dimension( * ) v,
integer incv,
complex*16 tau,
complex*16, dimension( ldc, * ) c,
integer ldc,
complex*16, dimension( * ) work )

ZLARFY

Purpose:
!> !> ZLARFY applies an elementary reflector, or Householder matrix, H, !> to an n x n Hermitian matrix C, from both the left and the right. !> !> H is represented in the form !> !> H = I - tau * v * v' !> !> where tau is a scalar and v is a vector. !> !> If tau is zero, then H is taken to be the unit matrix. !>
Parameters
[in]UPLO
!> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> Hermitian matrix C is stored. !> = 'U': Upper triangle !> = 'L': Lower triangle !>
[in]N
!> N is INTEGER !> The number of rows and columns of the matrix C. N >= 0. !>
[in]V
!> V is COMPLEX*16 array, dimension !> (1 + (N-1)*abs(INCV)) !> The vector v as described above. !>
[in]INCV
!> INCV is INTEGER !> The increment between successive elements of v. INCV must !> not be zero. !>
[in]TAU
!> TAU is COMPLEX*16 !> The value tau as described above. !>
[in,out]C
!> C is COMPLEX*16 array, dimension (LDC, N) !> On entry, the matrix C. !> On exit, C is overwritten by H * C * H'. !>
[in]LDC
!> LDC is INTEGER !> The leading dimension of the array C. LDC >= max( 1, N ). !>
[out]WORK
!> WORK is COMPLEX*16 array, dimension (N) !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 107 of file zlarfy.f.

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*
subroutine zaxpy(n, za, zx, incx, zy, incy)
ZAXPY
Definition zaxpy.f:88
complex *16 function zdotc(n, zx, incx, zy, incy)
ZDOTC
Definition zdotc.f:83
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
Here is the call graph for this function:
Here is the caller graph for this function: