220 SUBROUTINE ztftri( TRANSR, UPLO, DIAG, N, A, INFO )
227 CHARACTER TRANSR, UPLO, DIAG
238 parameter( cone = ( 1.0d+0, 0.0d+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(
'ZTFTRI', -info )
284 IF( mod( n, 2 ).EQ.0 )
THEN
308 IF( normaltransr )
THEN
318 CALL ztrtri(
'L', diag, n1, a( 0 ), n, info )
321 CALL ztrmm(
'R',
'L',
'N', diag, n2, n1, -cone, a( 0 ),
323 CALL ztrtri(
'U', diag, n2, a( n ), n, info )
328 CALL ztrmm(
'L',
'U',
'C', diag, n2, n1, cone, a( n ), n,
337 CALL ztrtri(
'L', diag, n1, a( n2 ), n, info )
340 CALL ztrmm(
'L',
'L',
'C', diag, n1, n2, -cone, a( n2 ),
342 CALL ztrtri(
'U', diag, n2, a( n1 ), n, info )
347 CALL ztrmm(
'R',
'U',
'N', diag, n1, n2, cone, a( n1 ),
361 CALL ztrtri(
'U', diag, n1, a( 0 ), n1, info )
364 CALL ztrmm(
'L',
'U',
'N', diag, n1, n2, -cone, a( 0 ),
365 $ n1, a( n1*n1 ), n1 )
366 CALL ztrtri(
'L', diag, n2, a( 1 ), n1, info )
371 CALL ztrmm(
'R',
'L',
'C', diag, n1, n2, cone, a( 1 ),
372 $ n1, a( n1*n1 ), n1 )
379 CALL ztrtri(
'U', diag, n1, a( n2*n2 ), n2, info
382 CALL ztrmm(
'R',
'U',
'C', diag, n2, n1, -cone,
384 CALL ztrtri(
'L', diag, n2, a( n1*n2 ), n2, info )
389 CALL ztrmm(
'L',
'L',
'N', diag, n2, n1, cone,
390 $ a( n1*n2 ), n2, a( 0 ), n2 )
399 IF( normaltransr )
THEN
409 CALL ztrtri(
'L', diag, k, a( 1 ), n+1, info )
412 CALL ztrmm(
'R',
'L',
'N', diag, k, k, -cone, a( 1 ),
413 $ n+1, a( k+1 ), n+1 )
414 CALL ztrtri(
'U', diag, k, a( 0 ), n+1, info )
419 CALL ztrmm(
'L',
'U',
'C', diag, k, k, cone, a( 0 ), n+1,
428 CALL ztrtri(
'L', diag, k, a( k+1 ), n+1, info )
431 CALL ztrmm(
'L',
'L',
'C', diag, k, k, -cone, a( k+1 ),
433 CALL ztrtri(
'U', diag, k, a( k ), n+1, info )
438 CALL ztrmm(
'R',
'U',
'N', diag, k, k, cone, a( k ), n+1
451 CALL ztrtri(
'U', diag, k, a( k ), k
454 CALL ztrmm(
'L',
'U',
'N', diag, k, k, -cone, a( k ), k,
455 $ a( k*( k+1 ) ), k )
456 CALL ztrtri(
'L', diag, k, a( 0 ), k, info )
461 CALL ztrmm(
'R',
'L',
'C', diag, k, k, cone, a( 0 ), k,
462 $ a( k*( k+1 ) ), k )
469 CALL ztrtri(
'U', diag, k, a( k*( k+1 ) ), k, info )
472 CALL ztrmm(
'R',
'U',
'C', diag, k, k, -cone,
473 $ a( k*( k+1 ) ), k, a( 0 ), k )
474 CALL ztrtri(
'L', diag, k, a( k*k ), k, info )
479 CALL ztrmm(
'L',
'L',
'N', diag, k, k, cone, a( k*k ), k,