161 SUBROUTINE zhbgst( VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB,
163 $ LDX, WORK, RWORK, INFO )
171 INTEGER INFO, KA, KB, LDAB, LDBB, LDX, N
174 DOUBLE PRECISION RWORK( * )
175 COMPLEX*16 AB( LDAB, * ), BB( LDBB, * ), WORK( * ),
182 COMPLEX*16 CZERO, CONE
184 parameter( czero = ( 0.0d+0, 0.0d+0 ),
185 $ cone = ( 1.0d+0, 0.0d+0 ), one = 1.0d+0 )
188 LOGICAL UPDATE, UPPER, WANTX
189 INTEGER I, I0, I1, I2, INCA, J, J1, J1T, J2, J2T, K,
190 $ ka1, kb1, kbt, l, m, nr, nrt, nx
192 COMPLEX*16 RA, RA1, T
204 INTRINSIC dble, dconjg, max, min
210 wantx = lsame( vect,
'V' )
211 upper = lsame( uplo,
'U' )
215 IF( .NOT.wantx .AND. .NOT.lsame( vect,
'N' ) )
THEN
217 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
219 ELSE IF( n.LT.0 )
THEN
221 ELSE IF( ka.LT.0 )
THEN
223 ELSE IF( kb.LT.0 .OR. kb.GT.ka )
THEN
225 ELSE IF( ldab.LT.ka+1 )
THEN
227 ELSE IF( ldbb.LT.kb+1 )
THEN
229 ELSE IF( ldx.LT.1 .OR. wantx .AND. ldx.LT.max( 1, n ) )
THEN
233 CALL xerbla(
'ZHBGST', -info )
247 $
CALL zlaset(
'Full', n, n, czero, cone, x, ldx )
345 bii = dble( bb( kb1, i ) )
346 ab( ka1, i ) = ( dble( ab( ka1, i ) ) / bii ) / bii
348 ab( i-j+ka1, j ) = ab( i-j+ka1, j ) / bii
350 DO 30 j = max( 1, i-ka ), i - 1
351 ab( j-i+ka1, i ) = ab( j-i+ka1, i ) / bii
353 DO 60 k = i - kbt, i - 1
355 ab( j-k+ka1, k ) = ab( j-k+ka1, k ) -
357 $ dconjg( ab( k-i+ka1, i ) ) -
358 $ dconjg( bb( k-i+kb1, i ) )*
360 $ dble( ab( ka1, i ) )*
362 $ dconjg( bb( k-i+kb1, i ) )
364 DO 50 j = max( 1, i-ka ), i - kbt - 1
365 ab( j-k+ka1, k ) = ab( j-k+ka1, k ) -
366 $ dconjg( bb( k-i+kb1, i ) )*
371 DO 70 k = max( j-ka, i-kbt ), i - 1
372 ab( k-j+ka1, j ) = ab( k-j+ka1, j ) -
373 $ bb( k-i+kb1, i )*ab( i-j+ka1, j )
381 CALL zdscal( n-m, one / bii, x( m+1, i ), 1 )
383 $
CALL zgerc( n-m, kbt, -cone, x( m+1, i ), 1,
384 $ bb( kb1-kbt, i ), 1, x( m+1, i-kbt ),
390 ra1 = ab( i-i1+ka1, i1 )
403 IF( i-k+ka.LT.n .AND. i-k.GT.1 )
THEN
407 CALL zlartg( ab( k+1, i-k+ka ), ra1,
408 $ rwork( i-k+ka-m ), work( i-k+ka-m ), ra )
413 t = -bb( kb1-k, i )*ra1
414 work( i-k ) = rwork( i-k+ka-m )*t -
415 $ dconjg( work( i-k+ka-m ) )*
417 ab( 1, i-k+ka ) = work( i-k+ka-m )*t +
418 $ rwork( i-k+ka-m )*ab( 1, i-k+ka )
422 j2 = i - k - 1 + max( 1, k-i0+2 )*ka1
423 nr = ( n-j2+ka ) / ka1
424 j1 = j2 + ( nr-1 )*ka1
426 j2t = max( j2, i+2*ka-k+1 )
430 nrt = ( n-j2t+ka ) / ka1
431 DO 90 j = j2t, j1, ka1
436 work( j-m ) = work( j-m )*ab( 1, j+1 )
437 ab( 1, j+1 ) = rwork( j-m )*ab( 1, j+1 )
444 $
CALL zlargv( nrt, ab( 1, j2t ), inca, work( j2t-m ),
446 $ rwork( j2t-m ), ka1 )
452 CALL zlartv( nr, ab( ka1-l, j2 ), inca,
453 $ ab( ka-l, j2+1 ), inca, rwork( j2-m ),
454 $ work( j2-m ), ka1 )
460 CALL zlar2v( nr, ab( ka1, j2 ), ab( ka1, j2+1 ),
461 $ ab( ka, j2+1 ), inca, rwork( j2-m ),
462 $ work( j2-m ), ka1 )
464 CALL zlacgv( nr, work( j2-m ), ka1 )
469 DO 110 l = ka - 1, kb - k + 1, -1
470 nrt = ( n-j2+l ) / ka1
472 $
CALL zlartv( nrt, ab( l, j2+ka1-l ), inca,
473 $ ab( l+1, j2+ka1-l ), inca, rwork( j2-m ),
474 $ work( j2-m ), ka1 )
481 DO 120 j = j2, j1, ka1
482 CALL zrot( n-m, x( m+1, j ), 1, x( m+1, j+1 ), 1,
483 $ rwork( j-m ), dconjg( work( j-m ) ) )
489 IF( i2.LE.n .AND. kbt.GT.0 )
THEN
494 work( i-kbt ) = -bb( kb1-kbt, i )*ra1
500 j2 = i - k - 1 + max( 2, k-i0+1 )*ka1
502 j2 = i - k - 1 + max( 1, k-i0+1 )*ka1
507 DO 140 l = kb - k, 1, -1
508 nrt = ( n-j2+ka+l ) / ka1
510 $
CALL zlartv( nrt, ab( l, j2-l+1 ), inca,
511 $ ab( l+1, j2-l+1 ), inca, rwork( j2-ka ),
512 $ work( j2-ka ), ka1 )
514 nr = ( n-j2+ka ) / ka1
515 j1 = j2 + ( nr-1 )*ka1
516 DO 150 j = j1, j2, -ka1
517 work( j ) = work( j-ka )
518 rwork( j ) = rwork( j-ka )
520 DO 160 j = j2, j1, ka1
525 work( j ) = work( j )*ab( 1, j+1 )
526 ab( 1, j+1 ) = rwork( j )*ab( 1, j+1 )
529 IF( i-k.LT.n-ka .AND. k.LE.kbt )
530 $ work( i-k+ka ) = work( i-k )
535 j2 = i - k - 1 + max( 1, k-i0+1 )*ka1
536 nr = ( n-j2+ka ) / ka1
537 j1 = j2 + ( nr-1 )*ka1
543 CALL zlargv( nr, ab( 1, j2 ), inca, work( j2 ), ka1,
549 CALL zlartv( nr, ab( ka1-l, j2 ), inca,
550 $ ab( ka-l, j2+1 ), inca, rwork( j2 ),
557 CALL zlar2v( nr, ab( ka1, j2 ), ab( ka1, j2+1 ),
558 $ ab( ka, j2+1 ), inca, rwork( j2 ),
561 CALL zlacgv( nr, work( j2 ), ka1 )
566 DO 190 l = ka - 1, kb - k + 1, -1
567 nrt = ( n-j2+l ) / ka1
569 $
CALL zlartv( nrt, ab( l, j2+ka1-l ), inca,
570 $ ab( l+1, j2+ka1-l ), inca, rwork( j2 ),
578 DO 200 j = j2, j1, ka1
579 CALL zrot( n-m, x( m+1, j ), 1, x( m+1, j+1 ), 1,
580 $ rwork( j ), dconjg( work( j ) ) )
586 j2 = i - k - 1 + max( 1, k-i0+2 )*ka1
590 DO 220 l = kb - k, 1, -1
591 nrt = ( n-j2+l ) / ka1
593 $
CALL zlartv( nrt, ab( l, j2+ka1-l ), inca,
594 $ ab( l+1, j2+ka1-l ), inca, rwork( j2-m ),
595 $ work( j2-m ), ka1 )
600 DO 240 j = n - 1, j2 + ka, -1
601 rwork( j-m ) = rwork( j-ka-m )
602 work( j-m ) = work( j-ka-m )
614 bii = dble( bb( 1, i ) )
615 ab( 1, i ) = ( dble( ab( 1, i ) ) / bii ) / bii
617 ab( j-i+1, i ) = ab( j-i+1, i ) / bii
619 DO 260 j = max( 1, i-ka ), i - 1
620 ab( i-j+1, j ) = ab( i-j+1, j ) / bii
622 DO 290 k = i - kbt, i - 1
623 DO 270 j = i - kbt, k
624 ab( k-j+1, j ) = ab( k-j+1, j ) -
625 $ bb( i-j+1, j )*dconjg( ab( i-k+1,
626 $ k ) ) - dconjg( bb( i-k+1, k ) )*
627 $ ab( i-j+1, j ) + dble( ab( 1, i ) )*
628 $ bb( i-j+1, j )*dconjg( bb( i-k+1,
631 DO 280 j = max( 1, i-ka ), i - kbt - 1
632 ab( k-j+1, j ) = ab( k-j+1, j ) -
633 $ dconjg( bb( i-k+1, k ) )*
638 DO 300 k = max( j-ka, i-kbt ), i - 1
639 ab( j-k+1, k ) = ab( j-k+1, k ) -
640 $ bb( i-k+1, k )*ab( j-i+1, i )
648 CALL zdscal( n-m, one / bii, x( m+1, i ), 1 )
650 $
CALL zgeru( n-m, kbt, -cone, x( m+1, i ), 1,
651 $ bb( kbt+1, i-kbt ), ldbb-1,
652 $ x( m+1, i-kbt ), ldx )
657 ra1 = ab( i1-i+1, i )
670 IF( i-k+ka.LT.n .AND. i-k.GT.1 )
THEN
674 CALL zlartg( ab( ka1-k, i ), ra1,
676 $ work( i-k+ka-m ), ra )
681 t = -bb( k+1, i-k )*ra1
682 work( i-k ) = rwork( i-k+ka-m )*t -
683 $ dconjg( work( i-k+ka-m ) )*
685 ab( ka1, i-k ) = work( i-k+ka-m )*t +
686 $ rwork( i-k+ka-m )*ab( ka1, i-k )
690 j2 = i - k - 1 + max( 1, k-i0+2 )*ka1
691 nr = ( n-j2+ka ) / ka1
692 j1 = j2 + ( nr-1 )*ka1
694 j2t = max( j2, i+2*ka-k+1 )
698 nrt = ( n-j2t+ka ) / ka1
699 DO 320 j = j2t, j1, ka1
704 work( j-m ) = work( j-m )*ab( ka1, j-ka+1 )
705 ab( ka1, j-ka+1 ) = rwork( j-m )*ab( ka1, j-ka+1 )
712 $
CALL zlargv( nrt, ab( ka1, j2t-ka ), inca,
714 $ ka1, rwork( j2t-m ), ka1 )
720 CALL zlartv( nr, ab( l+1, j2-l ), inca,
721 $ ab( l+2, j2-l ), inca, rwork( j2-m ),
722 $ work( j2-m ), ka1 )
728 CALL zlar2v( nr, ab( 1, j2 ), ab( 1, j2+1 ), ab( 2,
730 $ inca, rwork( j2-m ), work( j2-m ), ka1 )
732 CALL zlacgv( nr, work( j2-m ), ka1 )
737 DO 340 l = ka - 1, kb - k + 1, -1
738 nrt = ( n-j2+l ) / ka1
740 $
CALL zlartv( nrt, ab( ka1-l+1, j2 ), inca,
741 $ ab( ka1-l, j2+1 ), inca, rwork( j2-m ),
742 $ work( j2-m ), ka1 )
749 DO 350 j = j2, j1, ka1
750 CALL zrot( n-m, x( m+1, j ), 1, x( m+1, j+1 ), 1,
751 $ rwork( j-m ), work( j-m ) )
757 IF( i2.LE.n .AND. kbt.GT.0 )
THEN
762 work( i-kbt ) = -bb( kbt+1, i-kbt )*ra1
768 j2 = i - k - 1 + max( 2, k-i0+1 )*ka1
770 j2 = i - k - 1 + max( 1, k-i0+1 )*ka1
775 DO 370 l = kb - k, 1, -1
776 nrt = ( n-j2+ka+l ) / ka1
778 $
CALL zlartv( nrt, ab( ka1-l+1, j2-ka ), inca,
779 $ ab( ka1-l, j2-ka+1 ), inca,
780 $ rwork( j2-ka ), work( j2-ka ), ka1 )
782 nr = ( n-j2+ka ) / ka1
783 j1 = j2 + ( nr-1 )*ka1
784 DO 380 j = j1, j2, -ka1
785 work( j ) = work( j-ka )
786 rwork( j ) = rwork( j-ka )
788 DO 390 j = j2, j1, ka1
793 work( j ) = work( j )*ab( ka1, j-ka+1 )
794 ab( ka1, j-ka+1 ) = rwork( j )*ab( ka1, j-ka+1 )
797 IF( i-k.LT.n-ka .AND. k.LE.kbt )
798 $ work( i-k+ka ) = work( i-k )
803 j2 = i - k - 1 + max( 1, k-i0+1 )*ka1
804 nr = ( n-j2+ka ) / ka1
805 j1 = j2 + ( nr-1 )*ka1
811 CALL zlargv( nr, ab( ka1, j2-ka ), inca, work( j2 ),
818 CALL zlartv( nr, ab( l+1, j2-l ), inca,
819 $ ab( l+2, j2-l ), inca, rwork( j2 ),
826 CALL zlar2v( nr, ab( 1, j2 ), ab( 1, j2+1 ), ab( 2,
828 $ inca, rwork( j2 ), work( j2 ), ka1 )
830 CALL zlacgv( nr, work( j2 ), ka1 )
835 DO 420 l = ka - 1, kb - k + 1, -1
836 nrt = ( n-j2+l ) / ka1
838 $
CALL zlartv( nrt, ab( ka1-l+1, j2 ), inca,
839 $ ab( ka1-l, j2+1 ), inca, rwork( j2 ),
847 DO 430 j = j2, j1, ka1
848 CALL zrot( n-m, x( m+1, j ), 1, x( m+1, j+1 ), 1,
849 $ rwork( j ), work( j ) )
855 j2 = i - k - 1 + max( 1, k-i0+2 )*ka1
859 DO 450 l = kb - k, 1, -1
860 nrt = ( n-j2+l ) / ka1
862 $
CALL zlartv( nrt, ab( ka1-l+1, j2 ), inca,
863 $ ab( ka1-l, j2+1 ), inca, rwork( j2-m ),
864 $ work( j2-m ), ka1 )
869 DO 470 j = n - 1, j2 + ka, -1
870 rwork( j-m ) = rwork( j-ka-m )
871 work( j-m ) = work( j-ka-m )
920 IF( i.LT.m-kbt )
THEN
934 bii = dble( bb( kb1, i ) )
935 ab( ka1, i ) = ( dble( ab( ka1, i ) ) / bii ) / bii
937 ab( j-i+ka1, i ) = ab( j-i+ka1, i ) / bii
939 DO 510 j = i + 1, min( n, i+ka )
940 ab( i-j+ka1, j ) = ab( i-j+ka1, j ) / bii
942 DO 540 k = i + 1, i + kbt
943 DO 520 j = k, i + kbt
944 ab( k-j+ka1, j ) = ab( k-j+ka1, j ) -
946 $ dconjg( ab( i-k+ka1, k ) ) -
947 $ dconjg( bb( i-k+kb1, k ) )*
949 $ dble( ab( ka1, i ) )*
951 $ dconjg( bb( i-k+kb1, k ) )
953 DO 530 j = i + kbt + 1, min( n, i+ka )
954 ab( k-j+ka1, j ) = ab( k-j+ka1, j ) -
955 $ dconjg( bb( i-k+kb1, k ) )*
960 DO 550 k = i + 1, min( j+ka, i+kbt )
961 ab( j-k+ka1, k ) = ab( j-k+ka1, k ) -
962 $ bb( i-k+kb1, k )*ab( j-i+ka1, i )
970 CALL zdscal( nx, one / bii, x( 1, i ), 1 )
972 $
CALL zgeru( nx, kbt, -cone, x( 1, i ), 1,
973 $ bb( kb, i+1 ), ldbb-1, x( 1, i+1 ), ldx )
978 ra1 = ab( i1-i+ka1, i )
990 IF( i+k-ka1.GT.0 .AND. i+k.LT.m )
THEN
994 CALL zlartg( ab( k+1, i ), ra1, rwork( i+k-ka ),
995 $ work( i+k-ka ), ra )
1000 t = -bb( kb1-k, i+k )*ra1
1001 work( m-kb+i+k ) = rwork( i+k-ka )*t -
1002 $ dconjg( work( i+k-ka ) )*
1004 ab( 1, i+k ) = work( i+k-ka )*t +
1005 $ rwork( i+k-ka )*ab( 1, i+k )
1009 j2 = i + k + 1 - max( 1, k+i0-m+1 )*ka1
1010 nr = ( j2+ka-1 ) / ka1
1011 j1 = j2 - ( nr-1 )*ka1
1013 j2t = min( j2, i-2*ka+k-1 )
1017 nrt = ( j2t+ka-1 ) / ka1
1018 DO 570 j = j1, j2t, ka1
1023 work( j ) = work( j )*ab( 1, j+ka-1 )
1024 ab( 1, j+ka-1 ) = rwork( j )*ab( 1, j+ka-1 )
1031 $
CALL zlargv( nrt, ab( 1, j1+ka ), inca, work( j1 ),
1033 $ rwork( j1 ), ka1 )
1038 DO 580 l = 1, ka - 1
1039 CALL zlartv( nr, ab( ka1-l, j1+l ), inca,
1040 $ ab( ka-l, j1+l ), inca, rwork( j1 ),
1047 CALL zlar2v( nr, ab( ka1, j1 ), ab( ka1, j1-1 ),
1048 $ ab( ka, j1 ), inca, rwork( j1 ), work( j1 ),
1051 CALL zlacgv( nr, work( j1 ), ka1 )
1056 DO 590 l = ka - 1, kb - k + 1, -1
1057 nrt = ( j2+l-1 ) / ka1
1058 j1t = j2 - ( nrt-1 )*ka1
1060 $
CALL zlartv( nrt, ab( l, j1t ), inca,
1061 $ ab( l+1, j1t-1 ), inca, rwork( j1t ),
1062 $ work( j1t ), ka1 )
1069 DO 600 j = j1, j2, ka1
1070 CALL zrot( nx, x( 1, j ), 1, x( 1, j-1 ), 1,
1071 $ rwork( j ), work( j ) )
1077 IF( i2.GT.0 .AND. kbt.GT.0 )
THEN
1082 work( m-kb+i+kbt ) = -bb( kb1-kbt, i+kbt )*ra1
1086 DO 650 k = kb, 1, -1
1088 j2 = i + k + 1 - max( 2, k+i0-m )*ka1
1090 j2 = i + k + 1 - max( 1, k+i0-m )*ka1
1095 DO 620 l = kb - k, 1, -1
1096 nrt = ( j2+ka+l-1 ) / ka1
1097 j1t = j2 - ( nrt-1 )*ka1
1099 $
CALL zlartv( nrt, ab( l, j1t+ka ), inca,
1100 $ ab( l+1, j1t+ka-1 ), inca,
1101 $ rwork( m-kb+j1t+ka ),
1102 $ work( m-kb+j1t+ka ), ka1 )
1104 nr = ( j2+ka-1 ) / ka1
1105 j1 = j2 - ( nr-1 )*ka1
1106 DO 630 j = j1, j2, ka1
1107 work( m-kb+j ) = work( m-kb+j+ka )
1108 rwork( m-kb+j ) = rwork( m-kb+j+ka )
1110 DO 640 j = j1, j2, ka1
1115 work( m-kb+j ) = work( m-kb+j )*ab( 1, j+ka-1 )
1116 ab( 1, j+ka-1 ) = rwork( m-kb+j )*ab( 1, j+ka-1 )
1119 IF( i+k.GT.ka1 .AND. k.LE.kbt )
1120 $ work( m-kb+i+k-ka ) = work( m-kb+i+k )
1124 DO 690 k = kb, 1, -1
1125 j2 = i + k + 1 - max( 1, k+i0-m )*ka1
1126 nr = ( j2+ka-1 ) / ka1
1127 j1 = j2 - ( nr-1 )*ka1
1133 CALL zlargv( nr, ab( 1, j1+ka ), inca,
1135 $ ka1, rwork( m-kb+j1 ), ka1 )
1139 DO 660 l = 1, ka - 1
1140 CALL zlartv( nr, ab( ka1-l, j1+l ), inca,
1141 $ ab( ka-l, j1+l ), inca, rwork( m-kb+j1 ),
1142 $ work( m-kb+j1 ), ka1 )
1148 CALL zlar2v( nr, ab( ka1, j1 ), ab( ka1, j1-1 ),
1149 $ ab( ka, j1 ), inca, rwork( m-kb+j1 ),
1150 $ work( m-kb+j1 ), ka1 )
1152 CALL zlacgv( nr, work( m-kb+j1 ), ka1 )
1157 DO 670 l = ka - 1, kb - k + 1, -1
1158 nrt = ( j2+l-1 ) / ka1
1159 j1t = j2 - ( nrt-1 )*ka1
1161 $
CALL zlartv( nrt, ab( l, j1t ), inca,
1162 $ ab( l+1, j1t-1 ), inca,
1163 $ rwork( m-kb+j1t ), work( m-kb+j1t ),
1171 DO 680 j = j1, j2, ka1
1172 CALL zrot( nx, x( 1, j ), 1, x( 1, j-1 ), 1,
1173 $ rwork( m-kb+j ), work( m-kb+j ) )
1178 DO 710 k = 1, kb - 1
1179 j2 = i + k + 1 - max( 1, k+i0-m+1 )*ka1
1183 DO 700 l = kb - k, 1, -1
1184 nrt = ( j2+l-1 ) / ka1
1185 j1t = j2 - ( nrt-1 )*ka1
1187 $
CALL zlartv( nrt, ab( l, j1t ), inca,
1188 $ ab( l+1, j1t-1 ), inca, rwork( j1t ),
1189 $ work( j1t ), ka1 )
1194 DO 720 j = 2, i2 - ka
1195 rwork( j ) = rwork( j+ka )
1196 work( j ) = work( j+ka )
1208 bii = dble( bb( 1, i ) )
1209 ab( 1, i ) = ( dble( ab( 1, i ) ) / bii ) / bii
1210 DO 730 j = i1, i - 1
1211 ab( i-j+1, j ) = ab( i-j+1, j ) / bii
1213 DO 740 j = i + 1, min( n, i+ka )
1214 ab( j-i+1, i ) = ab( j-i+1, i ) / bii
1216 DO 770 k = i + 1, i + kbt
1217 DO 750 j = k, i + kbt
1218 ab( j-k+1, k ) = ab( j-k+1, k ) -
1219 $ bb( j-i+1, i )*dconjg( ab( k-i+1,
1220 $ i ) ) - dconjg( bb( k-i+1, i ) )*
1221 $ ab( j-i+1, i ) + dble( ab( 1, i ) )*
1222 $ bb( j-i+1, i )*dconjg( bb( k-i+1,
1225 DO 760 j = i + kbt + 1, min( n, i+ka )
1226 ab( j-k+1, k ) = ab( j-k+1, k ) -
1227 $ dconjg( bb( k-i+1, i ) )*
1232 DO 780 k = i + 1, min( j+ka, i+kbt )
1233 ab( k-j+1, j ) = ab( k-j+1, j ) -
1234 $ bb( k-i+1, i )*ab( i-j+1, j )
1242 CALL zdscal( nx, one / bii, x( 1, i ), 1 )
1244 $
CALL zgerc( nx, kbt, -cone, x( 1, i ), 1, bb( 2,
1246 $ 1, x( 1, i+1 ), ldx )
1251 ra1 = ab( i-i1+1, i1 )
1257 DO 840 k = 1, kb - 1
1263 IF( i+k-ka1.GT.0 .AND. i+k.LT.m )
THEN
1267 CALL zlartg( ab( ka1-k, i+k-ka ), ra1,
1268 $ rwork( i+k-ka ), work( i+k-ka ), ra )
1273 t = -bb( k+1, i )*ra1
1274 work( m-kb+i+k ) = rwork( i+k-ka )*t -
1275 $ dconjg( work( i+k-ka ) )*
1277 ab( ka1, i+k-ka ) = work( i+k-ka )*t +
1278 $ rwork( i+k-ka )*ab( ka1, i+k-ka )
1282 j2 = i + k + 1 - max( 1, k+i0-m+1 )*ka1
1283 nr = ( j2+ka-1 ) / ka1
1284 j1 = j2 - ( nr-1 )*ka1
1286 j2t = min( j2, i-2*ka+k-1 )
1290 nrt = ( j2t+ka-1 ) / ka1
1291 DO 800 j = j1, j2t, ka1
1296 work( j ) = work( j )*ab( ka1, j-1 )
1297 ab( ka1, j-1 ) = rwork( j )*ab( ka1, j-1 )
1304 $
CALL zlargv( nrt, ab( ka1, j1 ), inca, work( j1 ),
1306 $ rwork( j1 ), ka1 )
1311 DO 810 l = 1, ka - 1
1312 CALL zlartv( nr, ab( l+1, j1 ), inca, ab( l+2,
1314 $ inca, rwork( j1 ), work( j1 ), ka1 )
1320 CALL zlar2v( nr, ab( 1, j1 ), ab( 1, j1-1 ),
1321 $ ab( 2, j1-1 ), inca, rwork( j1 ),
1324 CALL zlacgv( nr, work( j1 ), ka1 )
1329 DO 820 l = ka - 1, kb - k + 1, -1
1330 nrt = ( j2+l-1 ) / ka1
1331 j1t = j2 - ( nrt-1 )*ka1
1333 $
CALL zlartv( nrt, ab( ka1-l+1, j1t-ka1+l ), inca,
1334 $ ab( ka1-l, j1t-ka1+l ), inca,
1335 $ rwork( j1t ), work( j1t ), ka1 )
1342 DO 830 j = j1, j2, ka1
1343 CALL zrot( nx, x( 1, j ), 1, x( 1, j-1 ), 1,
1344 $ rwork( j ), dconjg( work( j ) ) )
1350 IF( i2.GT.0 .AND. kbt.GT.0 )
THEN
1355 work( m-kb+i+kbt ) = -bb( kbt+1, i )*ra1
1359 DO 880 k = kb, 1, -1
1361 j2 = i + k + 1 - max( 2, k+i0-m )*ka1
1363 j2 = i + k + 1 - max( 1, k+i0-m )*ka1
1368 DO 850 l = kb - k, 1, -1
1369 nrt = ( j2+ka+l-1 ) / ka1
1370 j1t = j2 - ( nrt-1 )*ka1
1372 $
CALL zlartv( nrt, ab( ka1-l+1, j1t+l-1 ), inca,
1373 $ ab( ka1-l, j1t+l-1 ), inca,
1374 $ rwork( m-kb+j1t+ka ),
1375 $ work( m-kb+j1t+ka ), ka1 )
1377 nr = ( j2+ka-1 ) / ka1
1378 j1 = j2 - ( nr-1 )*ka1
1379 DO 860 j = j1, j2, ka1
1380 work( m-kb+j ) = work( m-kb+j+ka )
1381 rwork( m-kb+j ) = rwork( m-kb+j+ka )
1383 DO 870 j = j1, j2, ka1
1388 work( m-kb+j ) = work( m-kb+j )*ab( ka1, j-1 )
1389 ab( ka1, j-1 ) = rwork( m-kb+j )*ab( ka1, j-1 )
1392 IF( i+k.GT.ka1 .AND. k.LE.kbt )
1393 $ work( m-kb+i+k-ka ) = work( m-kb+i+k )
1397 DO 920 k = kb, 1, -1
1398 j2 = i + k + 1 - max( 1, k+i0-m )*ka1
1399 nr = ( j2+ka-1 ) / ka1
1400 j1 = j2 - ( nr-1 )*ka1
1406 CALL zlargv( nr, ab( ka1, j1 ), inca, work( m-kb+j1 ),
1407 $ ka1, rwork( m-kb+j1 ), ka1 )
1411 DO 890 l = 1, ka - 1
1412 CALL zlartv( nr, ab( l+1, j1 ), inca, ab( l+2,
1414 $ inca, rwork( m-kb+j1 ), work( m-kb+j1 ),
1421 CALL zlar2v( nr, ab( 1, j1 ), ab( 1, j1-1 ),
1422 $ ab( 2, j1-1 ), inca, rwork( m-kb+j1 ),
1423 $ work( m-kb+j1 ), ka1 )
1425 CALL zlacgv( nr, work( m-kb+j1 ), ka1 )
1430 DO 900 l = ka - 1, kb - k + 1, -1
1431 nrt = ( j2+l-1 ) / ka1
1432 j1t = j2 - ( nrt-1 )*ka1
1434 $
CALL zlartv( nrt, ab( ka1-l+1, j1t-ka1+l ), inca,
1435 $ ab( ka1-l, j1t-ka1+l ), inca,
1436 $ rwork( m-kb+j1t ), work( m-kb+j1t ),
1444 DO 910 j = j1, j2, ka1
1445 CALL zrot( nx, x( 1, j ), 1, x( 1, j-1 ), 1,
1446 $ rwork( m-kb+j ), dconjg( work( m-kb+j ) ) )
1451 DO 940 k = 1, kb - 1
1452 j2 = i + k + 1 - max( 1, k+i0-m+1 )*ka1
1456 DO 930 l = kb - k, 1, -1
1457 nrt = ( j2+l-1 ) / ka1
1458 j1t = j2 - ( nrt-1 )*ka1
1460 $
CALL zlartv( nrt, ab( ka1-l+1, j1t-ka1+l ), inca,
1461 $ ab( ka1-l, j1t-ka1+l ), inca,
1462 $ rwork( j1t ), work( j1t ), ka1 )
1467 DO 950 j = 2, i2 - ka
1468 rwork( j ) = rwork( j+ka )
1469 work( j ) = work( j+ka )