version 1.7, 2010/12/21 13:53:40
|
version 1.8, 2011/07/22 07:38:12
|
Line 1
|
Line 1
|
SUBROUTINE DTBRFS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, |
SUBROUTINE DTBRFS( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, B, |
$ LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO ) |
$ LDB, X, 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 195
|
Line 195
|
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 DTBMV( UPLO, TRANS, DIAG, N, KD, AB, LDAB, WORK( N+1 ), |
CALL DTBMV( UPLO, TRANS, DIAG, N, KD, AB, LDAB, WORK( N+1 ), |
Line 258
|
Line 258
|
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 348
|
Line 348
|
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 DTBSV( UPLO, TRANST, DIAG, N, KD, AB, LDAB, |
CALL DTBSV( UPLO, TRANST, DIAG, N, KD, AB, LDAB, |
$ WORK( N+1 ), 1 ) |
$ WORK( N+1 ), 1 ) |