150 SUBROUTINE zupmtr( SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK,
159 CHARACTER SIDE, TRANS, UPLO
160 INTEGER INFO, LDC, M, N
163 COMPLEX*16 AP( * ), C( ldc, * ), TAU( * ), WORK( * )
170 parameter ( one = ( 1.0d+0, 0.0d+0 ) )
173 LOGICAL FORWRD, LEFT, NOTRAN, UPPER
174 INTEGER I, I1, I2, I3, IC, II, JC, MI, NI, NQ
185 INTRINSIC dconjg, max
192 left = lsame( side,
'L' )
193 notran = lsame( trans,
'N' )
194 upper = lsame( uplo,
'U' )
203 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
205 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
207 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'C' ) )
THEN
209 ELSE IF( m.LT.0 )
THEN
211 ELSE IF( n.LT.0 )
THEN
213 ELSE IF( ldc.LT.max( 1, m ) )
THEN
217 CALL xerbla(
'ZUPMTR', -info )
223 IF( m.EQ.0 .OR. n.EQ.0 )
230 forwrd = ( left .AND. notran ) .OR.
231 $ ( .NOT.left .AND. .NOT.notran )
242 ii = nq*( nq+1 ) / 2 - 1
269 taui = dconjg( tau( i ) )
273 CALL zlarf( side, mi, ni, ap( ii-i+1 ), 1, taui, c, ldc,
287 forwrd = ( left .AND. .NOT.notran ) .OR.
288 $ ( .NOT.left .AND. notran )
299 ii = nq*( nq+1 ) / 2 - 1
332 taui = dconjg( tau( i ) )
334 CALL zlarf( side, mi, ni, ap( ii ), 1, taui, c( ic, jc ),
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zupmtr(SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK, INFO)
ZUPMTR
subroutine zlarf(SIDE, M, N, V, INCV, TAU, C, LDC, WORK)
ZLARF applies an elementary reflector to a general rectangular matrix.