127 SUBROUTINE zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
135 INTEGER INCV, LDC, M, N
139 COMPLEX*16 C( ldc, * ), V( * ), WORK( * )
146 parameter( one = ( 1.0d+0, 0.0d+0 ),
147 $ zero = ( 0.0d+0, 0.0d+0 ) )
151 INTEGER I, LASTV, LASTC
158 INTEGER ILAZLR, ILAZLC
159 EXTERNAL lsame, ilazlr, ilazlc
163 applyleft = lsame( side,
'L' )
166 IF( tau.NE.zero )
THEN 175 i = 1 + (lastv-1) * incv
180 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
186 lastc = ilazlc(lastv, n, c, ldc)
189 lastc = ilazlr(m, lastv, c, ldc)
198 IF( lastv.GT.0 )
THEN 202 CALL zgemv(
'Conjugate transpose', lastv, lastc, one,
203 $ c, ldc, v, incv, zero, work, 1 )
207 CALL zgerc( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
213 IF( lastv.GT.0 )
THEN 217 CALL zgemv(
'No transpose', lastc, lastv, one, c, ldc,
218 $ v, incv, zero, work, 1 )
222 CALL zgerc( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
subroutine zlarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
ZLARF applies an elementary reflector to a general rectangular matrix.
subroutine zgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV