1152
1153
1154
1155
1156
1157
1158
1159 LOGICAL SOF, TEE
1160 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL, NBLOG,
1161 $ NGRIDS, NMAT, NOUT, NPROCS
1162 REAL THRESH
1163 COMPLEX ALPHA, BETA
1164
1165
1166 CHARACTER*( * ) SUMMRY
1167 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
1168 $ UPLOVAL( LDVAL )
1169 LOGICAL LTEST( * )
1170 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
1171 $ CSCYVAL( LDVAL ), IAVAL( LDVAL ),
1172 $ IMBAVAL( LDVAL ), IMBXVAL( LDVAL ),
1173 $ IMBYVAL( LDVAL ), INBAVAL( LDVAL ),
1174 $ INBXVAL( LDVAL ), INBYVAL( LDVAL ),
1175 $ INCXVAL( LDVAL ), INCYVAL( LDVAL ),
1176 $ IXVAL( LDVAL ), IYVAL( LDVAL ), JAVAL( LDVAL ),
1177 $ JXVAL( LDVAL ), JYVAL( LDVAL ), MAVAL( LDVAL ),
1178 $ MBAVAL( LDVAL ), MBXVAL( LDVAL ),
1179 $ MBYVAL( LDVAL ), MVAL( LDVAL ), MXVAL( LDVAL ),
1180 $ MYVAL( LDVAL ), NAVAL( LDVAL ),
1181 $ NBAVAL( LDVAL ), NBXVAL( LDVAL ),
1182 $ NBYVAL( LDVAL ), NVAL( LDVAL ), NXVAL( LDVAL ),
1183 $ NYVAL( LDVAL ), PVAL( LDPVAL ), QVAL( LDQVAL ),
1184 $ RSCAVAL( LDVAL ), RSCXVAL( LDVAL ),
1185 $ RSCYVAL( LDVAL ), WORK( * )
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471 INTEGER NIN, NSUBS
1472 parameter( nin = 11, nsubs = 8 )
1473
1474
1475 LOGICAL LTESTT
1476 INTEGER I, ICTXT, J
1477 REAL EPS
1478
1479
1480 CHARACTER*7 SNAMET
1481 CHARACTER*79 USRINFO
1482
1483
1484 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1485 $ blacs_gridinit, blacs_setup, cgebr2d, cgebs2d,
1486 $
icopy, igebr2d, igebs2d, sgebr2d, sgebs2d
1487
1488
1489
1490 REAL PSLAMCH
1492
1493
1494 INTRINSIC char, ichar,
max,
min
1495
1496
1497 CHARACTER*7 SNAMES( NSUBS )
1498 COMMON /snamec/snames
1499
1500
1501
1502
1503
1504
1505 IF( iam.EQ.0 ) THEN
1506
1507
1508
1509 OPEN( nin, file='PCBLAS2TST.dat', status='OLD' )
1510 READ( nin, fmt = * ) summry
1511 summry = ' '
1512
1513
1514
1515 READ( nin, fmt = 9999 ) usrinfo
1516
1517
1518
1519 READ( nin, fmt = * ) summry
1520 READ( nin, fmt = * ) nout
1521 IF( nout.NE.0 .AND. nout.NE.6 )
1522 $ OPEN( nout, file = summry, status = 'UNKNOWN' )
1523
1524
1525
1526
1527
1528 READ( nin, fmt = * ) sof
1529
1530
1531
1532 READ( nin, fmt = * ) tee
1533
1534
1535
1536 READ( nin, fmt = * ) iverb
1537 IF( iverb.LT.0 .OR. iverb.GT.3 )
1538 $ iverb = 0
1539
1540
1541
1542 READ( nin, fmt = * ) igap
1543 IF( igap.LT.0 )
1544 $ igap = 0
1545
1546
1547
1548 READ( nin, fmt = * ) thresh
1549 IF( thresh.LT.0.0 )
1550 $ thresh = 16.0
1551
1552
1553
1554 READ( nin, fmt = * ) nblog
1555 IF( nblog.LT.1 )
1556 $ nblog = 32
1557
1558
1559
1560 READ( nin, fmt = * ) ngrids
1561 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval ) THEN
1562 WRITE( nout, fmt = 9998 ) 'Grids', ldpval
1563 GO TO 120
1564 ELSE IF( ngrids.GT.ldqval ) THEN
1565 WRITE( nout, fmt = 9998 ) 'Grids', ldqval
1566 GO TO 120
1567 END IF
1568
1569
1570
1571 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1572 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1573
1574
1575
1576 READ( nin, fmt = * ) alpha
1577 READ( nin, fmt = * ) beta
1578
1579
1580
1581 READ( nin, fmt = * ) nmat
1582 IF( nmat.LT.1 .OR. nmat.GT.ldval ) THEN
1583 WRITE( nout, fmt = 9998 ) 'Tests', ldval
1584 GO TO 120
1585 ENDIF
1586
1587
1588
1589 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1590 READ( nin, fmt = * ) ( tranval( i ), i = 1, nmat )
1591 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1592 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1593 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1594 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1595 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1596 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1597 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1598 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1599 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1600 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1601 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1602 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1603 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1604 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
1605 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
1606 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
1607 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
1608 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
1609 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
1610 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
1611 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
1612 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
1613 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
1614 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
1615 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
1616 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
1617 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
1618 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
1619 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
1620 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
1621 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
1622 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
1623 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
1624 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
1625 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
1626
1627
1628
1629
1630 DO 10 i = 1, nsubs
1631 ltest( i ) = .false.
1632 10 CONTINUE
1633 20 CONTINUE
1634 READ( nin, fmt = 9996, END = 50 ) SNAMET, ltestt
1635 DO 30 i = 1, nsubs
1636 IF( snamet.EQ.snames( i ) )
1637 $ GO TO 40
1638 30 CONTINUE
1639
1640 WRITE( nout, fmt = 9995 )snamet
1641 GO TO 120
1642
1643 40 CONTINUE
1644 ltest( i ) = ltestt
1645 GO TO 20
1646
1647 50 CONTINUE
1648
1649
1650
1651 CLOSE ( nin )
1652
1653
1654
1655
1656 IF( nprocs.LT.1 ) THEN
1657 nprocs = 0
1658 DO 60 i = 1, ngrids
1659 nprocs =
max( nprocs, pval( i )*qval( i ) )
1660 60 CONTINUE
1661 CALL blacs_setup( iam, nprocs )
1662 END IF
1663
1664
1665
1666
1667 CALL blacs_get( -1, 0, ictxt )
1668 CALL blacs_gridinit( ictxt, 'Row-major', 1, nprocs )
1669
1670
1671
1673
1674
1675
1676 CALL sgebs2d( ictxt, 'All', ' ', 1, 1, thresh, 1 )
1677 CALL cgebs2d( ictxt, 'All', ' ', 1, 1, alpha, 1 )
1678 CALL cgebs2d( ictxt, 'All', ' ', 1, 1, beta, 1 )
1679
1680 work( 1 ) = ngrids
1681 work( 2 ) = nmat
1682 work( 3 ) = nblog
1683 CALL igebs2d( ictxt, 'All', ' ', 3, 1, work, 3 )
1684
1685 i = 1
1686 IF( sof ) THEN
1687 work( i ) = 1
1688 ELSE
1689 work( i ) = 0
1690 END IF
1691 i = i + 1
1692 IF( tee ) THEN
1693 work( i ) = 1
1694 ELSE
1695 work( i ) = 0
1696 END IF
1697 i = i + 1
1698 work( i ) = iverb
1699 i = i + 1
1700 work( i ) = igap
1701 i = i + 1
1702 DO 70 j = 1, nmat
1703 work( i ) = ichar( diagval( j ) )
1704 work( i+1 ) = ichar( tranval( j ) )
1705 work( i+2 ) = ichar( uploval( j ) )
1706 i = i + 3
1707 70 CONTINUE
1708 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1709 i = i + ngrids
1710 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1711 i = i + ngrids
1712 CALL icopy( nmat, mval, 1, work( i ), 1 )
1713 i = i + nmat
1714 CALL icopy( nmat, nval, 1, work( i ), 1 )
1715 i = i + nmat
1716 CALL icopy( nmat, maval, 1, work( i ), 1 )
1717 i = i + nmat
1718 CALL icopy( nmat, naval, 1, work( i ), 1 )
1719 i = i + nmat
1720 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1721 i = i + nmat
1722 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1723 i = i + nmat
1724 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1725 i = i + nmat
1726 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1727 i = i + nmat
1728 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1729 i = i + nmat
1730 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1731 i = i + nmat
1732 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1733 i = i + nmat
1734 CALL icopy( nmat, javal, 1, work( i ), 1 )
1735 i = i + nmat
1736 CALL icopy( nmat, mxval, 1, work( i ), 1 )
1737 i = i + nmat
1738 CALL icopy( nmat, nxval, 1, work( i ), 1 )
1739 i = i + nmat
1740 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
1741 i = i + nmat
1742 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
1743 i = i + nmat
1744 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
1745 i = i + nmat
1746 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
1747 i = i + nmat
1748 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
1749 i = i + nmat
1750 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
1751 i = i + nmat
1752 CALL icopy( nmat, ixval, 1, work( i ), 1 )
1753 i = i + nmat
1754 CALL icopy( nmat, jxval, 1, work( i ), 1 )
1755 i = i + nmat
1756 CALL icopy( nmat, incxval, 1, work( i ), 1 )
1757 i = i + nmat
1758 CALL icopy( nmat, myval, 1, work( i ), 1 )
1759 i = i + nmat
1760 CALL icopy( nmat, nyval, 1, work( i ), 1 )
1761 i = i + nmat
1762 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
1763 i = i + nmat
1764 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
1765 i = i + nmat
1766 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
1767 i = i + nmat
1768 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
1769 i = i + nmat
1770 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
1771 i = i + nmat
1772 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
1773 i = i + nmat
1774 CALL icopy( nmat, iyval, 1, work( i ), 1 )
1775 i = i + nmat
1776 CALL icopy( nmat, jyval, 1, work( i ), 1 )
1777 i = i + nmat
1778 CALL icopy( nmat, incyval, 1, work( i ), 1 )
1779 i = i + nmat
1780
1781 DO 80 j = 1, nsubs
1782 IF( ltest( j ) ) THEN
1783 work( i ) = 1
1784 ELSE
1785 work( i ) = 0
1786 END IF
1787 i = i + 1
1788 80 CONTINUE
1789 i = i - 1
1790 CALL igebs2d( ictxt, 'All', ' ', i, 1, work, i )
1791
1792
1793
1794 WRITE( nout, fmt = 9999 ) 'Level 2 PBLAS testing program.'
1795 WRITE( nout, fmt = 9999 ) usrinfo
1796 WRITE( nout, fmt = * )
1797 WRITE( nout, fmt = 9999 )
1798 $ 'Tests of the complex single precision '//
1799 $ 'Level 2 PBLAS'
1800 WRITE( nout, fmt = * )
1801 WRITE( nout, fmt = 9993 ) nmat
1802 WRITE( nout, fmt = 9979 ) nblog
1803 WRITE( nout, fmt = 9992 ) ngrids
1804 WRITE( nout, fmt = 9990 )
1805 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1806 IF( ngrids.GT.5 )
1807 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 6,
1808 $
min( 10, ngrids ) )
1809 IF( ngrids.GT.10 )
1810 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 11,
1811 $
min( 15, ngrids ) )
1812 IF( ngrids.GT.15 )
1813 $ WRITE( nout, fmt = 9991 ) ( pval(i), i = 16, ngrids )
1814 WRITE( nout, fmt = 9990 )
1815 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1816 IF( ngrids.GT.5 )
1817 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 6,
1818 $
min( 10, ngrids ) )
1819 IF( ngrids.GT.10 )
1820 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 11,
1821 $
min( 15, ngrids ) )
1822 IF( ngrids.GT.15 )
1823 $ WRITE( nout, fmt = 9991 ) ( qval(i), i = 16, ngrids )
1824 WRITE( nout, fmt = 9988 ) sof
1825 WRITE( nout, fmt = 9987 ) tee
1826 WRITE( nout, fmt = 9983 ) igap
1827 WRITE( nout, fmt = 9986 ) iverb
1828 WRITE( nout, fmt = 9980 ) thresh
1829 WRITE( nout, fmt = 9982 ) alpha
1830 WRITE( nout, fmt = 9981 ) beta
1831 IF( ltest( 1 ) ) THEN
1832 WRITE( nout, fmt = 9985 ) snames( 1 ), ' ... Yes'
1833 ELSE
1834 WRITE( nout, fmt = 9985 ) snames( 1 ), ' ... No '
1835 END IF
1836 DO 90 i = 2, nsubs
1837 IF( ltest( i ) ) THEN
1838 WRITE( nout, fmt = 9984 ) snames( i ), ' ... Yes'
1839 ELSE
1840 WRITE( nout, fmt = 9984 ) snames( i ), ' ... No '
1841 END IF
1842 90 CONTINUE
1843 WRITE( nout, fmt = 9994 ) eps
1844 WRITE( nout, fmt = * )
1845
1846 ELSE
1847
1848
1849
1850 IF( nprocs.LT.1 )
1851 $ CALL blacs_setup( iam, nprocs )
1852
1853
1854
1855
1856 CALL blacs_get( -1, 0, ictxt )
1857 CALL blacs_gridinit( ictxt, 'Row-major', 1, nprocs )
1858
1859
1860
1862
1863 CALL sgebr2d( ictxt, 'All', ' ', 1, 1, thresh, 1, 0, 0 )
1864 CALL cgebr2d( ictxt, 'All', ' ', 1, 1, alpha, 1, 0, 0 )
1865 CALL cgebr2d( ictxt, 'All', ' ', 1, 1, beta, 1, 0, 0 )
1866
1867 CALL igebr2d( ictxt, 'All', ' ', 3, 1, work, 3, 0, 0 )
1868 ngrids = work( 1 )
1869 nmat = work( 2 )
1870 nblog = work( 3 )
1871
1872 i = 2*ngrids + 37*nmat + nsubs + 4
1873 CALL igebr2d( ictxt, 'All', ' ', i, 1, work, i, 0, 0 )
1874
1875 i = 1
1876 IF( work( i ).EQ.1 ) THEN
1877 sof = .true.
1878 ELSE
1879 sof = .false.
1880 END IF
1881 i = i + 1
1882 IF( work( i ).EQ.1 ) THEN
1883 tee = .true.
1884 ELSE
1885 tee = .false.
1886 END IF
1887 i = i + 1
1888 iverb = work( i )
1889 i = i + 1
1890 igap = work( i )
1891 i = i + 1
1892 DO 100 j = 1, nmat
1893 diagval( j ) = char( work( i ) )
1894 tranval( j ) = char( work( i+1 ) )
1895 uploval( j ) = char( work( i+2 ) )
1896 i = i + 3
1897 100 CONTINUE
1898 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1899 i = i + ngrids
1900 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1901 i = i + ngrids
1902 CALL icopy( nmat, work( i ), 1, mval, 1 )
1903 i = i + nmat
1904 CALL icopy( nmat, work( i ), 1, nval, 1 )
1905 i = i + nmat
1906 CALL icopy( nmat, work( i ), 1, maval, 1 )
1907 i = i + nmat
1908 CALL icopy( nmat, work( i ), 1, naval, 1 )
1909 i = i + nmat
1910 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1911 i = i + nmat
1912 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1913 i = i + nmat
1914 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1915 i = i + nmat
1916 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1917 i = i + nmat
1918 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1919 i = i + nmat
1920 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1921 i = i + nmat
1922 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1923 i = i + nmat
1924 CALL icopy( nmat, work( i ), 1, javal, 1 )
1925 i = i + nmat
1926 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1927 i = i + nmat
1928 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1929 i = i + nmat
1930 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1931 i = i + nmat
1932 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1933 i = i + nmat
1934 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1935 i = i + nmat
1936 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1937 i = i + nmat
1938 CALL icopy( nmat, work( i ), 1, rscxval, 1 )
1939 i = i + nmat
1940 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1941 i = i + nmat
1942 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1943 i = i + nmat
1944 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1945 i = i + nmat
1946 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1947 i = i + nmat
1948 CALL icopy( nmat, work( i ), 1, myval, 1 )
1949 i = i + nmat
1950 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1951 i = i + nmat
1952 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1953 i = i + nmat
1954 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1955 i = i + nmat
1956 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1957 i = i + nmat
1958 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1959 i = i + nmat
1960 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1961 i = i + nmat
1962 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1963 i = i + nmat
1964 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1965 i = i + nmat
1966 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1967 i = i + nmat
1968 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1969 i = i + nmat
1970
1971 DO 110 j = 1, nsubs
1972 IF( work( i ).EQ.1 ) THEN
1973 ltest( j ) = .true.
1974 ELSE
1975 ltest( j ) = .false.
1976 END IF
1977 i = i + 1
1978 110 CONTINUE
1979
1980 END IF
1981
1982 CALL blacs_gridexit( ictxt )
1983
1984 RETURN
1985
1986 120 WRITE( nout, fmt = 9997 )
1987 CLOSE( nin )
1988 IF( nout.NE.6 .AND. nout.NE.0 )
1989 $ CLOSE( nout )
1990 CALL blacs_abort( ictxt, 1 )
1991
1992 stop
1993
1994 9999 FORMAT( a )
1995 9998 FORMAT( ' Number of values of ',5a, ' is less than 1 or greater ',
1996 $ 'than ', i2 )
1997 9997 FORMAT( ' Illegal input in file ',40a,'. Aborting run.' )
1998 9996 FORMAT( a7, l2 )
1999 9995 FORMAT( ' Subprogram name ', a7, ' not recognized',
2000 $ /' ******* TESTS ABANDONED *******' )
2001 9994 FORMAT( 2x, 'Relative machine precision (eps) is taken to be ',
2002 $ e18.6 )
2003 9993 FORMAT( 2x, 'Number of Tests : ', i6 )
2004 9992 FORMAT( 2x, 'Number of process grids : ', i6 )
2005 9991 FORMAT( 2x, ' : ', 5i6 )
2006 9990 FORMAT( 2x, a1, ' : ', 5i6 )
2007 9988 FORMAT( 2x, 'Stop on failure flag : ', l6 )
2008 9987 FORMAT( 2x, 'Test for error exits flag : ', l6 )
2009 9986 FORMAT( 2x, 'Verbosity level : ', i6 )
2010 9985 FORMAT( 2x, 'Routines to be tested : ', a, a8 )
2011 9984 FORMAT( 2x, ' ', a, a8 )
2012 9983 FORMAT( 2x, 'Leading dimension gap : ', i6 )
2013 9982 FORMAT( 2x, 'Alpha : (', g16.6,
2014 $ ',', g16.6, ')' )
2015 9981 FORMAT( 2x, 'Beta : (', g16.6,
2016 $ ',', g16.6, ')' )
2017 9980 FORMAT( 2x, 'Threshold value : ', g16.6 )
2018 9979 FORMAT( 2x, 'Logical block size : ', i6 )
2019
2020
2021
subroutine icopy(n, sx, incx, sy, incy)
real function pslamch(ictxt, cmach)