243 REAL function
clanhf( norm, transr, uplo, n, a, work )
250 CHARACTER norm, transr, uplo
262 parameter( one = 1.0e+0, zero = 0.0e+0 )
265 INTEGER i, j, ifm, ilu, noe, n1, k, l, lda
266 REAL scale, s,
VALUE, aa, temp
276 INTRINSIC abs, real, sqrt
283 ELSE IF( n.EQ.1 )
THEN
291 IF( mod( n, 2 ).EQ.0 )
297 IF(
lsame( transr,
'C' ) )
303 IF(
lsame( uplo,
'U' ) )
322 IF(
lsame( norm,
'M' ) )
THEN
336 temp = abs( real( a( j+j*lda ) ) )
337 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
340 temp = abs( a( i+j*lda ) )
341 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
346 temp = abs( a( i+j*lda ) )
347 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
352 temp = abs( real( a( i+j*lda ) ) )
353 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
357 temp = abs( real( a( i+j*lda ) ) )
358 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
361 temp = abs( a( i+j*lda ) )
362 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
370 temp = abs( a( i+j*lda ) )
371 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
376 temp = abs( real( a( i+j*lda ) ) )
377 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
381 temp = abs( real( a( i+j*lda ) ) )
382 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
384 DO i = k + j + 1, n - 1
385 temp = abs( a( i+j*lda ) )
386 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
391 temp = abs( a( i+j*lda ) )
392 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
397 temp = abs( real( a( i+j*lda ) ) )
398 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
407 temp = abs( a( i+j*lda ) )
408 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
413 temp = abs( real( a( i+j*lda ) ) )
414 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
418 temp = abs( real( a( i+j*lda ) ) )
419 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
422 temp = abs( a( i+j*lda ) )
423 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
429 temp = abs( a( i+j*lda ) )
430 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
435 temp = abs( real( a( i+j*lda ) ) )
436 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
440 temp = abs( a( i+j*lda ) )
441 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
449 temp = abs( a( i+j*lda ) )
450 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
456 temp = abs( real( a( 0+j*lda ) ) )
457 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
460 temp = abs( a( i+j*lda ) )
461 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
466 temp = abs( a( i+j*lda ) )
467 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
472 temp = abs( real( a( i+j*lda ) ) )
473 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
477 temp = abs( real( a( i+j*lda ) ) )
478 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
480 DO i = j - k + 2, k - 1
481 temp = abs( a( i+j*lda ) )
482 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
496 temp = abs( real( a( j+j*lda ) ) )
497 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
499 temp = abs( real( a( j+1+j*lda ) ) )
500 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
503 temp = abs( a( i+j*lda ) )
504 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
509 temp = abs( a( i+j*lda ) )
510 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
515 temp = abs( real( a( i+j*lda ) ) )
516 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
520 temp = abs( real( a( i+j*lda ) ) )
521 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
524 temp = abs( a( i+j*lda ) )
525 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
533 temp = abs( a( i+j*lda ) )
534 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
539 temp = abs( real( a( i+j*lda ) ) )
540 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
544 temp = abs( real( a( i+j*lda ) ) )
545 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
548 temp = abs( a( i+j*lda ) )
549 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
554 temp = abs( a( i+j*lda ) )
555 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
560 temp = abs( real( a( i+j*lda ) ) )
561 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
565 temp = abs( real( a( i+j*lda ) ) )
566 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
575 temp = abs( real( a( j+j*lda ) ) )
576 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
579 temp = abs( a( i+j*lda ) )
580 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
585 temp = abs( a( i+j*lda ) )
586 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
591 temp = abs( real( a( i+j*lda ) ) )
592 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
596 temp = abs( real( a( i+j*lda ) ) )
597 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
600 temp = abs( a( i+j*lda ) )
601 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
607 temp = abs( a( i+j*lda ) )
608 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
613 temp = abs( real( a( i+j*lda ) ) )
614 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
618 temp = abs( a( i+j*lda ) )
619 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
627 temp = abs( a( i+j*lda ) )
628 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
634 temp = abs( real( a( 0+j*lda ) ) )
635 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
638 temp = abs( a( i+j*lda ) )
639 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
644 temp = abs( a( i+j*lda ) )
645 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
650 temp = abs( real( a( i+j*lda ) ) )
651 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
655 temp = abs( real( a( i+j*lda ) ) )
656 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
658 DO i = j - k + 1, k - 1
659 temp = abs( a( i+j*lda ) )
660 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
666 temp = abs( a( i+j*lda ) )
667 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
672 temp = abs( real( a( i+j*lda ) ) )
673 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
678 ELSE IF( (
lsame( norm,
'I' ) ) .OR.
679 $ (
lsame( norm,
'O' ) ) .OR.
680 $ ( norm.EQ.
'1' ) )
THEN
697 aa = abs( a( i+j*lda ) )
700 work( i ) = work( i ) + aa
702 aa = abs( real( a( i+j*lda ) ) )
708 aa = abs( real( a( i+j*lda ) ) )
710 work( j ) = work( j ) + aa
714 aa = abs( a( i+j*lda ) )
717 work( l ) = work( l ) + aa
719 work( j ) = work( j ) + s
725 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
738 aa = abs( a( i+j*lda ) )
741 work( i+k ) = work( i+k ) + aa
744 aa = abs( real( a( i+j*lda ) ) )
747 work( i+k ) = work( i+k ) + s
751 aa = abs( real( a( i+j*lda ) ) )
757 aa = abs( a( i+j*lda ) )
760 work( l ) = work( l ) + aa
762 work( j ) = work( j ) + s
767 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
781 aa = abs( a( i+j*lda ) )
784 work( i ) = work( i ) + aa
786 aa = abs( real( a( i+j*lda ) ) )
790 aa = abs( real( a( i+j*lda ) ) )
792 work( j ) = work( j ) + aa
796 aa = abs( a( i+j*lda ) )
799 work( l ) = work( l ) + aa
801 work( j ) = work( j ) + s
806 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
817 aa = abs( a( i+j*lda ) )
820 work( i+k ) = work( i+k ) + aa
822 aa = abs( real( a( i+j*lda ) ) )
825 work( i+k ) = work( i+k ) + s
828 aa = abs( real( a( i+j*lda ) ) )
834 aa = abs( a( i+j*lda ) )
837 work( l ) = work( l ) + aa
839 work( j ) = work( j ) + s
844 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
866 aa = abs( a( i+j*lda ) )
868 work( i+n1 ) = work( i+n1 ) + aa
874 s = abs( real( a( 0+j*lda ) ) )
877 aa = abs( a( i+j*lda ) )
879 work( i+n1 ) = work( i+n1 ) + aa
882 work( j ) = work( j ) + s
886 aa = abs( a( i+j*lda ) )
888 work( i ) = work( i ) + aa
892 aa = abs( real( a( i+j*lda ) ) )
895 work( j-k ) = work( j-k ) + s
897 s = abs( real( a( i+j*lda ) ) )
901 aa = abs( a( i+j*lda ) )
903 work( l ) = work( l ) + aa
906 work( j ) = work( j ) + s
911 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
925 aa = abs( a( i+j*lda ) )
927 work( i ) = work( i ) + aa
930 aa = abs( real( a( i+j*lda ) ) )
937 aa = abs( real( a( i+j*lda ) ) )
939 DO l = k + j + 1, n - 1
941 aa = abs( a( i+j*lda ) )
944 work( l ) = work( l ) + aa
946 work( k+j ) = work( k+j ) + s
951 aa = abs( a( i+j*lda ) )
953 work( i ) = work( i ) + aa
957 aa = abs( real( a( i+j*lda ) ) )
966 aa = abs( a( i+j*lda ) )
968 work( i ) = work( i ) + aa
971 work( j ) = work( j ) + s
976 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
990 aa = abs( a( i+j*lda ) )
992 work( i+k ) = work( i+k ) + aa
998 aa = abs( real( a( 0+j*lda ) ) )
1002 aa = abs( a( i+j*lda ) )
1004 work( i+k ) = work( i+k ) + aa
1007 work( j ) = work( j ) + s
1011 aa = abs( a( i+j*lda ) )
1013 work( i ) = work( i ) + aa
1017 aa = abs( real( a( i+j*lda ) ) )
1020 work( j-k-1 ) = work( j-k-1 ) + s
1022 aa = abs( real( a( i+j*lda ) ) )
1027 aa = abs( a( i+j*lda ) )
1029 work( l ) = work( l ) + aa
1032 work( j ) = work( j ) + s
1037 aa = abs( a( i+j*lda ) )
1039 work( i ) = work( i ) + aa
1043 aa = abs( real( a( i+j*lda ) ) )
1046 work( i ) = work( i ) + s
1050 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
1059 s = abs( real( a( 0 ) ) )
1064 work( i+k ) = work( i+k ) + aa
1067 work( k ) = work( k ) + s
1072 aa = abs( a( i+j*lda ) )
1074 work( i ) = work( i ) + aa
1077 aa = abs( real( a( i+j*lda ) ) )
1084 aa = abs( real( a( i+j*lda ) ) )
1086 DO l = k + j + 1, n - 1
1088 aa = abs( a( i+j*lda ) )
1091 work( l ) = work( l ) + aa
1093 work( k+j ) = work( k+j ) + s
1098 aa = abs( a( i+j*lda ) )
1100 work( i ) = work( i ) + aa
1105 aa = abs( real( a( i+j*lda ) ) )
1115 aa = abs( a( i+j*lda ) )
1117 work( i ) = work( i ) + aa
1120 work( j-1 ) = work( j-1 ) + s
1125 IF(
VALUE .LT. temp .OR.
sisnan( temp ) )
1131 ELSE IF( (
lsame( norm,
'F' ) ) .OR.
1132 $ (
lsame( norm,
'E' ) ) )
THEN
1146 CALL classq( k-j-2, a( k+j+1+j*lda ), 1, scale,
1151 CALL classq( k+j-1, a( 0+j*lda ), 1, scale, s )
1161 IF( aa.NE.zero )
THEN
1162 IF( scale.LT.aa )
THEN
1163 s = one + s*( scale / aa )**2
1166 s = s + ( aa / scale )**2
1169 aa = real( a( l+1 ) )
1171 IF( aa.NE.zero )
THEN
1172 IF( scale.LT.aa )
THEN
1173 s = one + s*( scale / aa )**2
1176 s = s + ( aa / scale )**2
1183 IF( aa.NE.zero )
THEN
1184 IF( scale.LT.aa )
THEN
1185 s = one + s*( scale / aa )**2
1188 s = s + ( aa / scale )**2
1194 CALL classq( n-j-1, a( j+1+j*lda ), 1, scale,
1199 CALL classq( j, a( 0+( 1+j )*lda ), 1, scale,
1207 IF( aa.NE.zero )
THEN
1208 IF( scale.LT.aa )
THEN
1209 s = one + s*( scale / aa )**2
1212 s = s + ( aa / scale )**2
1220 IF( aa.NE.zero )
THEN
1221 IF( scale.LT.aa )
THEN
1222 s = one + s*( scale / aa )**2
1225 s = s + ( aa / scale )**2
1228 aa = real( a( l+1 ) )
1230 IF( aa.NE.zero )
THEN
1231 IF( scale.LT.aa )
THEN
1232 s = one + s*( scale / aa )**2
1235 s = s + ( aa / scale )**2
1246 CALL classq( j, a( 0+( k+j )*lda ), 1, scale,
1251 CALL classq( k, a( 0+j*lda ), 1, scale, s )
1255 CALL classq( k-j-1, a( j+1+( j+k-1 )*lda ), 1,
1265 IF( aa.NE.zero )
THEN
1266 IF( scale.LT.aa )
THEN
1267 s = one + s*( scale / aa )**2
1270 s = s + ( aa / scale )**2
1278 IF( aa.NE.zero )
THEN
1279 IF( scale.LT.aa )
THEN
1280 s = one + s*( scale / aa )**2
1283 s = s + ( aa / scale )**2
1286 aa = real( a( l+1 ) )
1288 IF( aa.NE.zero )
THEN
1289 IF( scale.LT.aa )
THEN
1290 s = one + s*( scale / aa )**2
1293 s = s + ( aa / scale )**2
1301 CALL classq( j, a( 0+j*lda ), 1, scale, s )
1305 CALL classq( k, a( 0+j*lda ), 1, scale, s )
1309 CALL classq( k-j-2, a( j+2+j*lda ), 1, scale,
1320 IF( aa.NE.zero )
THEN
1321 IF( scale.LT.aa )
THEN
1322 s = one + s*( scale / aa )**2
1325 s = s + ( aa / scale )**2
1328 aa = real( a( l+1 ) )
1330 IF( aa.NE.zero )
THEN
1331 IF( scale.LT.aa )
THEN
1332 s = one + s*( scale / aa )**2
1335 s = s + ( aa / scale )**2
1343 IF( aa.NE.zero )
THEN
1344 IF( scale.LT.aa )
THEN
1345 s = one + s*( scale / aa )**2
1348 s = s + ( aa / scale )**2
1360 CALL classq( k-j-1, a( k+j+2+j*lda ), 1, scale,
1365 CALL classq( k+j, a( 0+j*lda ), 1, scale, s )
1375 IF( aa.NE.zero )
THEN
1376 IF( scale.LT.aa )
THEN
1377 s = one + s*( scale / aa )**2
1380 s = s + ( aa / scale )**2
1383 aa = real( a( l+1 ) )
1385 IF( aa.NE.zero )
THEN
1386 IF( scale.LT.aa )
THEN
1387 s = one + s*( scale / aa )**2
1390 s = s + ( aa / scale )**2
1398 CALL classq( n-j-1, a( j+2+j*lda ), 1, scale,
1403 CALL classq( j, a( 0+j*lda ), 1, scale, s )
1413 IF( aa.NE.zero )
THEN
1414 IF( scale.LT.aa )
THEN
1415 s = one + s*( scale / aa )**2
1418 s = s + ( aa / scale )**2
1421 aa = real( a( l+1 ) )
1423 IF( aa.NE.zero )
THEN
1424 IF( scale.LT.aa )
THEN
1425 s = one + s*( scale / aa )**2
1428 s = s + ( aa / scale )**2
1439 CALL classq( j, a( 0+( k+1+j )*lda ), 1, scale,
1444 CALL classq( k, a( 0+j*lda ), 1, scale, s )
1448 CALL classq( k-j-1, a( j+1+( j+k )*lda ), 1,
1459 IF( aa.NE.zero )
THEN
1460 IF( scale.LT.aa )
THEN
1461 s = one + s*( scale / aa )**2
1464 s = s + ( aa / scale )**2
1472 IF( aa.NE.zero )
THEN
1473 IF( scale.LT.aa )
THEN
1474 s = one + s*( scale / aa )**2
1477 s = s + ( aa / scale )**2
1480 aa = real( a( l+1 ) )
1482 IF( aa.NE.zero )
THEN
1483 IF( scale.LT.aa )
THEN
1484 s = one + s*( scale / aa )**2
1487 s = s + ( aa / scale )**2
1496 IF( aa.NE.zero )
THEN
1497 IF( scale.LT.aa )
THEN
1498 s = one + s*( scale / aa )**2
1501 s = s + ( aa / scale )**2
1507 CALL classq( j, a( 0+( j+1 )*lda ), 1, scale,
1512 CALL classq( k, a( 0+j*lda ), 1, scale, s )
1516 CALL classq( k-j-1, a( j+1+j*lda ), 1, scale,
1526 IF( aa.NE.zero )
THEN
1527 IF( scale.LT.aa )
THEN
1528 s = one + s*( scale / aa )**2
1531 s = s + ( aa / scale )**2
1539 IF( aa.NE.zero )
THEN
1540 IF( scale.LT.aa )
THEN
1541 s = one + s*( scale / aa )**2
1544 s = s + ( aa / scale )**2
1547 aa = real( a( l+1 ) )
1549 IF( aa.NE.zero )
THEN
1550 IF( scale.LT.aa )
THEN
1551 s = one + s*( scale / aa )**2
1554 s = s + ( aa / scale )**2
1562 IF( aa.NE.zero )
THEN
1563 IF( scale.LT.aa )
THEN
1564 s = one + s*( scale / aa )**2
1567 s = s + ( aa / scale )**2
1573 VALUE = scale*sqrt( s )