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 )