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 dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtftri(TRANSR, UPLO, DIAG, N, A, INFO)
DTFTRI
subroutine dtrtri(UPLO, DIAG, N, A, LDA, INFO)
DTRTRI