DOUBLE PRECISION FUNCTION ZLA_RPVGRW( N, NCOLS, A, LDA, AF, LDAF ) * * -- LAPACK routine (version 3.2.1) -- * -- Contributed by James Demmel, Deaglan Halligan, Yozo Hida and -- * -- Jason Riedy of Univ. of California Berkeley. -- * -- April 2009 -- * * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley and NAG Ltd. -- * IMPLICIT NONE * .. * .. Scalar Arguments .. INTEGER N, NCOLS, LDA, LDAF * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), AF( LDAF, * ) * .. * * Purpose * ======= * * ZLA_RPVGRW 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. * * Arguments * ========= * * N (input) INTEGER * The number of linear equations, i.e., the order of the * matrix A. N >= 0. * * NCOLS (input) INTEGER * The number of columns of the matrix A. NCOLS >= 0. * * A (input) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the N-by-N matrix A. * * LDA (input) INTEGER * The leading dimension of the array A. LDA >= max(1,N). * * AF (input) DOUBLE PRECISION array, dimension (LDAF,N) * The factors L and U from the factorization * A = P*L*U as computed by ZGETRF. * * LDAF (input) INTEGER * The leading dimension of the array AF. LDAF >= max(1,N). * * ===================================================================== * * .. Local Scalars .. INTEGER I, J DOUBLE PRECISION AMAX, UMAX, RPVGRW COMPLEX*16 ZDUM * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN, ABS, REAL, DIMAG * .. * .. Statement Functions .. DOUBLE PRECISION CABS1 * .. * .. Statement Function Definitions .. CABS1( ZDUM ) = ABS( DBLE( ZDUM ) ) + ABS( DIMAG( ZDUM ) ) * .. * .. Executable Statements .. * RPVGRW = 1.0D+0 DO J = 1, NCOLS AMAX = 0.0D+0 UMAX = 0.0D+0 DO I = 1, N AMAX = MAX( CABS1( A( I, J ) ), AMAX ) END DO DO I = 1, J UMAX = MAX( CABS1( AF( I, J ) ), UMAX ) END DO IF ( UMAX /= 0.0D+0 ) THEN RPVGRW = MIN( AMAX / UMAX, RPVGRW ) END IF END DO ZLA_RPVGRW = RPVGRW END FUNCTION