version 1.5, 2010/12/21 13:53:56
|
version 1.6, 2011/07/22 07:38:21
|
Line 1
|
Line 1
|
SUBROUTINE ZTFSM( TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, |
SUBROUTINE ZTFSM( TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, |
+ B, LDB ) |
$ B, LDB ) |
* |
* |
* -- LAPACK routine (version 3.3.0) -- |
* -- LAPACK routine (version 3.3.1) -- |
* |
* |
* -- Contributed by Fred Gustavson of the IBM Watson Research Center -- |
* -- Contributed by Fred Gustavson of the IBM Watson Research Center -- |
* November 2010 |
* -- April 2011 -- |
* |
* |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
Line 31
|
Line 31
|
* where alpha is a scalar, X and B are m by n matrices, A is a unit, or |
* where alpha is a scalar, X and B are m by n matrices, A is a unit, or |
* non-unit, upper or lower triangular matrix and op( A ) is one of |
* non-unit, upper or lower triangular matrix and op( A ) is one of |
* |
* |
* op( A ) = A or op( A ) = conjg( A' ). |
* op( A ) = A or op( A ) = A**H. |
* |
* |
* A is in Rectangular Full Packed (RFP) Format. |
* A is in Rectangular Full Packed (RFP) Format. |
* |
* |
Line 231
|
Line 231
|
* -- -- -- -- -- -- -- -- -- |
* -- -- -- -- -- -- -- -- -- |
* 04 14 24 34 44 43 44 22 32 42 52 |
* 04 14 24 34 44 43 44 22 32 42 52 |
* |
* |
|
* ===================================================================== |
* .. |
* .. |
* .. Parameters .. |
* .. Parameters .. |
COMPLEX*16 CONE, CZERO |
COMPLEX*16 CONE, CZERO |
PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ), |
PARAMETER ( CONE = ( 1.0D+0, 0.0D+0 ), |
+ CZERO = ( 0.0D+0, 0.0D+0 ) ) |
$ CZERO = ( 0.0D+0, 0.0D+0 ) ) |
* .. |
* .. |
* .. Local Scalars .. |
* .. Local Scalars .. |
LOGICAL LOWER, LSIDE, MISODD, NISODD, NORMALTRANSR, |
LOGICAL LOWER, LSIDE, MISODD, NISODD, NORMALTRANSR, |
+ NOTRANS |
$ NOTRANS |
INTEGER M1, M2, N1, N2, K, INFO, I, J |
INTEGER M1, M2, N1, N2, K, INFO, I, J |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
Line 270
|
Line 271
|
ELSE IF( .NOT.NOTRANS .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN |
ELSE IF( .NOT.NOTRANS .AND. .NOT.LSAME( TRANS, 'C' ) ) THEN |
INFO = -4 |
INFO = -4 |
ELSE IF( .NOT.LSAME( DIAG, 'N' ) .AND. .NOT.LSAME( DIAG, 'U' ) ) |
ELSE IF( .NOT.LSAME( DIAG, 'N' ) .AND. .NOT.LSAME( DIAG, 'U' ) ) |
+ THEN |
$ THEN |
INFO = -5 |
INFO = -5 |
ELSE IF( M.LT.0 ) THEN |
ELSE IF( M.LT.0 ) THEN |
INFO = -6 |
INFO = -6 |
Line 287
|
Line 288
|
* Quick return when ( (N.EQ.0).OR.(M.EQ.0) ) |
* Quick return when ( (N.EQ.0).OR.(M.EQ.0) ) |
* |
* |
IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) ) |
IF( ( M.EQ.0 ) .OR. ( N.EQ.0 ) ) |
+ RETURN |
$ RETURN |
* |
* |
* Quick return when ALPHA.EQ.(0D+0,0D+0) |
* Quick return when ALPHA.EQ.(0D+0,0D+0) |
* |
* |
Line 341
|
Line 342
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A, M, B, LDB ) |
$ A, M, B, LDB ) |
ELSE |
ELSE |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
CALL ZGEMM( 'N', 'N', M2, N, M1, -CONE, A( M1 ), |
CALL ZGEMM( 'N', 'N', M2, N, M1, -CONE, A( M1 ), |
+ M, B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ M, B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M2, N, CONE, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M2, N, CONE, |
+ A( M ), M, B( M1, 0 ), LDB ) |
$ A( M ), M, B( M1, 0 ), LDB ) |
END IF |
END IF |
* |
* |
ELSE |
ELSE |
Line 358
|
Line 359
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, ALPHA, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
ELSE |
ELSE |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
+ A( M ), M, B( M1, 0 ), LDB ) |
$ A( M ), M, B( M1, 0 ), LDB ) |
CALL ZGEMM( 'C', 'N', M1, N, M2, -CONE, A( M1 ), |
CALL ZGEMM( 'C', 'N', M1, N, M2, -CONE, A( M1 ), |
+ M, B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ M, B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, CONE, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, CONE, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
END IF |
END IF |
* |
* |
END IF |
END IF |
Line 380
|
Line 381
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A( M2 ), M, B, LDB ) |
$ A( M2 ), M, B, LDB ) |
CALL ZGEMM( 'C', 'N', M2, N, M1, -CONE, A( 0 ), M, |
CALL ZGEMM( 'C', 'N', M2, N, M1, -CONE, A( 0 ), M, |
+ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M2, N, CONE, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M2, N, CONE, |
+ A( M1 ), M, B( M1, 0 ), LDB ) |
$ A( M1 ), M, B( M1, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 392
|
Line 393
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
+ A( M1 ), M, B( M1, 0 ), LDB ) |
$ A( M1 ), M, B( M1, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M1, N, M2, -CONE, A( 0 ), M, |
CALL ZGEMM( 'N', 'N', M1, N, M2, -CONE, A( 0 ), M, |
+ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, CONE, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M1, N, CONE, |
+ A( M2 ), M, B, LDB ) |
$ A( M2 ), M, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 417
|
Line 418
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
ELSE |
ELSE |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
CALL ZGEMM( 'C', 'N', M2, N, M1, -CONE, |
CALL ZGEMM( 'C', 'N', M2, N, M1, -CONE, |
+ A( M1*M1 ), M1, B, LDB, ALPHA, |
$ A( M1*M1 ), M1, B, LDB, ALPHA, |
+ B( M1, 0 ), LDB ) |
$ B( M1, 0 ), LDB ) |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M2, N, CONE, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M2, N, CONE, |
+ A( 1 ), M1, B( M1, 0 ), LDB ) |
$ A( 1 ), M1, B( M1, 0 ), LDB ) |
END IF |
END IF |
* |
* |
ELSE |
ELSE |
Line 435
|
Line 436
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
ELSE |
ELSE |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M2, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M2, N, ALPHA, |
+ A( 1 ), M1, B( M1, 0 ), LDB ) |
$ A( 1 ), M1, B( M1, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M1, N, M2, -CONE, |
CALL ZGEMM( 'N', 'N', M1, N, M2, -CONE, |
+ A( M1*M1 ), M1, B( M1, 0 ), LDB, |
$ A( M1*M1 ), M1, B( M1, 0 ), LDB, |
+ ALPHA, B, LDB ) |
$ ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, CONE, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, CONE, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
END IF |
END IF |
* |
* |
END IF |
END IF |
Line 458
|
Line 459
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, M1, N, ALPHA, |
+ A( M2*M2 ), M2, B, LDB ) |
$ A( M2*M2 ), M2, B, LDB ) |
CALL ZGEMM( 'N', 'N', M2, N, M1, -CONE, A( 0 ), M2, |
CALL ZGEMM( 'N', 'N', M2, N, M1, -CONE, A( 0 ), M2, |
+ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M2, N, CONE, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, M2, N, CONE, |
+ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
$ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 470
|
Line 471
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M2, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, M2, N, ALPHA, |
+ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
$ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
CALL ZGEMM( 'C', 'N', M1, N, M2, -CONE, A( 0 ), M2, |
CALL ZGEMM( 'C', 'N', M1, N, M2, -CONE, A( 0 ), M2, |
+ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, CONE, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, M1, N, CONE, |
+ A( M2*M2 ), M2, B, LDB ) |
$ A( M2*M2 ), M2, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 500
|
Line 501
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
+ A( 1 ), M+1, B, LDB ) |
$ A( 1 ), M+1, B, LDB ) |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( K+1 ), |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( K+1 ), |
+ M+1, B, LDB, ALPHA, B( K, 0 ), LDB ) |
$ M+1, B, LDB, ALPHA, B( K, 0 ), LDB ) |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, CONE, |
+ A( 0 ), M+1, B( K, 0 ), LDB ) |
$ A( 0 ), M+1, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 512
|
Line 513
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
+ A( 0 ), M+1, B( K, 0 ), LDB ) |
$ A( 0 ), M+1, B( K, 0 ), LDB ) |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( K+1 ), |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( K+1 ), |
+ M+1, B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ M+1, B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, CONE, |
+ A( 1 ), M+1, B, LDB ) |
$ A( 1 ), M+1, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 530
|
Line 531
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
+ A( K+1 ), M+1, B, LDB ) |
$ A( K+1 ), M+1, B, LDB ) |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( 0 ), M+1, |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( 0 ), M+1, |
+ B, LDB, ALPHA, B( K, 0 ), LDB ) |
$ B, LDB, ALPHA, B( K, 0 ), LDB ) |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, CONE, |
+ A( K ), M+1, B( K, 0 ), LDB ) |
$ A( K ), M+1, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
* SIDE ='L', N is even, TRANSR = 'N', UPLO = 'U', |
* SIDE ='L', N is even, TRANSR = 'N', UPLO = 'U', |
* and TRANS = 'C' |
* and TRANS = 'C' |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
+ A( K ), M+1, B( K, 0 ), LDB ) |
$ A( K ), M+1, B( K, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( 0 ), M+1, |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( 0 ), M+1, |
+ B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, CONE, |
+ A( K+1 ), M+1, B, LDB ) |
$ A( K+1 ), M+1, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 565
|
Line 566
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, ALPHA, |
+ A( K ), K, B, LDB ) |
$ A( K ), K, B, LDB ) |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, |
+ A( K*( K+1 ) ), K, B, LDB, ALPHA, |
$ A( K*( K+1 ) ), K, B, LDB, ALPHA, |
+ B( K, 0 ), LDB ) |
$ B( K, 0 ), LDB ) |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, CONE, |
+ A( 0 ), K, B( K, 0 ), LDB ) |
$ A( 0 ), K, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 578
|
Line 579
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, ALPHA, |
+ A( 0 ), K, B( K, 0 ), LDB ) |
$ A( 0 ), K, B( K, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, |
+ A( K*( K+1 ) ), K, B( K, 0 ), LDB, |
$ A( K*( K+1 ) ), K, B( K, 0 ), LDB, |
+ ALPHA, B, LDB ) |
$ ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, CONE, |
+ A( K ), K, B, LDB ) |
$ A( K ), K, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 597
|
Line 598
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'U', 'C', DIAG, K, N, ALPHA, |
+ A( K*( K+1 ) ), K, B, LDB ) |
$ A( K*( K+1 ) ), K, B, LDB ) |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( 0 ), K, B, |
CALL ZGEMM( 'N', 'N', K, N, K, -CONE, A( 0 ), K, B, |
+ LDB, ALPHA, B( K, 0 ), LDB ) |
$ LDB, ALPHA, B( K, 0 ), LDB ) |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'L', 'N', DIAG, K, N, CONE, |
+ A( K*K ), K, B( K, 0 ), LDB ) |
$ A( K*K ), K, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 609
|
Line 610
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, ALPHA, |
CALL ZTRSM( 'L', 'L', 'C', DIAG, K, N, ALPHA, |
+ A( K*K ), K, B( K, 0 ), LDB ) |
$ A( K*K ), K, B( K, 0 ), LDB ) |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( 0 ), K, |
CALL ZGEMM( 'C', 'N', K, N, K, -CONE, A( 0 ), K, |
+ B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, CONE, |
CALL ZTRSM( 'L', 'U', 'N', DIAG, K, N, CONE, |
+ A( K*( K+1 ) ), K, B, LDB ) |
$ A( K*( K+1 ) ), K, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 663
|
Line 664
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N2, ALPHA, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N2, ALPHA, |
+ A( N ), N, B( 0, N1 ), LDB ) |
$ A( N ), N, B( 0, N1 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, N1, N2, -CONE, B( 0, N1 ), |
CALL ZGEMM( 'N', 'N', M, N1, N2, -CONE, B( 0, N1 ), |
+ LDB, A( N1 ), N, ALPHA, B( 0, 0 ), |
$ LDB, A( N1 ), N, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N1, CONE, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N1, CONE, |
+ A( 0 ), N, B( 0, 0 ), LDB ) |
$ A( 0 ), N, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 676
|
Line 677
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N1, ALPHA, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N1, ALPHA, |
+ A( 0 ), N, B( 0, 0 ), LDB ) |
$ A( 0 ), N, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, N2, N1, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'C', M, N2, N1, -CONE, B( 0, 0 ), |
+ LDB, A( N1 ), N, ALPHA, B( 0, N1 ), |
$ LDB, A( N1 ), N, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N2, CONE, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N2, CONE, |
+ A( N ), N, B( 0, N1 ), LDB ) |
$ A( N ), N, B( 0, N1 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 695
|
Line 696
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N1, ALPHA, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N1, ALPHA, |
+ A( N2 ), N, B( 0, 0 ), LDB ) |
$ A( N2 ), N, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, N2, N1, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'N', M, N2, N1, -CONE, B( 0, 0 ), |
+ LDB, A( 0 ), N, ALPHA, B( 0, N1 ), |
$ LDB, A( 0 ), N, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N2, CONE, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N2, CONE, |
+ A( N1 ), N, B( 0, N1 ), LDB ) |
$ A( N1 ), N, B( 0, N1 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 708
|
Line 709
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N2, ALPHA, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N2, ALPHA, |
+ A( N1 ), N, B( 0, N1 ), LDB ) |
$ A( N1 ), N, B( 0, N1 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, N1, N2, -CONE, B( 0, N1 ), |
CALL ZGEMM( 'N', 'C', M, N1, N2, -CONE, B( 0, N1 ), |
+ LDB, A( 0 ), N, ALPHA, B( 0, 0 ), LDB ) |
$ LDB, A( 0 ), N, ALPHA, B( 0, 0 ), LDB ) |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N1, CONE, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N1, CONE, |
+ A( N2 ), N, B( 0, 0 ), LDB ) |
$ A( N2 ), N, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 732
|
Line 733
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
+ A( 1 ), N1, B( 0, N1 ), LDB ) |
$ A( 1 ), N1, B( 0, N1 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, N1, N2, -CONE, B( 0, N1 ), |
CALL ZGEMM( 'N', 'C', M, N1, N2, -CONE, B( 0, N1 ), |
+ LDB, A( N1*N1 ), N1, ALPHA, B( 0, 0 ), |
$ LDB, A( N1*N1 ), N1, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N1, CONE, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N1, CONE, |
+ A( 0 ), N1, B( 0, 0 ), LDB ) |
$ A( 0 ), N1, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 745
|
Line 746
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
+ A( 0 ), N1, B( 0, 0 ), LDB ) |
$ A( 0 ), N1, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, N2, N1, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'N', M, N2, N1, -CONE, B( 0, 0 ), |
+ LDB, A( N1*N1 ), N1, ALPHA, B( 0, N1 ), |
$ LDB, A( N1*N1 ), N1, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N2, CONE, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N2, CONE, |
+ A( 1 ), N1, B( 0, N1 ), LDB ) |
$ A( 1 ), N1, B( 0, N1 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 764
|
Line 765
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
+ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
$ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, N2, N1, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'C', M, N2, N1, -CONE, B( 0, 0 ), |
+ LDB, A( 0 ), N2, ALPHA, B( 0, N1 ), |
$ LDB, A( 0 ), N2, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N2, CONE, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, N2, CONE, |
+ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
$ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 777
|
Line 778
|
* TRANS = 'C' |
* TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
+ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
$ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, N1, N2, -CONE, B( 0, N1 ), |
CALL ZGEMM( 'N', 'N', M, N1, N2, -CONE, B( 0, N1 ), |
+ LDB, A( 0 ), N2, ALPHA, B( 0, 0 ), |
$ LDB, A( 0 ), N2, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N1, CONE, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, N1, CONE, |
+ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
$ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 808
|
Line 809
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, ALPHA, |
+ A( 0 ), N+1, B( 0, K ), LDB ) |
$ A( 0 ), N+1, B( 0, K ), LDB ) |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, K ), |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, K ), |
+ LDB, A( K+1 ), N+1, ALPHA, B( 0, 0 ), |
$ LDB, A( K+1 ), N+1, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, CONE, |
+ A( 1 ), N+1, B( 0, 0 ), LDB ) |
$ A( 1 ), N+1, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 821
|
Line 822
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, ALPHA, |
+ A( 1 ), N+1, B( 0, 0 ), LDB ) |
$ A( 1 ), N+1, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, 0 ), |
+ LDB, A( K+1 ), N+1, ALPHA, B( 0, K ), |
$ LDB, A( K+1 ), N+1, ALPHA, B( 0, K ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, CONE, |
+ A( 0 ), N+1, B( 0, K ), LDB ) |
$ A( 0 ), N+1, B( 0, K ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 840
|
Line 841
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, ALPHA, |
+ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
$ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, 0 ), |
+ LDB, A( 0 ), N+1, ALPHA, B( 0, K ), |
$ LDB, A( 0 ), N+1, ALPHA, B( 0, K ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, CONE, |
+ A( K ), N+1, B( 0, K ), LDB ) |
$ A( K ), N+1, B( 0, K ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 853
|
Line 854
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, ALPHA, |
+ A( K ), N+1, B( 0, K ), LDB ) |
$ A( K ), N+1, B( 0, K ), LDB ) |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, K ), |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, K ), |
+ LDB, A( 0 ), N+1, ALPHA, B( 0, 0 ), |
$ LDB, A( 0 ), N+1, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, CONE, |
+ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
$ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 878
|
Line 879
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
+ A( 0 ), K, B( 0, K ), LDB ) |
$ A( 0 ), K, B( 0, K ), LDB ) |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, K ), |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, K ), |
+ LDB, A( ( K+1 )*K ), K, ALPHA, |
$ LDB, A( ( K+1 )*K ), K, ALPHA, |
+ B( 0, 0 ), LDB ) |
$ B( 0, 0 ), LDB ) |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, CONE, |
+ A( K ), K, B( 0, 0 ), LDB ) |
$ A( K ), K, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 891
|
Line 892
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
+ A( K ), K, B( 0, 0 ), LDB ) |
$ A( K ), K, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, 0 ), |
+ LDB, A( ( K+1 )*K ), K, ALPHA, |
$ LDB, A( ( K+1 )*K ), K, ALPHA, |
+ B( 0, K ), LDB ) |
$ B( 0, K ), LDB ) |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, CONE, |
+ A( 0 ), K, B( 0, K ), LDB ) |
$ A( 0 ), K, B( 0, K ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 910
|
Line 911
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
+ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
$ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, 0 ), |
CALL ZGEMM( 'N', 'C', M, K, K, -CONE, B( 0, 0 ), |
+ LDB, A( 0 ), K, ALPHA, B( 0, K ), LDB ) |
$ LDB, A( 0 ), K, ALPHA, B( 0, K ), LDB ) |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'L', 'C', DIAG, M, K, CONE, |
+ A( K*K ), K, B( 0, K ), LDB ) |
$ A( K*K ), K, B( 0, K ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 922
|
Line 923
|
* and TRANS = 'C' |
* and TRANS = 'C' |
* |
* |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
CALL ZTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
+ A( K*K ), K, B( 0, K ), LDB ) |
$ A( K*K ), K, B( 0, K ), LDB ) |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, K ), |
CALL ZGEMM( 'N', 'N', M, K, K, -CONE, B( 0, K ), |
+ LDB, A( 0 ), K, ALPHA, B( 0, 0 ), LDB ) |
$ LDB, A( 0 ), K, ALPHA, B( 0, 0 ), LDB ) |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, CONE, |
CALL ZTRSM( 'R', 'U', 'C', DIAG, M, K, CONE, |
+ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
$ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |