220 SUBROUTINE ctftri( TRANSR, UPLO, DIAG, N, A, INFO )
227 CHARACTER TRANSR, UPLO, DIAG
238 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
241 LOGICAL LOWER, NISODD, NORMALTRANSR
259 normaltransr = lsame( transr,
'N' )
260 lower = lsame( uplo,
'L' )
261 IF( .NOT.normaltransr .AND. .NOT.lsame( transr,
'C' ) )
THEN
263 ELSE IF( .NOT.lower .AND. .NOT.lsame( uplo,
'U' ) )
THEN
265 ELSE IF( .NOT.lsame( diag,
'N' ) .AND. .NOT.lsame( diag,
'U' ) )
268 ELSE IF( n.LT.0 )
THEN
272 CALL xerbla(
'CTFTRI', -info )
284 IF( mod( n, 2 ).EQ.0 )
THEN
308 IF( normaltransr )
THEN
318 CALL ctrtri(
'L', diag, n1, a( 0 ), n, info )
321 CALL ctrmm(
'R',
'L',
'N', diag, n2, n1, -cone, a( 0 ),
323 CALL ctrtri(
'U', diag, n2, a( n ), n, info )
328 CALL ctrmm(
'L',
'U',
'C', diag, n2, n1, cone, a( n ), n,
337 CALL ctrtri(
'L', diag, n1, a( n2 ), n, info )
340 CALL ctrmm(
'L',
'L',
'C', diag, n1, n2, -cone, a( n2 ),
342 CALL ctrtri(
'U', diag, n2, a( n1 ), n, info )
347 CALL ctrmm(
'R',
'U',
'N', diag, n1, n2, cone, a( n1 ),
361 CALL ctrtri(
'U', diag, n1, a( 0 ), n1, info )
364 CALL ctrmm(
'L',
'U',
'N', diag, n1, n2, -cone, a( 0 ),
365 $ n1, a( n1*n1 ), n1 )
366 CALL ctrtri(
'L', diag, n2, a( 1 ), n1, info )
371 CALL ctrmm(
'R',
'L',
'C', diag, n1, n2, cone, a( 1 ),
372 $ n1, a( n1*n1 ), n1 )
379 CALL ctrtri(
'U', diag, n1, a( n2*n2 ), n2, info )
382 CALL ctrmm(
'R',
'U',
'C', diag, n2, n1, -cone,
383 $ a( n2*n2 ), n2, a( 0 ), n2 )
384 CALL ctrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
389 CALL ctrmm(
'L',
'L',
'N', diag, n2, n1, cone,
390 $ a( n1*n2 ), n2, a( 0 ), n2 )
399 IF( normaltransr )
THEN
409 CALL ctrtri(
'L', diag, k, a( 1 ), n+1, info )
412 CALL ctrmm(
'R',
'L',
'N', diag, k, k, -cone, a( 1 ),
413 $ n+1, a( k+1 ), n+1 )
414 CALL ctrtri(
'U', diag, k, a( 0 ), n+1, info )
419 CALL ctrmm(
'L',
'U',
'C', diag, k, k, cone, a( 0 ), n+1,
428 CALL ctrtri(
'L', diag, k, a( k+1 ), n+1, info )
431 CALL ctrmm(
'L',
'L',
'C', diag, k, k, -cone, a( k+1 ),
433 CALL ctrtri(
'U', diag, k, a( k ), n+1, info )
438 CALL ctrmm(
'R',
'U',
'N', diag, k, k, cone, a( k ), n+1,
451 CALL ctrtri(
'U', diag, k, a( k ), k, info )
454 CALL ctrmm(
'L',
'U',
'N', diag, k, k, -cone, a( k ), k,
455 $ a( k*( k+1 ) ), k )
456 CALL ctrtri(
'L', diag, k, a( 0 ), k, info )
461 CALL ctrmm(
'R',
'L',
'C', diag, k, k, cone, a( 0 ), k,
462 $ a( k*( k+1 ) ), k )
469 CALL ctrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
472 CALL ctrmm(
'R',
'U',
'C', diag, k, k, -cone,
473 $ a( k*( k+1 ) ), k, a( 0 ), k )
474 CALL ctrtri(
'L', diag, k, a( k*k ), k, info )
479 CALL ctrmm(
'L',
'L',
'N', diag, k, k, cone, a( k*k ), k,
subroutine xerbla(srname, info)
subroutine ctftri(transr, uplo, diag, n, a, info)
CTFTRI
subroutine ctrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
CTRMM
subroutine ctrtri(uplo, diag, n, a, lda, info)
CTRTRI