LAPACK  3.10.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.

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:
Here is the caller graph for this function: