1501
1502
1503
1504
1505
1506
1507
1508 CHARACTER*1 UPLO, AFORM
1509 INTEGER IMBLOC, INBLOC, LCMT00, LDA, LMBLOC, LNBLOC,
1510 $ MB, MBLKS, NB, NBLKS
1511
1512
1513 INTEGER IMULADD( 4, * ), IRAN( * ), JMP( * )
1514 COMPLEX A( LDA, * )
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617 INTEGER JMP_1, JMP_COL, JMP_IMBV, JMP_INBV, JMP_LEN,
1618 $ JMP_MB, JMP_NB, JMP_NPIMBLOC, JMP_NPMB,
1619 $ JMP_NQINBLOC, JMP_NQNB, JMP_ROW
1620 parameter( jmp_1 = 1, jmp_row = 2, jmp_col = 3,
1621 $ jmp_mb = 4, jmp_imbv = 5, jmp_npmb = 6,
1622 $ jmp_npimbloc = 7, jmp_nb = 8, jmp_inbv = 9,
1623 $ jmp_nqnb = 10, jmp_nqinbloc = 11,
1624 $ jmp_len = 11 )
1625 REAL ZERO
1626 parameter( zero = 0.0e+0 )
1627
1628
1629 INTEGER I, IB, IBLK, II, IK, ITMP, JB, JBLK, JJ, JK,
1630 $ JTMP, LCMTC, LCMTR, LOW, MNB, UPP
1631 COMPLEX DUMMY
1632
1633
1634 INTEGER IB0( 2 ), IB1( 2 ), IB2( 2 ), IB3( 2 )
1635
1636
1638
1639
1640 LOGICAL LSAME
1641 REAL PB_SRAND
1643
1644
1646
1647
1648
1649 DO 10 i = 1, 2
1650 ib1( i ) = iran( i )
1651 ib2( i ) = iran( i )
1652 ib3( i ) = iran( i )
1653 10 CONTINUE
1654
1655 IF(
lsame( aform,
'N' ) )
THEN
1656
1657
1658
1659 jj = 1
1660
1661 DO 50 jblk = 1, nblks
1662
1663 IF( jblk.EQ.1 ) THEN
1664 jb = inbloc
1665 ELSE IF( jblk.EQ.nblks ) THEN
1666 jb = lnbloc
1667 ELSE
1668 jb = nb
1669 END IF
1670
1671 DO 40 jk = jj, jj + jb - 1
1672
1673 ii = 1
1674
1675 DO 30 iblk = 1, mblks
1676
1677 IF( iblk.EQ.1 ) THEN
1678 ib = imbloc
1679 ELSE IF( iblk.EQ.mblks ) THEN
1680 ib = lmbloc
1681 ELSE
1682 ib = mb
1683 END IF
1684
1685
1686
1687 DO 20 ik = ii, ii + ib - 1
1689 20 CONTINUE
1690
1691 ii = ii + ib
1692
1693 IF( iblk.EQ.1 ) THEN
1694
1695
1696
1697 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
1698 $ ib0 )
1699
1700 ELSE
1701
1702
1703
1704 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1, ib0 )
1705
1706 END IF
1707
1708 ib1( 1 ) = ib0( 1 )
1709 ib1( 2 ) = ib0( 2 )
1710
1711 30 CONTINUE
1712
1713
1714
1715 CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
1716
1717 ib1( 1 ) = ib0( 1 )
1718 ib1( 2 ) = ib0( 2 )
1719 ib2( 1 ) = ib0( 1 )
1720 ib2( 2 ) = ib0( 2 )
1721
1722 40 CONTINUE
1723
1724 jj = jj + jb
1725
1726 IF( jblk.EQ.1 ) THEN
1727
1728
1729
1730 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
1731
1732 ELSE
1733
1734
1735
1736 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
1737
1738 END IF
1739
1740 ib1( 1 ) = ib0( 1 )
1741 ib1( 2 ) = ib0( 2 )
1742 ib2( 1 ) = ib0( 1 )
1743 ib2( 2 ) = ib0( 2 )
1744 ib3( 1 ) = ib0( 1 )
1745 ib3( 2 ) = ib0( 2 )
1746
1747 50 CONTINUE
1748
1749 ELSE IF(
lsame( aform,
'T' ) )
THEN
1750
1751
1752
1753
1754 ii = 1
1755
1756 DO 90 iblk = 1, mblks
1757
1758 IF( iblk.EQ.1 ) THEN
1759 ib = imbloc
1760 ELSE IF( iblk.EQ.mblks ) THEN
1761 ib = lmbloc
1762 ELSE
1763 ib = mb
1764 END IF
1765
1766 DO 80 ik = ii, ii + ib - 1
1767
1768 jj = 1
1769
1770 DO 70 jblk = 1, nblks
1771
1772 IF( jblk.EQ.1 ) THEN
1773 jb = inbloc
1774 ELSE IF( jblk.EQ.nblks ) THEN
1775 jb = lnbloc
1776 ELSE
1777 jb = nb
1778 END IF
1779
1780
1781
1782 DO 60 jk = jj, jj + jb - 1
1784 60 CONTINUE
1785
1786 jj = jj + jb
1787
1788 IF( jblk.EQ.1 ) THEN
1789
1790
1791
1792 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
1793 $ ib0 )
1794
1795 ELSE
1796
1797
1798
1799 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1, ib0 )
1800
1801 END IF
1802
1803 ib1( 1 ) = ib0( 1 )
1804 ib1( 2 ) = ib0( 2 )
1805
1806 70 CONTINUE
1807
1808
1809
1810 CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
1811
1812 ib1( 1 ) = ib0( 1 )
1813 ib1( 2 ) = ib0( 2 )
1814 ib2( 1 ) = ib0( 1 )
1815 ib2( 2 ) = ib0( 2 )
1816
1817 80 CONTINUE
1818
1819 ii = ii + ib
1820
1821 IF( iblk.EQ.1 ) THEN
1822
1823
1824
1825 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
1826
1827 ELSE
1828
1829
1830
1831 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
1832
1833 END IF
1834
1835 ib1( 1 ) = ib0( 1 )
1836 ib1( 2 ) = ib0( 2 )
1837 ib2( 1 ) = ib0( 1 )
1838 ib2( 2 ) = ib0( 2 )
1839 ib3( 1 ) = ib0( 1 )
1840 ib3( 2 ) = ib0( 2 )
1841
1842 90 CONTINUE
1843
1844 ELSE IF(
lsame( aform,
'S' ) )
THEN
1845
1846
1847
1848 IF(
lsame( uplo,
'L' ) )
THEN
1849
1850
1851
1852 jj = 1
1853 lcmtc = lcmt00
1854
1855 DO 170 jblk = 1, nblks
1856
1857 IF( jblk.EQ.1 ) THEN
1858 jb = inbloc
1859 low = 1 - inbloc
1860 ELSE IF( jblk.EQ.nblks ) THEN
1861 jb = lnbloc
1862 low = 1 - nb
1863 ELSE
1864 jb = nb
1865 low = 1 - nb
1866 END IF
1867
1868 DO 160 jk = jj, jj + jb - 1
1869
1870 ii = 1
1871 lcmtr = lcmtc
1872
1873 DO 150 iblk = 1, mblks
1874
1875 IF( iblk.EQ.1 ) THEN
1876 ib = imbloc
1877 upp = imbloc - 1
1878 ELSE IF( iblk.EQ.mblks ) THEN
1879 ib = lmbloc
1880 upp = mb - 1
1881 ELSE
1882 ib = mb
1883 upp = mb - 1
1884 END IF
1885
1886
1887
1888 IF( lcmtr.GT.upp ) THEN
1889
1890 DO 100 ik = ii, ii + ib - 1
1893 100 CONTINUE
1894
1895 ELSE IF( lcmtr.GE.low ) THEN
1896
1897 jtmp = jk - jj + 1
1898 mnb =
max( 0, -lcmtr )
1899
1900 IF( jtmp.LE.
min( mnb, jb ) )
THEN
1901
1902 DO 110 ik = ii, ii + ib - 1
1905 110 CONTINUE
1906
1907 ELSE IF( ( jtmp.GE.( mnb + 1 ) ) .AND.
1908 $ ( jtmp.LE.
min( ib-lcmtr, jb ) ) )
THEN
1909
1910 itmp = ii + jtmp + lcmtr - 1
1911
1912 DO 120 ik = ii, itmp - 1
1915 120 CONTINUE
1916
1917 DO 130 ik = itmp, ii + ib - 1
1920 130 CONTINUE
1921
1922 END IF
1923
1924 ELSE
1925
1926 DO 140 ik = ii, ii + ib - 1
1929 140 CONTINUE
1930
1931 END IF
1932
1933 ii = ii + ib
1934
1935 IF( iblk.EQ.1 ) THEN
1936
1937
1938
1939 lcmtr = lcmtr - jmp( jmp_npimbloc )
1940 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
1941 $ ib0 )
1942
1943 ELSE
1944
1945
1946
1947 lcmtr = lcmtr - jmp( jmp_npmb )
1948 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1,
1949 $ ib0 )
1950
1951 END IF
1952
1953 ib1( 1 ) = ib0( 1 )
1954 ib1( 2 ) = ib0( 2 )
1955
1956 150 CONTINUE
1957
1958
1959
1960 CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
1961
1962 ib1( 1 ) = ib0( 1 )
1963 ib1( 2 ) = ib0( 2 )
1964 ib2( 1 ) = ib0( 1 )
1965 ib2( 2 ) = ib0( 2 )
1966
1967 160 CONTINUE
1968
1969 jj = jj + jb
1970
1971 IF( jblk.EQ.1 ) THEN
1972
1973
1974
1975 lcmtc = lcmtc + jmp( jmp_nqinbloc )
1976 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
1977
1978 ELSE
1979
1980
1981
1982 lcmtc = lcmtc + jmp( jmp_nqnb )
1983 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
1984
1985 END IF
1986
1987 ib1( 1 ) = ib0( 1 )
1988 ib1( 2 ) = ib0( 2 )
1989 ib2( 1 ) = ib0( 1 )
1990 ib2( 2 ) = ib0( 2 )
1991 ib3( 1 ) = ib0( 1 )
1992 ib3( 2 ) = ib0( 2 )
1993
1994 170 CONTINUE
1995
1996 ELSE
1997
1998
1999
2000 ii = 1
2001 lcmtr = lcmt00
2002
2003 DO 250 iblk = 1, mblks
2004
2005 IF( iblk.EQ.1 ) THEN
2006 ib = imbloc
2007 upp = imbloc - 1
2008 ELSE IF( iblk.EQ.mblks ) THEN
2009 ib = lmbloc
2010 upp = mb - 1
2011 ELSE
2012 ib = mb
2013 upp = mb - 1
2014 END IF
2015
2016 DO 240 ik = ii, ii + ib - 1
2017
2018 jj = 1
2019 lcmtc = lcmtr
2020
2021 DO 230 jblk = 1, nblks
2022
2023 IF( jblk.EQ.1 ) THEN
2024 jb = inbloc
2025 low = 1 - inbloc
2026 ELSE IF( jblk.EQ.nblks ) THEN
2027 jb = lnbloc
2028 low = 1 - nb
2029 ELSE
2030 jb = nb
2031 low = 1 - nb
2032 END IF
2033
2034
2035
2036 IF( lcmtc.LT.low ) THEN
2037
2038 DO 180 jk = jj, jj + jb - 1
2040 180 CONTINUE
2041
2042 ELSE IF( lcmtc.LE.upp ) THEN
2043
2044 itmp = ik - ii + 1
2045 mnb =
max( 0, lcmtc )
2046
2047 IF( itmp.LE.
min( mnb, ib ) )
THEN
2048
2049 DO 190 jk = jj, jj + jb - 1
2052 190 CONTINUE
2053
2054 ELSE IF( ( itmp.GE.( mnb + 1 ) ) .AND.
2055 $ ( itmp.LE.
min( jb+lcmtc, ib ) ) )
THEN
2056
2057 jtmp = jj + itmp - lcmtc - 1
2058
2059 DO 200 jk = jj, jtmp - 1
2062 200 CONTINUE
2063
2064 DO 210 jk = jtmp, jj + jb - 1
2067 210 CONTINUE
2068
2069 END IF
2070
2071 ELSE
2072
2073 DO 220 jk = jj, jj + jb - 1
2076 220 CONTINUE
2077
2078 END IF
2079
2080 jj = jj + jb
2081
2082 IF( jblk.EQ.1 ) THEN
2083
2084
2085
2086 lcmtc = lcmtc + jmp( jmp_nqinbloc )
2087 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
2088 $ ib0 )
2089
2090 ELSE
2091
2092
2093
2094 lcmtc = lcmtc + jmp( jmp_nqnb )
2095 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
2096 $ ib0 )
2097
2098 END IF
2099
2100 ib1( 1 ) = ib0( 1 )
2101 ib1( 2 ) = ib0( 2 )
2102
2103 230 CONTINUE
2104
2105
2106
2107 CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
2108
2109 ib1( 1 ) = ib0( 1 )
2110 ib1( 2 ) = ib0( 2 )
2111 ib2( 1 ) = ib0( 1 )
2112 ib2( 2 ) = ib0( 2 )
2113
2114 240 CONTINUE
2115
2116 ii = ii + ib
2117
2118 IF( iblk.EQ.1 ) THEN
2119
2120
2121
2122 lcmtr = lcmtr - jmp( jmp_npimbloc )
2123 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
2124
2125 ELSE
2126
2127
2128
2129 lcmtr = lcmtr - jmp( jmp_npmb )
2130 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
2131
2132 END IF
2133
2134 ib1( 1 ) = ib0( 1 )
2135 ib1( 2 ) = ib0( 2 )
2136 ib2( 1 ) = ib0( 1 )
2137 ib2( 2 ) = ib0( 2 )
2138 ib3( 1 ) = ib0( 1 )
2139 ib3( 2 ) = ib0( 2 )
2140
2141 250 CONTINUE
2142
2143 END IF
2144
2145 ELSE IF(
lsame( aform,
'C' ) )
THEN
2146
2147
2148
2149
2150 ii = 1
2151
2152 DO 290 iblk = 1, mblks
2153
2154 IF( iblk.EQ.1 ) THEN
2155 ib = imbloc
2156 ELSE IF( iblk.EQ.mblks ) THEN
2157 ib = lmbloc
2158 ELSE
2159 ib = mb
2160 END IF
2161
2162 DO 280 ik = ii, ii + ib - 1
2163
2164 jj = 1
2165
2166 DO 270 jblk = 1, nblks
2167
2168 IF( jblk.EQ.1 ) THEN
2169 jb = inbloc
2170 ELSE IF( jblk.EQ.nblks ) THEN
2171 jb = lnbloc
2172 ELSE
2173 jb = nb
2174 END IF
2175
2176
2177
2178 DO 260 jk = jj, jj + jb - 1
2181 260 CONTINUE
2182
2183 jj = jj + jb
2184
2185 IF( jblk.EQ.1 ) THEN
2186
2187
2188
2189 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
2190 $ ib0 )
2191
2192 ELSE
2193
2194
2195
2196 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
2197 $ ib0 )
2198
2199 END IF
2200
2201 ib1( 1 ) = ib0( 1 )
2202 ib1( 2 ) = ib0( 2 )
2203
2204 270 CONTINUE
2205
2206
2207
2208 CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
2209
2210 ib1( 1 ) = ib0( 1 )
2211 ib1( 2 ) = ib0( 2 )
2212 ib2( 1 ) = ib0( 1 )
2213 ib2( 2 ) = ib0( 2 )
2214
2215 280 CONTINUE
2216
2217 ii = ii + ib
2218
2219 IF( iblk.EQ.1 ) THEN
2220
2221
2222
2223 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
2224
2225 ELSE
2226
2227
2228
2229 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
2230
2231 END IF
2232
2233 ib1( 1 ) = ib0( 1 )
2234 ib1( 2 ) = ib0( 2 )
2235 ib2( 1 ) = ib0( 1 )
2236 ib2( 2 ) = ib0( 2 )
2237 ib3( 1 ) = ib0( 1 )
2238 ib3( 2 ) = ib0( 2 )
2239
2240 290 CONTINUE
2241
2242 ELSE IF(
lsame( aform,
'H' ) )
THEN
2243
2244
2245
2246 IF(
lsame( uplo,
'L' ) )
THEN
2247
2248
2249
2250 jj = 1
2251 lcmtc = lcmt00
2252
2253 DO 370 jblk = 1, nblks
2254
2255 IF( jblk.EQ.1 ) THEN
2256 jb = inbloc
2257 low = 1 - inbloc
2258 ELSE IF( jblk.EQ.nblks ) THEN
2259 jb = lnbloc
2260 low = 1 - nb
2261 ELSE
2262 jb = nb
2263 low = 1 - nb
2264 END IF
2265
2266 DO 360 jk = jj, jj + jb - 1
2267
2268 ii = 1
2269 lcmtr = lcmtc
2270
2271 DO 350 iblk = 1, mblks
2272
2273 IF( iblk.EQ.1 ) THEN
2274 ib = imbloc
2275 upp = imbloc - 1
2276 ELSE IF( iblk.EQ.mblks ) THEN
2277 ib = lmbloc
2278 upp = mb - 1
2279 ELSE
2280 ib = mb
2281 upp = mb - 1
2282 END IF
2283
2284
2285
2286 IF( lcmtr.GT.upp ) THEN
2287
2288 DO 300 ik = ii, ii + ib - 1
2291 300 CONTINUE
2292
2293 ELSE IF( lcmtr.GE.low ) THEN
2294
2295 jtmp = jk - jj + 1
2296 mnb =
max( 0, -lcmtr )
2297
2298 IF( jtmp.LE.
min( mnb, jb ) )
THEN
2299
2300 DO 310 ik = ii, ii + ib - 1
2303 310 CONTINUE
2304
2305 ELSE IF( ( jtmp.GE.( mnb + 1 ) ) .AND.
2306 $ ( jtmp.LE.
min( ib-lcmtr, jb ) ) )
THEN
2307
2308 itmp = ii + jtmp + lcmtr - 1
2309
2310 DO 320 ik = ii, itmp - 1
2313 320 CONTINUE
2314
2315 IF( itmp.LE.( ii + ib - 1 ) ) THEN
2318 a( itmp, jk ) =
cmplx( real( dummy ),
2319 $ zero )
2320 END IF
2321
2322 DO 330 ik = itmp + 1, ii + ib - 1
2325 330 CONTINUE
2326
2327 END IF
2328
2329 ELSE
2330
2331 DO 340 ik = ii, ii + ib - 1
2334 340 CONTINUE
2335
2336 END IF
2337
2338 ii = ii + ib
2339
2340 IF( iblk.EQ.1 ) THEN
2341
2342
2343
2344 lcmtr = lcmtr - jmp( jmp_npimbloc )
2345 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib1,
2346 $ ib0 )
2347
2348 ELSE
2349
2350
2351
2352 lcmtr = lcmtr - jmp( jmp_npmb )
2353 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib1,
2354 $ ib0 )
2355
2356 END IF
2357
2358 ib1( 1 ) = ib0( 1 )
2359 ib1( 2 ) = ib0( 2 )
2360
2361 350 CONTINUE
2362
2363
2364
2365 CALL pb_jumpit( imuladd( 1, jmp_col ), ib2, ib0 )
2366
2367 ib1( 1 ) = ib0( 1 )
2368 ib1( 2 ) = ib0( 2 )
2369 ib2( 1 ) = ib0( 1 )
2370 ib2( 2 ) = ib0( 2 )
2371
2372 360 CONTINUE
2373
2374 jj = jj + jb
2375
2376 IF( jblk.EQ.1 ) THEN
2377
2378
2379
2380 lcmtc = lcmtc + jmp( jmp_nqinbloc )
2381 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib3, ib0 )
2382
2383 ELSE
2384
2385
2386
2387 lcmtc = lcmtc + jmp( jmp_nqnb )
2388 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib3, ib0 )
2389
2390 END IF
2391
2392 ib1( 1 ) = ib0( 1 )
2393 ib1( 2 ) = ib0( 2 )
2394 ib2( 1 ) = ib0( 1 )
2395 ib2( 2 ) = ib0( 2 )
2396 ib3( 1 ) = ib0( 1 )
2397 ib3( 2 ) = ib0( 2 )
2398
2399 370 CONTINUE
2400
2401 ELSE
2402
2403
2404
2405 ii = 1
2406 lcmtr = lcmt00
2407
2408 DO 450 iblk = 1, mblks
2409
2410 IF( iblk.EQ.1 ) THEN
2411 ib = imbloc
2412 upp = imbloc - 1
2413 ELSE IF( iblk.EQ.mblks ) THEN
2414 ib = lmbloc
2415 upp = mb - 1
2416 ELSE
2417 ib = mb
2418 upp = mb - 1
2419 END IF
2420
2421 DO 440 ik = ii, ii + ib - 1
2422
2423 jj = 1
2424 lcmtc = lcmtr
2425
2426 DO 430 jblk = 1, nblks
2427
2428 IF( jblk.EQ.1 ) THEN
2429 jb = inbloc
2430 low = 1 - inbloc
2431 ELSE IF( jblk.EQ.nblks ) THEN
2432 jb = lnbloc
2433 low = 1 - nb
2434 ELSE
2435 jb = nb
2436 low = 1 - nb
2437 END IF
2438
2439
2440
2441 IF( lcmtc.LT.low ) THEN
2442
2443 DO 380 jk = jj, jj + jb - 1
2446 380 CONTINUE
2447
2448 ELSE IF( lcmtc.LE.upp ) THEN
2449
2450 itmp = ik - ii + 1
2451 mnb =
max( 0, lcmtc )
2452
2453 IF( itmp.LE.
min( mnb, ib ) )
THEN
2454
2455 DO 390 jk = jj, jj + jb - 1
2458 390 CONTINUE
2459
2460 ELSE IF( ( itmp.GE.( mnb + 1 ) ) .AND.
2461 $ ( itmp.LE.
min( jb+lcmtc, ib ) ) )
THEN
2462
2463 jtmp = jj + itmp - lcmtc - 1
2464
2465 DO 400 jk = jj, jtmp - 1
2468 400 CONTINUE
2469
2470 IF( jtmp.LE.( jj + jb - 1 ) ) THEN
2473 a( ik, jtmp ) =
cmplx( real( dummy ),
2474 $ zero )
2475 END IF
2476
2477 DO 410 jk = jtmp + 1, jj + jb - 1
2480 410 CONTINUE
2481
2482 END IF
2483
2484 ELSE
2485
2486 DO 420 jk = jj, jj + jb - 1
2489 420 CONTINUE
2490
2491 END IF
2492
2493 jj = jj + jb
2494
2495 IF( jblk.EQ.1 ) THEN
2496
2497
2498
2499 lcmtc = lcmtc + jmp( jmp_nqinbloc )
2500 CALL pb_jumpit( imuladd( 1, jmp_nqinbloc ), ib1,
2501 $ ib0 )
2502
2503 ELSE
2504
2505
2506
2507 lcmtc = lcmtc + jmp( jmp_nqnb )
2508 CALL pb_jumpit( imuladd( 1, jmp_nqnb ), ib1,
2509 $ ib0 )
2510
2511 END IF
2512
2513 ib1( 1 ) = ib0( 1 )
2514 ib1( 2 ) = ib0( 2 )
2515
2516 430 CONTINUE
2517
2518
2519
2520 CALL pb_jumpit( imuladd( 1, jmp_row ), ib2, ib0 )
2521
2522 ib1( 1 ) = ib0( 1 )
2523 ib1( 2 ) = ib0( 2 )
2524 ib2( 1 ) = ib0( 1 )
2525 ib2( 2 ) = ib0( 2 )
2526
2527 440 CONTINUE
2528
2529 ii = ii + ib
2530
2531 IF( iblk.EQ.1 ) THEN
2532
2533
2534
2535 lcmtr = lcmtr - jmp( jmp_npimbloc )
2536 CALL pb_jumpit( imuladd( 1, jmp_npimbloc ), ib3, ib0 )
2537
2538 ELSE
2539
2540
2541
2542 lcmtr = lcmtr - jmp( jmp_npmb )
2543 CALL pb_jumpit( imuladd( 1, jmp_npmb ), ib3, ib0 )
2544
2545 END IF
2546
2547 ib1( 1 ) = ib0( 1 )
2548 ib1( 2 ) = ib0( 2 )
2549 ib2( 1 ) = ib0( 1 )
2550 ib2( 2 ) = ib0( 2 )
2551 ib3( 1 ) = ib0( 1 )
2552 ib3( 2 ) = ib0( 2 )
2553
2554 450 CONTINUE
2555
2556 END IF
2557
2558 END IF
2559
2560 RETURN
2561
2562
2563
subroutine pb_jumpit(muladd, irann, iranm)
real function pb_srand(idumm)