202 SUBROUTINE stftri( TRANSR, UPLO, DIAG, N, A, INFO )
210 CHARACTER TRANSR, UPLO, DIAG
221 parameter( one = 1.0e+0 )
224 LOGICAL LOWER, NISODD, NORMALTRANSR
242 normaltransr = lsame( transr,
'N' )
243 lower = lsame( uplo,
'L' )
244 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'T' ) )
THEN
246 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
248 ELSE IF( .NOT.lsame( diag,
'N' ) .AND. .NOT.lsame( diag,
'U' ) )
251 ELSE IF( n.LT.0 )
THEN
255 CALL
xerbla(
'STFTRI', -info )
267 IF( mod( n, 2 ).EQ.0 )
THEN
291 IF( normaltransr )
THEN
301 CALL
strtri(
'L', diag, n1, a( 0 ), n, info )
304 CALL
strmm(
'R',
'L',
'N', diag, n2, n1, -one, a( 0 ),
306 CALL
strtri(
'U', diag, n2, a( n ), n, info )
311 CALL
strmm(
'L',
'U',
'T', diag, n2, n1, one, a( n ), n,
320 CALL
strtri(
'L', diag, n1, a( n2 ), n, info )
323 CALL
strmm(
'L',
'L',
'T', diag, n1, n2, -one, a( n2 ),
325 CALL
strtri(
'U', diag, n2, a( n1 ), n, info )
330 CALL
strmm(
'R',
'U',
'N', diag, n1, n2, one, a( n1 ),
344 CALL
strtri(
'U', diag, n1, a( 0 ), n1, info )
347 CALL
strmm(
'L',
'U',
'N', diag, n1, n2, -one, a( 0 ),
348 $ n1, a( n1*n1 ), n1 )
349 CALL
strtri(
'L', diag, n2, a( 1 ), n1, info )
354 CALL
strmm(
'R',
'L',
'T', diag, n1, n2, one, a( 1 ),
355 $ n1, a( n1*n1 ), n1 )
362 CALL
strtri(
'U', diag, n1, a( n2*n2 ), n2, info )
365 CALL
strmm(
'R',
'U',
'T', diag, n2, n1, -one,
366 $ a( n2*n2 ), n2, a( 0 ), n2 )
367 CALL
strtri(
'L', diag, n2, a( n1*n2 ), n2, info )
372 CALL
strmm(
'L',
'L',
'N', diag, n2, n1, one,
373 $ a( n1*n2 ), n2, a( 0 ), n2 )
382 IF( normaltransr )
THEN
392 CALL
strtri(
'L', diag, k, a( 1 ), n+1, info )
395 CALL
strmm(
'R',
'L',
'N', diag, k, k, -one, a( 1 ),
396 $ n+1, a( k+1 ), n+1 )
397 CALL
strtri(
'U', diag, k, a( 0 ), n+1, info )
402 CALL
strmm(
'L',
'U',
'T', diag, k, k, one, a( 0 ), n+1,
411 CALL
strtri(
'L', diag, k, a( k+1 ), n+1, info )
414 CALL
strmm(
'L',
'L',
'T', diag, k, k, -one, a( k+1 ),
416 CALL
strtri(
'U', diag, k, a( k ), n+1, info )
421 CALL
strmm(
'R',
'U',
'N', diag, k, k, one, a( k ), n+1,
434 CALL
strtri(
'U', diag, k, a( k ), k, info )
437 CALL
strmm(
'L',
'U',
'N', diag, k, k, -one, a( k ), k,
438 $ a( k*( k+1 ) ), k )
439 CALL
strtri(
'L', diag, k, a( 0 ), k, info )
444 CALL
strmm(
'R',
'L',
'T', diag, k, k, one, a( 0 ), k,
445 $ a( k*( k+1 ) ), k )
452 CALL
strtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
455 CALL
strmm(
'R',
'U',
'T', diag, k, k, -one,
456 $ a( k*( k+1 ) ), k, a( 0 ), k )
457 CALL
strtri(
'L', diag, k, a( k*k ), k, info )
462 CALL
strmm(
'L',
'L',
'N', diag, k, k, one, a( k*k ), k,
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine strtri(UPLO, DIAG, N, A, LDA, INFO)
STRTRI
subroutine stftri(TRANSR, UPLO, DIAG, N, A, INFO)
STFTRI