LAPACK  3.9.1 LAPACK: Linear Algebra PACKage

## ◆ zla_porpvgrw()

 double precision function zla_porpvgrw ( character*1 UPLO, integer NCOLS, complex*16, dimension( lda, * ) A, integer LDA, complex*16, dimension( ldaf, * ) AF, integer LDAF, double precision, dimension( * ) WORK )

ZLA_PORPVGRW computes the reciprocal pivot growth factor norm(A)/norm(U) for a symmetric or Hermitian positive-definite matrix.

Purpose:
``` ZLA_PORPVGRW computes the reciprocal pivot growth factor
norm(A)/norm(U). The "max absolute element" norm is used. If this is
much less than 1, the stability of the LU factorization of the
(equilibrated) matrix A could be poor. This also means that the
solution X, estimated condition numbers, and error bounds could be
unreliable.```
Parameters
 [in] UPLO ``` UPLO is CHARACTER*1 = 'U': Upper triangle of A is stored; = 'L': Lower triangle of A is stored.``` [in] NCOLS ``` NCOLS is INTEGER The number of columns of the matrix A. NCOLS >= 0.``` [in] A ``` A is COMPLEX*16 array, dimension (LDA,N) On entry, the N-by-N matrix A.``` [in] LDA ``` LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).``` [in] AF ``` AF is COMPLEX*16 array, dimension (LDAF,N) The triangular factor U or L from the Cholesky factorization A = U**T*U or A = L*L**T, as computed by ZPOTRF.``` [in] LDAF ``` LDAF is INTEGER The leading dimension of the array AF. LDAF >= max(1,N).``` [out] WORK ` WORK is DOUBLE PRECISION array, dimension (2*N)`

Definition at line 105 of file zla_porpvgrw.f.

107 *
108 * -- LAPACK computational routine --
109 * -- LAPACK is a software package provided by Univ. of Tennessee, --
110 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
111 *
112 * .. Scalar Arguments ..
113  CHARACTER*1 UPLO
114  INTEGER NCOLS, LDA, LDAF
115 * ..
116 * .. Array Arguments ..
117  COMPLEX*16 A( LDA, * ), AF( LDAF, * )
118  DOUBLE PRECISION WORK( * )
119 * ..
120 *
121 * =====================================================================
122 *
123 * .. Local Scalars ..
124  INTEGER I, J
125  DOUBLE PRECISION AMAX, UMAX, RPVGRW
126  LOGICAL UPPER
127  COMPLEX*16 ZDUM
128 * ..
129 * .. External Functions ..
130  EXTERNAL lsame
131  LOGICAL LSAME
132 * ..
133 * .. Intrinsic Functions ..
134  INTRINSIC abs, max, min, real, dimag
135 * ..
136 * .. Statement Functions ..
137  DOUBLE PRECISION CABS1
138 * ..
139 * .. Statement Function Definitions ..
140  cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
141 * ..
142 * .. Executable Statements ..
143  upper = lsame( 'Upper', uplo )
144 *
145 * DPOTRF will have factored only the NCOLSxNCOLS leading minor, so
146 * we restrict the growth search to that minor and use only the first
147 * 2*NCOLS workspace entries.
148 *
149  rpvgrw = 1.0d+0
150  DO i = 1, 2*ncols
151  work( i ) = 0.0d+0
152  END DO
153 *
154 * Find the max magnitude entry of each column.
155 *
156  IF ( upper ) THEN
157  DO j = 1, ncols
158  DO i = 1, j
159  work( ncols+j ) =
160  \$ max( cabs1( a( i, j ) ), work( ncols+j ) )
161  END DO
162  END DO
163  ELSE
164  DO j = 1, ncols
165  DO i = j, ncols
166  work( ncols+j ) =
167  \$ max( cabs1( a( i, j ) ), work( ncols+j ) )
168  END DO
169  END DO
170  END IF
171 *
172 * Now find the max magnitude entry of each column of the factor in
173 * AF. No pivoting, so no permutations.
174 *
175  IF ( lsame( 'Upper', uplo ) ) THEN
176  DO j = 1, ncols
177  DO i = 1, j
178  work( j ) = max( cabs1( af( i, j ) ), work( j ) )
179  END DO
180  END DO
181  ELSE
182  DO j = 1, ncols
183  DO i = j, ncols
184  work( j ) = max( cabs1( af( i, j ) ), work( j ) )
185  END DO
186  END DO
187  END IF
188 *
189 * Compute the *inverse* of the max element growth factor. Dividing
190 * by zero would imply the largest entry of the factor's column is
191 * zero. Than can happen when either the column of A is zero or
192 * massive pivots made the factor underflow to zero. Neither counts
193 * as growth in itself, so simply ignore terms with zero
194 * denominators.
195 *
196  IF ( lsame( 'Upper', uplo ) ) THEN
197  DO i = 1, ncols
198  umax = work( i )
199  amax = work( ncols+i )
200  IF ( umax /= 0.0d+0 ) THEN
201  rpvgrw = min( amax / umax, rpvgrw )
202  END IF
203  END DO
204  ELSE
205  DO i = 1, ncols
206  umax = work( i )
207  amax = work( ncols+i )
208  IF ( umax /= 0.0d+0 ) THEN
209  rpvgrw = min( amax / umax, rpvgrw )
210  END IF
211  END DO
212  END IF
213
214  zla_porpvgrw = rpvgrw
logical function lsame(CA, CB)
LSAME
Definition: lsame.f:53
double precision function zla_porpvgrw(UPLO, NCOLS, A, LDA, AF, LDAF, WORK)
ZLA_PORPVGRW computes the reciprocal pivot growth factor norm(A)/norm(U) for a symmetric or Hermitian...
Definition: zla_porpvgrw.f:107
Here is the call graph for this function:
Here is the caller graph for this function: