1041 #if defined(_OPENMP)
1053 parameter( nmax = 132 )
1055 parameter( ncmax = 20 )
1057 parameter( need = 14 )
1059 parameter( lwork = nmax*( 5*nmax+5 )+1 )
1061 parameter( liwork = nmax*( 5*nmax+20 ) )
1063 parameter( maxin = 20 )
1065 parameter( maxt = 30 )
1067 parameter( nin = 5, nout = 6 )
1070 LOGICAL csd, dbb, dgg, dsb, fatal, glm, gqr, gsv,
lse,
1071 $ nep, dbk, dbl, sep, des, dev, dgk, dgl, dgs,
1072 $ dgv, dgx, dsx, svd, dvx, dxv, tstchk, tstdif,
1075 CHARACTER*3 c3, path
1079 INTEGER i, i1, ic, info, itmp, k, lenp, maxtyp, newsd,
1080 $ nk, nn, nparms, nrhs, ntypes,
1081 $ vers_major, vers_minor, vers_patch, n_threads
1082 DOUBLE PRECISION eps, s1, s2, thresh, thrshn
1085 LOGICAL dotype( maxt ), logwrk( nmax )
1086 INTEGER ioldsd( 4 ), iseed( 4 ), iwork( liwork ),
1087 $ kval( maxin ), mval( maxin ), mxbval( maxin ),
1088 $ nbcol( maxin ), nbmin( maxin ), nbval( maxin ),
1089 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
1091 INTEGER inmin( maxin ), inwin( maxin ), inibl( maxin ),
1092 $ ishfts( maxin ), iacc22( maxin )
1093 DOUBLE PRECISION d( nmax, 12 ), result( 500 ), taua( nmax ),
1094 $ taub( nmax ), x( 5*nmax )
1097 INTEGER allocatestatus
1098 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: work
1099 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: a, b, c
1122 INTEGER infot, maxb, nproc, nshift, nunit, seldim,
1126 LOGICAL selval( 20 )
1127 INTEGER iparms( 100 )
1128 DOUBLE PRECISION selwi( 20 ), selwr( 20 )
1131 COMMON / cenvir / nproc, nshift, maxb
1132 COMMON / infoc / infot, nunit, ok, lerr
1133 COMMON / srnamc / srnamt
1134 COMMON / sslct / selopt, seldim, selval, selwr, selwi
1135 COMMON / claenv / iparms
1138 DATA intstr /
'0123456789' /
1139 DATA ioldsd / 0, 0, 0, 1 /
1143 ALLOCATE ( a(nmax*nmax,need), stat = allocatestatus )
1144 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
1145 ALLOCATE ( b(nmax*nmax,5), stat = allocatestatus )
1146 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
1147 ALLOCATE ( c(ncmax*ncmax,ncmax*ncmax), stat = allocatestatus )
1148 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
1149 ALLOCATE ( work(lwork), stat = allocatestatus )
1150 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
1168 READ( nin, fmt =
'(A80)',
END = 380 )line
1170 nep =
lsamen( 3, path,
'NEP' ) .OR.
lsamen( 3, path,
'DHS' )
1171 sep =
lsamen( 3, path,
'SEP' ) .OR.
lsamen( 3, path,
'DST' ) .OR.
1172 $
lsamen( 3, path,
'DSG' ) .OR.
lsamen( 3, path,
'SE2' )
1173 svd =
lsamen( 3, path,
'SVD' ) .OR.
lsamen( 3, path,
'DBD' )
1174 dev =
lsamen( 3, path,
'DEV' )
1175 des =
lsamen( 3, path,
'DES' )
1176 dvx =
lsamen( 3, path,
'DVX' )
1177 dsx =
lsamen( 3, path,
'DSX' )
1178 dgg =
lsamen( 3, path,
'DGG' )
1179 dgs =
lsamen( 3, path,
'DGS' )
1180 dgx =
lsamen( 3, path,
'DGX' )
1181 dgv =
lsamen( 3, path,
'DGV' )
1182 dxv =
lsamen( 3, path,
'DXV' )
1183 dsb =
lsamen( 3, path,
'DSB' )
1184 dbb =
lsamen( 3, path,
'DBB' )
1185 glm =
lsamen( 3, path,
'GLM' )
1186 gqr =
lsamen( 3, path,
'GQR' ) .OR.
lsamen( 3, path,
'GRQ' )
1187 gsv =
lsamen( 3, path,
'GSV' )
1188 csd =
lsamen( 3, path,
'CSD' )
1190 dbl =
lsamen( 3, path,
'DBL' )
1191 dbk =
lsamen( 3, path,
'DBK' )
1192 dgl =
lsamen( 3, path,
'DGL' )
1193 dgk =
lsamen( 3, path,
'DGK' )
1197 IF( path.EQ.
' ' )
THEN
1200 WRITE( nout, fmt = 9987 )
1202 WRITE( nout, fmt = 9986 )
1204 WRITE( nout, fmt = 9985 )
1206 WRITE( nout, fmt = 9979 )
1208 WRITE( nout, fmt = 9978 )
1210 WRITE( nout, fmt = 9977 )
1212 WRITE( nout, fmt = 9976 )
1214 WRITE( nout, fmt = 9975 )
1216 WRITE( nout, fmt = 9964 )
1218 WRITE( nout, fmt = 9965 )
1220 WRITE( nout, fmt = 9963 )
1222 WRITE( nout, fmt = 9962 )
1224 WRITE( nout, fmt = 9974 )
1226 WRITE( nout, fmt = 9967 )
1228 WRITE( nout, fmt = 9971 )
1230 WRITE( nout, fmt = 9970 )
1232 WRITE( nout, fmt = 9969 )
1234 WRITE( nout, fmt = 9960 )
1236 WRITE( nout, fmt = 9968 )
1261 ELSE IF(
lsamen( 3, path,
'DEC' ) )
THEN
1265 READ( nin, fmt = * )thresh
1273 CALL dchkec( thresh, tsterr, nin, nout )
1276 WRITE( nout, fmt = 9992 )path
1279 CALL ilaver( vers_major, vers_minor, vers_patch )
1280 WRITE( nout, fmt = 9972 ) vers_major, vers_minor, vers_patch
1281 WRITE( nout, fmt = 9984 )
1285 READ( nin, fmt = * )nn
1287 WRITE( nout, fmt = 9989 )
' NN ', nn, 1
1290 ELSE IF( nn.GT.maxin )
THEN
1291 WRITE( nout, fmt = 9988 )
' NN ', nn, maxin
1298 IF( .NOT.( dgx .OR. dxv ) )
THEN
1299 READ( nin, fmt = * )( mval( i ), i = 1, nn )
1306 IF( mval( i ).LT.0 )
THEN
1307 WRITE( nout, fmt = 9989 )vname, mval( i ), 0
1309 ELSE IF( mval( i ).GT.nmax )
THEN
1310 WRITE( nout, fmt = 9988 )vname, mval( i ), nmax
1314 WRITE( nout, fmt = 9983 )
'M: ', ( mval( i ), i = 1, nn )
1319 IF( glm .OR. gqr .OR. gsv .OR. csd .OR.
lse )
THEN
1320 READ( nin, fmt = * )( pval( i ), i = 1, nn )
1322 IF( pval( i ).LT.0 )
THEN
1323 WRITE( nout, fmt = 9989 )
' P ', pval( i ), 0
1325 ELSE IF( pval( i ).GT.nmax )
THEN
1326 WRITE( nout, fmt = 9988 )
' P ', pval( i ), nmax
1330 WRITE( nout, fmt = 9983 )
'P: ', ( pval( i ), i = 1, nn )
1335 IF( svd .OR. dbb .OR. glm .OR. gqr .OR. gsv .OR. csd .OR.
1337 READ( nin, fmt = * )( nval( i ), i = 1, nn )
1339 IF( nval( i ).LT.0 )
THEN
1340 WRITE( nout, fmt = 9989 )
' N ', nval( i ), 0
1342 ELSE IF( nval( i ).GT.nmax )
THEN
1343 WRITE( nout, fmt = 9988 )
' N ', nval( i ), nmax
1349 nval( i ) = mval( i )
1352 IF( .NOT.( dgx .OR. dxv ) )
THEN
1353 WRITE( nout, fmt = 9983 )
'N: ', ( nval( i ), i = 1, nn )
1355 WRITE( nout, fmt = 9983 )
'N: ', nn
1360 IF( dsb .OR. dbb )
THEN
1361 READ( nin, fmt = * )nk
1362 READ( nin, fmt = * )( kval( i ), i = 1, nk )
1364 IF( kval( i ).LT.0 )
THEN
1365 WRITE( nout, fmt = 9989 )
' K ', kval( i ), 0
1367 ELSE IF( kval( i ).GT.nmax )
THEN
1368 WRITE( nout, fmt = 9988 )
' K ', kval( i ), nmax
1372 WRITE( nout, fmt = 9983 )
'K: ', ( kval( i ), i = 1, nk )
1375 IF( dev .OR. des .OR. dvx .OR. dsx )
THEN
1380 READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1381 $ inmin( 1 ), inwin( 1 ), inibl(1), ishfts(1), iacc22(1)
1382 IF( nbval( 1 ).LT.1 )
THEN
1383 WRITE( nout, fmt = 9989 )
' NB ', nbval( 1 ), 1
1385 ELSE IF( nbmin( 1 ).LT.1 )
THEN
1386 WRITE( nout, fmt = 9989 )
'NBMIN ', nbmin( 1 ), 1
1388 ELSE IF( nxval( 1 ).LT.1 )
THEN
1389 WRITE( nout, fmt = 9989 )
' NX ', nxval( 1 ), 1
1391 ELSE IF( inmin( 1 ).LT.1 )
THEN
1392 WRITE( nout, fmt = 9989 )
' INMIN ', inmin( 1 ), 1
1394 ELSE IF( inwin( 1 ).LT.1 )
THEN
1395 WRITE( nout, fmt = 9989 )
' INWIN ', inwin( 1 ), 1
1397 ELSE IF( inibl( 1 ).LT.1 )
THEN
1398 WRITE( nout, fmt = 9989 )
' INIBL ', inibl( 1 ), 1
1400 ELSE IF( ishfts( 1 ).LT.1 )
THEN
1401 WRITE( nout, fmt = 9989 )
' ISHFTS ', ishfts( 1 ), 1
1403 ELSE IF( iacc22( 1 ).LT.0 )
THEN
1404 WRITE( nout, fmt = 9989 )
' IACC22 ', iacc22( 1 ), 0
1407 CALL xlaenv( 1, nbval( 1 ) )
1408 CALL xlaenv( 2, nbmin( 1 ) )
1409 CALL xlaenv( 3, nxval( 1 ) )
1410 CALL xlaenv(12, max( 11, inmin( 1 ) ) )
1411 CALL xlaenv(13, inwin( 1 ) )
1412 CALL xlaenv(14, inibl( 1 ) )
1413 CALL xlaenv(15, ishfts( 1 ) )
1414 CALL xlaenv(16, iacc22( 1 ) )
1415 WRITE( nout, fmt = 9983 )
'NB: ', nbval( 1 )
1416 WRITE( nout, fmt = 9983 )
'NBMIN:', nbmin( 1 )
1417 WRITE( nout, fmt = 9983 )
'NX: ', nxval( 1 )
1418 WRITE( nout, fmt = 9983 )
'INMIN: ', inmin( 1 )
1419 WRITE( nout, fmt = 9983 )
'INWIN: ', inwin( 1 )
1420 WRITE( nout, fmt = 9983 )
'INIBL: ', inibl( 1 )
1421 WRITE( nout, fmt = 9983 )
'ISHFTS: ', ishfts( 1 )
1422 WRITE( nout, fmt = 9983 )
'IACC22: ', iacc22( 1 )
1424 ELSEIF( dgs .OR. dgx .OR. dgv .OR. dxv )
THEN
1429 READ( nin, fmt = * )nbval( 1 ), nbmin( 1 ), nxval( 1 ),
1430 $ nsval( 1 ), mxbval( 1 )
1431 IF( nbval( 1 ).LT.1 )
THEN
1432 WRITE( nout, fmt = 9989 )
' NB ', nbval( 1 ), 1
1434 ELSE IF( nbmin( 1 ).LT.1 )
THEN
1435 WRITE( nout, fmt = 9989 )
'NBMIN ', nbmin( 1 ), 1
1437 ELSE IF( nxval( 1 ).LT.1 )
THEN
1438 WRITE( nout, fmt = 9989 )
' NX ', nxval( 1 ), 1
1440 ELSE IF( nsval( 1 ).LT.2 )
THEN
1441 WRITE( nout, fmt = 9989 )
' NS ', nsval( 1 ), 2
1443 ELSE IF( mxbval( 1 ).LT.1 )
THEN
1444 WRITE( nout, fmt = 9989 )
' MAXB ', mxbval( 1 ), 1
1447 CALL xlaenv( 1, nbval( 1 ) )
1448 CALL xlaenv( 2, nbmin( 1 ) )
1449 CALL xlaenv( 3, nxval( 1 ) )
1450 CALL xlaenv( 4, nsval( 1 ) )
1451 CALL xlaenv( 8, mxbval( 1 ) )
1452 WRITE( nout, fmt = 9983 )
'NB: ', nbval( 1 )
1453 WRITE( nout, fmt = 9983 )
'NBMIN:', nbmin( 1 )
1454 WRITE( nout, fmt = 9983 )
'NX: ', nxval( 1 )
1455 WRITE( nout, fmt = 9983 )
'NS: ', nsval( 1 )
1456 WRITE( nout, fmt = 9983 )
'MAXB: ', mxbval( 1 )
1458 ELSE IF( .NOT.dsb .AND. .NOT.glm .AND. .NOT.gqr .AND. .NOT.
1459 $ gsv .AND. .NOT.csd .AND. .NOT.
lse )
THEN
1464 READ( nin, fmt = * )nparms
1465 IF( nparms.LT.1 )
THEN
1466 WRITE( nout, fmt = 9989 )
'NPARMS', nparms, 1
1469 ELSE IF( nparms.GT.maxin )
THEN
1470 WRITE( nout, fmt = 9988 )
'NPARMS', nparms, maxin
1478 READ( nin, fmt = * )( nbval( i ), i = 1, nparms )
1480 IF( nbval( i ).LT.0 )
THEN
1481 WRITE( nout, fmt = 9989 )
' NB ', nbval( i ), 0
1483 ELSE IF( nbval( i ).GT.nmax )
THEN
1484 WRITE( nout, fmt = 9988 )
' NB ', nbval( i ), nmax
1488 WRITE( nout, fmt = 9983 )
'NB: ',
1489 $ ( nbval( i ), i = 1, nparms )
1494 IF( nep .OR. sep .OR. svd .OR. dgg )
THEN
1495 READ( nin, fmt = * )( nbmin( i ), i = 1, nparms )
1497 IF( nbmin( i ).LT.0 )
THEN
1498 WRITE( nout, fmt = 9989 )
'NBMIN ', nbmin( i ), 0
1500 ELSE IF( nbmin( i ).GT.nmax )
THEN
1501 WRITE( nout, fmt = 9988 )
'NBMIN ', nbmin( i ), nmax
1505 WRITE( nout, fmt = 9983 )
'NBMIN:',
1506 $ ( nbmin( i ), i = 1, nparms )
1515 IF( nep .OR. sep .OR. svd )
THEN
1516 READ( nin, fmt = * )( nxval( i ), i = 1, nparms )
1517 DO 100 i = 1, nparms
1518 IF( nxval( i ).LT.0 )
THEN
1519 WRITE( nout, fmt = 9989 )
' NX ', nxval( i ), 0
1521 ELSE IF( nxval( i ).GT.nmax )
THEN
1522 WRITE( nout, fmt = 9988 )
' NX ', nxval( i ), nmax
1526 WRITE( nout, fmt = 9983 )
'NX: ',
1527 $ ( nxval( i ), i = 1, nparms )
1529 DO 110 i = 1, nparms
1537 IF( svd .OR. dbb .OR. dgg )
THEN
1538 READ( nin, fmt = * )( nsval( i ), i = 1, nparms )
1539 DO 120 i = 1, nparms
1540 IF( nsval( i ).LT.0 )
THEN
1541 WRITE( nout, fmt = 9989 )
' NS ', nsval( i ), 0
1543 ELSE IF( nsval( i ).GT.nmax )
THEN
1544 WRITE( nout, fmt = 9988 )
' NS ', nsval( i ), nmax
1548 WRITE( nout, fmt = 9983 )
'NS: ',
1549 $ ( nsval( i ), i = 1, nparms )
1551 DO 130 i = 1, nparms
1559 READ( nin, fmt = * )( mxbval( i ), i = 1, nparms )
1560 DO 140 i = 1, nparms
1561 IF( mxbval( i ).LT.0 )
THEN
1562 WRITE( nout, fmt = 9989 )
' MAXB ', mxbval( i ), 0
1564 ELSE IF( mxbval( i ).GT.nmax )
THEN
1565 WRITE( nout, fmt = 9988 )
' MAXB ', mxbval( i ), nmax
1569 WRITE( nout, fmt = 9983 )
'MAXB: ',
1570 $ ( mxbval( i ), i = 1, nparms )
1572 DO 150 i = 1, nparms
1580 READ( nin, fmt = * )( inmin( i ), i = 1, nparms )
1581 DO 540 i = 1, nparms
1582 IF( inmin( i ).LT.0 )
THEN
1583 WRITE( nout, fmt = 9989 )
' INMIN ', inmin( i ), 0
1587 WRITE( nout, fmt = 9983 )
'INMIN: ',
1588 $ ( inmin( i ), i = 1, nparms )
1590 DO 550 i = 1, nparms
1598 READ( nin, fmt = * )( inwin( i ), i = 1, nparms )
1599 DO 560 i = 1, nparms
1600 IF( inwin( i ).LT.0 )
THEN
1601 WRITE( nout, fmt = 9989 )
' INWIN ', inwin( i ), 0
1605 WRITE( nout, fmt = 9983 )
'INWIN: ',
1606 $ ( inwin( i ), i = 1, nparms )
1608 DO 570 i = 1, nparms
1616 READ( nin, fmt = * )( inibl( i ), i = 1, nparms )
1617 DO 580 i = 1, nparms
1618 IF( inibl( i ).LT.0 )
THEN
1619 WRITE( nout, fmt = 9989 )
' INIBL ', inibl( i ), 0
1623 WRITE( nout, fmt = 9983 )
'INIBL: ',
1624 $ ( inibl( i ), i = 1, nparms )
1626 DO 590 i = 1, nparms
1634 READ( nin, fmt = * )( ishfts( i ), i = 1, nparms )
1635 DO 600 i = 1, nparms
1636 IF( ishfts( i ).LT.0 )
THEN
1637 WRITE( nout, fmt = 9989 )
' ISHFTS ', ishfts( i ), 0
1641 WRITE( nout, fmt = 9983 )
'ISHFTS: ',
1642 $ ( ishfts( i ), i = 1, nparms )
1644 DO 610 i = 1, nparms
1651 IF( nep .OR. dgg )
THEN
1652 READ( nin, fmt = * )( iacc22( i ), i = 1, nparms )
1653 DO 620 i = 1, nparms
1654 IF( iacc22( i ).LT.0 )
THEN
1655 WRITE( nout, fmt = 9989 )
' IACC22 ', iacc22( i ), 0
1659 WRITE( nout, fmt = 9983 )
'IACC22: ',
1660 $ ( iacc22( i ), i = 1, nparms )
1662 DO 630 i = 1, nparms
1670 READ( nin, fmt = * )( nbcol( i ), i = 1, nparms )
1671 DO 160 i = 1, nparms
1672 IF( nbcol( i ).LT.0 )
THEN
1673 WRITE( nout, fmt = 9989 )
'NBCOL ', nbcol( i ), 0
1675 ELSE IF( nbcol( i ).GT.nmax )
THEN
1676 WRITE( nout, fmt = 9988 )
'NBCOL ', nbcol( i ), nmax
1680 WRITE( nout, fmt = 9983 )
'NBCOL:',
1681 $ ( nbcol( i ), i = 1, nparms )
1683 DO 170 i = 1, nparms
1691 WRITE( nout, fmt = * )
1692 eps =
dlamch(
'Underflow threshold' )
1693 WRITE( nout, fmt = 9981 )
'underflow', eps
1694 eps =
dlamch(
'Overflow threshold' )
1695 WRITE( nout, fmt = 9981 )
'overflow ', eps
1696 eps =
dlamch(
'Epsilon' )
1697 WRITE( nout, fmt = 9981 )
'precision', eps
1701 READ( nin, fmt = * )thresh
1702 WRITE( nout, fmt = 9982 )thresh
1703 IF( sep .OR. svd .OR. dgg )
THEN
1707 READ( nin, fmt = * )tstchk
1711 READ( nin, fmt = * )tstdrv
1716 READ( nin, fmt = * )tsterr
1720 READ( nin, fmt = * )newsd
1725 $
READ( nin, fmt = * )( ioldsd( i ), i = 1, 4 )
1728 iseed( i ) = ioldsd( i )
1732 WRITE( nout, fmt = 9999 )
1743 IF( .NOT.( dgx .OR. dxv ) )
THEN
1746 READ( nin, fmt =
'(A80)',
END = 380 )line
1754 IF( i.GT.lenp )
THEN
1762 IF( line( i: i ).NE.
' ' .AND. line( i: i ).NE.
',' )
THEN
1769 IF( c1.EQ.intstr( k: k ) )
THEN
1774 WRITE( nout, fmt = 9991 )i, line
1779 ELSE IF( i1.GT.0 )
THEN
1789 IF( .NOT.( dev .OR. des .OR. dvx .OR. dsx .OR. dgv .OR.
1790 $ dgs ) .AND. ntypes.LE.0 )
THEN
1791 WRITE( nout, fmt = 9990 )c3
1804 IF( newsd.EQ.0 )
THEN
1806 iseed( k ) = ioldsd( k )
1810 IF(
lsamen( 3, c3,
'DHS' ) .OR.
lsamen( 3, c3,
'NEP' ) )
THEN
1823 ntypes = min( maxtyp, ntypes )
1824 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1827 $
CALL derrhs(
'DHSEQR', nout )
1828 DO 270 i = 1, nparms
1829 CALL xlaenv( 1, nbval( i ) )
1830 CALL xlaenv( 2, nbmin( i ) )
1831 CALL xlaenv( 3, nxval( i ) )
1832 CALL xlaenv(12, max( 11, inmin( i ) ) )
1833 CALL xlaenv(13, inwin( i ) )
1834 CALL xlaenv(14, inibl( i ) )
1835 CALL xlaenv(15, ishfts( i ) )
1836 CALL xlaenv(16, iacc22( i ) )
1838 IF( newsd.EQ.0 )
THEN
1840 iseed( k ) = ioldsd( k )
1843 WRITE( nout, fmt = 9961 )c3, nbval( i ), nbmin( i ),
1844 $ nxval( i ), max( 11, inmin(i)),
1845 $ inwin( i ), inibl( i ), ishfts( i ), iacc22( i )
1846 CALL dchkhs( nn, nval, maxtyp, dotype, iseed, thresh, nout,
1847 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
1848 $ a( 1, 4 ), a( 1, 5 ), nmax, a( 1, 6 ),
1849 $ a( 1, 7 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
1850 $ d( 1, 4 ), d( 1, 5 ), d( 1, 6 ), a( 1, 8 ),
1851 $ a( 1, 9 ), a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
1852 $ d( 1, 7 ), work, lwork, iwork, logwrk, result,
1855 $
WRITE( nout, fmt = 9980 )
'DCHKHS', info
1858 ELSE IF(
lsamen( 3, c3,
'DST' ) .OR.
lsamen( 3, c3,
'SEP' )
1859 $ .OR.
lsamen( 3, c3,
'SE2' ) )
THEN
1870 ntypes = min( maxtyp, ntypes )
1871 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1875 #if defined(_OPENMP)
1876 n_threads = omp_get_max_threads()
1877 CALL omp_set_num_threads(1)
1879 CALL derrst(
'DST', nout )
1880 #if defined(_OPENMP)
1881 CALL omp_set_num_threads(n_threads)
1884 DO 290 i = 1, nparms
1885 CALL xlaenv( 1, nbval( i ) )
1886 CALL xlaenv( 2, nbmin( i ) )
1887 CALL xlaenv( 3, nxval( i ) )
1889 IF( newsd.EQ.0 )
THEN
1891 iseed( k ) = ioldsd( k )
1894 WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1897 IF(
lsamen( 3, c3,
'SE2' ) )
THEN
1898 CALL dchkst2stg( nn, nval, maxtyp, dotype, iseed, thresh,
1899 $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
1900 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
1901 $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
1902 $ d( 1, 10 ), d( 1, 11 ), a( 1, 3 ), nmax,
1903 $ a( 1, 4 ), a( 1, 5 ), d( 1, 12 ), a( 1, 6 ),
1904 $ work, lwork, iwork, liwork, result, info )
1906 CALL dchkst( nn, nval, maxtyp, dotype, iseed, thresh,
1907 $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
1908 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
1909 $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
1910 $ d( 1, 10 ), d( 1, 11 ), a( 1, 3 ), nmax,
1911 $ a( 1, 4 ), a( 1, 5 ), d( 1, 12 ), a( 1, 6 ),
1912 $ work, lwork, iwork, liwork, result, info )
1915 $
WRITE( nout, fmt = 9980 )
'DCHKST', info
1918 IF(
lsamen( 3, c3,
'SE2' ) )
THEN
1919 CALL ddrvst2stg( nn, nval, 18, dotype, iseed, thresh,
1920 $ nout, a( 1, 1 ), nmax, d( 1, 3 ), d( 1, 4 ),
1921 $ d( 1, 5 ), d( 1, 6 ), d( 1, 8 ), d( 1, 9 ),
1922 $ d( 1, 10 ), d( 1, 11 ), a( 1, 2 ), nmax,
1923 $ a( 1, 3 ), d( 1, 12 ), a( 1, 4 ), work,
1924 $ lwork, iwork, liwork, result, info )
1926 CALL ddrvst( nn, nval, 18, dotype, iseed, thresh, nout,
1927 $ a( 1, 1 ), nmax, d( 1, 3 ), d( 1, 4 ),
1928 $ d( 1, 5 ), d( 1, 6 ), d( 1, 8 ), d( 1, 9 ),
1929 $ d( 1, 10 ), d( 1, 11 ), a( 1, 2 ), nmax,
1930 $ a( 1, 3 ), d( 1, 12 ), a( 1, 4 ), work,
1931 $ lwork, iwork, liwork, result, info )
1934 $
WRITE( nout, fmt = 9980 )
'DDRVST', info
1938 ELSE IF(
lsamen( 3, c3,
'DSG' ) )
THEN
1949 ntypes = min( maxtyp, ntypes )
1950 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
1952 DO 310 i = 1, nparms
1953 CALL xlaenv( 1, nbval( i ) )
1954 CALL xlaenv( 2, nbmin( i ) )
1955 CALL xlaenv( 3, nxval( i ) )
1957 IF( newsd.EQ.0 )
THEN
1959 iseed( k ) = ioldsd( k )
1962 WRITE( nout, fmt = 9997 )c3, nbval( i ), nbmin( i ),
1970 CALL ddrvsg2stg( nn, nval, maxtyp, dotype, iseed, thresh,
1971 $ nout, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
1972 $ d( 1, 3 ), d( 1, 3 ), a( 1, 3 ), nmax,
1973 $ a( 1, 4 ), a( 1, 5 ), a( 1, 6 ),
1974 $ a( 1, 7 ), work, lwork, iwork, liwork,
1977 $
WRITE( nout, fmt = 9980 )
'DDRVSG', info
1981 ELSE IF(
lsamen( 3, c3,
'DBD' ) .OR.
lsamen( 3, c3,
'SVD' ) )
THEN
1993 ntypes = min( maxtyp, ntypes )
1994 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2000 IF( tsterr .AND. tstchk )
2001 $
CALL derrbd(
'DBD', nout )
2002 IF( tsterr .AND. tstdrv )
2003 $
CALL derred(
'DBD', nout )
2005 DO 330 i = 1, nparms
2007 CALL xlaenv( 1, nbval( i ) )
2008 CALL xlaenv( 2, nbmin( i ) )
2009 CALL xlaenv( 3, nxval( i ) )
2010 IF( newsd.EQ.0 )
THEN
2012 iseed( k ) = ioldsd( k )
2015 WRITE( nout, fmt = 9995 )c3, nbval( i ), nbmin( i ),
2018 CALL dchkbd( nn, mval, nval, maxtyp, dotype, nrhs, iseed,
2019 $ thresh, a( 1, 1 ), nmax, d( 1, 1 ),
2020 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 2 ),
2021 $ nmax, a( 1, 3 ), a( 1, 4 ), a( 1, 5 ), nmax,
2022 $ a( 1, 6 ), nmax, a( 1, 7 ), a( 1, 8 ), work,
2023 $ lwork, iwork, nout, info )
2025 $
WRITE( nout, fmt = 9980 )
'DCHKBD', info
2028 $
CALL ddrvbd( nn, mval, nval, maxtyp, dotype, iseed,
2029 $ thresh, a( 1, 1 ), nmax, a( 1, 2 ), nmax,
2030 $ a( 1, 3 ), nmax, a( 1, 4 ), a( 1, 5 ),
2031 $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
2032 $ work, lwork, iwork, nout, info )
2035 ELSE IF(
lsamen( 3, c3,
'DEV' ) )
THEN
2043 ntypes = min( maxtyp, ntypes )
2044 IF( ntypes.LE.0 )
THEN
2045 WRITE( nout, fmt = 9990 )c3
2048 $
CALL derred( c3, nout )
2049 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2050 CALL ddrvev( nn, nval, ntypes, dotype, iseed, thresh, nout,
2051 $ a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
2052 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
2053 $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax, result,
2054 $ work, lwork, iwork, info )
2056 $
WRITE( nout, fmt = 9980 )
'DGEEV', info
2058 WRITE( nout, fmt = 9973 )
2061 ELSE IF(
lsamen( 3, c3,
'DES' ) )
THEN
2069 ntypes = min( maxtyp, ntypes )
2070 IF( ntypes.LE.0 )
THEN
2071 WRITE( nout, fmt = 9990 )c3
2074 $
CALL derred( c3, nout )
2075 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2076 CALL ddrves( nn, nval, ntypes, dotype, iseed, thresh, nout,
2077 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2078 $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2079 $ a( 1, 4 ), nmax, result, work, lwork, iwork,
2082 $
WRITE( nout, fmt = 9980 )
'DGEES', info
2084 WRITE( nout, fmt = 9973 )
2087 ELSE IF(
lsamen( 3, c3,
'DVX' ) )
THEN
2095 ntypes = min( maxtyp, ntypes )
2096 IF( ntypes.LT.0 )
THEN
2097 WRITE( nout, fmt = 9990 )c3
2100 $
CALL derred( c3, nout )
2101 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2102 CALL ddrvvx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2103 $ nout, a( 1, 1 ), nmax, a( 1, 2 ), d( 1, 1 ),
2104 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), a( 1, 3 ),
2105 $ nmax, a( 1, 4 ), nmax, a( 1, 5 ), nmax,
2106 $ d( 1, 5 ), d( 1, 6 ), d( 1, 7 ), d( 1, 8 ),
2107 $ d( 1, 9 ), d( 1, 10 ), d( 1, 11 ), d( 1, 12 ),
2108 $ result, work, lwork, iwork, info )
2110 $
WRITE( nout, fmt = 9980 )
'DGEEVX', info
2112 WRITE( nout, fmt = 9973 )
2115 ELSE IF(
lsamen( 3, c3,
'DSX' ) )
THEN
2123 ntypes = min( maxtyp, ntypes )
2124 IF( ntypes.LT.0 )
THEN
2125 WRITE( nout, fmt = 9990 )c3
2128 $
CALL derred( c3, nout )
2129 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2130 CALL ddrvsx( nn, nval, ntypes, dotype, iseed, thresh, nin,
2131 $ nout, a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2132 $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2133 $ d( 1, 5 ), d( 1, 6 ), a( 1, 4 ), nmax,
2134 $ a( 1, 5 ), result, work, lwork, iwork, logwrk,
2137 $
WRITE( nout, fmt = 9980 )
'DGEESX', info
2139 WRITE( nout, fmt = 9973 )
2142 ELSE IF(
lsamen( 3, c3,
'DGG' ) )
THEN
2156 ntypes = min( maxtyp, ntypes )
2157 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2159 IF( tstchk .AND. tsterr )
2160 $
CALL derrgg( c3, nout )
2161 DO 350 i = 1, nparms
2162 CALL xlaenv( 1, nbval( i ) )
2163 CALL xlaenv( 2, nbmin( i ) )
2164 CALL xlaenv( 4, nsval( i ) )
2165 CALL xlaenv( 8, mxbval( i ) )
2166 CALL xlaenv( 16, iacc22( i ) )
2167 CALL xlaenv( 5, nbcol( i ) )
2169 IF( newsd.EQ.0 )
THEN
2171 iseed( k ) = ioldsd( k )
2174 WRITE( nout, fmt = 9996 )c3, nbval( i ), nbmin( i ),
2175 $ nsval( i ), mxbval( i ), iacc22( i ), nbcol( i )
2179 CALL dchkgg( nn, nval, maxtyp, dotype, iseed, thresh,
2180 $ tstdif, thrshn, nout, a( 1, 1 ), nmax,
2181 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2182 $ a( 1, 6 ), a( 1, 7 ), a( 1, 8 ), a( 1, 9 ),
2183 $ nmax, a( 1, 10 ), a( 1, 11 ), a( 1, 12 ),
2184 $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), d( 1, 4 ),
2185 $ d( 1, 5 ), d( 1, 6 ), a( 1, 13 ),
2186 $ a( 1, 14 ), work, lwork, logwrk, result,
2189 $
WRITE( nout, fmt = 9980 )
'DCHKGG', info
2193 ELSE IF(
lsamen( 3, c3,
'DGS' ) )
THEN
2201 ntypes = min( maxtyp, ntypes )
2202 IF( ntypes.LE.0 )
THEN
2203 WRITE( nout, fmt = 9990 )c3
2206 $
CALL derrgg( c3, nout )
2207 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2208 CALL ddrges( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2209 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2210 $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2211 $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), work, lwork,
2212 $ result, logwrk, info )
2214 $
WRITE( nout, fmt = 9980 )
'DDRGES', info
2219 CALL ddrges3( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2220 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2221 $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2222 $ d( 1, 1 ), d( 1, 2 ), d( 1, 3 ), work, lwork,
2223 $ result, logwrk, info )
2225 $
WRITE( nout, fmt = 9980 )
'DDRGES3', info
2227 WRITE( nout, fmt = 9973 )
2240 WRITE( nout, fmt = 9990 )c3
2243 $
CALL derrgg( c3, nout )
2244 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2246 CALL ddrgsx( nn, ncmax, thresh, nin, nout, a( 1, 1 ), nmax,
2247 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
2248 $ a( 1, 6 ), d( 1, 1 ), d( 1, 2 ), d( 1, 3 ),
2249 $ c( 1, 1 ), ncmax*ncmax, a( 1, 12 ), work,
2250 $ lwork, iwork, liwork, logwrk, info )
2252 $
WRITE( nout, fmt = 9980 )
'DDRGSX', info
2254 WRITE( nout, fmt = 9973 )
2257 ELSE IF(
lsamen( 3, c3,
'DGV' ) )
THEN
2265 ntypes = min( maxtyp, ntypes )
2266 IF( ntypes.LE.0 )
THEN
2267 WRITE( nout, fmt = 9990 )c3
2270 $
CALL derrgg( c3, nout )
2271 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2272 CALL ddrgev( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2273 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2274 $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2275 $ a( 1, 9 ), nmax, d( 1, 1 ), d( 1, 2 ),
2276 $ d( 1, 3 ), d( 1, 4 ), d( 1, 5 ), d( 1, 6 ),
2277 $ work, lwork, result, info )
2279 $
WRITE( nout, fmt = 9980 )
'DDRGEV', info
2283 CALL ddrgev3( nn, nval, maxtyp, dotype, iseed, thresh, nout,
2284 $ a( 1, 1 ), nmax, a( 1, 2 ), a( 1, 3 ),
2285 $ a( 1, 4 ), a( 1, 7 ), nmax, a( 1, 8 ),
2286 $ a( 1, 9 ), nmax, d( 1, 1 ), d( 1, 2 ),
2287 $ d( 1, 3 ), d( 1, 4 ), d( 1, 5 ), d( 1, 6 ),
2288 $ work, lwork, result, info )
2290 $
WRITE( nout, fmt = 9980 )
'DDRGEV3', info
2292 WRITE( nout, fmt = 9973 )
2305 WRITE( nout, fmt = 9990 )c3
2308 $
CALL derrgg( c3, nout )
2309 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2310 CALL ddrgvx( nn, thresh, nin, nout, a( 1, 1 ), nmax,
2311 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), d( 1, 1 ),
2312 $ d( 1, 2 ), d( 1, 3 ), a( 1, 5 ), a( 1, 6 ),
2313 $ iwork( 1 ), iwork( 2 ), d( 1, 4 ), d( 1, 5 ),
2314 $ d( 1, 6 ), d( 1, 7 ), d( 1, 8 ), d( 1, 9 ),
2315 $ work, lwork, iwork( 3 ), liwork-2, result,
2319 $
WRITE( nout, fmt = 9980 )
'DDRGVX', info
2321 WRITE( nout, fmt = 9973 )
2324 ELSE IF(
lsamen( 3, c3,
'DSB' ) )
THEN
2331 ntypes = min( maxtyp, ntypes )
2332 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2334 $
CALL derrst(
'DSB', nout )
2338 CALL dchksb2stg( nn, nval, nk, kval, maxtyp, dotype, iseed,
2339 $ thresh, nout, a( 1, 1 ), nmax, d( 1, 1 ),
2340 $ d( 1, 2 ), d( 1, 3 ), d( 1, 4 ), d( 1, 5 ),
2341 $ a( 1, 2 ), nmax, work, lwork, result, info )
2343 $
WRITE( nout, fmt = 9980 )
'DCHKSB', info
2345 ELSE IF(
lsamen( 3, c3,
'DBB' ) )
THEN
2352 ntypes = min( maxtyp, ntypes )
2353 CALL alareq( c3, ntypes, dotype, maxtyp, nin, nout )
2354 DO 370 i = 1, nparms
2357 IF( newsd.EQ.0 )
THEN
2359 iseed( k ) = ioldsd( k )
2362 WRITE( nout, fmt = 9966 )c3, nrhs
2363 CALL dchkbb( nn, mval, nval, nk, kval, maxtyp, dotype, nrhs,
2364 $ iseed, thresh, nout, a( 1, 1 ), nmax,
2365 $ a( 1, 2 ), 2*nmax, d( 1, 1 ), d( 1, 2 ),
2366 $ a( 1, 4 ), nmax, a( 1, 5 ), nmax, a( 1, 6 ),
2367 $ nmax, a( 1, 7 ), work, lwork, result, info )
2369 $
WRITE( nout, fmt = 9980 )
'DCHKBB', info
2372 ELSE IF(
lsamen( 3, c3,
'GLM' ) )
THEN
2380 $
CALL derrgg(
'GLM', nout )
2381 CALL dckglm( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2382 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2383 $ work, d( 1, 1 ), nin, nout, info )
2385 $
WRITE( nout, fmt = 9980 )
'DCKGLM', info
2387 ELSE IF(
lsamen( 3, c3,
'GQR' ) )
THEN
2395 $
CALL derrgg(
'GQR', nout )
2396 CALL dckgqr( nn, mval, nn, pval, nn, nval, ntypes, iseed,
2397 $ thresh, nmax, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
2398 $ a( 1, 4 ), taua, b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
2399 $ b( 1, 4 ), b( 1, 5 ), taub, work, d( 1, 1 ), nin,
2402 $
WRITE( nout, fmt = 9980 )
'DCKGQR', info
2404 ELSE IF(
lsamen( 3, c3,
'GSV' ) )
THEN
2412 $
CALL derrgg(
'GSV', nout )
2413 CALL dckgsv( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2414 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
2415 $ a( 1, 3 ), b( 1, 3 ), a( 1, 4 ), taua, taub,
2416 $ b( 1, 4 ), iwork, work, d( 1, 1 ), nin, nout,
2419 $
WRITE( nout, fmt = 9980 )
'DCKGSV', info
2421 ELSE IF(
lsamen( 3, c3,
'CSD' ) )
THEN
2429 $
CALL derrgg(
'CSD', nout )
2430 CALL dckcsd( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2431 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), a( 1, 4 ),
2432 $ a( 1, 5 ), a( 1, 6 ), a( 1, 7 ), iwork, work,
2433 $ d( 1, 1 ), nin, nout, info )
2435 $
WRITE( nout, fmt = 9980 )
'DCKCSD', info
2437 ELSE IF(
lsamen( 3, c3,
'LSE' ) )
THEN
2445 $
CALL derrgg(
'LSE', nout )
2446 CALL dcklse( nn, mval, pval, nval, ntypes, iseed, thresh, nmax,
2447 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), x,
2448 $ work, d( 1, 1 ), nin, nout, info )
2450 $
WRITE( nout, fmt = 9980 )
'DCKLSE', info
2453 WRITE( nout, fmt = * )
2454 WRITE( nout, fmt = * )
2455 WRITE( nout, fmt = 9992 )c3
2457 IF( .NOT.( dgx .OR. dxv ) )
2460 WRITE( nout, fmt = 9994 )
2462 WRITE( nout, fmt = 9993 )s2 - s1
2464 DEALLOCATE (a, stat = allocatestatus)
2465 DEALLOCATE (b, stat = allocatestatus)
2466 DEALLOCATE (c, stat = allocatestatus)
2467 DEALLOCATE (work, stat = allocatestatus)
2469 9999
FORMAT( /
' Execution not attempted due to input errors' )
2470 9997
FORMAT( / / 1x, a3,
': NB =', i4,
', NBMIN =', i4,
', NX =', i4 )
2471 9996
FORMAT( / / 1x, a3,
': NB =', i4,
', NBMIN =', i4,
', NS =', i4,
2472 $
', MAXB =', i4,
', IACC22 =', i4,
', NBCOL =', i4 )
2473 9995
FORMAT( / / 1x, a3,
': NB =', i4,
', NBMIN =', i4,
', NX =', i4,
2475 9994
FORMAT( / /
' End of tests' )
2476 9993
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
2477 9992
FORMAT( 1x, a3,
': Unrecognized path name' )
2478 9991
FORMAT( / /
' *** Invalid integer value in column ', i2,
2479 $
' of input',
' line:', / a79 )
2480 9990
FORMAT( / / 1x, a3,
' routines were not tested' )
2481 9989
FORMAT(
' Invalid input value: ', a,
'=', i6,
'; must be >=',
2483 9988
FORMAT(
' Invalid input value: ', a,
'=', i6,
'; must be <=',
2485 9987
FORMAT(
' Tests of the Nonsymmetric Eigenvalue Problem routines' )
2486 9986
FORMAT(
' Tests of the Symmetric Eigenvalue Problem routines' )
2487 9985
FORMAT(
' Tests of the Singular Value Decomposition routines' )
2488 9984
FORMAT( /
' The following parameter values will be used:' )
2489 9983
FORMAT( 4x, a, 10i6, / 10x, 10i6 )
2490 9982
FORMAT( /
' Routines pass computational tests if test ratio is ',
2491 $
'less than', f8.2, / )
2492 9981
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
2493 9980
FORMAT(
' *** Error code from ', a,
' = ', i4 )
2494 9979
FORMAT( /
' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2495 $ /
' DGEEV (eigenvalues and eigevectors)' )
2496 9978
FORMAT( /
' Tests of the Nonsymmetric Eigenvalue Problem Driver',
2497 $ /
' DGEES (Schur form)' )
2498 9977
FORMAT( /
' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2499 $
' Driver', /
' DGEEVX (eigenvalues, eigenvectors and',
2500 $
' condition numbers)' )
2501 9976
FORMAT( /
' Tests of the Nonsymmetric Eigenvalue Problem Expert',
2502 $
' Driver', /
' DGEESX (Schur form and condition',
2504 9975
FORMAT( /
' Tests of the Generalized Nonsymmetric Eigenvalue ',
2505 $
'Problem routines' )
2506 9974
FORMAT(
' Tests of DSBTRD', /
' (reduction of a symmetric band ',
2507 $
'matrix to tridiagonal form)' )
2508 9973
FORMAT( / 1x, 71(
'-' ) )
2509 9972
FORMAT( /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1 )
2510 9971
FORMAT( /
' Tests of the Generalized Linear Regression Model ',
2512 9970
FORMAT( /
' Tests of the Generalized QR and RQ routines' )
2513 9969
FORMAT( /
' Tests of the Generalized Singular Value',
2514 $
' Decomposition routines' )
2515 9968
FORMAT( /
' Tests of the Linear Least Squares routines' )
2516 9967
FORMAT(
' Tests of DGBBRD', /
' (reduction of a general band ',
2517 $
'matrix to real bidiagonal form)' )
2518 9966
FORMAT( / / 1x, a3,
': NRHS =', i4 )
2519 9965
FORMAT( /
' Tests of the Generalized Nonsymmetric Eigenvalue ',
2520 $
'Problem Expert Driver DGGESX' )
2521 9964
FORMAT( /
' Tests of the Generalized Nonsymmetric Eigenvalue ',
2522 $
'Problem Driver DGGES' )
2523 9963
FORMAT( /
' Tests of the Generalized Nonsymmetric Eigenvalue ',
2524 $
'Problem Driver DGGEV' )
2525 9962
FORMAT( /
' Tests of the Generalized Nonsymmetric Eigenvalue ',
2526 $
'Problem Expert Driver DGGEVX' )
2527 9961
FORMAT( / / 1x, a3,
': NB =', i4,
', NBMIN =', i4,
', NX =', i4,
2529 $
', INWIN =', i4,
', INIBL =', i4,
', ISHFTS =', i4,
2531 9960
FORMAT( /
' Tests of the CS Decomposition routines' )
double precision function dlamch(CMACH)
DLAMCH
double precision function dsecnd()
DSECND Using ETIME
logical function lsamen(N, CA, CB)
LSAMEN
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine dchkbd(NSIZES, MVAL, NVAL, NTYPES, DOTYPE, NRHS, ISEED, THRESH, A, LDA, BD, BE, S1, S2, X, LDX, Y, Z, Q, LDQ, PT, LDPT, U, VT, WORK, LWORK, IWORK, NOUT, INFO)
DCHKBD
subroutine dchkst2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, AP, SD, SE, D1, D2, D3, D4, D5, WA1, WA2, WA3, WR, U, LDU, V, VP, TAU, Z, WORK, LWORK, IWORK, LIWORK, RESULT, INFO)
DCHKST2STG
subroutine ddrvev(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, WR, WI, WR1, WI1, VL, LDVL, VR, LDVR, LRE, LDLRE, RESULT, WORK, NWORK, IWORK, INFO)
DDRVEV
subroutine ddrgvx(NSIZE, THRESH, NIN, NOUT, A, LDA, B, AI, BI, ALPHAR, ALPHAI, BETA, VL, VR, ILO, IHI, LSCALE, RSCALE, S, DTRU, DIF, DIFTRU, WORK, LWORK, IWORK, LIWORK, RESULT, BWORK, INFO)
DDRGVX
subroutine ddrvbd(NSIZES, MM, NN, NTYPES, DOTYPE, ISEED, THRESH, A, LDA, U, LDU, VT, LDVT, ASAV, USAV, VTSAV, S, SSAV, E, WORK, LWORK, IWORK, NOUT, INFO)
DDRVBD
subroutine dckcsd(NM, MVAL, PVAL, QVAL, NMATS, ISEED, THRESH, MMAX, X, XF, U1, U2, V1T, V2T, THETA, IWORK, WORK, RWORK, NIN, NOUT, INFO)
DCKCSD
subroutine dckgqr(NM, MVAL, NP, PVAL, NN, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, AQ, AR, TAUA, B, BF, BZ, BT, BWK, TAUB, WORK, RWORK, NIN, NOUT, INFO)
DCKGQR
subroutine dchkgl(NIN, NOUT)
DCHKGL
subroutine ddrvsx(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NIUNIT, NOUNIT, A, LDA, H, HT, WR, WI, WRT, WIT, WRTMP, WITMP, VS, LDVS, VS1, RESULT, WORK, LWORK, IWORK, BWORK, INFO)
DDRVSX
subroutine ddrvst(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, D1, D2, D3, D4, EVEIGS, WA1, WA2, WA3, U, LDU, V, TAU, Z, WORK, LWORK, IWORK, LIWORK, RESULT, INFO)
DDRVST
subroutine dchkgk(NIN, NOUT)
DCHKGK
subroutine dcklse(NN, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
DCKLSE
subroutine ddrvvx(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NIUNIT, NOUNIT, A, LDA, H, WR, WI, WR1, WI1, VL, LDVL, VR, LDVR, LRE, LDLRE, RCONDV, RCNDV1, RCDVIN, RCONDE, RCNDE1, RCDEIN, SCALE, SCALE1, RESULT, WORK, NWORK, IWORK, INFO)
DDRVVX
subroutine ddrgsx(NSIZE, NCMAX, THRESH, NIN, NOUT, A, LDA, B, AI, BI, Z, Q, ALPHAR, ALPHAI, BETA, C, LDC, S, WORK, LWORK, IWORK, LIWORK, BWORK, INFO)
DDRGSX
subroutine ddrgev(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, QE, LDQE, ALPHAR, ALPHAI, BETA, ALPHR1, ALPHI1, BETA1, WORK, LWORK, RESULT, INFO)
DDRGEV
subroutine dchksb(NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, SD, SE, U, LDU, WORK, LWORK, RESULT, INFO)
DCHKSB
subroutine ddrges(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHAR, ALPHAI, BETA, WORK, LWORK, RESULT, BWORK, INFO)
DDRGES
subroutine dchkbk(NIN, NOUT)
DCHKBK
subroutine ddrves(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, HT, WR, WI, WRT, WIT, VS, LDVS, RESULT, WORK, NWORK, IWORK, BWORK, INFO)
DDRVES
subroutine dchkec(THRESH, TSTERR, NIN, NOUT)
DCHKEC
subroutine dchkgg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, TSTDIF, THRSHN, NOUNIT, A, LDA, B, H, T, S1, S2, P1, P2, U, LDU, V, Q, Z, ALPHR1, ALPHI1, BETA1, ALPHR3, ALPHI3, BETA3, EVECTL, EVECTR, WORK, LWORK, LLWORK, RESULT, INFO)
DCHKGG
subroutine dchksb2stg(NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, SD, SE, D1, D2, D3, U, LDU, WORK, LWORK, RESULT, INFO)
DCHKSB2STG
subroutine dchkst(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, AP, SD, SE, D1, D2, D3, D4, D5, WA1, WA2, WA3, WR, U, LDU, V, VP, TAU, Z, WORK, LWORK, IWORK, LIWORK, RESULT, INFO)
DCHKST
subroutine ddrvst2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, D1, D2, D3, D4, EVEIGS, WA1, WA2, WA3, U, LDU, V, TAU, Z, WORK, LWORK, IWORK, LIWORK, RESULT, INFO)
DDRVST2STG
subroutine derrgg(PATH, NUNIT)
DERRGG
subroutine derrhs(PATH, NUNIT)
DERRHS
subroutine ddrvsg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, LDB, D, Z, LDZ, AB, BB, AP, BP, WORK, NWORK, IWORK, LIWORK, RESULT, INFO)
DDRVSG
subroutine ddrges3(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, ALPHAR, ALPHAI, BETA, WORK, LWORK, RESULT, BWORK, INFO)
DDRGES3
subroutine dchkbb(NSIZES, MVAL, NVAL, NWDTHS, KK, NTYPES, DOTYPE, NRHS, ISEED, THRESH, NOUNIT, A, LDA, AB, LDAB, BD, BE, Q, LDQ, P, LDP, C, LDC, CC, WORK, LWORK, RESULT, INFO)
DCHKBB
subroutine dchkbl(NIN, NOUT)
DCHKBL
subroutine derrbd(PATH, NUNIT)
DERRBD
subroutine ddrgev3(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, S, T, Q, LDQ, Z, QE, LDQE, ALPHAR, ALPHAI, BETA, ALPHR1, ALPHI1, BETA1, WORK, LWORK, RESULT, INFO)
DDRGEV3
subroutine derrst(PATH, NUNIT)
DERRST
subroutine derred(PATH, NUNIT)
DERRED
subroutine dchkhs(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, H, T1, T2, U, LDU, Z, UZ, WR1, WI1, WR2, WI2, WR3, WI3, EVECTL, EVECTR, EVECTY, EVECTX, UU, TAU, WORK, NWORK, IWORK, SELECT, RESULT, INFO)
DCHKHS
subroutine ddrvsg2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, LDB, D, D2, Z, LDZ, AB, BB, AP, BP, WORK, NWORK, IWORK, LIWORK, RESULT, INFO)
DDRVSG2STG
subroutine dckglm(NN, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT, INFO)
DCKGLM
subroutine dckgsv(NM, MVAL, PVAL, NVAL, NMATS, ISEED, THRESH, NMAX, A, AF, B, BF, U, V, Q, ALPHA, BETA, R, IWORK, WORK, RWORK, NIN, NOUT, INFO)
DCKGSV
subroutine ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.
logical function lse(RI, RJ, LR)