243      DOUBLE PRECISION FUNCTION zlanhf( NORM, TRANSR, UPLO, N, A,
 
  251      CHARACTER          norm, transr, uplo
 
  255      DOUBLE PRECISION   work( 0: * )
 
  262      DOUBLE PRECISION   one, zero
 
  263      parameter( one = 1.0d+0, zero = 0.0d+0 )
 
  266      INTEGER            i, j, ifm, ilu, noe, n1, k, l, lda
 
  267      DOUBLE PRECISION   scale, s, 
VALUE, aa, temp
 
  277      INTRINSIC          abs, dble, sqrt
 
  284      ELSE IF( n.EQ.1 ) 
THEN 
  292      IF( mod( n, 2 ).EQ.0 )
 
  298      IF( 
lsame( transr, 
'C' ) )
 
  304      IF( 
lsame( uplo, 
'U' ) )
 
  323      IF( 
lsame( norm, 
'M' ) ) 
THEN 
  337                  temp = abs( dble( a( j+j*lda ) ) )
 
  338                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  341                     temp = abs( a( i+j*lda ) )
 
  342                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  347                        temp = abs( a( i+j*lda ) )
 
  348                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  353                     temp = abs( dble( a( i+j*lda ) ) )
 
  354                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  358                     temp = abs( dble( a( i+j*lda ) ) )
 
  359                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  362                        temp = abs( a( i+j*lda ) )
 
  363                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  371                        temp = abs( a( i+j*lda ) )
 
  372                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  377                     temp = abs( dble( a( i+j*lda ) ) )
 
  378                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  382                     temp = abs( dble( a( i+j*lda ) ) )
 
  383                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  385                     DO i = k + j + 1, n - 1
 
  386                        temp = abs( a( i+j*lda ) )
 
  387                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  392                     temp = abs( a( i+j*lda ) )
 
  393                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  398                  temp = abs( dble( a( i+j*lda ) ) )
 
  399                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  408                        temp = abs( a( i+j*lda ) )
 
  409                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  414                     temp = abs( dble( a( i+j*lda ) ) )
 
  415                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  419                     temp = abs( dble( a( i+j*lda ) ) )
 
  420                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  423                        temp = abs( a( i+j*lda ) )
 
  424                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  430                     temp = abs( a( i+j*lda ) )
 
  431                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  436                  temp = abs( dble( a( i+j*lda ) ) )
 
  437                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  441                        temp = abs( a( i+j*lda ) )
 
  442                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  450                        temp = abs( a( i+j*lda ) )
 
  451                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  457                  temp = abs( dble( a( 0+j*lda ) ) )
 
  458                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  461                     temp = abs( a( i+j*lda ) )
 
  462                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  467                        temp = abs( a( i+j*lda ) )
 
  468                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  473                     temp = abs( dble( a( i+j*lda ) ) )
 
  474                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  478                     temp = abs( dble( a( i+j*lda ) ) )
 
  479                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  481                     DO i = j - k + 2, k - 1
 
  482                        temp = abs( a( i+j*lda ) )
 
  483                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  497                  temp = abs( dble( a( j+j*lda ) ) )
 
  498                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  500                  temp = abs( dble( a( j+1+j*lda ) ) )
 
  501                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  504                     temp = abs( a( i+j*lda ) )
 
  505                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  510                        temp = abs( a( i+j*lda ) )
 
  511                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  516                     temp = abs( dble( a( i+j*lda ) ) )
 
  517                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  521                     temp = abs( dble( a( i+j*lda ) ) )
 
  522                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  525                        temp = abs( a( i+j*lda ) )
 
  526                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  534                        temp = abs( a( i+j*lda ) )
 
  535                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  540                     temp = abs( dble( a( i+j*lda ) ) )
 
  541                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  545                     temp = abs( dble( a( i+j*lda ) ) )
 
  546                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  549                        temp = abs( a( i+j*lda ) )
 
  550                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  555                     temp = abs( a( i+j*lda ) )
 
  556                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  561                  temp = abs( dble( a( i+j*lda ) ) )
 
  562                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  566                  temp = abs( dble( a( i+j*lda ) ) )
 
  567                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  576                  temp = abs( dble( a( j+j*lda ) ) )
 
  577                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  580                     temp = abs( a( i+j*lda ) )
 
  581                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  586                        temp = abs( a( i+j*lda ) )
 
  587                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  592                     temp = abs( dble( a( i+j*lda ) ) )
 
  593                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  597                     temp = abs( dble( a( i+j*lda ) ) )
 
  598                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  601                        temp = abs( a( i+j*lda ) )
 
  602                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  608                     temp = abs( a( i+j*lda ) )
 
  609                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  614                  temp = abs( dble( a( i+j*lda ) ) )
 
  615                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  619                        temp = abs( a( i+j*lda ) )
 
  620                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  628                        temp = abs( a( i+j*lda ) )
 
  629                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  635                  temp = abs( dble( a( 0+j*lda ) ) )
 
  636                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  639                     temp = abs( a( i+j*lda ) )
 
  640                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  645                        temp = abs( a( i+j*lda ) )
 
  646                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  651                     temp = abs( dble( a( i+j*lda ) ) )
 
  652                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  656                     temp = abs( dble( a( i+j*lda ) ) )
 
  657                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  659                     DO i = j - k + 1, k - 1
 
  660                        temp = abs( a( i+j*lda ) )
 
  661                        IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  667                     temp = abs( a( i+j*lda ) )
 
  668                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  673                  temp = abs( dble( a( i+j*lda ) ) )
 
  674                  IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  679      ELSE IF( ( 
lsame( norm, 
'I' ) ) .OR.
 
  680     $         ( 
lsame( norm, 
'O' ) ) .OR.
 
  681     $         ( norm.EQ.
'1' ) ) 
THEN 
  698                        aa = abs( a( i+j*lda ) )
 
  701                        work( i ) = work( i ) + aa
 
  703                     aa = abs( dble( a( i+j*lda ) ) )
 
  709                     aa = abs( dble( a( i+j*lda ) ) )
 
  711                     work( j ) = work( j ) + aa
 
  715                        aa = abs( a( i+j*lda ) )
 
  718                        work( l ) = work( l ) + aa
 
  720                     work( j ) = work( j ) + s
 
  726                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  739                        aa = abs( a( i+j*lda ) )
 
  742                        work( i+k ) = work( i+k ) + aa
 
  745                        aa = abs( dble( a( i+j*lda ) ) )
 
  748                        work( i+k ) = work( i+k ) + s
 
  752                     aa = abs( dble( a( i+j*lda ) ) )
 
  758                        aa = abs( a( i+j*lda ) )
 
  761                        work( l ) = work( l ) + aa
 
  763                     work( j ) = work( j ) + s
 
  768                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  782                        aa = abs( a( i+j*lda ) )
 
  785                        work( i ) = work( i ) + aa
 
  787                     aa = abs( dble( a( i+j*lda ) ) )
 
  791                     aa = abs( dble( a( i+j*lda ) ) )
 
  793                     work( j ) = work( j ) + aa
 
  797                        aa = abs( a( i+j*lda ) )
 
  800                        work( l ) = work( l ) + aa
 
  802                     work( j ) = work( j ) + s
 
  807                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  818                        aa = abs( a( i+j*lda ) )
 
  821                        work( i+k ) = work( i+k ) + aa
 
  823                     aa = abs( dble( a( i+j*lda ) ) )
 
  826                     work( i+k ) = work( i+k ) + s
 
  829                     aa = abs( dble( a( i+j*lda ) ) )
 
  835                        aa = abs( a( i+j*lda ) )
 
  838                        work( l ) = work( l ) + aa
 
  840                     work( j ) = work( j ) + s
 
  845                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  867                        aa = abs( a( i+j*lda ) )
 
  869                        work( i+n1 ) = work( i+n1 ) + aa
 
  875                  s = abs( dble( a( 0+j*lda ) ) )
 
  878                     aa = abs( a( i+j*lda ) )
 
  880                     work( i+n1 ) = work( i+n1 ) + aa
 
  883                  work( j ) = work( j ) + s
 
  887                        aa = abs( a( i+j*lda ) )
 
  889                        work( i ) = work( i ) + aa
 
  893                     aa = abs( dble( a( i+j*lda ) ) )
 
  896                     work( j-k ) = work( j-k ) + s
 
  898                     s = abs( dble( a( i+j*lda ) ) )
 
  902                        aa = abs( a( i+j*lda ) )
 
  904                        work( l ) = work( l ) + aa
 
  907                     work( j ) = work( j ) + s
 
  912                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  926                        aa = abs( a( i+j*lda ) )
 
  928                        work( i ) = work( i ) + aa
 
  931                     aa = abs( dble( a( i+j*lda ) ) )
 
  938                     aa = abs( dble( a( i+j*lda ) ) )
 
  940                     DO l = k + j + 1, n - 1
 
  942                        aa = abs( a( i+j*lda ) )
 
  945                        work( l ) = work( l ) + aa
 
  947                     work( k+j ) = work( k+j ) + s
 
  952                     aa = abs( a( i+j*lda ) )
 
  954                     work( i ) = work( i ) + aa
 
  958                  aa = abs( dble( a( i+j*lda ) ) )
 
  967                        aa = abs( a( i+j*lda ) )
 
  969                        work( i ) = work( i ) + aa
 
  972                     work( j ) = work( j ) + s
 
  977                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
  991                        aa = abs( a( i+j*lda ) )
 
  993                        work( i+k ) = work( i+k ) + aa
 
  999                  aa = abs( dble( a( 0+j*lda ) ) )
 
 1003                     aa = abs( a( i+j*lda ) )
 
 1005                     work( i+k ) = work( i+k ) + aa
 
 1008                  work( j ) = work( j ) + s
 
 1012                        aa = abs( a( i+j*lda ) )
 
 1014                        work( i ) = work( i ) + aa
 
 1018                     aa = abs( dble( a( i+j*lda ) ) )
 
 1021                     work( j-k-1 ) = work( j-k-1 ) + s
 
 1023                     aa = abs( dble( a( i+j*lda ) ) )
 
 1028                        aa = abs( a( i+j*lda ) )
 
 1030                        work( l ) = work( l ) + aa
 
 1033                     work( j ) = work( j ) + s
 
 1038                     aa = abs( a( i+j*lda ) )
 
 1040                     work( i ) = work( i ) + aa
 
 1044                  aa = abs( dble( a( i+j*lda ) ) )
 
 1047                  work( i ) = work( i ) + s
 
 1051                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
 1060                  s = abs( dble( a( 0 ) ) )
 
 1065                     work( i+k ) = work( i+k ) + aa
 
 1068                  work( k ) = work( k ) + s
 
 1073                        aa = abs( a( i+j*lda ) )
 
 1075                        work( i ) = work( i ) + aa
 
 1078                     aa = abs( dble( a( i+j*lda ) ) )
 
 1085                     aa = abs( dble( a( i+j*lda ) ) )
 
 1087                     DO l = k + j + 1, n - 1
 
 1089                        aa = abs( a( i+j*lda ) )
 
 1092                        work( l ) = work( l ) + aa
 
 1094                     work( k+j ) = work( k+j ) + s
 
 1099                     aa = abs( a( i+j*lda ) )
 
 1101                     work( i ) = work( i ) + aa
 
 1106                  aa = abs( dble( a( i+j*lda ) ) )
 
 1116                        aa = abs( a( i+j*lda ) )
 
 1118                        work( i ) = work( i ) + aa
 
 1121                     work( j-1 ) = work( j-1 ) + s
 
 1126                     IF( 
VALUE .LT. temp .OR. 
disnan( temp ) )
 
 1132      ELSE IF( ( 
lsame( norm, 
'F' ) ) .OR.
 
 1133     $         ( 
lsame( norm, 
'E' ) ) ) 
THEN 
 1147                     CALL zlassq( k-j-2, a( k+j+1+j*lda ), 1, scale,
 
 1152                     CALL zlassq( k+j-1, a( 0+j*lda ), 1, scale, s )
 
 1162                     IF( aa.NE.zero ) 
THEN 
 1163                        IF( scale.LT.aa ) 
THEN 
 1164                           s = one + s*( scale / aa )**2
 
 1167                           s = s + ( aa / scale )**2
 
 1170                     aa = dble( a( l+1 ) )
 
 1172                     IF( aa.NE.zero ) 
THEN 
 1173                        IF( scale.LT.aa ) 
THEN 
 1174                           s = one + s*( scale / aa )**2
 
 1177                           s = s + ( aa / scale )**2
 
 1184                  IF( aa.NE.zero ) 
THEN 
 1185                     IF( scale.LT.aa ) 
THEN 
 1186                        s = one + s*( scale / aa )**2
 
 1189                        s = s + ( aa / scale )**2
 
 1195                     CALL zlassq( n-j-1, a( j+1+j*lda ), 1, scale,
 
 1200                     CALL zlassq( j, a( 0+( 1+j )*lda ), 1, scale,
 
 1208                  IF( aa.NE.zero ) 
THEN 
 1209                     IF( scale.LT.aa ) 
THEN 
 1210                        s = one + s*( scale / aa )**2
 
 1213                        s = s + ( aa / scale )**2
 
 1221                     IF( aa.NE.zero ) 
THEN 
 1222                        IF( scale.LT.aa ) 
THEN 
 1223                           s = one + s*( scale / aa )**2
 
 1226                           s = s + ( aa / scale )**2
 
 1229                     aa = dble( a( l+1 ) )
 
 1231                     IF( aa.NE.zero ) 
THEN 
 1232                        IF( scale.LT.aa ) 
THEN 
 1233                           s = one + s*( scale / aa )**2
 
 1236                           s = s + ( aa / scale )**2
 
 1247                     CALL zlassq( j, a( 0+( k+j )*lda ), 1, scale,
 
 1252                     CALL zlassq( k, a( 0+j*lda ), 1, scale, s )
 
 1256                     CALL zlassq( k-j-1, a( j+1+( j+k-1 )*lda ), 1,
 
 1266                  IF( aa.NE.zero ) 
THEN 
 1267                     IF( scale.LT.aa ) 
THEN 
 1268                        s = one + s*( scale / aa )**2
 
 1271                        s = s + ( aa / scale )**2
 
 1279                     IF( aa.NE.zero ) 
THEN 
 1280                        IF( scale.LT.aa ) 
THEN 
 1281                           s = one + s*( scale / aa )**2
 
 1284                           s = s + ( aa / scale )**2
 
 1287                     aa = dble( a( l+1 ) )
 
 1289                     IF( aa.NE.zero ) 
THEN 
 1290                        IF( scale.LT.aa ) 
THEN 
 1291                           s = one + s*( scale / aa )**2
 
 1294                           s = s + ( aa / scale )**2
 
 1302                     CALL zlassq( j, a( 0+j*lda ), 1, scale, s )
 
 1306                     CALL zlassq( k, a( 0+j*lda ), 1, scale, s )
 
 1310                     CALL zlassq( k-j-2, a( j+2+j*lda ), 1, scale,
 
 1321                     IF( aa.NE.zero ) 
THEN 
 1322                        IF( scale.LT.aa ) 
THEN 
 1323                           s = one + s*( scale / aa )**2
 
 1326                           s = s + ( aa / scale )**2
 
 1329                     aa = dble( a( l+1 ) )
 
 1331                     IF( aa.NE.zero ) 
THEN 
 1332                        IF( scale.LT.aa ) 
THEN 
 1333                           s = one + s*( scale / aa )**2
 
 1336                           s = s + ( aa / scale )**2
 
 1344                  IF( aa.NE.zero ) 
THEN 
 1345                     IF( scale.LT.aa ) 
THEN 
 1346                        s = one + s*( scale / aa )**2
 
 1349                        s = s + ( aa / scale )**2
 
 1361                     CALL zlassq( k-j-1, a( k+j+2+j*lda ), 1, scale,
 
 1366                     CALL zlassq( k+j, a( 0+j*lda ), 1, scale, s )
 
 1376                     IF( aa.NE.zero ) 
THEN 
 1377                        IF( scale.LT.aa ) 
THEN 
 1378                           s = one + s*( scale / aa )**2
 
 1381                           s = s + ( aa / scale )**2
 
 1384                     aa = dble( a( l+1 ) )
 
 1386                     IF( aa.NE.zero ) 
THEN 
 1387                        IF( scale.LT.aa ) 
THEN 
 1388                           s = one + s*( scale / aa )**2
 
 1391                           s = s + ( aa / scale )**2
 
 1399                     CALL zlassq( n-j-1, a( j+2+j*lda ), 1, scale,
 
 1404                     CALL zlassq( j, a( 0+j*lda ), 1, scale, s )
 
 1414                     IF( aa.NE.zero ) 
THEN 
 1415                        IF( scale.LT.aa ) 
THEN 
 1416                           s = one + s*( scale / aa )**2
 
 1419                           s = s + ( aa / scale )**2
 
 1422                     aa = dble( a( l+1 ) )
 
 1424                     IF( aa.NE.zero ) 
THEN 
 1425                        IF( scale.LT.aa ) 
THEN 
 1426                           s = one + s*( scale / aa )**2
 
 1429                           s = s + ( aa / scale )**2
 
 1440                     CALL zlassq( j, a( 0+( k+1+j )*lda ), 1, scale,
 
 1445                     CALL zlassq( k, a( 0+j*lda ), 1, scale, s )
 
 1449                     CALL zlassq( k-j-1, a( j+1+( j+k )*lda ), 1,
 
 1460                  IF( aa.NE.zero ) 
THEN 
 1461                     IF( scale.LT.aa ) 
THEN 
 1462                        s = one + s*( scale / aa )**2
 
 1465                        s = s + ( aa / scale )**2
 
 1473                     IF( aa.NE.zero ) 
THEN 
 1474                        IF( scale.LT.aa ) 
THEN 
 1475                           s = one + s*( scale / aa )**2
 
 1478                           s = s + ( aa / scale )**2
 
 1481                     aa = dble( a( l+1 ) )
 
 1483                     IF( aa.NE.zero ) 
THEN 
 1484                        IF( scale.LT.aa ) 
THEN 
 1485                           s = one + s*( scale / aa )**2
 
 1488                           s = s + ( aa / scale )**2
 
 1497                  IF( aa.NE.zero ) 
THEN 
 1498                     IF( scale.LT.aa ) 
THEN 
 1499                        s = one + s*( scale / aa )**2
 
 1502                        s = s + ( aa / scale )**2
 
 1508                     CALL zlassq( j, a( 0+( j+1 )*lda ), 1, scale,
 
 1513                     CALL zlassq( k, a( 0+j*lda ), 1, scale, s )
 
 1517                     CALL zlassq( k-j-1, a( j+1+j*lda ), 1, scale,
 
 1527                  IF( aa.NE.zero ) 
THEN 
 1528                     IF( scale.LT.aa ) 
THEN 
 1529                        s = one + s*( scale / aa )**2
 
 1532                        s = s + ( aa / scale )**2
 
 1540                     IF( aa.NE.zero ) 
THEN 
 1541                        IF( scale.LT.aa ) 
THEN 
 1542                           s = one + s*( scale / aa )**2
 
 1545                           s = s + ( aa / scale )**2
 
 1548                     aa = dble( a( l+1 ) )
 
 1550                     IF( aa.NE.zero ) 
THEN 
 1551                        IF( scale.LT.aa ) 
THEN 
 1552                           s = one + s*( scale / aa )**2
 
 1555                           s = s + ( aa / scale )**2
 
 1563                  IF( aa.NE.zero ) 
THEN 
 1564                     IF( scale.LT.aa ) 
THEN 
 1565                        s = one + s*( scale / aa )**2
 
 1568                        s = s + ( aa / scale )**2
 
 1574         VALUE = scale*sqrt( s )