--- 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