LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ ztrt06()

subroutine ztrt06 ( double precision  RCOND,
double precision  RCONDC,
character  UPLO,
character  DIAG,
integer  N,
complex*16, dimension( lda, * )  A,
integer  LDA,
double precision, dimension( * )  RWORK,
double precision  RAT 
)

ZTRT06

Purpose:
 ZTRT06 computes a test ratio comparing RCOND (the reciprocal
 condition number of a triangular matrix A) and RCONDC, the estimate
 computed by ZTRCON.  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 DOUBLE PRECISION
          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 DOUBLE PRECISION
          The estimate of the reciprocal condition number computed by
          ZTRCON.
[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 COMPLEX*16 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]RWORK
          RWORK is DOUBLE PRECISION array, dimension (N)
[out]RAT
          RAT is DOUBLE PRECISION
          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 124 of file ztrt06.f.

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