192 SUBROUTINE dpftri( TRANSR, UPLO, N, A, INFO )
200 CHARACTER TRANSR, UPLO
203 DOUBLE PRECISION A( 0: * )
210 parameter ( one = 1.0d+0 )
213 LOGICAL LOWER, NISODD, NORMALTRANSR
231 normaltransr = lsame( transr,
'N' )
232 lower = lsame( uplo,
'L' )
233 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'T' ) )
THEN
235 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
237 ELSE IF( n.LT.0 )
THEN
241 CALL xerbla(
'DPFTRI', -info )
252 CALL dtftri( transr, uplo,
'N', n, a, info )
259 IF( mod( n, 2 ).EQ.0 )
THEN
283 IF( normaltransr )
THEN
293 CALL dlauum(
'L', n1, a( 0 ), n, info )
294 CALL dsyrk(
'L',
'T', n1, n2, one, a( n1 ), n, one,
296 CALL dtrmm(
'L',
'U',
'N',
'N', n2, n1, one, a( n ), n,
298 CALL dlauum(
'U', n2, a( n ), n, info )
306 CALL dlauum(
'L', n1, a( n2 ), n, info )
307 CALL dsyrk(
'L',
'N', n1, n2, one, a( 0 ), n, one,
309 CALL dtrmm(
'R',
'U',
'T',
'N', n1, n2, one, a( n1 ), n,
311 CALL dlauum(
'U', n2, a( n1 ), n, info )
324 CALL dlauum(
'U', n1, a( 0 ), n1, info )
325 CALL dsyrk(
'U',
'N', n1, n2, one, a( n1*n1 ), n1, one,
327 CALL dtrmm(
'R',
'L',
'N',
'N', n1, n2, one, a( 1 ), n1,
329 CALL dlauum(
'L', n2, a( 1 ), n1, info )
336 CALL dlauum(
'U', n1, a( n2*n2 ), n2, info )
337 CALL dsyrk(
'U',
'T', n1, n2, one, a( 0 ), n2, one,
339 CALL dtrmm(
'L',
'L',
'T',
'N', n2, n1, one, a( n1*n2 ),
341 CALL dlauum(
'L', n2, a( n1*n2 ), n2, info )
351 IF( normaltransr )
THEN
361 CALL dlauum(
'L', k, a( 1 ), n+1, info )
362 CALL dsyrk(
'L',
'T', k, k, one, a( k+1 ), n+1, one,
364 CALL dtrmm(
'L',
'U',
'N',
'N', k, k, one, a( 0 ), n+1,
366 CALL dlauum(
'U', k, a( 0 ), n+1, info )
374 CALL dlauum(
'L', k, a( k+1 ), n+1, info )
375 CALL dsyrk(
'L',
'N', k, k, one, a( 0 ), n+1, one,
377 CALL dtrmm(
'R',
'U',
'T',
'N', k, k, one, a( k ), n+1,
379 CALL dlauum(
'U', k, a( k ), n+1, info )
393 CALL dlauum(
'U', k, a( k ), k, info )
394 CALL dsyrk(
'U',
'N', k, k, one, a( k*( k+1 ) ), k, one,
396 CALL dtrmm(
'R',
'L',
'N',
'N', k, k, one, a( 0 ), k,
397 $ a( k*( k+1 ) ), k )
398 CALL dlauum(
'L', k, a( 0 ), k, info )
406 CALL dlauum(
'U', k, a( k*( k+1 ) ), k, info )
407 CALL dsyrk(
'U',
'T', k, k, one, a( 0 ), k, one,
408 $ a( k*( k+1 ) ), k )
409 CALL dtrmm(
'L',
'L',
'T',
'N', k, k, one, a( k*k ), k,
411 CALL dlauum(
'L', k, a( k*k ), k, info )
subroutine dpftri(TRANSR, UPLO, N, A, INFO)
DPFTRI
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRMM
subroutine dsyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
DSYRK
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtftri(TRANSR, UPLO, DIAG, N, A, INFO)
DTFTRI
subroutine dlauum(UPLO, N, A, LDA, INFO)
DLAUUM computes the product UUH or LHL, where U and L are upper or lower triangular matrices (blocked...