112      DOUBLE PRECISION FUNCTION zlange( NORM, M, N, A, LDA, WORK )
 
  123      DOUBLE PRECISION   work( * )
 
  124      COMPLEX*16         a( lda, * )
 
  130      DOUBLE PRECISION   one, zero
 
  131      parameter( one = 1.0d+0, zero = 0.0d+0 )
 
  135      DOUBLE PRECISION   scale, sum, 
VALUE, temp
 
  145      INTRINSIC          abs, min, sqrt
 
  149      IF( min( m, n ).EQ.0 ) 
THEN 
  151      ELSE IF( 
lsame( norm, 
'M' ) ) 
THEN 
  158               temp = abs( a( i, j ) )
 
  159               IF( 
VALUE.LT.temp .OR. 
disnan( temp ) ) 
VALUE = temp
 
  162      ELSE IF( ( 
lsame( norm, 
'O' ) ) .OR. ( norm.EQ.
'1' ) ) 
THEN 
  170               sum = sum + abs( a( i, j ) )
 
  172            IF( 
VALUE.LT.sum .OR. 
disnan( sum ) ) 
VALUE = sum
 
  174      ELSE IF( 
lsame( norm, 
'I' ) ) 
THEN 
  183               work( i ) = work( i ) + abs( a( i, j ) )
 
  189            IF( 
VALUE.LT.temp .OR. 
disnan( temp ) ) 
VALUE = temp
 
  191      ELSE IF( ( 
lsame( norm, 
'F' ) ) .OR.
 
  192     $         ( 
lsame( norm, 
'E' ) ) ) 
THEN 
  199            CALL zlassq( m, a( 1, j ), 1, scale, sum )
 
  201         VALUE = scale*sqrt( sum )
 
 
logical function disnan(din)
DISNAN tests input for NaN.
double precision function zlange(norm, m, n, a, lda, work)
ZLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine zlassq(n, x, incx, scale, sumsq)
ZLASSQ updates a sum of squares represented in scaled form.
logical function lsame(ca, cb)
LSAME