107 DOUBLE PRECISION FUNCTION zlangt( NORM, N, DL, D, DU )
119 COMPLEX*16 d( * ), dl( * ), du( * )
125 DOUBLE PRECISION one, zero
126 parameter( one = 1.0d+0, zero = 0.0d+0 )
130 DOUBLE PRECISION anorm, scale, sum, temp
146 ELSE IF(
lsame( norm,
'M' ) )
THEN
150 anorm = abs( d( n ) )
152 IF( anorm.LT.abs( dl( i ) ) .OR.
disnan( abs( dl( i ) ) ) )
154 IF( anorm.LT.abs( d( i ) ) .OR.
disnan( abs( d( i ) ) ) )
156 IF( anorm.LT.abs( du( i ) ) .OR.
disnan(abs( du( i ) ) ) )
159 ELSE IF(
lsame( norm,
'O' ) .OR. norm.EQ.
'1' )
THEN
164 anorm = abs( d( 1 ) )
166 anorm = abs( d( 1 ) )+abs( dl( 1 ) )
167 temp = abs( d( n ) )+abs( du( n-1 ) )
168 IF( anorm .LT. temp .OR.
disnan( temp ) ) anorm = temp
170 temp = abs( d( i ) )+abs( dl( i ) )+abs( du( i-1 ) )
171 IF( anorm .LT. temp .OR.
disnan( temp ) ) anorm = temp
174 ELSE IF(
lsame( norm,
'I' ) )
THEN
179 anorm = abs( d( 1 ) )
181 anorm = abs( d( 1 ) )+abs( du( 1 ) )
182 temp = abs( d( n ) )+abs( dl( n-1 ) )
183 IF( anorm .LT. temp .OR.
disnan( temp ) ) anorm = temp
185 temp = abs( d( i ) )+abs( du( i ) )+abs( dl( i-1 ) )
186 IF( anorm .LT. temp .OR.
disnan( temp ) ) anorm = temp
189 ELSE IF( (
lsame( norm,
'F' ) ) .OR. (
lsame( norm,
'E' ) ) )
THEN
195 CALL
zlassq( n, d, 1, scale, sum )
197 CALL
zlassq( n-1, dl, 1, scale, sum )
198 CALL
zlassq( n-1, du, 1, scale, sum )
200 anorm = scale*sqrt( sum )
subroutine zlassq(N, X, INCX, SCALE, SUMSQ)
ZLASSQ updates a sum of squares represented in scaled form.
logical function lsame(CA, CB)
LSAME
logical function disnan(DIN)
DISNAN tests input for NaN.
double precision function zlangt(NORM, N, DL, D, DU)
ZLANGT returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...