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,