 LAPACK 3.11.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches

## ◆ dlarfy()

 subroutine dlarfy ( character UPLO, integer N, double precision, dimension( * ) V, integer INCV, double precision TAU, double precision, dimension( ldc, * ) C, integer LDC, double precision, dimension( * ) WORK )

DLARFY

Purpose:
``` DLARFY applies an elementary reflector, or Householder matrix, H,
to an n x n symmetric 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 symmetric 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 DOUBLE PRECISION 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 DOUBLE PRECISION The value tau as described above.``` [in,out] C ``` C is DOUBLE PRECISION 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 DOUBLE PRECISION array, dimension (N)`

Definition at line 107 of file dlarfy.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 DOUBLE PRECISION TAU
117* ..
118* .. Array Arguments ..
119 DOUBLE PRECISION C( LDC, * ), V( * ), WORK( * )
120* ..
121*
122* =====================================================================
123*
124* .. Parameters ..
125 DOUBLE PRECISION ONE, ZERO, HALF
126 parameter( one = 1.0d+0, zero = 0.0d+0, half = 0.5d+0 )
127* ..
128* .. Local Scalars ..
129 DOUBLE PRECISION ALPHA
130* ..
131* .. External Subroutines ..
132 EXTERNAL daxpy, dsymv, dsyr2
133* ..
134* .. External Functions ..
135 DOUBLE PRECISION DDOT
136 EXTERNAL ddot
137* ..
138* .. Executable Statements ..
139*
140 IF( tau.EQ.zero )
141 \$ RETURN
142*
143* Form w:= C * v
144*
145 CALL dsymv( uplo, n, one, c, ldc, v, incv, zero, work, 1 )
146*
147 alpha = -half*tau*ddot( n, work, 1, v, incv )
148 CALL daxpy( n, alpha, v, incv, work, 1 )
149*
150* C := C - v * w' - w * v'
151*
152 CALL dsyr2( uplo, n, -tau, v, incv, work, 1, c, ldc )
153*
154 RETURN
155*
156* End of DLARFY
157*
double precision function ddot(N, DX, INCX, DY, INCY)
DDOT
Definition: ddot.f:82
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
Definition: daxpy.f:89
subroutine dsymv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DSYMV
Definition: dsymv.f:152
subroutine dsyr2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DSYR2
Definition: dsyr2.f:147
Here is the call graph for this function: