148 SUBROUTINE zupmtr( SIDE, UPLO, TRANS, M, N, AP, TAU, C, LDC, WORK,
156 CHARACTER SIDE, TRANS, UPLO
157 INTEGER INFO, LDC, M, N
160 COMPLEX*16 AP( * ), C( LDC, * ), TAU( * ), WORK( * )
167 parameter( one = ( 1.0d+0, 0.0d+0 ) )
170 LOGICAL FORWRD, LEFT, NOTRAN, UPPER
171 INTEGER I, I1, I2, I3, IC, II, JC, MI, NI, NQ
182 INTRINSIC dconjg, max
189 left = lsame( side,
'L' )
190 notran = lsame( trans,
'N' )
191 upper = lsame( uplo,
'U' )
200 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
202 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
204 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'C' ) )
THEN
206 ELSE IF( m.LT.0 )
THEN
208 ELSE IF( n.LT.0 )
THEN
210 ELSE IF( ldc.LT.max( 1, m ) )
THEN
214 CALL xerbla(
'ZUPMTR', -info )
220 IF( m.EQ.0 .OR. n.EQ.0 )
227 forwrd = ( left .AND. notran ) .OR.
228 $ ( .NOT.left .AND. .NOT.notran )
239 ii = nq*( nq+1 ) / 2 - 1
266 taui = dconjg( tau( i ) )
270 CALL zlarf( side, mi, ni, ap( ii-i+1 ), 1, taui, c, ldc,
284 forwrd = ( left .AND. .NOT.notran ) .OR.
285 $ ( .NOT.left .AND. notran )
296 ii = nq*( nq+1 ) / 2 - 1
329 taui = dconjg( tau( i ) )
331 CALL zlarf( side, mi, ni, ap( ii ), 1, taui, c( ic, jc ),
subroutine xerbla(srname, info)
subroutine zlarf(side, m, n, v, incv, tau, c, ldc, work)
ZLARF applies an elementary reflector to a general rectangular matrix.
subroutine zupmtr(side, uplo, trans, m, n, ap, tau, c, ldc, work, info)
ZUPMTR