222 SUBROUTINE ctftri( TRANSR, UPLO, DIAG, N, A, INFO )
230 CHARACTER TRANSR, UPLO, DIAG
241 parameter ( cone = ( 1.0e+0, 0.0e+0 ) )
244 LOGICAL LOWER, NISODD, NORMALTRANSR
262 normaltransr = lsame( transr,
'N' )
263 lower = lsame( uplo,
'L' )
264 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'C' ) )
THEN
266 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
268 ELSE IF( .NOT.lsame( diag,
'N' ) .AND. .NOT.lsame( diag,
'U' ) )
271 ELSE IF( n.LT.0 )
THEN
275 CALL xerbla(
'CTFTRI', -info )
287 IF( mod( n, 2 ).EQ.0 )
THEN
311 IF( normaltransr )
THEN
321 CALL ctrtri(
'L', diag, n1, a( 0 ), n, info )
324 CALL ctrmm(
'R',
'L',
'N', diag, n2, n1, -cone, a( 0 ),
326 CALL ctrtri(
'U', diag, n2, a( n ), n, info )
331 CALL ctrmm(
'L',
'U',
'C', diag, n2, n1, cone, a( n ), n,
340 CALL ctrtri(
'L', diag, n1, a( n2 ), n, info )
343 CALL ctrmm(
'L',
'L',
'C', diag, n1, n2, -cone, a( n2 ),
345 CALL ctrtri(
'U', diag, n2, a( n1 ), n, info )
350 CALL ctrmm(
'R',
'U',
'N', diag, n1, n2, cone, a( n1 ),
364 CALL ctrtri(
'U', diag, n1, a( 0 ), n1, info )
367 CALL ctrmm(
'L',
'U',
'N', diag, n1, n2, -cone, a( 0 ),
368 $ n1, a( n1*n1 ), n1 )
369 CALL ctrtri(
'L', diag, n2, a( 1 ), n1, info )
374 CALL ctrmm(
'R',
'L',
'C', diag, n1, n2, cone, a( 1 ),
375 $ n1, a( n1*n1 ), n1 )
382 CALL ctrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
385 CALL ctrmm(
'R',
'U',
'C', diag, n2, n1, -cone,
386 $ a( n2*n2 ), n2, a( 0 ), n2 )
387 CALL ctrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
392 CALL ctrmm(
'L',
'L',
'N', diag, n2, n1, cone,
393 $ a( n1*n2 ), n2, a( 0 ), n2 )
402 IF( normaltransr )
THEN
412 CALL ctrtri(
'L', diag, k, a( 1 ), n+1, info )
415 CALL ctrmm(
'R',
'L',
'N', diag, k, k, -cone, a( 1 ),
416 $ n+1, a( k+1 ), n+1 )
417 CALL ctrtri(
'U', diag, k, a( 0 ), n+1, info )
422 CALL ctrmm(
'L',
'U',
'C', diag, k, k, cone, a( 0 ), n+1,
431 CALL ctrtri(
'L', diag, k, a( k+1 ), n+1, info )
434 CALL ctrmm(
'L',
'L',
'C', diag, k, k, -cone, a( k+1 ),
436 CALL ctrtri(
'U', diag, k, a( k ), n+1, info )
441 CALL ctrmm(
'R',
'U',
'N', diag, k, k, cone, a( k ), n+1,
454 CALL ctrtri(
'U', diag, k, a( k ), k, info )
457 CALL ctrmm(
'L',
'U',
'N', diag, k, k, -cone, a( k ), k,
458 $ a( k*( k+1 ) ), k )
459 CALL ctrtri(
'L', diag, k, a( 0 ), k, info )
464 CALL ctrmm(
'R',
'L',
'C', diag, k, k, cone, a( 0 ), k,
465 $ a( k*( k+1 ) ), k )
472 CALL ctrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
475 CALL ctrmm(
'R',
'U',
'C', diag, k, k, -cone,
476 $ a( k*( k+1 ) ), k, a( 0 ), k )
477 CALL ctrtri(
'L', diag, k, a( k*k ), k, info )
482 CALL ctrmm(
'L',
'L',
'N', diag, k, k, cone, a( k*k ), k,
subroutine ctftri(TRANSR, UPLO, DIAG, N, A, INFO)
CTFTRI
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRMM
subroutine ctrtri(UPLO, DIAG, N, A, LDA, INFO)
CTRTRI