version 1.4, 2010/12/21 13:48:06
|
version 1.6, 2011/07/22 07:38:12
|
Line 1
|
Line 1
|
SUBROUTINE DTFSM( TRANSR, SIDE, UPLO, TRANS, DIAG, M, N, ALPHA, A, |
SUBROUTINE DTFSM( 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 ) = A'. |
* op( A ) = A or op( A ) = A**T. |
* |
* |
* A is in Rectangular Full Packed (RFP) Format. |
* A is in Rectangular Full Packed (RFP) Format. |
* |
* |
Line 222
|
Line 222
|
* .. |
* .. |
* .. 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 253
|
Line 253
|
ELSE IF( .NOT.NOTRANS .AND. .NOT.LSAME( TRANS, 'T' ) ) THEN |
ELSE IF( .NOT.NOTRANS .AND. .NOT.LSAME( TRANS, 'T' ) ) 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 270
|
Line 270
|
* 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) |
* Quick return when ALPHA.EQ.(0D+0) |
* |
* |
Line 325
|
Line 325
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A, M, B, LDB ) |
$ A, M, B, LDB ) |
ELSE |
ELSE |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
CALL DGEMM( 'N', 'N', M2, N, M1, -ONE, A( M1 ), |
CALL DGEMM( 'N', 'N', M2, N, M1, -ONE, A( M1 ), |
+ M, B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ M, B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL DTRSM( 'L', 'U', 'T', DIAG, M2, N, ONE, |
CALL DTRSM( 'L', 'U', 'T', DIAG, M2, N, ONE, |
+ A( M ), M, B( M1, 0 ), LDB ) |
$ A( M ), M, B( M1, 0 ), LDB ) |
END IF |
END IF |
* |
* |
ELSE |
ELSE |
Line 342
|
Line 342
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ALPHA, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
ELSE |
ELSE |
CALL DTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
+ A( M ), M, B( M1, 0 ), LDB ) |
$ A( M ), M, B( M1, 0 ), LDB ) |
CALL DGEMM( 'T', 'N', M1, N, M2, -ONE, A( M1 ), |
CALL DGEMM( 'T', 'N', M1, N, M2, -ONE, A( M1 ), |
+ M, B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ M, B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ONE, |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ONE, |
+ A( 0 ), M, B, LDB ) |
$ A( 0 ), M, B, LDB ) |
END IF |
END IF |
* |
* |
END IF |
END IF |
Line 364
|
Line 364
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'N', DIAG, M1, N, ALPHA, |
+ A( M2 ), M, B, LDB ) |
$ A( M2 ), M, B, LDB ) |
CALL DGEMM( 'T', 'N', M2, N, M1, -ONE, A( 0 ), M, |
CALL DGEMM( 'T', 'N', M2, N, M1, -ONE, A( 0 ), M, |
+ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL DTRSM( 'L', 'U', 'T', DIAG, M2, N, ONE, |
CALL DTRSM( 'L', 'U', 'T', DIAG, M2, N, ONE, |
+ A( M1 ), M, B( M1, 0 ), LDB ) |
$ A( M1 ), M, B( M1, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 376
|
Line 376
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'N', DIAG, M2, N, ALPHA, |
+ A( M1 ), M, B( M1, 0 ), LDB ) |
$ A( M1 ), M, B( M1, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M1, N, M2, -ONE, A( 0 ), M, |
CALL DGEMM( 'N', 'N', M1, N, M2, -ONE, A( 0 ), M, |
+ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ONE, |
CALL DTRSM( 'L', 'L', 'T', DIAG, M1, N, ONE, |
+ A( M2 ), M, B, LDB ) |
$ A( M2 ), M, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 401
|
Line 401
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
ELSE |
ELSE |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
CALL DGEMM( 'T', 'N', M2, N, M1, -ONE, |
CALL DGEMM( 'T', 'N', M2, N, M1, -ONE, |
+ A( M1*M1 ), M1, B, LDB, ALPHA, |
$ A( M1*M1 ), M1, B, LDB, ALPHA, |
+ B( M1, 0 ), LDB ) |
$ B( M1, 0 ), LDB ) |
CALL DTRSM( 'L', 'L', 'N', DIAG, M2, N, ONE, |
CALL DTRSM( 'L', 'L', 'N', DIAG, M2, N, ONE, |
+ A( 1 ), M1, B( M1, 0 ), LDB ) |
$ A( 1 ), M1, B( M1, 0 ), LDB ) |
END IF |
END IF |
* |
* |
ELSE |
ELSE |
Line 419
|
Line 419
|
* |
* |
IF( M.EQ.1 ) THEN |
IF( M.EQ.1 ) THEN |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ALPHA, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
ELSE |
ELSE |
CALL DTRSM( 'L', 'L', 'T', DIAG, M2, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'T', DIAG, M2, N, ALPHA, |
+ A( 1 ), M1, B( M1, 0 ), LDB ) |
$ A( 1 ), M1, B( M1, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M1, N, M2, -ONE, |
CALL DGEMM( 'N', 'N', M1, N, M2, -ONE, |
+ A( M1*M1 ), M1, B( M1, 0 ), LDB, |
$ A( M1*M1 ), M1, B( M1, 0 ), LDB, |
+ ALPHA, B, LDB ) |
$ ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ONE, |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ONE, |
+ A( 0 ), M1, B, LDB ) |
$ A( 0 ), M1, B, LDB ) |
END IF |
END IF |
* |
* |
END IF |
END IF |
Line 442
|
Line 442
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'T', DIAG, M1, N, ALPHA, |
+ A( M2*M2 ), M2, B, LDB ) |
$ A( M2*M2 ), M2, B, LDB ) |
CALL DGEMM( 'N', 'N', M2, N, M1, -ONE, A( 0 ), M2, |
CALL DGEMM( 'N', 'N', M2, N, M1, -ONE, A( 0 ), M2, |
+ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
$ B, LDB, ALPHA, B( M1, 0 ), LDB ) |
CALL DTRSM( 'L', 'L', 'N', DIAG, M2, N, ONE, |
CALL DTRSM( 'L', 'L', 'N', DIAG, M2, N, ONE, |
+ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
$ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 454
|
Line 454
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'L', 'L', 'T', DIAG, M2, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'T', DIAG, M2, N, ALPHA, |
+ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
$ A( M1*M2 ), M2, B( M1, 0 ), LDB ) |
CALL DGEMM( 'T', 'N', M1, N, M2, -ONE, A( 0 ), M2, |
CALL DGEMM( 'T', 'N', M1, N, M2, -ONE, A( 0 ), M2, |
+ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
$ B( M1, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ONE, |
CALL DTRSM( 'L', 'U', 'N', DIAG, M1, N, ONE, |
+ A( M2*M2 ), M2, B, LDB ) |
$ A( M2*M2 ), M2, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 484
|
Line 484
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
+ A( 1 ), M+1, B, LDB ) |
$ A( 1 ), M+1, B, LDB ) |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( K+1 ), |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( K+1 ), |
+ M+1, B, LDB, ALPHA, B( K, 0 ), LDB ) |
$ M+1, B, LDB, ALPHA, B( K, 0 ), LDB ) |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ONE, |
+ A( 0 ), M+1, B( K, 0 ), LDB ) |
$ A( 0 ), M+1, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 496
|
Line 496
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
+ A( 0 ), M+1, B( K, 0 ), LDB ) |
$ A( 0 ), M+1, B( K, 0 ), LDB ) |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( K+1 ), |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( K+1 ), |
+ M+1, B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ M+1, B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ONE, |
+ A( 1 ), M+1, B, LDB ) |
$ A( 1 ), M+1, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 514
|
Line 514
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ALPHA, |
+ A( K+1 ), M+1, B, LDB ) |
$ A( K+1 ), M+1, B, LDB ) |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( 0 ), M+1, |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( 0 ), M+1, |
+ B, LDB, ALPHA, B( K, 0 ), LDB ) |
$ B, LDB, ALPHA, B( K, 0 ), LDB ) |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ONE, |
+ 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 = 'T' |
* and TRANS = 'T' |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ALPHA, |
+ A( K ), M+1, B( K, 0 ), LDB ) |
$ A( K ), M+1, B( K, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( 0 ), M+1, |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( 0 ), M+1, |
+ B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ONE, |
+ A( K+1 ), M+1, B, LDB ) |
$ A( K+1 ), M+1, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 549
|
Line 549
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ALPHA, |
+ A( K ), K, B, LDB ) |
$ A( K ), K, B, LDB ) |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, |
+ 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 DTRSM( 'L', 'L', 'N', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ONE, |
+ A( 0 ), K, B( K, 0 ), LDB ) |
$ A( 0 ), K, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 562
|
Line 562
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ALPHA, |
+ A( 0 ), K, B( K, 0 ), LDB ) |
$ A( 0 ), K, B( K, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, |
+ 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 DTRSM( 'L', 'U', 'N', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ONE, |
+ A( K ), K, B, LDB ) |
$ A( K ), K, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 581
|
Line 581
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'U', 'T', DIAG, K, N, ALPHA, |
+ A( K*( K+1 ) ), K, B, LDB ) |
$ A( K*( K+1 ) ), K, B, LDB ) |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( 0 ), K, B, |
CALL DGEMM( 'N', 'N', K, N, K, -ONE, A( 0 ), K, B, |
+ LDB, ALPHA, B( K, 0 ), LDB ) |
$ LDB, ALPHA, B( K, 0 ), LDB ) |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'L', 'N', DIAG, K, N, ONE, |
+ A( K*K ), K, B( K, 0 ), LDB ) |
$ A( K*K ), K, B( K, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 593
|
Line 593
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ALPHA, |
CALL DTRSM( 'L', 'L', 'T', DIAG, K, N, ALPHA, |
+ A( K*K ), K, B( K, 0 ), LDB ) |
$ A( K*K ), K, B( K, 0 ), LDB ) |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( 0 ), K, |
CALL DGEMM( 'T', 'N', K, N, K, -ONE, A( 0 ), K, |
+ B( K, 0 ), LDB, ALPHA, B, LDB ) |
$ B( K, 0 ), LDB, ALPHA, B, LDB ) |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ONE, |
CALL DTRSM( 'L', 'U', 'N', DIAG, K, N, ONE, |
+ A( K*( K+1 ) ), K, B, LDB ) |
$ A( K*( K+1 ) ), K, B, LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 647
|
Line 647
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N2, ALPHA, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N2, ALPHA, |
+ A( N ), N, B( 0, N1 ), LDB ) |
$ A( N ), N, B( 0, N1 ), LDB ) |
CALL DGEMM( 'N', 'N', M, N1, N2, -ONE, B( 0, N1 ), |
CALL DGEMM( 'N', 'N', M, N1, N2, -ONE, B( 0, N1 ), |
+ LDB, A( N1 ), N, ALPHA, B( 0, 0 ), |
$ LDB, A( N1 ), N, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N1, ONE, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N1, ONE, |
+ A( 0 ), N, B( 0, 0 ), LDB ) |
$ A( 0 ), N, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 660
|
Line 660
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N1, ALPHA, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N1, ALPHA, |
+ A( 0 ), N, B( 0, 0 ), LDB ) |
$ A( 0 ), N, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'T', M, N2, N1, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'T', M, N2, N1, -ONE, B( 0, 0 ), |
+ LDB, A( N1 ), N, ALPHA, B( 0, N1 ), |
$ LDB, A( N1 ), N, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N2, ONE, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N2, ONE, |
+ A( N ), N, B( 0, N1 ), LDB ) |
$ A( N ), N, B( 0, N1 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 679
|
Line 679
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N1, ALPHA, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N1, ALPHA, |
+ A( N2 ), N, B( 0, 0 ), LDB ) |
$ A( N2 ), N, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M, N2, N1, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'N', M, N2, N1, -ONE, B( 0, 0 ), |
+ LDB, A( 0 ), N, ALPHA, B( 0, N1 ), |
$ LDB, A( 0 ), N, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N2, ONE, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N2, ONE, |
+ A( N1 ), N, B( 0, N1 ), LDB ) |
$ A( N1 ), N, B( 0, N1 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 692
|
Line 692
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N2, ALPHA, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N2, ALPHA, |
+ A( N1 ), N, B( 0, N1 ), LDB ) |
$ A( N1 ), N, B( 0, N1 ), LDB ) |
CALL DGEMM( 'N', 'T', M, N1, N2, -ONE, B( 0, N1 ), |
CALL DGEMM( 'N', 'T', M, N1, N2, -ONE, B( 0, N1 ), |
+ LDB, A( 0 ), N, ALPHA, B( 0, 0 ), LDB ) |
$ LDB, A( 0 ), N, ALPHA, B( 0, 0 ), LDB ) |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N1, ONE, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N1, ONE, |
+ A( N2 ), N, B( 0, 0 ), LDB ) |
$ A( N2 ), N, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 716
|
Line 716
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
+ A( 1 ), N1, B( 0, N1 ), LDB ) |
$ A( 1 ), N1, B( 0, N1 ), LDB ) |
CALL DGEMM( 'N', 'T', M, N1, N2, -ONE, B( 0, N1 ), |
CALL DGEMM( 'N', 'T', M, N1, N2, -ONE, B( 0, N1 ), |
+ LDB, A( N1*N1 ), N1, ALPHA, B( 0, 0 ), |
$ LDB, A( N1*N1 ), N1, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N1, ONE, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N1, ONE, |
+ A( 0 ), N1, B( 0, 0 ), LDB ) |
$ A( 0 ), N1, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 729
|
Line 729
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
+ A( 0 ), N1, B( 0, 0 ), LDB ) |
$ A( 0 ), N1, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M, N2, N1, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'N', M, N2, N1, -ONE, B( 0, 0 ), |
+ LDB, A( N1*N1 ), N1, ALPHA, B( 0, N1 ), |
$ LDB, A( N1*N1 ), N1, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N2, ONE, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N2, ONE, |
+ A( 1 ), N1, B( 0, N1 ), LDB ) |
$ A( 1 ), N1, B( 0, N1 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 748
|
Line 748
|
* TRANS = 'N' |
* TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, N1, ALPHA, |
+ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
$ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'T', M, N2, N1, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'T', M, N2, N1, -ONE, B( 0, 0 ), |
+ LDB, A( 0 ), N2, ALPHA, B( 0, N1 ), |
$ LDB, A( 0 ), N2, ALPHA, B( 0, N1 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N2, ONE, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, N2, ONE, |
+ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
$ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 761
|
Line 761
|
* TRANS = 'T' |
* TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, N2, ALPHA, |
+ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
$ A( N1*N2 ), N2, B( 0, N1 ), LDB ) |
CALL DGEMM( 'N', 'N', M, N1, N2, -ONE, B( 0, N1 ), |
CALL DGEMM( 'N', 'N', M, N1, N2, -ONE, B( 0, N1 ), |
+ LDB, A( 0 ), N2, ALPHA, B( 0, 0 ), |
$ LDB, A( 0 ), N2, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N1, ONE, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, N1, ONE, |
+ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
$ A( N2*N2 ), N2, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 792
|
Line 792
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ALPHA, |
+ A( 0 ), N+1, B( 0, K ), LDB ) |
$ A( 0 ), N+1, B( 0, K ), LDB ) |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, K ), |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, 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 DTRSM( 'R', 'L', 'N', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ONE, |
+ A( 1 ), N+1, B( 0, 0 ), LDB ) |
$ A( 1 ), N+1, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 805
|
Line 805
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ALPHA, |
+ A( 1 ), N+1, B( 0, 0 ), LDB ) |
$ A( 1 ), N+1, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, 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 DTRSM( 'R', 'U', 'N', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ONE, |
+ A( 0 ), N+1, B( 0, K ), LDB ) |
$ A( 0 ), N+1, B( 0, K ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 824
|
Line 824
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ALPHA, |
+ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
$ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, 0 ), |
+ LDB, A( 0 ), N+1, ALPHA, B( 0, K ), |
$ LDB, A( 0 ), N+1, ALPHA, B( 0, K ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ONE, |
+ A( K ), N+1, B( 0, K ), LDB ) |
$ A( K ), N+1, B( 0, K ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 837
|
Line 837
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ALPHA, |
+ A( K ), N+1, B( 0, K ), LDB ) |
$ A( K ), N+1, B( 0, K ), LDB ) |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, K ), |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, K ), |
+ LDB, A( 0 ), N+1, ALPHA, B( 0, 0 ), |
$ LDB, A( 0 ), N+1, ALPHA, B( 0, 0 ), |
+ LDB ) |
$ LDB ) |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ONE, |
+ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
$ A( K+1 ), N+1, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 862
|
Line 862
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
+ A( 0 ), K, B( 0, K ), LDB ) |
$ A( 0 ), K, B( 0, K ), LDB ) |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, K ), |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, 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 DTRSM( 'R', 'U', 'T', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ONE, |
+ A( K ), K, B( 0, 0 ), LDB ) |
$ A( K ), K, B( 0, 0 ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 875
|
Line 875
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
+ A( K ), K, B( 0, 0 ), LDB ) |
$ A( K ), K, B( 0, 0 ), LDB ) |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, 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 DTRSM( 'R', 'L', 'T', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ONE, |
+ A( 0 ), K, B( 0, K ), LDB ) |
$ A( 0 ), K, B( 0, K ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |
Line 894
|
Line 894
|
* and TRANS = 'N' |
* and TRANS = 'N' |
* |
* |
CALL DTRSM( 'R', 'U', 'N', DIAG, M, K, ALPHA, |
CALL DTRSM( '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 DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, 0 ), |
CALL DGEMM( 'N', 'T', M, K, K, -ONE, B( 0, 0 ), |
+ LDB, A( 0 ), K, ALPHA, B( 0, K ), LDB ) |
$ LDB, A( 0 ), K, ALPHA, B( 0, K ), LDB ) |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'L', 'T', DIAG, M, K, ONE, |
+ A( K*K ), K, B( 0, K ), LDB ) |
$ A( K*K ), K, B( 0, K ), LDB ) |
* |
* |
ELSE |
ELSE |
* |
* |
Line 906
|
Line 906
|
* and TRANS = 'T' |
* and TRANS = 'T' |
* |
* |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
CALL DTRSM( 'R', 'L', 'N', DIAG, M, K, ALPHA, |
+ A( K*K ), K, B( 0, K ), LDB ) |
$ A( K*K ), K, B( 0, K ), LDB ) |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, K ), |
CALL DGEMM( 'N', 'N', M, K, K, -ONE, B( 0, K ), |
+ LDB, A( 0 ), K, ALPHA, B( 0, 0 ), LDB ) |
$ LDB, A( 0 ), K, ALPHA, B( 0, 0 ), LDB ) |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ONE, |
CALL DTRSM( 'R', 'U', 'T', DIAG, M, K, ONE, |
+ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
$ A( ( K+1 )*K ), K, B( 0, 0 ), LDB ) |
* |
* |
END IF |
END IF |
* |
* |