 LAPACK  3.10.1 LAPACK: Linear Algebra PACKage

## ◆ sla_porpvgrw()

 real function sla_porpvgrw ( character*1 UPLO, integer NCOLS, real, dimension( lda, * ) A, integer LDA, real, dimension( ldaf, * ) AF, integer LDAF, real, dimension( * ) WORK )

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

Download SLA_PORPVGRW + dependencies [TGZ] [ZIP] [TXT]

Purpose:
``` SLA_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 REAL 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 REAL 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 SPOTRF.``` [in] LDAF ``` LDAF is INTEGER The leading dimension of the array AF. LDAF >= max(1,N).``` [out] WORK ` WORK is REAL array, dimension (2*N)`

Definition at line 103 of file sla_porpvgrw.f.

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