198 SUBROUTINE dtftri( TRANSR, UPLO, DIAG, N, A, INFO )
205 CHARACTER TRANSR, UPLO, DIAG
209 DOUBLE PRECISION A( 0: * )
216 parameter( one = 1.0d+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(
'DTFTRI', -info )
263 IF( mod( n, 2 ).EQ.0 )
THEN
287 IF( normaltransr )
THEN
297 CALL dtrtri(
'L', diag, n1, a( 0 ), n, info )
300 CALL dtrmm(
'R',
'L',
'N', diag, n2, n1, -one, a( 0 ),
302 CALL dtrtri(
'U', diag, n2, a( n ), n, info )
307 CALL dtrmm(
'L',
'U',
'T', diag, n2, n1, one, a( n ),
317 CALL dtrtri(
'L', diag, n1, a( n2 ), n, info )
320 CALL dtrmm(
'L',
'L',
'T', diag, n1, n2, -one,
323 CALL dtrtri(
'U', diag, n2, a( n1 ), n, info )
328 CALL dtrmm(
'R',
'U',
'N', diag, n1, n2, one, a( n1 ),
342 CALL dtrtri(
'U', diag, n1, a( 0 ), n1, info )
345 CALL dtrmm(
'L',
'U',
'N', diag, n1, n2, -one, a( 0 ),
346 $ n1, a( n1*n1 ), n1 )
347 CALL dtrtri(
'L', diag, n2, a( 1 ), n1, info )
352 CALL dtrmm(
'R',
'L',
'T', diag, n1, n2, one, a( 1 ),
353 $ n1, a( n1*n1 ), n1 )
360 CALL dtrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
363 CALL dtrmm(
'R',
'U',
'T', diag, n2, n1, -one,
364 $ a( n2*n2 ), n2, a( 0 ), n2 )
365 CALL dtrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
370 CALL dtrmm(
'L',
'L',
'N', diag, n2, n1, one,
371 $ a( n1*n2 ), n2, a( 0 ), n2 )
380 IF( normaltransr )
THEN
390 CALL dtrtri(
'L', diag, k, a( 1 ), n+1, info )
393 CALL dtrmm(
'R',
'L',
'N', diag, k, k, -one, a( 1 ),
394 $ n+1, a( k+1 ), n+1 )
395 CALL dtrtri(
'U', diag, k, a( 0 ), n+1, info )
400 CALL dtrmm(
'L',
'U',
'T', diag, k, k, one, a( 0 ),
410 CALL dtrtri(
'L', diag, k, a( k+1 ), n+1, info )
413 CALL dtrmm(
'L',
'L',
'T', diag, k, k, -one, a( k+1 ),
415 CALL dtrtri(
'U', diag, k, a( k ), n+1, info )
420 CALL dtrmm(
'R',
'U',
'N', diag, k, k, one, a( k ),
434 CALL dtrtri(
'U', diag, k, a( k ), k, info )
437 CALL dtrmm(
'L',
'U',
'N', diag, k, k, -one, a( k ),
439 $ a( k*( k+1 ) ), k )
440 CALL dtrtri(
'L', diag, k, a( 0 ), k, info )
445 CALL dtrmm(
'R',
'L',
'T', diag, k, k, one, a( 0 ), k,
446 $ a( k*( k+1 ) ), k )
453 CALL dtrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
456 CALL dtrmm(
'R',
'U',
'T', diag, k, k, -one,
457 $ a( k*( k+1 ) ), k, a( 0 ), k )
458 CALL dtrtri(
'L', diag, k, a( k*k ), k, info )
463 CALL dtrmm(
'L',
'L',
'N', diag, k, k, one, a( k*k ),