Diff for /rpl/lapack/lapack/zlanhf.f between versions 1.2 and 1.18

version 1.2, 2010/08/07 13:22:38 version 1.18, 2023/08/07 08:39:29
Line 1 Line 1
       DOUBLE PRECISION FUNCTION ZLANHF( NORM, TRANSR, UPLO, N, A, WORK )  *> \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/
   *
   *> \htmlonly
   *> Download ZLANHF + dependencies
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlanhf.f">
   *> [TGZ]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlanhf.f">
   *> [ZIP]</a>
   *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlanhf.f">
   *> [TXT]</a>
   *> \endhtmlonly
   *
   *  Definition:
   *  ===========
 *  *
 *  -- LAPACK routine (version 3.2.1)                                    --  *       DOUBLE PRECISION FUNCTION ZLANHF( NORM, TRANSR, UPLO, N, A, WORK )
 *  *
 *  -- Contributed by Fred Gustavson of the IBM Watson Research Center --  *       .. Scalar Arguments ..
 *  -- April 2009                                                      --  *       CHARACTER          NORM, TRANSR, UPLO
   *       INTEGER            N
   *       ..
   *       .. Array Arguments ..
   *       DOUBLE PRECISION   WORK( 0: * )
   *       COMPLEX*16         A( 0: * )
   *       ..
   *
   *
   *> \par Purpose:
   *  =============
   *>
   *> \verbatim
   *>
   *> ZLANHF  returns the value of the one norm,  or the Frobenius norm, or
   *> the  infinity norm,  or the  element of  largest absolute value  of a
   *> complex Hermitian matrix A in RFP format.
   *> \endverbatim
   *>
   *> \return ZLANHF
   *> \verbatim
   *>
   *>    ZLANHF = ( max(abs(A(i,j))), NORM = 'M' or 'm'
   *>             (
   *>             ( norm1(A),         NORM = '1', 'O' or 'o'
   *>             (
   *>             ( normI(A),         NORM = 'I' or 'i'
   *>             (
   *>             ( normF(A),         NORM = 'F', 'f', 'E' or 'e'
   *>
   *> where  norm1  denotes the  one norm of a matrix (maximum column sum),
   *> normI  denotes the  infinity norm  of a matrix  (maximum row sum) and
   *> normF  denotes the  Frobenius norm of a matrix (square root of sum of
   *> squares).  Note that  max(abs(A(i,j)))  is not a  matrix norm.
   *> \endverbatim
   *
   *  Arguments:
   *  ==========
   *
   *> \param[in] NORM
   *> \verbatim
   *>          NORM is CHARACTER
   *>            Specifies the value to be returned in ZLANHF as described
   *>            above.
   *> \endverbatim
   *>
   *> \param[in] TRANSR
   *> \verbatim
   *>          TRANSR is CHARACTER
   *>            Specifies whether the RFP format of A is normal or
   *>            conjugate-transposed format.
   *>            = 'N':  RFP format is Normal
   *>            = 'C':  RFP format is Conjugate-transposed
   *> \endverbatim
   *>
   *> \param[in] UPLO
   *> \verbatim
   *>          UPLO is CHARACTER
   *>            On entry, UPLO specifies whether the RFP matrix A came from
   *>            an upper or lower triangular matrix as follows:
   *>
   *>            UPLO = 'U' or 'u' RFP A came from an upper triangular
   *>            matrix
   *>
   *>            UPLO = 'L' or 'l' RFP A came from a  lower triangular
   *>            matrix
   *> \endverbatim
   *>
   *> \param[in] N
   *> \verbatim
   *>          N is INTEGER
   *>            The order of the matrix A.  N >= 0.  When N = 0, ZLANHF is
   *>            set to zero.
   *> \endverbatim
   *>
   *> \param[in] A
   *> \verbatim
   *>          A is COMPLEX*16 array, dimension ( N*(N+1)/2 );
   *>            On entry, the matrix A in RFP Format.
   *>            RFP Format is described by TRANSR, UPLO and N as follows:
   *>            If TRANSR='N' then RFP A is (0:N,0:K-1) when N is even;
   *>            K=N/2. RFP A is (0:N-1,0:K) when N is odd; K=N/2. If
   *>            TRANSR = 'C' then RFP is the Conjugate-transpose of RFP A
   *>            as defined when TRANSR = 'N'. The contents of RFP A are
   *>            defined by UPLO as follows: If UPLO = 'U' the RFP A
   *>            contains the ( N*(N+1)/2 ) elements of upper packed A
   *>            either in normal or conjugate-transpose Format. If
   *>            UPLO = 'L' the RFP A contains the ( N*(N+1) /2 ) elements
   *>            of lower packed A either in normal or conjugate-transpose
   *>            Format. The LDA of RFP A is (N+1)/2 when TRANSR = 'C'. When
   *>            TRANSR is 'N' the LDA is N+1 when N is even and is N when
   *>            is odd. See the Note below for more details.
   *>            Unchanged on exit.
   *> \endverbatim
   *>
   *> \param[out] WORK
   *> \verbatim
   *>          WORK is DOUBLE PRECISION array, dimension (LWORK),
   *>            where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise,
   *>            WORK is not referenced.
   *> \endverbatim
   *
   *  Authors:
   *  ========
   *
   *> \author Univ. of Tennessee
   *> \author Univ. of California Berkeley
   *> \author Univ. of Colorado Denver
   *> \author NAG Ltd.
   *
   *> \ingroup complex16OTHERcomputational
   *
   *> \par Further Details:
   *  =====================
   *>
   *> \verbatim
   *>
   *>  We first consider Standard Packed Format when N is even.
   *>  We give an example where N = 6.
   *>
   *>      AP is Upper             AP is Lower
   *>
   *>   00 01 02 03 04 05       00
   *>      11 12 13 14 15       10 11
   *>         22 23 24 25       20 21 22
   *>            33 34 35       30 31 32 33
   *>               44 45       40 41 42 43 44
   *>                  55       50 51 52 53 54 55
   *>
   *>
   *>  Let TRANSR = 'N'. RFP holds AP as follows:
   *>  For UPLO = 'U' the upper trapezoid A(0:5,0:2) consists of the last
   *>  three columns of AP upper. The lower triangle A(4:6,0:2) consists of
   *>  conjugate-transpose of the first three columns of AP upper.
   *>  For UPLO = 'L' the lower trapezoid A(1:6,0:2) consists of the first
   *>  three columns of AP lower. The upper triangle A(0:2,0:2) consists of
   *>  conjugate-transpose of the last three columns of AP lower.
   *>  To denote conjugate we place -- above the element. This covers the
   *>  case N even and TRANSR = 'N'.
   *>
   *>         RFP A                   RFP A
   *>
   *>                                -- -- --
   *>        03 04 05                33 43 53
   *>                                   -- --
   *>        13 14 15                00 44 54
   *>                                      --
   *>        23 24 25                10 11 55
   *>
   *>        33 34 35                20 21 22
   *>        --
   *>        00 44 45                30 31 32
   *>        -- --
   *>        01 11 55                40 41 42
   *>        -- -- --
   *>        02 12 22                50 51 52
   *>
   *>  Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-
   *>  transpose of RFP A above. One therefore gets:
   *>
   *>
   *>           RFP A                   RFP A
   *>
   *>     -- -- -- --                -- -- -- -- -- --
   *>     03 13 23 33 00 01 02    33 00 10 20 30 40 50
   *>     -- -- -- -- --                -- -- -- -- --
   *>     04 14 24 34 44 11 12    43 44 11 21 31 41 51
   *>     -- -- -- -- -- --                -- -- -- --
   *>     05 15 25 35 45 55 22    53 54 55 22 32 42 52
   *>
   *>
   *>  We next  consider Standard Packed Format when N is odd.
   *>  We give an example where N = 5.
   *>
   *>     AP is Upper                 AP is Lower
   *>
   *>   00 01 02 03 04              00
   *>      11 12 13 14              10 11
   *>         22 23 24              20 21 22
   *>            33 34              30 31 32 33
   *>               44              40 41 42 43 44
   *>
   *>
   *>  Let TRANSR = 'N'. RFP holds AP as follows:
   *>  For UPLO = 'U' the upper trapezoid A(0:4,0:2) consists of the last
   *>  three columns of AP upper. The lower triangle A(3:4,0:1) consists of
   *>  conjugate-transpose of the first two   columns of AP upper.
   *>  For UPLO = 'L' the lower trapezoid A(0:4,0:2) consists of the first
   *>  three columns of AP lower. The upper triangle A(0:1,1:2) consists of
   *>  conjugate-transpose of the last two   columns of AP lower.
   *>  To denote conjugate we place -- above the element. This covers the
   *>  case N odd  and TRANSR = 'N'.
   *>
   *>         RFP A                   RFP A
   *>
   *>                                   -- --
   *>        02 03 04                00 33 43
   *>                                      --
   *>        12 13 14                10 11 44
   *>
   *>        22 23 24                20 21 22
   *>        --
   *>        00 33 34                30 31 32
   *>        -- --
   *>        01 11 44                40 41 42
   *>
   *>  Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-
   *>  transpose of RFP A above. One therefore gets:
   *>
   *>
   *>           RFP A                   RFP A
   *>
   *>     -- -- --                   -- -- -- -- -- --
   *>     02 12 22 00 01             00 10 20 30 40 50
   *>     -- -- -- --                   -- -- -- -- --
   *>     03 13 23 33 11             33 11 21 31 41 51
   *>     -- -- -- -- --                   -- -- -- --
   *>     04 14 24 34 44             43 44 22 32 42 52
   *> \endverbatim
   *>
   *  =====================================================================
         DOUBLE PRECISION FUNCTION ZLANHF( NORM, TRANSR, UPLO, N, A, WORK )
 *  *
   *  -- LAPACK computational routine --
 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --  *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--  *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
 *  *
Line 17 Line 257
       COMPLEX*16         A( 0: * )        COMPLEX*16         A( 0: * )
 *     ..  *     ..
 *  *
 *  Purpose  
 *  =======  
 *  
 *  ZLANHF  returns the value of the one norm,  or the Frobenius norm, or  
 *  the  infinity norm,  or the  element of  largest absolute value  of a  
 *  complex Hermitian matrix A in RFP format.  
 *  
 *  Description  
 *  ===========  
 *  
 *  ZLANHF returns the value  
 *  
 *     ZLANHF = ( max(abs(A(i,j))), NORM = 'M' or 'm'  
 *              (  
 *              ( norm1(A),         NORM = '1', 'O' or 'o'  
 *              (  
 *              ( normI(A),         NORM = 'I' or 'i'  
 *              (  
 *              ( normF(A),         NORM = 'F', 'f', 'E' or 'e'  
 *  
 *  where  norm1  denotes the  one norm of a matrix (maximum column sum),  
 *  normI  denotes the  infinity norm  of a matrix  (maximum row sum) and  
 *  normF  denotes the  Frobenius norm of a matrix (square root of sum of  
 *  squares).  Note that  max(abs(A(i,j)))  is not a  matrix norm.  
 *  
 *  Arguments  
 *  =========  
 *  
 *  NORM      (input) CHARACTER  
 *            Specifies the value to be returned in ZLANHF as described  
 *            above.  
 *  
 *  TRANSR    (input) CHARACTER  
 *            Specifies whether the RFP format of A is normal or  
 *            conjugate-transposed format.  
 *            = 'N':  RFP format is Normal  
 *            = 'C':  RFP format is Conjugate-transposed  
 *  
 *  UPLO      (input) CHARACTER  
 *            On entry, UPLO specifies whether the RFP matrix A came from  
 *            an upper or lower triangular matrix as follows:  
 *  
 *            UPLO = 'U' or 'u' RFP A came from an upper triangular  
 *            matrix  
 *  
 *            UPLO = 'L' or 'l' RFP A came from a  lower triangular  
 *            matrix  
 *  
 *  N         (input) INTEGER  
 *            The order of the matrix A.  N >= 0.  When N = 0, ZLANHF is  
 *            set to zero.  
 *  
 *   A        (input) COMPLEX*16 array, dimension ( N*(N+1)/2 );  
 *            On entry, the matrix A in RFP Format.  
 *            RFP Format is described by TRANSR, UPLO and N as follows:  
 *            If TRANSR='N' then RFP A is (0:N,0:K-1) when N is even;  
 *            K=N/2. RFP A is (0:N-1,0:K) when N is odd; K=N/2. If  
 *            TRANSR = 'C' then RFP is the Conjugate-transpose of RFP A  
 *            as defined when TRANSR = 'N'. The contents of RFP A are  
 *            defined by UPLO as follows: If UPLO = 'U' the RFP A  
 *            contains the ( N*(N+1)/2 ) elements of upper packed A  
 *            either in normal or conjugate-transpose Format. If  
 *            UPLO = 'L' the RFP A contains the ( N*(N+1) /2 ) elements  
 *            of lower packed A either in normal or conjugate-transpose  
 *            Format. The LDA of RFP A is (N+1)/2 when TRANSR = 'C'. When  
 *            TRANSR is 'N' the LDA is N+1 when N is even and is N when  
 *            is odd. See the Note below for more details.  
 *            Unchanged on exit.  
 *  
 *  WORK      (workspace) DOUBLE PRECISION array, dimension (LWORK),  
 *            where LWORK >= N when NORM = 'I' or '1' or 'O'; otherwise,  
 *            WORK is not referenced.  
 *  
 *  Further Details  
 *  ===============  
 *  
 *  We first consider Standard Packed Format when N is even.  
 *  We give an example where N = 6.  
 *  
 *      AP is Upper             AP is Lower  
 *  
 *   00 01 02 03 04 05       00  
 *      11 12 13 14 15       10 11  
 *         22 23 24 25       20 21 22  
 *            33 34 35       30 31 32 33  
 *               44 45       40 41 42 43 44  
 *                  55       50 51 52 53 54 55  
 *  
 *  
 *  Let TRANSR = 'N'. RFP holds AP as follows:  
 *  For UPLO = 'U' the upper trapezoid A(0:5,0:2) consists of the last  
 *  three columns of AP upper. The lower triangle A(4:6,0:2) consists of  
 *  conjugate-transpose of the first three columns of AP upper.  
 *  For UPLO = 'L' the lower trapezoid A(1:6,0:2) consists of the first  
 *  three columns of AP lower. The upper triangle A(0:2,0:2) consists of  
 *  conjugate-transpose of the last three columns of AP lower.  
 *  To denote conjugate we place -- above the element. This covers the  
 *  case N even and TRANSR = 'N'.  
 *  
 *         RFP A                   RFP A  
 *  
 *                                -- -- --  
 *        03 04 05                33 43 53  
 *                                   -- --  
 *        13 14 15                00 44 54  
 *                                      --  
 *        23 24 25                10 11 55  
 *  
 *        33 34 35                20 21 22  
 *        --  
 *        00 44 45                30 31 32  
 *        -- --  
 *        01 11 55                40 41 42  
 *        -- -- --  
 *        02 12 22                50 51 52  
 *  
 *  Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-  
 *  transpose of RFP A above. One therefore gets:  
 *  
 *  
 *           RFP A                   RFP A  
 *  
 *     -- -- -- --                -- -- -- -- -- --  
 *     03 13 23 33 00 01 02    33 00 10 20 30 40 50  
 *     -- -- -- -- --                -- -- -- -- --  
 *     04 14 24 34 44 11 12    43 44 11 21 31 41 51  
 *     -- -- -- -- -- --                -- -- -- --  
 *     05 15 25 35 45 55 22    53 54 55 22 32 42 52  
 *  
 *  
 *  We next  consider Standard Packed Format when N is odd.  
 *  We give an example where N = 5.  
 *  
 *     AP is Upper                 AP is Lower  
 *  
 *   00 01 02 03 04              00  
 *      11 12 13 14              10 11  
 *         22 23 24              20 21 22  
 *            33 34              30 31 32 33  
 *               44              40 41 42 43 44  
 *  
 *  
 *  Let TRANSR = 'N'. RFP holds AP as follows:  
 *  For UPLO = 'U' the upper trapezoid A(0:4,0:2) consists of the last  
 *  three columns of AP upper. The lower triangle A(3:4,0:1) consists of  
 *  conjugate-transpose of the first two   columns of AP upper.  
 *  For UPLO = 'L' the lower trapezoid A(0:4,0:2) consists of the first  
 *  three columns of AP lower. The upper triangle A(0:1,1:2) consists of  
 *  conjugate-transpose of the last two   columns of AP lower.  
 *  To denote conjugate we place -- above the element. This covers the  
 *  case N odd  and TRANSR = 'N'.  
 *  
 *         RFP A                   RFP A  
 *  
 *                                   -- --  
 *        02 03 04                00 33 43  
 *                                      --  
 *        12 13 14                10 11 44  
 *  
 *        22 23 24                20 21 22  
 *        --  
 *        00 33 34                30 31 32  
 *        -- --  
 *        01 11 44                40 41 42  
 *  
 *  Now let TRANSR = 'C'. RFP A in both UPLO cases is just the conjugate-  
 *  transpose of RFP A above. One therefore gets:  
 *  
 *  
 *           RFP A                   RFP A  
 *  
 *     -- -- --                   -- -- -- -- -- --  
 *     02 12 22 00 01             00 10 20 30 40 50  
 *     -- -- -- --                   -- -- -- -- --  
 *     03 13 23 33 11             33 11 21 31 41 51  
 *     -- -- -- -- --                   -- -- -- --  
 *     04 14 24 34 44             43 44 22 32 42 52  
 *  
 *  =====================================================================  *  =====================================================================
 *  *
 *     .. Parameters ..  *     .. Parameters ..
Line 203 Line 265
 *     ..  *     ..
 *     .. Local Scalars ..  *     .. Local Scalars ..
       INTEGER            I, J, IFM, ILU, NOE, N1, K, L, LDA        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 ..  *     .. External Functions ..
       LOGICAL            LSAME        LOGICAL            LSAME, DISNAN
       INTEGER            IDAMAX        EXTERNAL           LSAME, DISNAN
       EXTERNAL           LSAME, IDAMAX  
 *     ..  *     ..
 *     .. External Subroutines ..  *     .. External Subroutines ..
       EXTERNAL           ZLASSQ        EXTERNAL           ZLASSQ
 *     ..  *     ..
 *     .. Intrinsic Functions ..  *     .. Intrinsic Functions ..
       INTRINSIC          ABS, DBLE, MAX, SQRT        INTRINSIC          ABS, DBLE, SQRT
 *     ..  *     ..
 *     .. Executable Statements ..  *     .. Executable Statements ..
 *  *
       IF( N.EQ.0 ) THEN        IF( N.EQ.0 ) THEN
          ZLANHF = ZERO           ZLANHF = ZERO
          RETURN           RETURN
         ELSE IF( N.EQ.1 ) THEN
            ZLANHF = ABS(DBLE(A(0)))
            RETURN
       END IF        END IF
 *  *
 *     set noe = 1 if n is odd. if n is even set noe=0  *     set noe = 1 if n is odd. if n is even set noe=0
 *  *
       NOE = 1        NOE = 1
       IF( MOD( N, 2 ).EQ.0 )        IF( MOD( N, 2 ).EQ.0 )
      +   NOE = 0       $   NOE = 0
 *  *
 *     set ifm = 0 when form='C' or 'c' and 1 otherwise  *     set ifm = 0 when form='C' or 'c' and 1 otherwise
 *  *
       IFM = 1        IFM = 1
       IF( LSAME( TRANSR, 'C' ) )        IF( LSAME( TRANSR, 'C' ) )
      +   IFM = 0       $   IFM = 0
 *  *
 *     set ilu = 0 when uplo='U or 'u' and 1 otherwise  *     set ilu = 0 when uplo='U or 'u' and 1 otherwise
 *  *
       ILU = 1        ILU = 1
       IF( LSAME( UPLO, 'U' ) )        IF( LSAME( UPLO, 'U' ) )
      +   ILU = 0       $   ILU = 0
 *  *
 *     set lda = (n+1)/2 when ifm = 0  *     set lda = (n+1)/2 when ifm = 0
 *     set lda = n when ifm = 1 and noe = 1  *     set lda = n when ifm = 1 and noe = 1
Line 271 Line 335
 *                 uplo ='L'  *                 uplo ='L'
                   J = 0                    J = 0
 *                 -> L(0,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                    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                    END DO
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      DO I = 0, J - 2                       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                       END DO
                      I = J - 1                       I = J - 1
 *                    L(k+j,k+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                       I = J
 *                    -> L(j,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                       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
                   END DO                    END DO
                ELSE                 ELSE
 *                 uplo = 'U'  *                 uplo = 'U'
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      DO I = 0, K + J - 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                       END DO
                      I = K + J - 1                       I = K + J - 1
 *                    -> U(i,i)  *                    -> 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                       I = I + 1
 *                    =k+j; i -> U(j,j)  *                    =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                       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
                   END DO                    END DO
                   DO I = 0, N - 2                    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  *                    j=k-1
                   END DO                    END DO
 *                 i=n-1 -> U(n-1,n-1)  *                 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                 END IF
             ELSE              ELSE
 *              xpose case; A is k by n  *              xpose case; A is k by n
Line 318 Line 406
 *                 uplo ='L'  *                 uplo ='L'
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      DO I = 0, J - 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                       END DO
                      I = J                       I = J
 *                    L(i,i)  *                    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                       I = J + 1
 *                    L(j+k,j+k)  *                    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                       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
                   END DO                    END DO
                   J = K - 1                    J = K - 1
                   DO I = 0, K - 2                    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                    END DO
                   I = K - 1                    I = K - 1
 *                 -> L(i,i) is at A(i,j)  *                 -> 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 J = K, N - 1
                      DO I = 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
                   END DO                    END DO
                ELSE                 ELSE
 *                 uplo = 'U'  *                 uplo = 'U'
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      DO I = 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
                   END DO                    END DO
                   J = K - 1                    J = K - 1
 *                 -> U(j,j) is at A(0,j)  *                 -> 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                    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                    END DO
                   DO J = K, N - 1                    DO J = K, N - 1
                      DO I = 0, J - K - 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                       END DO
                      I = J - K                       I = J - K
 *                    -> U(i,i) at A(i,j)  *                    -> 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                       I = J - K + 1
 *                    U(j,j)  *                    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                       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 DO                    END DO
                END IF                 END IF
Line 379 Line 495
 *                 uplo ='L'  *                 uplo ='L'
                   J = 0                    J = 0
 *                 -> L(k,k) & j=1 -> L(0,0)  *                 -> L(k,k) & j=1 -> L(0,0)
                   VALUE = MAX( VALUE, ABS( DBLE( A( J+J*LDA ) ) ) )                    TEMP = ABS( DBLE( A( J+J*LDA ) ) )
                   VALUE = MAX( VALUE, ABS( DBLE( A( J+1+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                    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                    END DO
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      DO I = 0, J - 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                       END DO
                      I = J                       I = J
 *                    L(k+j,k+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                       I = J + 1
 *                    -> L(j,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 + 2, N                       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
                   END DO                    END DO
                ELSE                 ELSE
 *                 uplo = 'U'  *                 uplo = 'U'
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      DO I = 0, K + J - 1                       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                       END DO
                      I = K + J                       I = K + J
 *                    -> U(i,i)  *                    -> 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                       I = I + 1
 *                    =k+j+1; i -> U(j,j)  *                    =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                       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
                   END DO                    END DO
                   DO I = 0, N - 2                    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  *                    j=k-1
                   END DO                    END DO
 *                 i=n-1 -> U(n-1,n-1)  *                 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                    I = N
 *                 -> U(k-1,k-1)  *                 -> 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                 END IF
             ELSE              ELSE
 *              xpose case; A is k by n+1  *              xpose case; A is k by n+1
Line 430 Line 574
 *                 uplo ='L'  *                 uplo ='L'
                   J = 0                    J = 0
 *                 -> L(k,k) at A(0,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                    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                    END DO
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      DO I = 0, J - 2                       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                       END DO
                      I = J - 1                       I = J - 1
 *                    L(i,i)  *                    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                       I = J
 *                    L(j+k,j+k)  *                    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                       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
                   END DO                    END DO
                   J = K                    J = K
                   DO I = 0, K - 2                    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                    END DO
                   I = K - 1                    I = K - 1
 *                 -> L(i,i) is at A(i,j)  *                 -> 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 J = K + 1, N
                      DO I = 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
                   END DO                    END DO
                ELSE                 ELSE
 *                 uplo = 'U'  *                 uplo = 'U'
                   DO J = 0, K - 1                    DO J = 0, K - 1
                      DO I = 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
                   END DO                    END DO
                   J = K                    J = K
 *                 -> U(j,j) is at A(0,j)  *                 -> 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                    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                    END DO
                   DO J = K + 1, N - 1                    DO J = K + 1, N - 1
                      DO I = 0, J - K - 2                       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                       END DO
                      I = J - K - 1                       I = J - K - 1
 *                    -> U(i,i) at A(i,j)  *                    -> 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                       I = J - K
 *                    U(j,j)  *                    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                       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
                   END DO                    END DO
                   J = N                    J = N
                   DO I = 0, K - 2                    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                    END DO
                   I = K - 1                    I = K - 1
 *                 U(k,k) at A(i,j)  *                 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              END IF
          END IF           END IF
       ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR.        ELSE IF( ( LSAME( NORM, 'I' ) ) .OR. ( LSAME( NORM, 'O' ) ) .OR.
      +         ( NORM.EQ.'1' ) ) THEN       $         ( NORM.EQ.'1' ) ) THEN
 *  *
 *       Find normI(A) ( = norm1(A), since A is Hermitian).  *       Find normI(A) ( = norm1(A), since A is Hermitian).
 *  *
Line 524 Line 704
 *                    -> A(j+k,j+k)  *                    -> A(j+k,j+k)
                      WORK( J+K ) = S + AA                       WORK( J+K ) = S + AA
                      IF( I.EQ.K+K )                       IF( I.EQ.K+K )
      +                  GO TO 10       $                  GO TO 10
                      I = I + 1                       I = I + 1
                      AA = ABS( DBLE( A( I+J*LDA ) ) )                       AA = ABS( DBLE( A( I+J*LDA ) ) )
 *                    -> A(j,j)  *                    -> A(j,j)
Line 540 Line 720
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
    10             CONTINUE     10             CONTINUE
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                ELSE                 ELSE
 *                 ilu = 1 & uplo = 'L'  *                 ilu = 1 & uplo = 'L'
                   K = K + 1                    K = K + 1
Line 578 Line 762
                      END DO                       END DO
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                END IF                 END IF
             ELSE              ELSE
 *              n is even & A is n+1 by k = n/2  *              n is even & A is n+1 by k = n/2
Line 613 Line 801
                      END DO                       END DO
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                ELSE                 ELSE
 *                 ilu = 1 & uplo = 'L'  *                 ilu = 1 & uplo = 'L'
                   DO I = K, N - 1                    DO I = K, N - 1
Line 647 Line 839
                      END DO                       END DO
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    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              END IF
          ELSE           ELSE
Line 710 Line 906
                      END DO                       END DO
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                ELSE                 ELSE
 *                 ilu=1 & uplo = 'L'  *                 ilu=1 & uplo = 'L'
                   K = K + 1                    K = K + 1
Line 771 Line 971
                      END DO                       END DO
                      WORK( J ) = WORK( J ) + S                       WORK( J ) = WORK( J ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                END IF                 END IF
             ELSE              ELSE
 *              n is even & A is k=n/2 by n+1  *              n is even & A is k=n/2 by n+1
Line 841 Line 1045
 *                 A(k-1,k-1)  *                 A(k-1,k-1)
                   S = S + AA                    S = S + AA
                   WORK( I ) = WORK( I ) + S                    WORK( I ) = WORK( I ) + S
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    DO I = 1, N-1
                        TEMP = WORK( I )
                        IF( VALUE .LT. TEMP .OR. DISNAN( TEMP ) )
        $                    VALUE = TEMP
                     END DO
                ELSE                 ELSE
 *                 ilu=1 & uplo = 'L'  *                 ilu=1 & uplo = 'L'
                   DO I = K, N - 1                    DO I = K, N - 1
Line 912 Line 1120
                      END DO                       END DO
                      WORK( J-1 ) = WORK( J-1 ) + S                       WORK( J-1 ) = WORK( J-1 ) + S
                   END DO                    END DO
                   I = IDAMAX( N, WORK, 1 )                    VALUE = WORK( 0 )
                   VALUE = WORK( I-1 )                    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              END IF
          END IF           END IF
Line 1026 Line 1238
             ELSE              ELSE
 *              A is xpose & A is k by n  *              A is xpose & A is k by n
                IF( ILU.EQ.0 ) THEN                 IF( ILU.EQ.0 ) THEN
 *                 A' is upper  *                 A**H is upper
                   DO J = 1, K - 2                    DO J = 1, K - 2
                      CALL ZLASSQ( J, A( 0+( K+J )*LDA ), 1, SCALE, S )                       CALL ZLASSQ( J, A( 0+( K+J )*LDA ), 1, SCALE, S )
 *                    U at A(0,k)  *                    U at A(0,k)
Line 1037 Line 1249
                   END DO                    END DO
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      CALL ZLASSQ( K-J-1, A( J+1+( J+K-1 )*LDA ), 1,                       CALL ZLASSQ( K-J-1, A( J+1+( J+K-1 )*LDA ), 1,
      +                            SCALE, S )       $                            SCALE, S )
 *                    L at A(0,k-1)  *                    L at A(0,k-1)
                   END DO                    END DO
                   S = S + S                    S = S + S
Line 1080 Line 1292
                      L = L + LDA + 1                       L = L + LDA + 1
                   END DO                    END DO
                ELSE                 ELSE
 *                 A' is lower  *                 A**H is lower
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      CALL ZLASSQ( J, A( 0+J*LDA ), 1, SCALE, S )                       CALL ZLASSQ( J, A( 0+J*LDA ), 1, SCALE, S )
 *                    U at A(0,0)  *                    U at A(0,0)
Line 1215 Line 1427
             ELSE              ELSE
 *              A is xpose  *              A is xpose
                IF( ILU.EQ.0 ) THEN                 IF( ILU.EQ.0 ) THEN
 *                 A' is upper  *                 A**H is upper
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      CALL ZLASSQ( J, A( 0+( K+1+J )*LDA ), 1, SCALE, S )                       CALL ZLASSQ( J, A( 0+( K+1+J )*LDA ), 1, SCALE, S )
 *                 U at A(0,k+1)  *                 U at A(0,k+1)
Line 1226 Line 1438
                   END DO                    END DO
                   DO J = 0, K - 2                    DO J = 0, K - 2
                      CALL ZLASSQ( K-J-1, A( J+1+( J+K )*LDA ), 1, SCALE,                       CALL ZLASSQ( K-J-1, A( J+1+( J+K )*LDA ), 1, SCALE,
      +                            S )       $                            S )
 *                 L at A(0,k)  *                 L at A(0,k)
                   END DO                    END DO
                   S = S + S                    S = S + S
Line 1281 Line 1493
                      END IF                       END IF
                   END IF                    END IF
                ELSE                 ELSE
 *                 A' is lower  *                 A**H is lower
                   DO J = 1, K - 1                    DO J = 1, K - 1
                      CALL ZLASSQ( J, A( 0+( J+1 )*LDA ), 1, SCALE, S )                       CALL ZLASSQ( J, A( 0+( J+1 )*LDA ), 1, SCALE, S )
 *                 U at A(0,1)  *                 U at A(0,1)

Removed from v.1.2  
changed lines
  Added in v.1.18


CVSweb interface <joel.bertrand@systella.fr>