202 SUBROUTINE dtftri( TRANSR, UPLO, DIAG, N, A, INFO )
210 CHARACTER TRANSR, UPLO, DIAG
214 DOUBLE PRECISION A( 0: * )
221 parameter( one = 1.0d+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(
'DTFTRI', -info )
267 IF( mod( n, 2 ).EQ.0 )
THEN
291 IF( normaltransr )
THEN
301 CALL
dtrtri(
'L', diag, n1, a( 0 ), n, info )
304 CALL
dtrmm(
'R',
'L',
'N', diag, n2, n1, -one, a( 0 ),
306 CALL
dtrtri(
'U', diag, n2, a( n ), n, info )
311 CALL
dtrmm(
'L',
'U',
'T', diag, n2, n1, one, a( n ), n,
320 CALL
dtrtri(
'L', diag, n1, a( n2 ), n, info )
323 CALL
dtrmm(
'L',
'L',
'T', diag, n1, n2, -one, a( n2 ),
325 CALL
dtrtri(
'U', diag, n2, a( n1 ), n, info )
330 CALL
dtrmm(
'R',
'U',
'N', diag, n1, n2, one, a( n1 ),
344 CALL
dtrtri(
'U', diag, n1, a( 0 ), n1, info )
347 CALL
dtrmm(
'L',
'U',
'N', diag, n1, n2, -one, a( 0 ),
348 $ n1, a( n1*n1 ), n1 )
349 CALL
dtrtri(
'L', diag, n2, a( 1 ), n1, info )
354 CALL
dtrmm(
'R',
'L',
'T', diag, n1, n2, one, a( 1 ),
355 $ n1, a( n1*n1 ), n1 )
362 CALL
dtrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
365 CALL
dtrmm(
'R',
'U',
'T', diag, n2, n1, -one,
366 $ a( n2*n2 ), n2, a( 0 ), n2 )
367 CALL
dtrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
372 CALL
dtrmm(
'L',
'L',
'N', diag, n2, n1, one,
373 $ a( n1*n2 ), n2, a( 0 ), n2 )
382 IF( normaltransr )
THEN
392 CALL
dtrtri(
'L', diag, k, a( 1 ), n+1, info )
395 CALL
dtrmm(
'R',
'L',
'N', diag, k, k, -one, a( 1 ),
396 $ n+1, a( k+1 ), n+1 )
397 CALL
dtrtri(
'U', diag, k, a( 0 ), n+1, info )
402 CALL
dtrmm(
'L',
'U',
'T', diag, k, k, one, a( 0 ), n+1,
411 CALL
dtrtri(
'L', diag, k, a( k+1 ), n+1, info )
414 CALL
dtrmm(
'L',
'L',
'T', diag, k, k, -one, a( k+1 ),
416 CALL
dtrtri(
'U', diag, k, a( k ), n+1, info )
421 CALL
dtrmm(
'R',
'U',
'N', diag, k, k, one, a( k ), n+1,
434 CALL
dtrtri(
'U', diag, k, a( k ), k, info )
437 CALL
dtrmm(
'L',
'U',
'N', diag, k, k, -one, a( k ), k,
438 $ a( k*( k+1 ) ), k )
439 CALL
dtrtri(
'L', diag, k, a( 0 ), k, info )
444 CALL
dtrmm(
'R',
'L',
'T', diag, k, k, one, a( 0 ), k,
445 $ a( k*( k+1 ) ), k )
452 CALL
dtrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
455 CALL
dtrmm(
'R',
'U',
'T', diag, k, k, -one,
456 $ a( k*( k+1 ) ), k, a( 0 ), k )
457 CALL
dtrtri(
'L', diag, k, a( k*k ), k, info )
462 CALL
dtrmm(
'L',
'L',
'N', diag, k, k, one, a( k*k ), k,
subroutine xerbla(SRNAME, INFO)
XERBLA
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