LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ ctbt06()

subroutine ctbt06 ( real  RCOND,
real  RCONDC,
character  UPLO,
character  DIAG,
integer  N,
integer  KD,
complex, dimension( ldab, * )  AB,
integer  LDAB,
real, dimension( * )  RWORK,
real  RAT 
)

CTBT06

Purpose:
 CTBT06 computes a test ratio comparing RCOND (the reciprocal
 condition number of a triangular matrix A) and RCONDC, the estimate
 computed by CTBCON.  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
          CTBCON.
[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 COMPLEX 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]RWORK
          RWORK 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 128 of file ctbt06.f.

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