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 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
subroutine xerbla(SRNAME, INFO)
XERBLA