129 SUBROUTINE zlarf( SIDE, M, N, V, INCV, TAU, C, LDC, WORK )
138 INTEGER incv, ldc, m, n
142 COMPLEX*16 c( ldc, * ), v( * ), work( * )
149 parameter( one = ( 1.0d+0, 0.0d+0 ),
150 $ zero = ( 0.0d+0, 0.0d+0 ) )
154 INTEGER i, lastv, lastc
166 applyleft =
lsame( side,
'L' )
169 IF( tau.NE.zero )
THEN
178 i = 1 + (lastv-1) * incv
183 DO WHILE( lastv.GT.0 .AND. v( i ).EQ.zero )
189 lastc =
ilazlc(lastv, n, c, ldc)
192 lastc =
ilazlr(m, lastv, c, ldc)
201 IF( lastv.GT.0 )
THEN
205 CALL
zgemv(
'Conjugate transpose', lastv, lastc, one,
206 $ c, ldc, v, incv, zero, work, 1 )
210 CALL
zgerc( lastv, lastc, -tau, v, incv, work, 1, c, ldc )
216 IF( lastv.GT.0 )
THEN
220 CALL
zgemv(
'No transpose', lastc, lastv, one, c, ldc,
221 $ v, incv, zero, work, 1 )
225 CALL
zgerc( lastc, lastv, -tau, work, 1, v, incv, c, ldc )
LOGICAL function lsame(CA, CB)
LSAME
INTEGER function ilazlr(M, N, A, LDA)
ILAZLR scans a matrix for its last non-zero row.
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
subroutine zlarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
ZLARF applies an elementary reflector to a general rectangular matrix.
INTEGER function ilazlc(M, N, A, LDA)
ILAZLC scans a matrix for its last non-zero column.