LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ stbt06()

subroutine stbt06 ( real  RCOND,
real  RCONDC,
character  UPLO,
character  DIAG,
integer  N,
integer  KD,
real, dimension( ldab, * )  AB,
integer  LDAB,
real, dimension( * )  WORK,
real  RAT 
)

STBT06

Purpose:
 STBT06 computes a test ratio comparing RCOND (the reciprocal
 condition number of a triangular matrix A) and RCONDC, the estimate
 computed by STBCON.  Information about the triangular matrix A is
 used if one estimate is zero and the other is non-zero to decide if
 underflow in the estimate is justified.
Parameters
[in]RCOND
          RCOND is REAL
          The estimate of the reciprocal condition number obtained by
          forming the explicit inverse of the matrix A and computing
          RCOND = 1/( norm(A) * norm(inv(A)) ).
[in]RCONDC
          RCONDC is REAL
          The estimate of the reciprocal condition number computed by
          STBCON.
[in]UPLO
          UPLO is CHARACTER
          Specifies whether the matrix A is upper or lower triangular.
          = 'U':  Upper triangular
          = 'L':  Lower triangular
[in]DIAG
          DIAG is CHARACTER
          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]AB
          AB is REAL 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.
[out]WORK
          WORK is REAL array, dimension (N)
[out]RAT
          RAT is REAL
          The test ratio.  If both RCOND and RCONDC are nonzero,
             RAT = MAX( RCOND, RCONDC )/MIN( RCOND, RCONDC ) - 1.
          If RAT = 0, the two estimates are exactly the same.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016

Definition at line 127 of file stbt06.f.

127 *
128 * -- LAPACK test routine (version 3.7.0) --
129 * -- LAPACK is a software package provided by Univ. of Tennessee, --
130 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
131 * December 2016
132 *
133 * .. Scalar Arguments ..
134  CHARACTER diag, uplo
135  INTEGER kd, ldab, n
136  REAL rat, rcond, rcondc
137 * ..
138 * .. Array Arguments ..
139  REAL ab( ldab, * ), work( * )
140 * ..
141 *
142 * =====================================================================
143 *
144 * .. Parameters ..
145  REAL zero, one
146  parameter( zero = 0.0e+0, one = 1.0e+0 )
147 * ..
148 * .. Local Scalars ..
149  REAL anorm, bignum, eps, rmax, rmin, smlnum
150 * ..
151 * .. External Functions ..
152  REAL slamch, slantb
153  EXTERNAL slamch, slantb
154 * ..
155 * .. Intrinsic Functions ..
156  INTRINSIC max, min
157 * ..
158 * .. External Subroutines ..
159  EXTERNAL slabad
160 * ..
161 * .. Executable Statements ..
162 *
163  eps = slamch( 'Epsilon' )
164  rmax = max( rcond, rcondc )
165  rmin = min( rcond, rcondc )
166 *
167 * Do the easy cases first.
168 *
169  IF( rmin.LT.zero ) THEN
170 *
171 * Invalid value for RCOND or RCONDC, return 1/EPS.
172 *
173  rat = one / eps
174 *
175  ELSE IF( rmin.GT.zero ) THEN
176 *
177 * Both estimates are positive, return RMAX/RMIN - 1.
178 *
179  rat = rmax / rmin - one
180 *
181  ELSE IF( rmax.EQ.zero ) THEN
182 *
183 * Both estimates zero.
184 *
185  rat = zero
186 *
187  ELSE
188 *
189 * One estimate is zero, the other is non-zero. If the matrix is
190 * ill-conditioned, return the nonzero estimate multiplied by
191 * 1/EPS; if the matrix is badly scaled, return the nonzero
192 * estimate multiplied by BIGNUM/TMAX, where TMAX is the maximum
193 * element in absolute value in A.
194 *
195  smlnum = slamch( 'Safe minimum' )
196  bignum = one / smlnum
197  CALL slabad( smlnum, bignum )
198  anorm = slantb( 'M', uplo, diag, n, kd, ab, ldab, work )
199 *
200  rat = rmax*( min( bignum / max( one, anorm ), one / eps ) )
201  END IF
202 *
203  RETURN
204 *
205 * End of STBT06
206 *
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:69
subroutine slabad(SMALL, LARGE)
SLABAD
Definition: slabad.f:76
real function slantb(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK)
SLANTB returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a triangular band matrix.
Definition: slantb.f:142
Here is the call graph for this function:
Here is the caller graph for this function: