version 1.7, 2010/12/21 13:53:41
|
version 1.8, 2011/07/22 07:38:13
|
Line 1
|
Line 1
|
SUBROUTINE DTRRFS( UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, |
SUBROUTINE DTRRFS( UPLO, TRANS, DIAG, N, NRHS, A, LDA, B, LDB, X, |
$ LDX, FERR, BERR, WORK, IWORK, INFO ) |
$ LDX, FERR, BERR, WORK, IWORK, 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 -- |
* |
* |
* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH. |
* Modified to call DLACN2 in place of DLACON, 5 Feb 03, SJH. |
* |
* |
Line 190
|
Line 190
|
DO 250 J = 1, NRHS |
DO 250 J = 1, NRHS |
* |
* |
* Compute residual R = B - op(A) * X, |
* Compute residual R = B - op(A) * X, |
* where op(A) = A or A', depending on TRANS. |
* where op(A) = A or A**T, depending on TRANS. |
* |
* |
CALL DCOPY( N, X( 1, J ), 1, WORK( N+1 ), 1 ) |
CALL DCOPY( N, X( 1, J ), 1, WORK( N+1 ), 1 ) |
CALL DTRMV( UPLO, TRANS, DIAG, N, A, LDA, WORK( N+1 ), 1 ) |
CALL DTRMV( UPLO, TRANS, DIAG, N, A, LDA, WORK( N+1 ), 1 ) |
Line 250
|
Line 250
|
END IF |
END IF |
ELSE |
ELSE |
* |
* |
* Compute abs(A')*abs(X) + abs(B). |
* Compute abs(A**T)*abs(X) + abs(B). |
* |
* |
IF( UPPER ) THEN |
IF( UPPER ) THEN |
IF( NOUNIT ) THEN |
IF( NOUNIT ) THEN |
Line 338
|
Line 338
|
IF( KASE.NE.0 ) THEN |
IF( KASE.NE.0 ) THEN |
IF( KASE.EQ.1 ) THEN |
IF( KASE.EQ.1 ) THEN |
* |
* |
* Multiply by diag(W)*inv(op(A)'). |
* Multiply by diag(W)*inv(op(A)**T). |
* |
* |
CALL DTRSV( UPLO, TRANST, DIAG, N, A, LDA, WORK( N+1 ), |
CALL DTRSV( UPLO, TRANST, DIAG, N, A, LDA, WORK( N+1 ), |
$ 1 ) |
$ 1 ) |