198 SUBROUTINE stftri( TRANSR, UPLO, DIAG, N, A, INFO )
205 CHARACTER TRANSR, UPLO, DIAG
216 parameter( one = 1.0e+0 )
219 LOGICAL LOWER, NISODD, NORMALTRANSR
237 normaltransr = lsame( transr,
'N' )
238 lower = lsame( uplo,
'L' )
239 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'T' ) )
THEN
241 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
243 ELSE IF( .NOT.lsame( diag,
'N' ) .AND.
244 $ .NOT.lsame( diag,
'U' ) )
247 ELSE IF( n.LT.0 )
THEN
251 CALL xerbla(
'STFTRI', -info )
263 IF( mod( n, 2 ).EQ.0 )
THEN
287 IF( normaltransr )
THEN
297 CALL strtri(
'L', diag, n1, a( 0 ), n, info )
300 CALL strmm(
'R',
'L',
'N', diag, n2, n1, -one, a( 0 ),
302 CALL strtri(
'U', diag, n2, a( n ), n, info )
307 CALL strmm(
'L',
'U',
'T', diag, n2, n1, one, a( n ),
317 CALL strtri(
'L', diag, n1, a( n2 ), n, info )
320 CALL strmm(
'L',
'L',
'T', diag, n1, n2, -one,
323 CALL strtri(
'U', diag, n2, a( n1 ), n, info )
328 CALL strmm(
'R',
'U',
'N', diag, n1, n2, one, a( n1 ),
342 CALL strtri(
'U', diag, n1, a( 0 ), n1, info )
345 CALL strmm(
'L',
'U',
'N', diag, n1, n2, -one, a( 0 ),
346 $ n1, a( n1*n1 ), n1 )
347 CALL strtri(
'L', diag, n2, a( 1 ), n1, info )
352 CALL strmm(
'R',
'L',
'T', diag, n1, n2, one, a( 1 ),
353 $ n1, a( n1*n1 ), n1 )
360 CALL strtri(
'U', diag, n1, a( n2*n2 ), n2, info )
363 CALL strmm(
'R',
'U',
'T', diag, n2, n1, -one,
364 $ a( n2*n2 ), n2, a( 0 ), n2 )
365 CALL strtri(
'L', diag, n2, a( n1*n2 ), n2, info )
370 CALL strmm(
'L',
'L',
'N', diag, n2, n1, one,
371 $ a( n1*n2 ), n2, a( 0 ), n2 )
380 IF( normaltransr )
THEN
390 CALL strtri(
'L', diag, k, a( 1 ), n+1, info )
393 CALL strmm(
'R',
'L',
'N', diag, k, k, -one, a( 1 ),
394 $ n+1, a( k+1 ), n+1 )
395 CALL strtri(
'U', diag, k, a( 0 ), n+1, info )
400 CALL strmm(
'L',
'U',
'T', diag, k, k, one, a( 0 ),
410 CALL strtri(
'L', diag, k, a( k+1 ), n+1, info )
413 CALL strmm(
'L',
'L',
'T', diag, k, k, -one, a( k+1 ),
415 CALL strtri(
'U', diag, k, a( k ), n+1, info )
420 CALL strmm(
'R',
'U',
'N', diag, k, k, one, a( k ),
434 CALL strtri(
'U', diag, k, a( k ), k, info )
437 CALL strmm(
'L',
'U',
'N', diag, k, k, -one, a( k ),
439 $ a( k*( k+1 ) ), k )
440 CALL strtri(
'L', diag, k, a( 0 ), k, info )
445 CALL strmm(
'R',
'L',
'T', diag, k, k, one, a( 0 ), k,
446 $ a( k*( k+1 ) ), k )
453 CALL strtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
456 CALL strmm(
'R',
'U',
'T', diag, k, k, -one,
457 $ a( k*( k+1 ) ), k, a( 0 ), k )
458 CALL strtri(
'L', diag, k, a( k*k ), k, info )
463 CALL strmm(
'L',
'L',
'N', diag, k, k, one, a( k*k ),