218 SUBROUTINE ctftri( TRANSR, UPLO, DIAG, N, A, INFO )
225 CHARACTER TRANSR, UPLO, DIAG
236 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
239 LOGICAL LOWER, NISODD, NORMALTRANSR
257 normaltransr = lsame( transr,
'N' )
258 lower = lsame( uplo,
'L' )
259 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'C' ) )
THEN
261 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
263 ELSE IF( .NOT.lsame( diag,
'N' ) .AND.
264 $ .NOT.lsame( diag,
'U' ) )
267 ELSE IF( n.LT.0 )
THEN
271 CALL xerbla(
'CTFTRI', -info )
283 IF( mod( n, 2 ).EQ.0 )
THEN
307 IF( normaltransr )
THEN
317 CALL ctrtri(
'L', diag, n1, a( 0 ), n, info )
320 CALL ctrmm(
'R',
'L',
'N', diag, n2, n1, -cone,
323 CALL ctrtri(
'U', diag, n2, a( n ), n, info )
328 CALL ctrmm(
'L',
'U',
'C', diag, n2, n1, cone, a( n ),
338 CALL ctrtri(
'L', diag, n1, a( n2 ), n, info )
341 CALL ctrmm(
'L',
'L',
'C', diag, n1, n2, -cone,
344 CALL ctrtri(
'U', diag, n2, a( n1 ), n, info )
349 CALL ctrmm(
'R',
'U',
'N', diag, n1, n2, cone,
364 CALL ctrtri(
'U', diag, n1, a( 0 ), n1, info )
367 CALL ctrmm(
'L',
'U',
'N', diag, n1, n2, -cone,
369 $ n1, a( n1*n1 ), n1 )
370 CALL ctrtri(
'L', diag, n2, a( 1 ), n1, info )
375 CALL ctrmm(
'R',
'L',
'C', diag, n1, n2, cone, a( 1 ),
376 $ n1, a( n1*n1 ), n1 )
383 CALL ctrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
386 CALL ctrmm(
'R',
'U',
'C', diag, n2, n1, -cone,
387 $ a( n2*n2 ), n2, a( 0 ), n2 )
388 CALL ctrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
393 CALL ctrmm(
'L',
'L',
'N', diag, n2, n1, cone,
394 $ a( n1*n2 ), n2, a( 0 ), n2 )
403 IF( normaltransr )
THEN
413 CALL ctrtri(
'L', diag, k, a( 1 ), n+1, info )
416 CALL ctrmm(
'R',
'L',
'N', diag, k, k, -cone, a( 1 ),
417 $ n+1, a( k+1 ), n+1 )
418 CALL ctrtri(
'U', diag, k, a( 0 ), n+1, info )
423 CALL ctrmm(
'L',
'U',
'C', diag, k, k, cone, a( 0 ),
433 CALL ctrtri(
'L', diag, k, a( k+1 ), n+1, info )
436 CALL ctrmm(
'L',
'L',
'C', diag, k, k, -cone,
439 CALL ctrtri(
'U', diag, k, a( k ), n+1, info )
444 CALL ctrmm(
'R',
'U',
'N', diag, k, k, cone, a( k ),
458 CALL ctrtri(
'U', diag, k, a( k ), k, info )
461 CALL ctrmm(
'L',
'U',
'N', diag, k, k, -cone, a( k ),
463 $ a( k*( k+1 ) ), k )
464 CALL ctrtri(
'L', diag, k, a( 0 ), k, info )
469 CALL ctrmm(
'R',
'L',
'C', diag, k, k, cone, a( 0 ),
471 $ a( k*( k+1 ) ), k )
478 CALL ctrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
481 CALL ctrmm(
'R',
'U',
'C', diag, k, k, -cone,
482 $ a( k*( k+1 ) ), k, a( 0 ), k )
483 CALL ctrtri(
'L', diag, k, a( k*k ), k, info )
488 CALL ctrmm(
'L',
'L',
'N', diag, k, k, cone, a( k*k ),