163 SUBROUTINE zsytrs_3( UPLO, N, NRHS, A, LDA, E, IPIV, B, LDB,
172 INTEGER INFO, LDA, LDB, N, NRHS
176 COMPLEX*16 A( LDA, * ), B( LDB, * ), E( * )
183 parameter( one = ( 1.0d+0,0.0d+0 ) )
188 COMPLEX*16 AK, AKM1, AKM1K, BK, BKM1, DENOM
203 upper = lsame( uplo,
'U' )
204 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
206 ELSE IF( n.LT.0 )
THEN
208 ELSE IF( nrhs.LT.0 )
THEN
210 ELSE IF( lda.LT.
max( 1, n ) )
THEN
212 ELSE IF( ldb.LT.
max( 1, n ) )
THEN
216 CALL xerbla(
'ZSYTRS_3', -info )
222 IF( n.EQ.0 .OR. nrhs.EQ.0 )
241 kp = abs( ipiv( k ) )
243 CALL zswap( nrhs, b( k, 1 ), ldb, b( kp, 1 ), ldb )
249 CALL ztrsm(
'L', 'u
', 'n
', 'u
', N, NRHS, ONE, A, LDA, B, LDB )
255.GT.
IF( IPIV( I )0 ) THEN
256 CALL ZSCAL( NRHS, ONE / A( I, I ), B( I, 1 ), LDB )
257.GT.
ELSE IF ( I1 ) THEN
259 AKM1 = A( I-1, I-1 ) / AKM1K
260 AK = A( I, I ) / AKM1K
261 DENOM = AKM1*AK - ONE
263 BKM1 = B( I-1, J ) / AKM1K
264 BK = B( I, J ) / AKM1K
265 B( I-1, J ) = ( AK*BKM1-BK ) / DENOM
266 B( I, J ) = ( AKM1*BK-BKM1 ) / DENOM
275 CALL ZTRSM( 'l
', 'u
', 't
', 'u
', N, NRHS, ONE, A, LDA, B, LDB )
287 KP = ABS( IPIV( K ) )
289 CALL ZSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
308 KP = ABS( IPIV( K ) )
310 CALL ZSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
316 CALL ZTRSM( 'l
', 'l
', 'n
', 'u
', N, NRHS, ONE, A, LDA, B, LDB )
322.GT.
IF( IPIV( I )0 ) THEN
323 CALL ZSCAL( NRHS, ONE / A( I, I ), B( I, 1 ), LDB )
324.LT.
ELSE IF( IN ) THEN
326 AKM1 = A( I, I ) / AKM1K
327 AK = A( I+1, I+1 ) / AKM1K
328 DENOM = AKM1*AK - ONE
330 BKM1 = B( I, J ) / AKM1K
331 BK = B( I+1, J ) / AKM1K
332 B( I, J ) = ( AK*BKM1-BK ) / DENOM
333 B( I+1, J ) = ( AKM1*BK-BKM1 ) / DENOM
342 CALL ZTRSM('l
', 'l
', 't
', 'u
', N, NRHS, ONE, A, LDA, B, LDB )
354 KP = ABS( IPIV( K ) )
356 CALL ZSWAP( NRHS, B( K, 1 ), LDB, B( KP, 1 ), LDB )
subroutine zsytrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
ZSYTRS_3
subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRSM