1 SUBROUTINE zdttrsv( UPLO, TRANS, N, NRHS, DL, D, DU,
16 INTEGER INFO, LDB, N, NRHS
19 COMPLEX*16 B( LDB, * ), D( * ), DL( * ), DU( * )
91 notran = lsame( trans,
'N' )
92 lower = lsame( uplo,
'L' )
93 IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
95 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
96 $ lsame( trans,
'C' ) )
THEN
98 ELSE IF( n.LT.0 )
THEN
100 ELSE IF( nrhs.LT.0 )
THEN
102 ELSE IF( ldb.LT.
max( n, 1 ) )
THEN
106 CALL xerbla(
'ZDTTRSV', -info )
112 IF( n.EQ.0 .OR. nrhs.EQ.0 )
125 b( i+1, j ) = b( i+1, j ) - dl( i )*b( i, j )
133 b( n, j ) = b( n, j ) / d( n )
135 $ b( n-1, j ) = ( b( n-1, j )-du( n-1 )*b( n, j ) ) /
137 DO 20 i = n - 2, 1, -1
138 b( i, j ) = ( b( i, j )-du( i )*b( i+1, j ) ) / d( i )
144 ELSE IF( lsame( trans,
'T' ) )
THEN
146 IF( .NOT. lower )
THEN
153 b( 1, j ) = b( 1, j ) / d( 1 )
155 $ b( 2, j ) = ( b( 2, j )-du( 1 )*b( 1, j ) ) / d( 2 )
157 b( i, j ) = ( b( i, j )-du( i-1 )*b( i-1, j ) ) / d( i )
168 DO 50 i = n - 1, 1, -1
169 b( i, j ) = b( i, j ) - dl( i )*b( i+1, j )
175 IF( .NOT. lower )
THEN
182 b( 1, j ) = b( 1, j ) / dconjg( d( 1 ) )
184 $ b( 2, j ) = ( b( 2, j )-dconjg( du( 1 ) )*b( 1, j ) ) /
187 b( i, j ) = ( b( i, j )
188 $ -dconjg( du( i-1 ) )*b( i-1, j ) ) /
200 DO 80 i = n - 1, 1, -1
201 b( i, j ) = b( i, j ) - dconjg( dl( i ) )*b( i+1, j )