10425
10426
10427
10428
10429
10430
10431
10432      CHARACTER*1        UPLO, AFORM
10433      INTEGER            IMBLOC, INBLOC, LCMT00, LDA, LMBLOC, LNBLOC,
10434     $                   MB, MBLKS, NB, NBLKS
10435
10436
10437      INTEGER            IMULADD( 4, * ), IRAN( * ), JMP( * )
10438      COMPLEX            A( LDA, * )
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541      INTEGER            JMP_1, JMP_COL, JMP_IMBV, JMP_INBV, JMP_LEN,
10542     $                   JMP_MB, JMP_NB, JMP_NPIMBLOC, JMP_NPMB,
10543     $                   JMP_NQINBLOC, JMP_NQNB, JMP_ROW
10544      parameter( jmp_1 = 1, jmp_row = 2, jmp_col = 3,
10545     $                   jmp_mb = 4, jmp_imbv = 5, jmp_npmb = 6,
10546     $                   jmp_npimbloc = 7, jmp_nb = 8, jmp_inbv = 9,
10547     $                   jmp_nqnb = 10, jmp_nqinbloc = 11,
10548     $                   jmp_len = 11 )
10549      REAL               ZERO
10550      parameter( zero = 0.0e+0 )
10551
10552
10553      INTEGER            I, IB, IBLK, II, IK, ITMP, JB, JBLK, JJ, JK,
10554     $                   JTMP, LCMTC, LCMTR, LOW, MNB, UPP
10555      COMPLEX            DUMMY
10556
10557
10558      INTEGER            IB0( 2 ), IB1( 2 ), IB2( 2 ), IB3( 2 )
10559
10560
10562
10563
10564      LOGICAL            LSAME
10565      REAL               PB_SRAND
10567
10568
10570
10571
10572
10573      DO 10 i = 1, 2
10574         ib1( i ) = iran( i )
10575         ib2( i ) = iran( i )
10576         ib3( i ) = iran( i )
10577   10 CONTINUE
10578
10579      IF( 
lsame( aform, 
'N' ) ) 
THEN 
10580
10581
10582
10583         jj = 1
10584
10585         DO 50 jblk = 1, nblks
10586
10587            IF( jblk.EQ.1 ) THEN
10588               jb = inbloc
10589            ELSE IF( jblk.EQ.nblks ) THEN
10590               jb = lnbloc
10591            ELSE
10592               jb = nb
10593            END IF
10594
10595            DO 40 jk = jj, jj + jb - 1
10596
10597               ii = 1
10598
10599               DO 30 iblk = 1, mblks
10600
10601                  IF( iblk.EQ.1 ) THEN
10602                     ib = imbloc
10603                  ELSE IF( iblk.EQ.mblks ) THEN
10604                     ib = lmbloc
10605                  ELSE
10606                     ib = mb
10607                  END IF
10608
10609
10610
10611                  DO 20 ik = ii, ii + ib - 1
10613   20             CONTINUE
10614
10615                  ii = ii + ib
10616
10617                  IF( iblk.EQ.1 ) THEN
10618
10619
10620
10621                     CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
 
10622     $                               ib0 )
10623
10624                  ELSE
10625
10626
10627
10628                     CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1, ib0 )
 
10629
10630                  END IF
10631
10632                  ib1( 1 ) = ib0( 1 )
10633                  ib1( 2 ) = ib0( 2 )
10634
10635   30          CONTINUE
10636
10637
10638
10639               CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
 
10640
10641               ib1( 1 ) = ib0( 1 )
10642               ib1( 2 ) = ib0( 2 )
10643               ib2( 1 ) = ib0( 1 )
10644               ib2( 2 ) = ib0( 2 )
10645
10646   40       CONTINUE
10647
10648            jj = jj + jb
10649
10650            IF( jblk.EQ.1 ) THEN
10651
10652
10653
10654               CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
 
10655
10656            ELSE
10657
10658
10659
10660               CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
 
10661
10662            END IF
10663
10664            ib1( 1 ) = ib0( 1 )
10665            ib1( 2 ) = ib0( 2 )
10666            ib2( 1 ) = ib0( 1 )
10667            ib2( 2 ) = ib0( 2 )
10668            ib3( 1 ) = ib0( 1 )
10669            ib3( 2 ) = ib0( 2 )
10670
10671   50    CONTINUE
10672
10673      ELSE IF( 
lsame( aform, 
'T' ) ) 
THEN 
10674
10675
10676
10677
10678         ii = 1
10679
10680         DO 90 iblk = 1, mblks
10681
10682            IF( iblk.EQ.1 ) THEN
10683               ib = imbloc
10684            ELSE IF( iblk.EQ.mblks ) THEN
10685               ib = lmbloc
10686            ELSE
10687               ib = mb
10688            END IF
10689
10690            DO 80 ik = ii, ii + ib - 1
10691
10692               jj = 1
10693
10694               DO 70 jblk = 1, nblks
10695
10696                  IF( jblk.EQ.1 ) THEN
10697                     jb = inbloc
10698                  ELSE IF( jblk.EQ.nblks ) THEN
10699                     jb = lnbloc
10700                  ELSE
10701                     jb = nb
10702                  END IF
10703
10704
10705
10706                  DO 60 jk = jj, jj + jb - 1
10708   60             CONTINUE
10709
10710                  jj = jj + jb
10711
10712                  IF( jblk.EQ.1 ) THEN
10713
10714
10715
10716                     CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
 
10717     $                               ib0 )
10718
10719                  ELSE
10720
10721
10722
10723                     CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1, ib0 )
 
10724
10725                  END IF
10726
10727                  ib1( 1 ) = ib0( 1 )
10728                  ib1( 2 ) = ib0( 2 )
10729
10730   70          CONTINUE
10731
10732
10733
10734               CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
 
10735
10736               ib1( 1 ) = ib0( 1 )
10737               ib1( 2 ) = ib0( 2 )
10738               ib2( 1 ) = ib0( 1 )
10739               ib2( 2 ) = ib0( 2 )
10740
10741   80       CONTINUE
10742
10743            ii = ii + ib
10744
10745            IF( iblk.EQ.1 ) THEN
10746
10747
10748
10749               CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
 
10750
10751            ELSE
10752
10753
10754
10755               CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
 
10756
10757            END IF
10758
10759            ib1( 1 ) = ib0( 1 )
10760            ib1( 2 ) = ib0( 2 )
10761            ib2( 1 ) = ib0( 1 )
10762            ib2( 2 ) = ib0( 2 )
10763            ib3( 1 ) = ib0( 1 )
10764            ib3( 2 ) = ib0( 2 )
10765
10766   90    CONTINUE
10767
10768      ELSE IF( 
lsame( aform, 
'S' ) ) 
THEN 
10769
10770
10771
10772         IF( 
lsame( uplo, 
'L' ) ) 
THEN 
10773
10774
10775
10776            jj = 1
10777            lcmtc = lcmt00
10778
10779            DO 170 jblk = 1, nblks
10780
10781               IF( jblk.EQ.1 ) THEN
10782                  jb  = inbloc
10783                  low = 1 - inbloc
10784               ELSE IF( jblk.EQ.nblks ) THEN
10785                  jb = lnbloc
10786                  low = 1 - nb
10787               ELSE
10788                  jb  = nb
10789                  low = 1 - nb
10790               END IF
10791
10792               DO 160 jk = jj, jj + jb - 1
10793
10794                  ii = 1
10795                  lcmtr = lcmtc
10796
10797                  DO 150 iblk = 1, mblks
10798
10799                     IF( iblk.EQ.1 ) THEN
10800                        ib  = imbloc
10801                        upp = imbloc - 1
10802                     ELSE IF( iblk.EQ.mblks ) THEN
10803                        ib  = lmbloc
10804                        upp = mb - 1
10805                     ELSE
10806                        ib  = mb
10807                        upp = mb - 1
10808                     END IF
10809
10810
10811
10812                     IF( lcmtr.GT.upp ) THEN
10813
10814                        DO 100 ik = ii, ii + ib - 1
10817  100                   CONTINUE
10818
10819                     ELSE IF( lcmtr.GE.low ) THEN
10820
10821                        jtmp = jk - jj + 1
10822                        mnb  = 
max( 0, -lcmtr )
 
10823
10824                        IF( jtmp.LE.
min( mnb, jb ) ) 
THEN 
10825
10826                           DO 110 ik = ii, ii + ib - 1
10829  110                      CONTINUE
10830
10831                        ELSE IF( ( jtmp.GE.( mnb + 1 )         ) .AND.
10832     $                           ( jtmp.LE.
min( ib-lcmtr, jb ) ) ) 
THEN 
10833
10834                           itmp = ii + jtmp + lcmtr - 1
10835
10836                           DO 120 ik = ii, itmp - 1
10839  120                      CONTINUE
10840
10841                           DO 130 ik = itmp, ii + ib - 1
10844  130                      CONTINUE
10845
10846                        END IF
10847
10848                     ELSE
10849
10850                        DO 140 ik = ii, ii + ib - 1
10853  140                   CONTINUE
10854
10855                     END IF
10856
10857                     ii = ii + ib
10858
10859                     IF( iblk.EQ.1 ) THEN
10860
10861
10862
10863                        lcmtr = lcmtr - jmp( jmp_npimbloc )
10864                        CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
 
10865     $                                  ib0 )
10866
10867                     ELSE
10868
10869
10870
10871                        lcmtr = lcmtr - jmp( jmp_npmb )
10872                        CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1,
 
10873     $                                  ib0 )
10874
10875                     END IF
10876
10877                     ib1( 1 ) = ib0( 1 )
10878                     ib1( 2 ) = ib0( 2 )
10879
10880  150             CONTINUE
10881
10882
10883
10884                  CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
 
10885
10886                  ib1( 1 ) = ib0( 1 )
10887                  ib1( 2 ) = ib0( 2 )
10888                  ib2( 1 ) = ib0( 1 )
10889                  ib2( 2 ) = ib0( 2 )
10890
10891  160          CONTINUE
10892
10893               jj = jj + jb
10894
10895               IF( jblk.EQ.1 ) THEN
10896
10897
10898
10899                  lcmtc = lcmtc + jmp( jmp_nqinbloc )
10900                  CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
 
10901
10902               ELSE
10903
10904
10905
10906                  lcmtc = lcmtc + jmp( jmp_nqnb )
10907                  CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
 
10908
10909               END IF
10910
10911               ib1( 1 ) = ib0( 1 )
10912               ib1( 2 ) = ib0( 2 )
10913               ib2( 1 ) = ib0( 1 )
10914               ib2( 2 ) = ib0( 2 )
10915               ib3( 1 ) = ib0( 1 )
10916               ib3( 2 ) = ib0( 2 )
10917
10918  170       CONTINUE
10919
10920         ELSE
10921
10922
10923
10924            ii = 1
10925            lcmtr = lcmt00
10926
10927            DO 250 iblk = 1, mblks
10928
10929               IF( iblk.EQ.1 ) THEN
10930                  ib  = imbloc
10931                  upp = imbloc - 1
10932               ELSE IF( iblk.EQ.mblks ) THEN
10933                  ib  = lmbloc
10934                  upp = mb - 1
10935               ELSE
10936                  ib  = mb
10937                  upp = mb - 1
10938               END IF
10939
10940               DO 240 ik = ii, ii + ib - 1
10941
10942                  jj = 1
10943                  lcmtc = lcmtr
10944
10945                  DO 230 jblk = 1, nblks
10946
10947                     IF( jblk.EQ.1 ) THEN
10948                        jb  = inbloc
10949                        low = 1 - inbloc
10950                     ELSE IF( jblk.EQ.nblks ) THEN
10951                        jb  = lnbloc
10952                        low = 1 - nb
10953                     ELSE
10954                        jb  = nb
10955                        low = 1 - nb
10956                     END IF
10957
10958
10959
10960                     IF( lcmtc.LT.low ) THEN
10961
10962                        DO 180 jk = jj, jj + jb - 1
10964  180                   CONTINUE
10965
10966                     ELSE IF( lcmtc.LE.upp ) THEN
10967
10968                        itmp = ik - ii + 1
10969                        mnb  = 
max( 0, lcmtc )
 
10970
10971                        IF( itmp.LE.
min( mnb, ib ) ) 
THEN 
10972
10973                           DO 190 jk = jj, jj + jb - 1
10976  190                      CONTINUE
10977
10978                        ELSE IF( ( itmp.GE.( mnb + 1 )         ) .AND.
10979     $                           ( itmp.LE.
min( jb+lcmtc, ib ) ) ) 
THEN 
10980
10981                           jtmp = jj + itmp - lcmtc - 1
10982
10983                           DO 200 jk = jj, jtmp - 1
10986  200                      CONTINUE
10987
10988                           DO 210 jk = jtmp, jj + jb - 1
10991  210                      CONTINUE
10992
10993                        END IF
10994
10995                     ELSE
10996
10997                        DO 220 jk = jj, jj + jb - 1
11000  220                   CONTINUE
11001
11002                     END IF
11003
11004                     jj = jj + jb
11005
11006                     IF( jblk.EQ.1 ) THEN
11007
11008
11009
11010                        lcmtc = lcmtc + jmp( jmp_nqinbloc )
11011                        CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
 
11012     $                                  ib0 )
11013
11014                     ELSE
11015
11016
11017
11018                        lcmtc = lcmtc + jmp( jmp_nqnb )
11019                        CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
 
11020     $                                  ib0 )
11021
11022                     END IF
11023
11024                     ib1( 1 ) = ib0( 1 )
11025                     ib1( 2 ) = ib0( 2 )
11026
11027  230             CONTINUE
11028
11029
11030
11031                  CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
 
11032
11033                  ib1( 1 ) = ib0( 1 )
11034                  ib1( 2 ) = ib0( 2 )
11035                  ib2( 1 ) = ib0( 1 )
11036                  ib2( 2 ) = ib0( 2 )
11037
11038  240          CONTINUE
11039
11040               ii = ii + ib
11041
11042               IF( iblk.EQ.1 ) THEN
11043
11044
11045
11046                  lcmtr = lcmtr - jmp( jmp_npimbloc )
11047                  CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
 
11048
11049               ELSE
11050
11051
11052
11053                  lcmtr = lcmtr - jmp( jmp_npmb )
11054                  CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
 
11055
11056               END IF
11057
11058               ib1( 1 ) = ib0( 1 )
11059               ib1( 2 ) = ib0( 2 )
11060               ib2( 1 ) = ib0( 1 )
11061               ib2( 2 ) = ib0( 2 )
11062               ib3( 1 ) = ib0( 1 )
11063               ib3( 2 ) = ib0( 2 )
11064
11065  250       CONTINUE
11066
11067         END IF
11068
11069      ELSE IF( 
lsame( aform, 
'C' ) ) 
THEN 
11070
11071
11072
11073
11074         ii = 1
11075
11076         DO 290 iblk = 1, mblks
11077
11078            IF( iblk.EQ.1 ) THEN
11079               ib = imbloc
11080            ELSE IF( iblk.EQ.mblks ) THEN
11081               ib = lmbloc
11082            ELSE
11083               ib = mb
11084            END IF
11085
11086            DO 280 ik = ii, ii + ib - 1
11087
11088               jj = 1
11089
11090               DO 270 jblk = 1, nblks
11091
11092                  IF( jblk.EQ.1 ) THEN
11093                     jb = inbloc
11094                  ELSE IF( jblk.EQ.nblks ) THEN
11095                     jb = lnbloc
11096                  ELSE
11097                     jb = nb
11098                  END IF
11099
11100
11101
11102                  DO 260 jk = jj, jj + jb - 1
11105  260             CONTINUE
11106
11107                  jj = jj + jb
11108
11109                  IF( jblk.EQ.1 ) THEN
11110
11111
11112
11113                     CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
 
11114     $                               ib0 )
11115
11116                  ELSE
11117
11118
11119
11120                     CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
 
11121     $                               ib0 )
11122
11123                  END IF
11124
11125                  ib1( 1 ) = ib0( 1 )
11126                  ib1( 2 ) = ib0( 2 )
11127
11128  270          CONTINUE
11129
11130
11131
11132               CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
 
11133
11134               ib1( 1 ) = ib0( 1 )
11135               ib1( 2 ) = ib0( 2 )
11136               ib2( 1 ) = ib0( 1 )
11137               ib2( 2 ) = ib0( 2 )
11138
11139  280       CONTINUE
11140
11141            ii = ii + ib
11142
11143            IF( iblk.EQ.1 ) THEN
11144
11145
11146
11147               CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
 
11148
11149            ELSE
11150
11151
11152
11153               CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
 
11154
11155            END IF
11156
11157            ib1( 1 ) = ib0( 1 )
11158            ib1( 2 ) = ib0( 2 )
11159            ib2( 1 ) = ib0( 1 )
11160            ib2( 2 ) = ib0( 2 )
11161            ib3( 1 ) = ib0( 1 )
11162            ib3( 2 ) = ib0( 2 )
11163
11164  290    CONTINUE
11165
11166      ELSE IF( 
lsame( aform, 
'H' ) ) 
THEN 
11167
11168
11169
11170         IF( 
lsame( uplo, 
'L' ) ) 
THEN 
11171
11172
11173
11174            jj = 1
11175            lcmtc = lcmt00
11176
11177            DO 370 jblk = 1, nblks
11178
11179               IF( jblk.EQ.1 ) THEN
11180                  jb  = inbloc
11181                  low = 1 - inbloc
11182               ELSE IF( jblk.EQ.nblks ) THEN
11183                  jb = lnbloc
11184                  low = 1 - nb
11185               ELSE
11186                  jb  = nb
11187                  low = 1 - nb
11188               END IF
11189
11190               DO 360 jk = jj, jj + jb - 1
11191
11192                  ii = 1
11193                  lcmtr = lcmtc
11194
11195                  DO 350 iblk = 1, mblks
11196
11197                     IF( iblk.EQ.1 ) THEN
11198                        ib  = imbloc
11199                        upp = imbloc - 1
11200                     ELSE IF( iblk.EQ.mblks ) THEN
11201                        ib  = lmbloc
11202                        upp = mb - 1
11203                     ELSE
11204                        ib  = mb
11205                        upp = mb - 1
11206                     END IF
11207
11208
11209
11210                     IF( lcmtr.GT.upp ) THEN
11211
11212                        DO 300 ik = ii, ii + ib - 1
11215  300                   CONTINUE
11216
11217                     ELSE IF( lcmtr.GE.low ) THEN
11218
11219                        jtmp = jk - jj + 1
11220                        mnb  = 
max( 0, -lcmtr )
 
11221
11222                        IF( jtmp.LE.
min( mnb, jb ) ) 
THEN 
11223
11224                           DO 310 ik = ii, ii + ib - 1
11227  310                      CONTINUE
11228
11229                        ELSE IF( ( jtmp.GE.( mnb + 1 )         ) .AND.
11230     $                           ( jtmp.LE.
min( ib-lcmtr, jb ) ) ) 
THEN 
11231
11232                           itmp = ii + jtmp + lcmtr - 1
11233
11234                           DO 320 ik = ii, itmp - 1
11237  320                      CONTINUE
11238
11239                           IF( itmp.LE.( ii + ib - 1 ) ) THEN
11242                              a( itmp, jk ) = 
cmplx( real( dummy ),
 
11243     $                                               zero )
11244                           END IF
11245
11246                           DO 330 ik = itmp + 1, ii + ib - 1
11249  330                      CONTINUE
11250
11251                        END IF
11252
11253                     ELSE
11254
11255                        DO 340 ik = ii, ii + ib - 1
11258  340                   CONTINUE
11259
11260                     END IF
11261
11262                     ii = ii + ib
11263
11264                     IF( iblk.EQ.1 ) THEN
11265
11266
11267
11268                        lcmtr = lcmtr - jmp( jmp_npimbloc )
11269                        CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
 
11270     $                                  ib0 )
11271
11272                     ELSE
11273
11274
11275
11276                        lcmtr = lcmtr - jmp( jmp_npmb )
11277                        CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1,
 
11278     $                                  ib0 )
11279
11280                     END IF
11281
11282                     ib1( 1 ) = ib0( 1 )
11283                     ib1( 2 ) = ib0( 2 )
11284
11285  350             CONTINUE
11286
11287
11288
11289                  CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
 
11290
11291                  ib1( 1 ) = ib0( 1 )
11292                  ib1( 2 ) = ib0( 2 )
11293                  ib2( 1 ) = ib0( 1 )
11294                  ib2( 2 ) = ib0( 2 )
11295
11296  360          CONTINUE
11297
11298               jj = jj + jb
11299
11300               IF( jblk.EQ.1 ) THEN
11301
11302
11303
11304                  lcmtc = lcmtc + jmp( jmp_nqinbloc )
11305                  CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
 
11306
11307               ELSE
11308
11309
11310
11311                  lcmtc = lcmtc + jmp( jmp_nqnb )
11312                  CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
 
11313
11314               END IF
11315
11316               ib1( 1 ) = ib0( 1 )
11317               ib1( 2 ) = ib0( 2 )
11318               ib2( 1 ) = ib0( 1 )
11319               ib2( 2 ) = ib0( 2 )
11320               ib3( 1 ) = ib0( 1 )
11321               ib3( 2 ) = ib0( 2 )
11322
11323  370       CONTINUE
11324
11325         ELSE
11326
11327
11328
11329            ii = 1
11330            lcmtr = lcmt00
11331
11332            DO 450 iblk = 1, mblks
11333
11334               IF( iblk.EQ.1 ) THEN
11335                  ib  = imbloc
11336                  upp = imbloc - 1
11337               ELSE IF( iblk.EQ.mblks ) THEN
11338                  ib  = lmbloc
11339                  upp = mb - 1
11340               ELSE
11341                  ib  = mb
11342                  upp = mb - 1
11343               END IF
11344
11345               DO 440 ik = ii, ii + ib - 1
11346
11347                  jj = 1
11348                  lcmtc = lcmtr
11349
11350                  DO 430 jblk = 1, nblks
11351
11352                     IF( jblk.EQ.1 ) THEN
11353                        jb  = inbloc
11354                        low = 1 - inbloc
11355                     ELSE IF( jblk.EQ.nblks ) THEN
11356                        jb  = lnbloc
11357                        low = 1 - nb
11358                     ELSE
11359                        jb  = nb
11360                        low = 1 - nb
11361                     END IF
11362
11363
11364
11365                     IF( lcmtc.LT.low ) THEN
11366
11367                        DO 380 jk = jj, jj + jb - 1
11370  380                   CONTINUE
11371
11372                     ELSE IF( lcmtc.LE.upp ) THEN
11373
11374                        itmp = ik - ii + 1
11375                        mnb  = 
max( 0, lcmtc )
 
11376
11377                        IF( itmp.LE.
min( mnb, ib ) ) 
THEN 
11378
11379                           DO 390 jk = jj, jj + jb - 1
11382  390                      CONTINUE
11383
11384                        ELSE IF( ( itmp.GE.( mnb + 1 )         ) .AND.
11385     $                           ( itmp.LE.
min( jb+lcmtc, ib ) ) ) 
THEN 
11386
11387                           jtmp = jj + itmp - lcmtc - 1
11388
11389                           DO 400 jk = jj, jtmp - 1
11392  400                      CONTINUE
11393
11394                           IF( jtmp.LE.( jj + jb - 1 ) ) THEN
11397                              a( ik, jtmp ) = 
cmplx( real( dummy ),
 
11398     $                                               zero )
11399                           END IF
11400
11401                           DO 410 jk = jtmp + 1, jj + jb - 1
11404  410                      CONTINUE
11405
11406                        END IF
11407
11408                     ELSE
11409
11410                        DO 420 jk = jj, jj + jb - 1
11413  420                   CONTINUE
11414
11415                     END IF
11416
11417                     jj = jj + jb
11418
11419                     IF( jblk.EQ.1 ) THEN
11420
11421
11422
11423                        lcmtc = lcmtc + jmp( jmp_nqinbloc )
11424                        CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
 
11425     $                                  ib0 )
11426
11427                     ELSE
11428
11429
11430
11431                        lcmtc = lcmtc + jmp( jmp_nqnb )
11432                        CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
 
11433     $                                  ib0 )
11434
11435                     END IF
11436
11437                     ib1( 1 ) = ib0( 1 )
11438                     ib1( 2 ) = ib0( 2 )
11439
11440  430             CONTINUE
11441
11442
11443
11444                  CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
 
11445
11446                  ib1( 1 ) = ib0( 1 )
11447                  ib1( 2 ) = ib0( 2 )
11448                  ib2( 1 ) = ib0( 1 )
11449                  ib2( 2 ) = ib0( 2 )
11450
11451  440          CONTINUE
11452
11453               ii = ii + ib
11454
11455               IF( iblk.EQ.1 ) THEN
11456
11457
11458
11459                  lcmtr = lcmtr - jmp( jmp_npimbloc )
11460                  CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
 
11461
11462               ELSE
11463
11464
11465
11466                  lcmtr = lcmtr - jmp( jmp_npmb )
11467                  CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
 
11468
11469               END IF
11470
11471               ib1( 1 ) = ib0( 1 )
11472               ib1( 2 ) = ib0( 2 )
11473               ib2( 1 ) = ib0( 1 )
11474               ib2( 2 ) = ib0( 2 )
11475               ib3( 1 ) = ib0( 1 )
11476               ib3( 2 ) = ib0( 2 )
11477
11478  450       CONTINUE
11479
11480         END IF
11481
11482      END IF
11483
11484      RETURN
11485
11486
11487
subroutine pb_jumpit(muladd, irann, iranm)
 
real function pb_srand(idumm)