1*> \brief \b ZLANHT returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex Hermitian tridiagonal matrix. 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8*> \htmlonly 9*> Download ZLANHT + dependencies 10*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zlanht.f"> 11*> [TGZ]</a> 12*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zlanht.f"> 13*> [ZIP]</a> 14*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/zlanht.f"> 15*> [TXT]</a> 16*> \endhtmlonly 17* 18* Definition: 19* =========== 20* 21* DOUBLE PRECISION FUNCTION ZLANHT( NORM, N, D, E ) 22* 23* .. Scalar Arguments .. 24* CHARACTER NORM 25* INTEGER N 26* .. 27* .. Array Arguments .. 28* DOUBLE PRECISION D( * ) 29* COMPLEX*16 E( * ) 30* .. 31* 32* 33*> \par Purpose: 34* ============= 35*> 36*> \verbatim 37*> 38*> ZLANHT returns the value of the one norm, or the Frobenius norm, or 39*> the infinity norm, or the element of largest absolute value of a 40*> complex Hermitian tridiagonal matrix A. 41*> \endverbatim 42*> 43*> \return ZLANHT 44*> \verbatim 45*> 46*> ZLANHT = ( max(abs(A(i,j))), NORM = 'M' or 'm' 47*> ( 48*> ( norm1(A), NORM = '1', 'O' or 'o' 49*> ( 50*> ( normI(A), NORM = 'I' or 'i' 51*> ( 52*> ( normF(A), NORM = 'F', 'f', 'E' or 'e' 53*> 54*> where norm1 denotes the one norm of a matrix (maximum column sum), 55*> normI denotes the infinity norm of a matrix (maximum row sum) and 56*> normF denotes the Frobenius norm of a matrix (square root of sum of 57*> squares). Note that max(abs(A(i,j))) is not a consistent matrix norm. 58*> \endverbatim 59* 60* Arguments: 61* ========== 62* 63*> \param[in] NORM 64*> \verbatim 65*> NORM is CHARACTER*1 66*> Specifies the value to be returned in ZLANHT as described 67*> above. 68*> \endverbatim 69*> 70*> \param[in] N 71*> \verbatim 72*> N is INTEGER 73*> The order of the matrix A. N >= 0. When N = 0, ZLANHT is 74*> set to zero. 75*> \endverbatim 76*> 77*> \param[in] D 78*> \verbatim 79*> D is DOUBLE PRECISION array, dimension (N) 80*> The diagonal elements of A. 81*> \endverbatim 82*> 83*> \param[in] E 84*> \verbatim 85*> E is COMPLEX*16 array, dimension (N-1) 86*> The (n-1) sub-diagonal or super-diagonal elements of A. 87*> \endverbatim 88* 89* Authors: 90* ======== 91* 92*> \author Univ. of Tennessee 93*> \author Univ. of California Berkeley 94*> \author Univ. of Colorado Denver 95*> \author NAG Ltd. 96* 97*> \ingroup complex16OTHERauxiliary 98* 99* ===================================================================== 100 DOUBLE PRECISION FUNCTION ZLANHT( NORM, N, D, E ) 101* 102* -- LAPACK auxiliary routine -- 103* -- LAPACK is a software package provided by Univ. of Tennessee, -- 104* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 105* 106* .. Scalar Arguments .. 107 CHARACTER NORM 108 INTEGER N 109* .. 110* .. Array Arguments .. 111 DOUBLE PRECISION D( * ) 112 COMPLEX*16 E( * ) 113* .. 114* 115* ===================================================================== 116* 117* .. Parameters .. 118 DOUBLE PRECISION ONE, ZERO 119 PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) 120* .. 121* .. Local Scalars .. 122 INTEGER I 123 DOUBLE PRECISION ANORM, SCALE, SUM 124* .. 125* .. External Functions .. 126 LOGICAL LSAME, DISNAN 127 EXTERNAL LSAME, DISNAN 128* .. 129* .. External Subroutines .. 130 EXTERNAL DLASSQ, ZLASSQ 131* .. 132* .. Intrinsic Functions .. 133 INTRINSIC ABS, MAX, SQRT 134* .. 135* .. Executable Statements .. 136* 137 IF( N.LE.0 ) THEN 138 ANORM = ZERO 139 ELSE IF( LSAME( NORM, 'M' ) ) THEN 140* 141* Find max(abs(A(i,j))). 142* 143 ANORM = ABS( D( N ) ) 144 DO 10 I = 1, N - 1 145 SUM = ABS( D( I ) ) 146 IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 147 SUM = ABS( E( I ) ) 148 IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 149 10 CONTINUE 150 ELSE IF( LSAME( NORM, 'O' ) .OR. NORM.EQ.'1' .OR. 151 $ LSAME( NORM, 'I' ) ) THEN 152* 153* Find norm1(A). 154* 155 IF( N.EQ.1 ) THEN 156 ANORM = ABS( D( 1 ) ) 157 ELSE 158 ANORM = ABS( D( 1 ) )+ABS( E( 1 ) ) 159 SUM = ABS( E( N-1 ) )+ABS( D( N ) ) 160 IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 161 DO 20 I = 2, N - 1 162 SUM = ABS( D( I ) )+ABS( E( I ) )+ABS( E( I-1 ) ) 163 IF( ANORM .LT. SUM .OR. DISNAN( SUM ) ) ANORM = SUM 164 20 CONTINUE 165 END IF 166 ELSE IF( ( LSAME( NORM, 'F' ) ) .OR. ( LSAME( NORM, 'E' ) ) ) THEN 167* 168* Find normF(A). 169* 170 SCALE = ZERO 171 SUM = ONE 172 IF( N.GT.1 ) THEN 173 CALL ZLASSQ( N-1, E, 1, SCALE, SUM ) 174 SUM = 2*SUM 175 END IF 176 CALL DLASSQ( N, D, 1, SCALE, SUM ) 177 ANORM = SCALE*SQRT( SUM ) 178 END IF 179* 180 ZLANHT = ANORM 181 RETURN 182* 183* End of ZLANHT 184* 185 END 186