LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ strt06()

subroutine strt06 ( real  RCOND,
real  RCONDC,
character  UPLO,
character  DIAG,
integer  N,
real, dimension( lda, * )  A,
integer  LDA,
real, dimension( * )  WORK,
real  RAT 
)

STRT06

Purpose:
 STRT06 computes a test ratio comparing RCOND (the reciprocal
 condition number of a triangular matrix A) and RCONDC, the estimate
 computed by STRCON.  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
          STRCON.
[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]A
          A is REAL array, dimension (LDA,N)
          The triangular matrix A.  If UPLO = 'U', the leading n by n
          upper triangular part of the array A contains the upper
          triangular matrix, and the strictly lower triangular part of
          A is not referenced.  If UPLO = 'L', the leading n by n lower
          triangular part of the array A contains the lower triangular
          matrix, and the strictly upper triangular part of A is not
          referenced.  If DIAG = 'U', the diagonal elements of A are
          also not referenced and are assumed to be 1.
[in]LDA
          LDA is INTEGER
          The leading dimension of the array A.  LDA >= max(1,N).
[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 123 of file strt06.f.

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