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 ), n, info )
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,
subroutine xerbla(srname, info)
subroutine dtftri(transr, uplo, diag, n, a, info)
DTFTRI
subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRMM
subroutine dtrtri(uplo, diag, n, a, lda, info)
DTRTRI