200 SUBROUTINE stftri( TRANSR, UPLO, DIAG, N, A, INFO )
207 CHARACTER TRANSR, UPLO, DIAG
218 parameter( one = 1.0e+0 )
221 LOGICAL LOWER, NISODD, NORMALTRANSR
239 normaltransr = lsame( transr,
'N' )
240 lower = lsame( uplo,
'L' )
241 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'T' ) )
THEN
243 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
245 ELSE IF( .NOT.lsame( diag,
'N' ) .AND. .NOT.lsame( diag,
'U' ) )
248 ELSE IF( n.LT.0 )
THEN
252 CALL xerbla(
'STFTRI', -info )
264 IF( mod( n, 2 ).EQ.0 )
THEN
288 IF( normaltransr )
THEN
298 CALL strtri(
'L', diag, n1, a( 0 ), n, info )
301 CALL strmm( 'r
', 'l
', 'n
', DIAG, N2, N1, -ONE, A( 0 ),
303 CALL STRTRI( 'u
', DIAG, N2, A( N ), N, INFO )
308 CALL STRMM( 'l
', 'u
', 't
', DIAG, N2, N1, ONE, A( N ), N,
317 CALL STRTRI( 'l
', DIAG, N1, A( N2 ), N, INFO )
320 CALL STRMM( 'l
', 'l
', 't
', DIAG, N1, N2, -ONE, A( N2 ),
322 CALL STRTRI( 'u
', DIAG, N2, A( N1 ), N, INFO )
327 CALL STRMM( 'r
', 'u
', 'n
', DIAG, N1, N2, ONE, A( N1 ),
341 CALL STRTRI( 'u
', DIAG, N1, A( 0 ), N1, INFO )
344 CALL STRMM( 'l
', 'u
', 'n
', DIAG, N1, N2, -ONE, A( 0 ),
345 $ N1, A( N1*N1 ), N1 )
346 CALL STRTRI( 'l
', DIAG, N2, A( 1 ), N1, INFO )
351 CALL STRMM( 'r
', 'l
', 't
', DIAG, N1, N2, ONE, A( 1 ),
352 $ N1, A( N1*N1 ), N1 )
359 CALL STRTRI( 'u
', DIAG, N1, A( N2*N2 ), N2, INFO )
362 CALL STRMM( 'r
', 'u
', 't
', DIAG, N2, N1, -ONE,
363 $ A( N2*N2 ), N2, A( 0 ), N2 )
364 CALL STRTRI( 'l
', DIAG, N2, A( N1*N2 ), N2, INFO )
369 CALL STRMM( 'l
', 'l
', 'n
', DIAG, N2, N1, ONE,
370 $ A( N1*N2 ), N2, A( 0 ), N2 )
379 IF( NORMALTRANSR ) THEN
389 CALL STRTRI( 'l
', DIAG, K, A( 1 ), N+1, INFO )
392 CALL STRMM( 'r
', 'l
', 'n
', DIAG, K, K, -ONE, A( 1 ),
393 $ N+1, A( K+1 ), N+1 )
394 CALL STRTRI( 'u
', DIAG, K, A( 0 ), N+1, INFO )
399 CALL STRMM( 'l
', 'u
', 't
', DIAG, K, K, ONE, A( 0 ), N+1,
408 CALL STRTRI( 'l
', DIAG, K, A( K+1 ), N+1, INFO )
411 CALL STRMM( 'l
', 'l
', 't
', DIAG, K, K, -ONE, A( K+1 ),
413 CALL STRTRI( 'u
', DIAG, K, A( K ), N+1, INFO )
418 CALL STRMM( 'r
', 'u
', 'n
', DIAG, K, K, ONE, A( K ), N+1,
431 CALL STRTRI( 'u
', DIAG, K, A( K ), K, INFO )
434 CALL STRMM( 'l
', 'u
', 'n
', DIAG, K, K, -ONE, A( K ), K,
435 $ A( K*( K+1 ) ), K )
436 CALL STRTRI( 'l
', DIAG, K, A( 0 ), K, INFO )
441 CALL STRMM( 'r
', 'l
', 't
', DIAG, K, K, ONE, A( 0 ), K,
442 $ A( K*( K+1 ) ), K )
449 CALL STRTRI( 'u
', DIAG, K, A( K*( K+1 ) ), K, INFO )
452 CALL STRMM( 'r
', 'u
', 't
', DIAG, K, K, -ONE,
453 $ A( K*( K+1 ) ), K, A( 0 ), K )
454 CALL STRTRI( 'l
', DIAG, K, A( K*K ), K, INFO )
459 CALL STRMM( 'l
', 'l
', 'n
', DIAG, K, K, ONE, A( K*K ), K,
subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM