--- rpl/lapack/lapack/zlanhf.f 2011/11/21 22:19:52 1.7 +++ rpl/lapack/lapack/zlanhf.f 2023/08/07 08:39:29 1.18 @@ -1,25 +1,25 @@ -*> \brief \b ZLANHF +*> \brief \b ZLANHF returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a Hermitian matrix in RFP format. * * =========== DOCUMENTATION =========== * -* Online html documentation available at -* http://www.netlib.org/lapack/explore-html/ +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ * *> \htmlonly -*> Download ZLANHF + dependencies -*> -*> [TGZ] -*> -*> [ZIP] -*> +*> Download ZLANHF + dependencies +*> +*> [TGZ] +*> +*> [ZIP] +*> *> [TXT] -*> \endhtmlonly +*> \endhtmlonly * * Definition: * =========== * * DOUBLE PRECISION FUNCTION ZLANHF( NORM, TRANSR, UPLO, N, A, WORK ) -* +* * .. Scalar Arguments .. * CHARACTER NORM, TRANSR, UPLO * INTEGER N @@ -28,7 +28,7 @@ * DOUBLE PRECISION WORK( 0: * ) * COMPLEX*16 A( 0: * ) * .. -* +* * *> \par Purpose: * ============= @@ -126,12 +126,10 @@ * Authors: * ======== * -*> \author Univ. of Tennessee -*> \author Univ. of California Berkeley -*> \author Univ. of Colorado Denver -*> \author NAG Ltd. -* -*> \date November 2011 +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. * *> \ingroup complex16OTHERcomputational * @@ -246,10 +244,9 @@ * ===================================================================== DOUBLE PRECISION FUNCTION ZLANHF( NORM, TRANSR, UPLO, N, A, WORK ) * -* -- LAPACK computational routine (version 3.4.0) -- +* -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 * * .. Scalar Arguments .. CHARACTER NORM, TRANSR, UPLO @@ -268,24 +265,26 @@ * .. * .. Local Scalars .. INTEGER I, J, IFM, ILU, NOE, N1, K, L, LDA - DOUBLE PRECISION SCALE, S, VALUE, AA + DOUBLE PRECISION SCALE, S, VALUE, AA, TEMP * .. * .. External Functions .. - LOGICAL LSAME - INTEGER IDAMAX - EXTERNAL LSAME, IDAMAX + LOGICAL LSAME, DISNAN + EXTERNAL LSAME, DISNAN * .. * .. External Subroutines .. EXTERNAL ZLASSQ * .. * .. Intrinsic Functions .. - INTRINSIC ABS, DBLE, MAX, SQRT + INTRINSIC ABS, DBLE, SQRT * .. * .. Executable Statements .. * IF( N.EQ.0 ) THEN ZLANHF = ZERO RETURN + ELSE IF( N.EQ.1 ) THEN + ZLANHF = ABS(DBLE(A(0))) + RETURN END IF * * set noe = 1 if n is odd. if n is even set noe=0 @@ -336,46 +335,70 @@ * uplo ='L' J = 0 * -> L(0,0) - VALUE = MAX( VALUE, ABS( DBLE( A( J+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( J+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = 1, N - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO DO J = 1, K - 1 DO I = 0, J - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J - 1 * L(k+j,k+j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J * -> L(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J + 1, N - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO ELSE * uplo = 'U' DO J = 0, K - 2 DO I = 0, K + J - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = K + J - 1 * -> U(i,i) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = I + 1 * =k+j; i -> U(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = K + J + 1, N - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO DO I = 0, N - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP * j=k-1 END DO * i=n-1 -> U(n-1,n-1) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END IF ELSE * xpose case; A is k by n @@ -383,55 +406,83 @@ * uplo ='L' DO J = 0, K - 2 DO I = 0, J - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J * L(i,i) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J + 1 * L(j+k,j+k) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J + 2, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO J = K - 1 DO I = 0, K - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = K - 1 * -> L(i,i) is at A(i,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO J = K, N - 1 DO I = 0, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO ELSE * uplo = 'U' DO J = 0, K - 2 DO I = 0, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO J = K - 1 * -> U(j,j) is at A(0,j) - VALUE = MAX( VALUE, ABS( DBLE( A( 0+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( 0+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = 1, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO DO J = K, N - 1 DO I = 0, J - K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J - K * -> U(i,i) at A(i,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J - K + 1 * U(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J - K + 2, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO END IF @@ -444,50 +495,78 @@ * uplo ='L' J = 0 * -> L(k,k) & j=1 -> L(0,0) - VALUE = MAX( VALUE, ABS( DBLE( A( J+J*LDA ) ) ) ) - VALUE = MAX( VALUE, ABS( DBLE( A( J+1+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( J+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + TEMP = ABS( DBLE( A( J+1+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = 2, N - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO DO J = 1, K - 1 DO I = 0, J - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J * L(k+j,k+j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J + 1 * -> L(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J + 2, N - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO ELSE * uplo = 'U' DO J = 0, K - 2 DO I = 0, K + J - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = K + J * -> U(i,i) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = I + 1 * =k+j+1; i -> U(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = K + J + 2, N - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO DO I = 0, N - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP * j=k-1 END DO * i=n-1 -> U(n-1,n-1) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = N * -> U(k-1,k-1) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END IF ELSE * xpose case; A is k by n+1 @@ -495,70 +574,106 @@ * uplo ='L' J = 0 * -> L(k,k) at A(0,0) - VALUE = MAX( VALUE, ABS( DBLE( A( J+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( J+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = 1, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO DO J = 1, K - 1 DO I = 0, J - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J - 1 * L(i,i) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J * L(j+k,j+k) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J + 1, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO J = K DO I = 0, K - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = K - 1 * -> L(i,i) is at A(i,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO J = K + 1, N DO I = 0, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO ELSE * uplo = 'U' DO J = 0, K - 1 DO I = 0, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO J = K * -> U(j,j) is at A(0,j) - VALUE = MAX( VALUE, ABS( DBLE( A( 0+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( 0+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = 1, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO DO J = K + 1, N - 1 DO I = 0, J - K - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = J - K - 1 * -> U(i,i) at A(i,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP I = J - K * U(j,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP DO I = J - K + 1, K - 1 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO END DO J = N DO I = 0, K - 2 - VALUE = MAX( VALUE, ABS( A( I+J*LDA ) ) ) + TEMP = ABS( A( I+J*LDA ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END DO I = K - 1 * U(k,k) at A(i,j) - VALUE = MAX( VALUE, ABS( DBLE( A( I+J*LDA ) ) ) ) + TEMP = ABS( DBLE( A( I+J*LDA ) ) ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP END IF END IF END IF @@ -605,8 +720,12 @@ WORK( J ) = WORK( J ) + S END DO 10 CONTINUE - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO ELSE * ilu = 1 & uplo = 'L' K = K + 1 @@ -643,8 +762,12 @@ END DO WORK( J ) = WORK( J ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO END IF ELSE * n is even & A is n+1 by k = n/2 @@ -678,8 +801,12 @@ END DO WORK( J ) = WORK( J ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO ELSE * ilu = 1 & uplo = 'L' DO I = K, N - 1 @@ -712,8 +839,12 @@ END DO WORK( J ) = WORK( J ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO END IF END IF ELSE @@ -775,8 +906,12 @@ END DO WORK( J ) = WORK( J ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO ELSE * ilu=1 & uplo = 'L' K = K + 1 @@ -836,8 +971,12 @@ END DO WORK( J ) = WORK( J ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO END IF ELSE * n is even & A is k=n/2 by n+1 @@ -906,8 +1045,12 @@ * A(k-1,k-1) S = S + AA WORK( I ) = WORK( I ) + S - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO ELSE * ilu=1 & uplo = 'L' DO I = K, N - 1 @@ -977,8 +1120,12 @@ END DO WORK( J-1 ) = WORK( J-1 ) + S END DO - I = IDAMAX( N, WORK, 1 ) - VALUE = WORK( I-1 ) + VALUE = WORK( 0 ) + DO I = 1, N-1 + TEMP = WORK( I ) + IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) ) + $ VALUE = TEMP + END DO END IF END IF END IF