version 1.5, 2010/08/07 13:22:27
|
version 1.8, 2011/07/22 07:38:12
|
Line 1
|
Line 1
|
SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) |
SUBROUTINE DSYTRS( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO ) |
* |
* |
* -- LAPACK routine (version 3.2) -- |
* -- LAPACK routine (version 3.3.1) -- |
* -- 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..-- |
* November 2006 |
* -- April 2011 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER UPLO |
CHARACTER UPLO |
Line 107
|
Line 107
|
* |
* |
IF( UPPER ) THEN |
IF( UPPER ) THEN |
* |
* |
* Solve A*X = B, where A = U*D*U'. |
* Solve A*X = B, where A = U*D*U**T. |
* |
* |
* First solve U*D*X = B, overwriting B with X. |
* First solve U*D*X = B, overwriting B with X. |
* |
* |
Line 178
|
Line 178
|
GO TO 10 |
GO TO 10 |
30 CONTINUE |
30 CONTINUE |
* |
* |
* Next solve U'*X = B, overwriting B with X. |
* Next solve U**T *X = B, overwriting B with X. |
* |
* |
* K is the main loop index, increasing from 1 to N in steps of |
* K is the main loop index, increasing from 1 to N in steps of |
* 1 or 2, depending on the size of the diagonal blocks. |
* 1 or 2, depending on the size of the diagonal blocks. |
Line 195
|
Line 195
|
* |
* |
* 1 x 1 diagonal block |
* 1 x 1 diagonal block |
* |
* |
* Multiply by inv(U'(K)), where U(K) is the transformation |
* Multiply by inv(U**T(K)), where U(K) is the transformation |
* stored in column K of A. |
* stored in column K of A. |
* |
* |
CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), |
CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), |
Line 211
|
Line 211
|
* |
* |
* 2 x 2 diagonal block |
* 2 x 2 diagonal block |
* |
* |
* Multiply by inv(U'(K+1)), where U(K+1) is the transformation |
* Multiply by inv(U**T(K+1)), where U(K+1) is the transformation |
* stored in columns K and K+1 of A. |
* stored in columns K and K+1 of A. |
* |
* |
CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), |
CALL DGEMV( 'Transpose', K-1, NRHS, -ONE, B, LDB, A( 1, K ), |
Line 232
|
Line 232
|
* |
* |
ELSE |
ELSE |
* |
* |
* Solve A*X = B, where A = L*D*L'. |
* Solve A*X = B, where A = L*D*L**T. |
* |
* |
* First solve L*D*X = B, overwriting B with X. |
* First solve L*D*X = B, overwriting B with X. |
* |
* |
Line 306
|
Line 306
|
GO TO 60 |
GO TO 60 |
80 CONTINUE |
80 CONTINUE |
* |
* |
* Next solve L'*X = B, overwriting B with X. |
* Next solve L**T *X = B, overwriting B with X. |
* |
* |
* K is the main loop index, decreasing from N to 1 in steps of |
* K is the main loop index, decreasing from N to 1 in steps of |
* 1 or 2, depending on the size of the diagonal blocks. |
* 1 or 2, depending on the size of the diagonal blocks. |
Line 323
|
Line 323
|
* |
* |
* 1 x 1 diagonal block |
* 1 x 1 diagonal block |
* |
* |
* Multiply by inv(L'(K)), where L(K) is the transformation |
* Multiply by inv(L**T(K)), where L(K) is the transformation |
* stored in column K of A. |
* stored in column K of A. |
* |
* |
IF( K.LT.N ) |
IF( K.LT.N ) |
Line 340
|
Line 340
|
* |
* |
* 2 x 2 diagonal block |
* 2 x 2 diagonal block |
* |
* |
* Multiply by inv(L'(K-1)), where L(K-1) is the transformation |
* Multiply by inv(L**T(K-1)), where L(K-1) is the transformation |
* stored in columns K-1 and K of A. |
* stored in columns K-1 and K of A. |
* |
* |
IF( K.LT.N ) THEN |
IF( K.LT.N ) THEN |