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