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 xerbla(srname, info)
subroutine stftri(transr, uplo, diag, n, a, info)
STFTRI
subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM
subroutine strtri(uplo, diag, n, a, lda, info)
STRTRI