LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ 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)
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016

Definition at line 110 of file dlarfy.f.

110 *
111 * -- LAPACK test routine (version 3.7.0) --
112 * -- LAPACK is a software package provided by Univ. of Tennessee, --
113 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
114 * December 2016
115 *
116 * .. Scalar Arguments ..
117  CHARACTER uplo
118  INTEGER incv, ldc, n
119  DOUBLE PRECISION tau
120 * ..
121 * .. Array Arguments ..
122  DOUBLE PRECISION c( ldc, * ), v( * ), work( * )
123 * ..
124 *
125 * =====================================================================
126 *
127 * .. Parameters ..
128  DOUBLE PRECISION one, zero, half
129  parameter( one = 1.0d+0, zero = 0.0d+0, half = 0.5d+0 )
130 * ..
131 * .. Local Scalars ..
132  DOUBLE PRECISION alpha
133 * ..
134 * .. External Subroutines ..
135  EXTERNAL daxpy, dsymv, dsyr2
136 * ..
137 * .. External Functions ..
138  DOUBLE PRECISION ddot
139  EXTERNAL ddot
140 * ..
141 * .. Executable Statements ..
142 *
143  IF( tau.EQ.zero )
144  $ RETURN
145 *
146 * Form w:= C * v
147 *
148  CALL dsymv( uplo, n, one, c, ldc, v, incv, zero, work, 1 )
149 *
150  alpha = -half*tau*ddot( n, work, 1, v, incv )
151  CALL daxpy( n, alpha, v, incv, work, 1 )
152 *
153 * C := C - v * w' - w * v'
154 *
155  CALL dsyr2( uplo, n, -tau, v, incv, work, 1, c, ldc )
156 *
157  RETURN
158 *
159 * End of DLARFY
160 *
double precision function ddot(N, DX, INCX, DY, INCY)
DDOT
Definition: ddot.f:84
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
Definition: daxpy.f:91
subroutine dsyr2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DSYR2
Definition: dsyr2.f:149
subroutine dsymv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DSYMV
Definition: dsymv.f:154
Here is the call graph for this function:
Here is the caller graph for this function: