200 SUBROUTINE dtftri( TRANSR, UPLO, DIAG, N, A, INFO )
207 CHARACTER TRANSR, UPLO, DIAG
211 DOUBLE PRECISION A( 0: * )
218 parameter( one = 1.0d+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(
'DTFTRI', -info )
264 IF( mod( n, 2 ).EQ.0 )
THEN
288 IF( normaltransr )
THEN
298 CALL dtrtri(
'L', diag, n1, a( 0 ), n, info )
301 CALL dtrmm(
'R',
'L',
'N', diag, n2, n1, -one, a( 0 ),
303 CALL dtrtri(
'U', diag, n2, a( n ), n, info )
308 CALL dtrmm(
'L',
'U',
'T', diag, n2, n1, one, a( n ), n,
317 CALL dtrtri(
'L', diag, n1, a( n2 ), n, info )
320 CALL dtrmm(
'L',
'L',
'T', diag, n1, n2, -one, a( n2 ),
322 CALL dtrtri(
'U', diag, n2, a( n1
327 CALL dtrmm(
'R',
'U',
'N', diag, n1, n2, one, a( n1 ),
341 CALL dtrtri(
'U', diag, n1, a( 0 ), n1, info )
344 CALL dtrmm(
'L',
'U',
'N', diag, n1, n2, -one, a( 0 ),
345 $ n1, a( n1*n1 ), n1 )
346 CALL dtrtri(
'L', diag, n2, a( 1 ), n1, info )
351 CALL dtrmm(
'R',
'L',
'T', diag, n1, n2, one, a( 1 ),
352 $ n1, a( n1*n1 ), n1 )
359 CALL dtrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
362 CALL dtrmm(
'R',
'U',
'T', diag, n2, n1, -one,
363 $ a( n2*n2 ), n2, a( 0 ), n2 )
364 CALL dtrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
369 CALL dtrmm(
'L',
'L',
'N', diag, n2, n1, one,
370 $ a( n1*n2 ), n2, a( 0 ), n2 )
379 IF( normaltransr )
THEN
389 CALL dtrtri(
'L', diag, k, a( 1 ), n+1, info )
392 CALL dtrmm(
'R',
'L',
'N', diag, k, k, -one, a( 1 ),
393 $ n+1, a( k+1 ), n+1 )
394 CALL dtrtri(
'U', diag, k, a( 0 ), n+1, info )
399 CALL dtrmm(
'L',
'U',
'T', diag, k, k, one, a( 0 ), n+1,
408 CALL dtrtri(
'L', diag, k, a( k+1 ), n+1, info )
411 CALL dtrmm(
'L',
'L',
'T', diag, k, k, -one, a( k+1 ),
413 CALL dtrtri(
'U', diag, k, a( k ), n+1, info )
418 CALL dtrmm(
'R',
'U',
'N', diag, k, k, one, a( k ), n+1,
431 CALL dtrtri(
'U', diag, k, a( k ), k, info )
434 CALL dtrmm(
'L',
'U',
'N', diag, k, k, -one, a( k ), k,
435 $ a( k*( k+1 ) ), k )
436 CALL dtrtri(
'L', diag, k, a( 0 ), k, info )
441 CALL dtrmm(
'R',
'L',
'T', diag, k, k, one, a( 0 ), k,
442 $ a( k*( k+1 ) ), k )
449 CALL dtrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
452 CALL dtrmm(
'R',
'U',
'T', diag, k, k, -one,
453 $ a( k*( k+1 ) ), k, a( 0 ), k )
454 CALL dtrtri(
'L', diag, k, a( k*k ), k, info )
459 CALL dtrmm(
'L',
'L',
'N', diag, k, k, one, a( k*k ), k,