LAPACK 3.11.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches

## ◆ dtbt03()

 subroutine dtbt03 ( character UPLO, character TRANS, character DIAG, integer N, integer KD, integer NRHS, double precision, dimension( ldab, * ) AB, integer LDAB, double precision SCALE, double precision, dimension( * ) CNORM, double precision TSCAL, double precision, dimension( ldx, * ) X, integer LDX, double precision, dimension( ldb, * ) B, integer LDB, double precision, dimension( * ) WORK, double precision RESID )

DTBT03

Purpose:
``` DTBT03 computes the residual for the solution to a scaled triangular
system of equations  A*x = s*b  or  A'*x = s*b  when A is a
triangular band matrix. Here A' is the transpose of A, s is a scalar,
and x and b are N by NRHS matrices.  The test ratio is the maximum
over the number of right hand sides of
norm(s*b - op(A)*x) / ( norm(op(A)) * norm(x) * EPS ),
where op(A) denotes A or A' and EPS is the machine epsilon.```
Parameters
 [in] UPLO ``` UPLO is CHARACTER*1 Specifies whether the matrix A is upper or lower triangular. = 'U': Upper triangular = 'L': Lower triangular``` [in] TRANS ``` TRANS is CHARACTER*1 Specifies the operation applied to A. = 'N': A *x = b (No transpose) = 'T': A'*x = b (Transpose) = 'C': A'*x = b (Conjugate transpose = Transpose)``` [in] DIAG ``` DIAG is CHARACTER*1 Specifies whether or not the matrix A is unit triangular. = 'N': Non-unit triangular = 'U': Unit triangular``` [in] N ``` N is INTEGER The order of the matrix A. N >= 0.``` [in] KD ``` KD is INTEGER The number of superdiagonals or subdiagonals of the triangular band matrix A. KD >= 0.``` [in] NRHS ``` NRHS is INTEGER The number of right hand sides, i.e., the number of columns of the matrices X and B. NRHS >= 0.``` [in] AB ``` AB is DOUBLE PRECISION array, dimension (LDAB,N) The upper or lower triangular band matrix A, stored in the first kd+1 rows of the array. The j-th column of A is stored in the j-th column of the array AB as follows: if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j; if UPLO = 'L', AB(1+i-j,j) = A(i,j) for j<=i<=min(n,j+kd).``` [in] LDAB ``` LDAB is INTEGER The leading dimension of the array AB. LDAB >= KD+1.``` [in] SCALE ``` SCALE is DOUBLE PRECISION The scaling factor s used in solving the triangular system.``` [in] CNORM ``` CNORM is DOUBLE PRECISION array, dimension (N) The 1-norms of the columns of A, not counting the diagonal.``` [in] TSCAL ``` TSCAL is DOUBLE PRECISION The scaling factor used in computing the 1-norms in CNORM. CNORM actually contains the column norms of TSCAL*A.``` [in] X ``` X is DOUBLE PRECISION array, dimension (LDX,NRHS) The computed solution vectors for the system of linear equations.``` [in] LDX ``` LDX is INTEGER The leading dimension of the array X. LDX >= max(1,N).``` [in] B ``` B is DOUBLE PRECISION array, dimension (LDB,NRHS) The right hand side vectors for the system of linear equations.``` [in] LDB ``` LDB is INTEGER The leading dimension of the array B. LDB >= max(1,N).``` [out] WORK ` WORK is DOUBLE PRECISION array, dimension (N)` [out] RESID ``` RESID is DOUBLE PRECISION The maximum over the number of right hand sides of norm(op(A)*x - s*b) / ( norm(op(A)) * norm(x) * EPS ).```

Definition at line 172 of file dtbt03.f.

175*
176* -- LAPACK test routine --
177* -- LAPACK is a software package provided by Univ. of Tennessee, --
178* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
179*
180* .. Scalar Arguments ..
181 CHARACTER DIAG, TRANS, UPLO
182 INTEGER KD, LDAB, LDB, LDX, N, NRHS
183 DOUBLE PRECISION RESID, SCALE, TSCAL
184* ..
185* .. Array Arguments ..
186 DOUBLE PRECISION AB( LDAB, * ), B( LDB, * ), CNORM( * ),
187 \$ WORK( * ), X( LDX, * )
188* ..
189*
190* =====================================================================
191*
192* .. Parameters ..
193 DOUBLE PRECISION ONE, ZERO
194 parameter( one = 1.0d+0, zero = 0.0d+0 )
195* ..
196* .. Local Scalars ..
197 INTEGER IX, J
198 DOUBLE PRECISION BIGNUM, EPS, ERR, SMLNUM, TNORM, XNORM, XSCAL
199* ..
200* .. External Functions ..
201 LOGICAL LSAME
202 INTEGER IDAMAX
203 DOUBLE PRECISION DLAMCH
204 EXTERNAL lsame, idamax, dlamch
205* ..
206* .. External Subroutines ..
207 EXTERNAL daxpy, dcopy, dlabad, dscal, dtbmv
208* ..
209* .. Intrinsic Functions ..
210 INTRINSIC abs, dble, max
211* ..
212* .. Executable Statements ..
213*
214* Quick exit if N = 0
215*
216 IF( n.LE.0 .OR. nrhs.LE.0 ) THEN
217 resid = zero
218 RETURN
219 END IF
220 eps = dlamch( 'Epsilon' )
221 smlnum = dlamch( 'Safe minimum' )
222 bignum = one / smlnum
223 CALL dlabad( smlnum, bignum )
224*
225* Compute the norm of the triangular matrix A using the column
226* norms already computed by DLATBS.
227*
228 tnorm = zero
229 IF( lsame( diag, 'N' ) ) THEN
230 IF( lsame( uplo, 'U' ) ) THEN
231 DO 10 j = 1, n
232 tnorm = max( tnorm, tscal*abs( ab( kd+1, j ) )+
233 \$ cnorm( j ) )
234 10 CONTINUE
235 ELSE
236 DO 20 j = 1, n
237 tnorm = max( tnorm, tscal*abs( ab( 1, j ) )+cnorm( j ) )
238 20 CONTINUE
239 END IF
240 ELSE
241 DO 30 j = 1, n
242 tnorm = max( tnorm, tscal+cnorm( j ) )
243 30 CONTINUE
244 END IF
245*
246* Compute the maximum over the number of right hand sides of
247* norm(op(A)*x - s*b) / ( norm(op(A)) * norm(x) * EPS ).
248*
249 resid = zero
250 DO 40 j = 1, nrhs
251 CALL dcopy( n, x( 1, j ), 1, work, 1 )
252 ix = idamax( n, work, 1 )
253 xnorm = max( one, abs( x( ix, j ) ) )
254 xscal = ( one / xnorm ) / dble( kd+1 )
255 CALL dscal( n, xscal, work, 1 )
256 CALL dtbmv( uplo, trans, diag, n, kd, ab, ldab, work, 1 )
257 CALL daxpy( n, -scale*xscal, b( 1, j ), 1, work, 1 )
258 ix = idamax( n, work, 1 )
259 err = tscal*abs( work( ix ) )
260 ix = idamax( n, x( 1, j ), 1 )
261 xnorm = abs( x( ix, j ) )
262 IF( err*smlnum.LE.xnorm ) THEN
263 IF( xnorm.GT.zero )
264 \$ err = err / xnorm
265 ELSE
266 IF( err.GT.zero )
267 \$ err = one / eps
268 END IF
269 IF( err*smlnum.LE.tnorm ) THEN
270 IF( tnorm.GT.zero )
271 \$ err = err / tnorm
272 ELSE
273 IF( err.GT.zero )
274 \$ err = one / eps
275 END IF
276 resid = max( resid, err )
277 40 CONTINUE
278*
279 RETURN
280*
281* End of DTBT03
282*
double precision function dlamch(CMACH)
DLAMCH
Definition: dlamch.f:69
integer function idamax(N, DX, INCX)
IDAMAX
Definition: idamax.f:71
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:53
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
Definition: dcopy.f:82
subroutine dscal(N, DA, DX, INCX)
DSCAL
Definition: dscal.f:79
subroutine daxpy(N, DA, DX, INCX, DY, INCY)
DAXPY
Definition: daxpy.f:89
subroutine dtbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBMV
Definition: dtbmv.f:186
Here is the call graph for this function:
Here is the caller graph for this function: