You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

dchkaa.f 34 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018
  1. *> \brief \b DCHKAA
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * PROGRAM DCHKAA
  12. *
  13. *
  14. *> \par Purpose:
  15. * =============
  16. *>
  17. *> \verbatim
  18. *>
  19. *> DCHKAA is the main test program for the DOUBLE PRECISION LAPACK
  20. *> linear equation routines
  21. *>
  22. *> The program must be driven by a short data file. The first 15 records
  23. *> (not including the first comment line) specify problem dimensions
  24. *> and program options using list-directed input. The remaining lines
  25. *> specify the LAPACK test paths and the number of matrix types to use
  26. *> in testing. An annotated example of a data file can be obtained by
  27. *> deleting the first 3 characters from the following 40 lines:
  28. *> Data file for testing DOUBLE PRECISION LAPACK linear eqn. routines
  29. *> 7 Number of values of M
  30. *> 0 1 2 3 5 10 16 Values of M (row dimension)
  31. *> 7 Number of values of N
  32. *> 0 1 2 3 5 10 16 Values of N (column dimension)
  33. *> 1 Number of values of NRHS
  34. *> 2 Values of NRHS (number of right hand sides)
  35. *> 5 Number of values of NB
  36. *> 1 3 3 3 20 Values of NB (the blocksize)
  37. *> 1 0 5 9 1 Values of NX (crossover point)
  38. *> 3 Number of values of RANK
  39. *> 30 50 90 Values of rank (as a % of N)
  40. *> 20.0 Threshold value of test ratio
  41. *> T Put T to test the LAPACK routines
  42. *> T Put T to test the driver routines
  43. *> T Put T to test the error exits
  44. *> DGE 11 List types on next line if 0 < NTYPES < 11
  45. *> DGB 8 List types on next line if 0 < NTYPES < 8
  46. *> DGT 12 List types on next line if 0 < NTYPES < 12
  47. *> DPO 9 List types on next line if 0 < NTYPES < 9
  48. *> DPS 9 List types on next line if 0 < NTYPES < 9
  49. *> DPP 9 List types on next line if 0 < NTYPES < 9
  50. *> DPB 8 List types on next line if 0 < NTYPES < 8
  51. *> DPT 12 List types on next line if 0 < NTYPES < 12
  52. *> DSY 10 List types on next line if 0 < NTYPES < 10
  53. *> DSR 10 List types on next line if 0 < NTYPES < 10
  54. *> DSK 10 List types on next line if 0 < NTYPES < 10
  55. *> DSA 10 List types on next line if 0 < NTYPES < 10
  56. *> DSP 10 List types on next line if 0 < NTYPES < 10
  57. *> DTR 18 List types on next line if 0 < NTYPES < 18
  58. *> DTP 18 List types on next line if 0 < NTYPES < 18
  59. *> DTB 17 List types on next line if 0 < NTYPES < 17
  60. *> DQR 8 List types on next line if 0 < NTYPES < 8
  61. *> DRQ 8 List types on next line if 0 < NTYPES < 8
  62. *> DLQ 8 List types on next line if 0 < NTYPES < 8
  63. *> DQL 8 List types on next line if 0 < NTYPES < 8
  64. *> DQP 6 List types on next line if 0 < NTYPES < 6
  65. *> DTZ 3 List types on next line if 0 < NTYPES < 3
  66. *> DLS 6 List types on next line if 0 < NTYPES < 6
  67. *> DEQ
  68. *> DQT
  69. *> DQX
  70. *> \endverbatim
  71. *
  72. * Parameters:
  73. * ==========
  74. *
  75. *> \verbatim
  76. *> NMAX INTEGER
  77. *> The maximum allowable value for M and N.
  78. *>
  79. *> MAXIN INTEGER
  80. *> The number of different values that can be used for each of
  81. *> M, N, NRHS, NB, NX and RANK
  82. *>
  83. *> MAXRHS INTEGER
  84. *> The maximum number of right hand sides
  85. *>
  86. *> MATMAX INTEGER
  87. *> The maximum number of matrix types to use for testing
  88. *>
  89. *> NIN INTEGER
  90. *> The unit number for input
  91. *>
  92. *> NOUT INTEGER
  93. *> The unit number for output
  94. *> \endverbatim
  95. *
  96. * Authors:
  97. * ========
  98. *
  99. *> \author Univ. of Tennessee
  100. *> \author Univ. of California Berkeley
  101. *> \author Univ. of Colorado Denver
  102. *> \author NAG Ltd.
  103. *
  104. *> \date April 2012
  105. *
  106. *> \ingroup double_lin
  107. *
  108. * =====================================================================
  109. PROGRAM DCHKAA
  110. *
  111. * -- LAPACK test routine (version 3.7.0) --
  112. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  113. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  114. * April 2012
  115. *
  116. * =====================================================================
  117. *
  118. * .. Parameters ..
  119. INTEGER NMAX
  120. PARAMETER ( NMAX = 132 )
  121. INTEGER MAXIN
  122. PARAMETER ( MAXIN = 12 )
  123. INTEGER MAXRHS
  124. PARAMETER ( MAXRHS = 16 )
  125. INTEGER MATMAX
  126. PARAMETER ( MATMAX = 30 )
  127. INTEGER NIN, NOUT
  128. PARAMETER ( NIN = 5, NOUT = 6 )
  129. INTEGER KDMAX
  130. PARAMETER ( KDMAX = NMAX+( NMAX+1 ) / 4 )
  131. * ..
  132. * .. Local Scalars ..
  133. LOGICAL FATAL, TSTCHK, TSTDRV, TSTERR
  134. CHARACTER C1
  135. CHARACTER*2 C2
  136. CHARACTER*3 PATH
  137. CHARACTER*10 INTSTR
  138. CHARACTER*72 ALINE
  139. INTEGER I, IC, J, K, LA, LAFAC, LDA, NB, NM, NMATS, NN,
  140. $ NNB, NNB2, NNS, NRHS, NTYPES, NRANK,
  141. $ VERS_MAJOR, VERS_MINOR, VERS_PATCH
  142. DOUBLE PRECISION EPS, S1, S2, THREQ, THRESH
  143. * ..
  144. * .. Local Arrays ..
  145. LOGICAL DOTYPE( MATMAX )
  146. INTEGER IWORK( 25*NMAX ), MVAL( MAXIN ),
  147. $ NBVAL( MAXIN ), NBVAL2( MAXIN ),
  148. $ NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
  149. $ RANKVAL( MAXIN ), PIV( NMAX )
  150. DOUBLE PRECISION A( ( KDMAX+1 )*NMAX, 7 ), B( NMAX*MAXRHS, 4 ),
  151. $ E( NMAX ), RWORK( 5*NMAX+2*MAXRHS ),
  152. $ S( 2*NMAX ), WORK( NMAX, NMAX+MAXRHS+30 )
  153. * ..
  154. * .. External Functions ..
  155. LOGICAL LSAME, LSAMEN
  156. DOUBLE PRECISION DLAMCH, DSECND
  157. EXTERNAL LSAME, LSAMEN, DLAMCH, DSECND
  158. * ..
  159. * .. External Subroutines ..
  160. EXTERNAL ALAREQ, DCHKEQ, DCHKGB, DCHKGE, DCHKGT, DCHKLQ,
  161. $ DCHKPB, DCHKPO, DCHKPS, DCHKPP, DCHKPT, DCHKQ3,
  162. $ DCHKQL, DCHKQR, DCHKRQ, DCHKSP, DCHKSY,
  163. $ DCHKSY_ROOK, DCHKSY_RK, DCHKSY_AA, DCHKTB,
  164. $ DCHKTP, DCHKTR, DCHKTZ, DDRVGB, DDRVGE,
  165. $ DDRVGT, DDRVLS, DDRVPB, DDRVPO, DDRVPP,
  166. $ DDRVPT, DDRVSP, DDRVSY, DDRVSY_ROOK, DDRVSY_RK,
  167. $ DDRVSY_AA, ILAVER, DCHKQRT,
  168. $ DCHKQRTP, DCHKLQTP, DCHKTSQR, DCHKLQT
  169. * ..
  170. * .. Scalars in Common ..
  171. LOGICAL LERR, OK
  172. CHARACTER*32 SRNAMT
  173. INTEGER INFOT, NUNIT
  174. * ..
  175. * .. Arrays in Common ..
  176. INTEGER IPARMS( 100 )
  177. * ..
  178. * .. Common blocks ..
  179. COMMON / INFOC / INFOT, NUNIT, OK, LERR
  180. COMMON / SRNAMC / SRNAMT
  181. COMMON / CLAENV / IPARMS
  182. * ..
  183. * .. Data statements ..
  184. DATA THREQ / 2.0D0 / , INTSTR / '0123456789' /
  185. * ..
  186. * .. Executable Statements ..
  187. *
  188. S1 = DSECND( )
  189. LDA = NMAX
  190. FATAL = .FALSE.
  191. *
  192. * Read a dummy line.
  193. *
  194. READ( NIN, FMT = * )
  195. *
  196. * Report values of parameters.
  197. *
  198. CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
  199. WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
  200. *
  201. * Read the values of M
  202. *
  203. READ( NIN, FMT = * )NM
  204. IF( NM.LT.1 ) THEN
  205. WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
  206. NM = 0
  207. FATAL = .TRUE.
  208. ELSE IF( NM.GT.MAXIN ) THEN
  209. WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
  210. NM = 0
  211. FATAL = .TRUE.
  212. END IF
  213. READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
  214. DO 10 I = 1, NM
  215. IF( MVAL( I ).LT.0 ) THEN
  216. WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0
  217. FATAL = .TRUE.
  218. ELSE IF( MVAL( I ).GT.NMAX ) THEN
  219. WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX
  220. FATAL = .TRUE.
  221. END IF
  222. 10 CONTINUE
  223. IF( NM.GT.0 )
  224. $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM )
  225. *
  226. * Read the values of N
  227. *
  228. READ( NIN, FMT = * )NN
  229. IF( NN.LT.1 ) THEN
  230. WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
  231. NN = 0
  232. FATAL = .TRUE.
  233. ELSE IF( NN.GT.MAXIN ) THEN
  234. WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
  235. NN = 0
  236. FATAL = .TRUE.
  237. END IF
  238. READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
  239. DO 20 I = 1, NN
  240. IF( NVAL( I ).LT.0 ) THEN
  241. WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0
  242. FATAL = .TRUE.
  243. ELSE IF( NVAL( I ).GT.NMAX ) THEN
  244. WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX
  245. FATAL = .TRUE.
  246. END IF
  247. 20 CONTINUE
  248. IF( NN.GT.0 )
  249. $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN )
  250. *
  251. * Read the values of NRHS
  252. *
  253. READ( NIN, FMT = * )NNS
  254. IF( NNS.LT.1 ) THEN
  255. WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
  256. NNS = 0
  257. FATAL = .TRUE.
  258. ELSE IF( NNS.GT.MAXIN ) THEN
  259. WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
  260. NNS = 0
  261. FATAL = .TRUE.
  262. END IF
  263. READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
  264. DO 30 I = 1, NNS
  265. IF( NSVAL( I ).LT.0 ) THEN
  266. WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
  267. FATAL = .TRUE.
  268. ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
  269. WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
  270. FATAL = .TRUE.
  271. END IF
  272. 30 CONTINUE
  273. IF( NNS.GT.0 )
  274. $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
  275. *
  276. * Read the values of NB
  277. *
  278. READ( NIN, FMT = * )NNB
  279. IF( NNB.LT.1 ) THEN
  280. WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
  281. NNB = 0
  282. FATAL = .TRUE.
  283. ELSE IF( NNB.GT.MAXIN ) THEN
  284. WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
  285. NNB = 0
  286. FATAL = .TRUE.
  287. END IF
  288. READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
  289. DO 40 I = 1, NNB
  290. IF( NBVAL( I ).LT.0 ) THEN
  291. WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
  292. FATAL = .TRUE.
  293. END IF
  294. 40 CONTINUE
  295. IF( NNB.GT.0 )
  296. $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB )
  297. *
  298. * Set NBVAL2 to be the set of unique values of NB
  299. *
  300. NNB2 = 0
  301. DO 60 I = 1, NNB
  302. NB = NBVAL( I )
  303. DO 50 J = 1, NNB2
  304. IF( NB.EQ.NBVAL2( J ) )
  305. $ GO TO 60
  306. 50 CONTINUE
  307. NNB2 = NNB2 + 1
  308. NBVAL2( NNB2 ) = NB
  309. 60 CONTINUE
  310. *
  311. * Read the values of NX
  312. *
  313. READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
  314. DO 70 I = 1, NNB
  315. IF( NXVAL( I ).LT.0 ) THEN
  316. WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
  317. FATAL = .TRUE.
  318. END IF
  319. 70 CONTINUE
  320. IF( NNB.GT.0 )
  321. $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB )
  322. *
  323. * Read the values of RANKVAL
  324. *
  325. READ( NIN, FMT = * )NRANK
  326. IF( NN.LT.1 ) THEN
  327. WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
  328. NRANK = 0
  329. FATAL = .TRUE.
  330. ELSE IF( NN.GT.MAXIN ) THEN
  331. WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
  332. NRANK = 0
  333. FATAL = .TRUE.
  334. END IF
  335. READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
  336. DO I = 1, NRANK
  337. IF( RANKVAL( I ).LT.0 ) THEN
  338. WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0
  339. FATAL = .TRUE.
  340. ELSE IF( RANKVAL( I ).GT.100 ) THEN
  341. WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100
  342. FATAL = .TRUE.
  343. END IF
  344. END DO
  345. IF( NRANK.GT.0 )
  346. $ WRITE( NOUT, FMT = 9993 )'RANK % OF N',
  347. $ ( RANKVAL( I ), I = 1, NRANK )
  348. *
  349. * Read the threshold value for the test ratios.
  350. *
  351. READ( NIN, FMT = * )THRESH
  352. WRITE( NOUT, FMT = 9992 )THRESH
  353. *
  354. * Read the flag that indicates whether to test the LAPACK routines.
  355. *
  356. READ( NIN, FMT = * )TSTCHK
  357. *
  358. * Read the flag that indicates whether to test the driver routines.
  359. *
  360. READ( NIN, FMT = * )TSTDRV
  361. *
  362. * Read the flag that indicates whether to test the error exits.
  363. *
  364. READ( NIN, FMT = * )TSTERR
  365. *
  366. IF( FATAL ) THEN
  367. WRITE( NOUT, FMT = 9999 )
  368. STOP
  369. END IF
  370. *
  371. * Calculate and print the machine dependent constants.
  372. *
  373. EPS = DLAMCH( 'Underflow threshold' )
  374. WRITE( NOUT, FMT = 9991 )'underflow', EPS
  375. EPS = DLAMCH( 'Overflow threshold' )
  376. WRITE( NOUT, FMT = 9991 )'overflow ', EPS
  377. EPS = DLAMCH( 'Epsilon' )
  378. WRITE( NOUT, FMT = 9991 )'precision', EPS
  379. WRITE( NOUT, FMT = * )
  380. *
  381. 80 CONTINUE
  382. *
  383. * Read a test path and the number of matrix types to use.
  384. *
  385. READ( NIN, FMT = '(A72)', END = 140 )ALINE
  386. PATH = ALINE( 1: 3 )
  387. NMATS = MATMAX
  388. I = 3
  389. 90 CONTINUE
  390. I = I + 1
  391. IF( I.GT.72 ) THEN
  392. NMATS = MATMAX
  393. GO TO 130
  394. END IF
  395. IF( ALINE( I: I ).EQ.' ' )
  396. $ GO TO 90
  397. NMATS = 0
  398. 100 CONTINUE
  399. C1 = ALINE( I: I )
  400. DO 110 K = 1, 10
  401. IF( C1.EQ.INTSTR( K: K ) ) THEN
  402. IC = K - 1
  403. GO TO 120
  404. END IF
  405. 110 CONTINUE
  406. GO TO 130
  407. 120 CONTINUE
  408. NMATS = NMATS*10 + IC
  409. I = I + 1
  410. IF( I.GT.72 )
  411. $ GO TO 130
  412. GO TO 100
  413. 130 CONTINUE
  414. C1 = PATH( 1: 1 )
  415. C2 = PATH( 2: 3 )
  416. NRHS = NSVAL( 1 )
  417. *
  418. * Check first character for correct precision.
  419. *
  420. IF( .NOT.LSAME( C1, 'Double precision' ) ) THEN
  421. WRITE( NOUT, FMT = 9990 )PATH
  422. *
  423. ELSE IF( NMATS.LE.0 ) THEN
  424. *
  425. * Check for a positive number of tests requested.
  426. *
  427. WRITE( NOUT, FMT = 9989 )PATH
  428. *
  429. ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
  430. *
  431. * GE: general matrices
  432. *
  433. NTYPES = 11
  434. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  435. *
  436. IF( TSTCHK ) THEN
  437. CALL DCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  438. $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  439. $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  440. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  441. ELSE
  442. WRITE( NOUT, FMT = 9989 )PATH
  443. END IF
  444. *
  445. IF( TSTDRV ) THEN
  446. CALL DDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  447. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  448. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  449. $ RWORK, IWORK, NOUT )
  450. ELSE
  451. WRITE( NOUT, FMT = 9988 )PATH
  452. END IF
  453. *
  454. ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
  455. *
  456. * GB: general banded matrices
  457. *
  458. LA = ( 2*KDMAX+1 )*NMAX
  459. LAFAC = ( 3*KDMAX+1 )*NMAX
  460. NTYPES = 8
  461. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  462. *
  463. IF( TSTCHK ) THEN
  464. CALL DCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  465. $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
  466. $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
  467. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  468. ELSE
  469. WRITE( NOUT, FMT = 9989 )PATH
  470. END IF
  471. *
  472. IF( TSTDRV ) THEN
  473. CALL DDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  474. $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
  475. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
  476. $ WORK, RWORK, IWORK, NOUT )
  477. ELSE
  478. WRITE( NOUT, FMT = 9988 )PATH
  479. END IF
  480. *
  481. ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
  482. *
  483. * GT: general tridiagonal matrices
  484. *
  485. NTYPES = 12
  486. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  487. *
  488. IF( TSTCHK ) THEN
  489. CALL DCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  490. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  491. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  492. ELSE
  493. WRITE( NOUT, FMT = 9989 )PATH
  494. END IF
  495. *
  496. IF( TSTDRV ) THEN
  497. CALL DDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  498. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  499. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  500. ELSE
  501. WRITE( NOUT, FMT = 9988 )PATH
  502. END IF
  503. *
  504. ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
  505. *
  506. * PO: positive definite matrices
  507. *
  508. NTYPES = 9
  509. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  510. *
  511. IF( TSTCHK ) THEN
  512. CALL DCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  513. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  514. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  515. $ WORK, RWORK, IWORK, NOUT )
  516. ELSE
  517. WRITE( NOUT, FMT = 9989 )PATH
  518. END IF
  519. *
  520. IF( TSTDRV ) THEN
  521. CALL DDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  522. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  523. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  524. $ RWORK, IWORK, NOUT )
  525. ELSE
  526. WRITE( NOUT, FMT = 9988 )PATH
  527. END IF
  528. *
  529. ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
  530. *
  531. * PS: positive semi-definite matrices
  532. *
  533. NTYPES = 9
  534. *
  535. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  536. *
  537. IF( TSTCHK ) THEN
  538. CALL DCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
  539. $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  540. $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
  541. $ NOUT )
  542. ELSE
  543. WRITE( NOUT, FMT = 9989 )PATH
  544. END IF
  545. *
  546. ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
  547. *
  548. * PP: positive definite packed matrices
  549. *
  550. NTYPES = 9
  551. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  552. *
  553. IF( TSTCHK ) THEN
  554. CALL DCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  555. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  556. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  557. $ IWORK, NOUT )
  558. ELSE
  559. WRITE( NOUT, FMT = 9989 )PATH
  560. END IF
  561. *
  562. IF( TSTDRV ) THEN
  563. CALL DDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  564. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  565. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  566. $ RWORK, IWORK, NOUT )
  567. ELSE
  568. WRITE( NOUT, FMT = 9988 )PATH
  569. END IF
  570. *
  571. ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
  572. *
  573. * PB: positive definite banded matrices
  574. *
  575. NTYPES = 8
  576. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  577. *
  578. IF( TSTCHK ) THEN
  579. CALL DCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  580. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  581. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  582. $ WORK, RWORK, IWORK, NOUT )
  583. ELSE
  584. WRITE( NOUT, FMT = 9989 )PATH
  585. END IF
  586. *
  587. IF( TSTDRV ) THEN
  588. CALL DDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  589. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  590. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  591. $ RWORK, IWORK, NOUT )
  592. ELSE
  593. WRITE( NOUT, FMT = 9988 )PATH
  594. END IF
  595. *
  596. ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
  597. *
  598. * PT: positive definite tridiagonal matrices
  599. *
  600. NTYPES = 12
  601. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  602. *
  603. IF( TSTCHK ) THEN
  604. CALL DCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  605. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  606. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  607. ELSE
  608. WRITE( NOUT, FMT = 9989 )PATH
  609. END IF
  610. *
  611. IF( TSTDRV ) THEN
  612. CALL DDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  613. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  614. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  615. ELSE
  616. WRITE( NOUT, FMT = 9988 )PATH
  617. END IF
  618. *
  619. ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
  620. *
  621. * SY: symmetric indefinite matrices,
  622. * with partial (Bunch-Kaufman) pivoting algorithm
  623. *
  624. NTYPES = 10
  625. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  626. *
  627. IF( TSTCHK ) THEN
  628. CALL DCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  629. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  630. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  631. $ WORK, RWORK, IWORK, NOUT )
  632. ELSE
  633. WRITE( NOUT, FMT = 9989 )PATH
  634. END IF
  635. *
  636. IF( TSTDRV ) THEN
  637. CALL DDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  638. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  639. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  640. $ NOUT )
  641. ELSE
  642. WRITE( NOUT, FMT = 9988 )PATH
  643. END IF
  644. *
  645. ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
  646. *
  647. * SR: symmetric indefinite matrices,
  648. * with bounded Bunch-Kaufman (rook) pivoting algorithm
  649. *
  650. NTYPES = 10
  651. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  652. *
  653. IF( TSTCHK ) THEN
  654. CALL DCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  655. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  656. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  657. $ WORK, RWORK, IWORK, NOUT )
  658. ELSE
  659. WRITE( NOUT, FMT = 9989 )PATH
  660. END IF
  661. *
  662. IF( TSTDRV ) THEN
  663. CALL DDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  664. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  665. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  666. $ WORK, RWORK, IWORK, NOUT )
  667. ELSE
  668. WRITE( NOUT, FMT = 9988 )PATH
  669. END IF
  670. *
  671. ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
  672. *
  673. * SK: symmetric indefinite matrices,
  674. * with bounded Bunch-Kaufman (rook) pivoting algorithm,
  675. * differnet matrix storage format than SR path version.
  676. *
  677. NTYPES = 10
  678. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  679. *
  680. IF( TSTCHK ) THEN
  681. CALL DCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  682. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  683. $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  684. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  685. ELSE
  686. WRITE( NOUT, FMT = 9989 )PATH
  687. END IF
  688. *
  689. IF( TSTDRV ) THEN
  690. CALL DDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  691. $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ),
  692. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  693. $ WORK, RWORK, IWORK, NOUT )
  694. ELSE
  695. WRITE( NOUT, FMT = 9988 )PATH
  696. END IF
  697. *
  698. ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN
  699. *
  700. * SA: symmetric indefinite matrices,
  701. * with partial (Aasen's) pivoting algorithm
  702. *
  703. NTYPES = 10
  704. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  705. *
  706. IF( TSTCHK ) THEN
  707. CALL DCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS,
  708. $ NSVAL, THRESH, TSTERR, LDA,
  709. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  710. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  711. $ WORK, RWORK, IWORK, NOUT )
  712. ELSE
  713. WRITE( NOUT, FMT = 9989 )PATH
  714. END IF
  715. *
  716. IF( TSTDRV ) THEN
  717. CALL DDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  718. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  719. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  720. $ WORK, RWORK, IWORK, NOUT )
  721. ELSE
  722. WRITE( NOUT, FMT = 9988 )PATH
  723. END IF
  724. *
  725. *
  726. ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
  727. *
  728. * SP: symmetric indefinite packed matrices,
  729. * with partial (Bunch-Kaufman) pivoting algorithm
  730. *
  731. NTYPES = 10
  732. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  733. *
  734. IF( TSTCHK ) THEN
  735. CALL DCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  736. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  737. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  738. $ IWORK, NOUT )
  739. ELSE
  740. WRITE( NOUT, FMT = 9989 )PATH
  741. END IF
  742. *
  743. IF( TSTDRV ) THEN
  744. CALL DDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  745. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  746. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  747. $ NOUT )
  748. ELSE
  749. WRITE( NOUT, FMT = 9988 )PATH
  750. END IF
  751. *
  752. ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN
  753. *
  754. * TR: triangular matrices
  755. *
  756. NTYPES = 18
  757. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  758. *
  759. IF( TSTCHK ) THEN
  760. CALL DCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  761. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  762. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  763. $ IWORK, NOUT )
  764. ELSE
  765. WRITE( NOUT, FMT = 9989 )PATH
  766. END IF
  767. *
  768. ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN
  769. *
  770. * TP: triangular packed matrices
  771. *
  772. NTYPES = 18
  773. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  774. *
  775. IF( TSTCHK ) THEN
  776. CALL DCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  777. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  778. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  779. $ NOUT )
  780. ELSE
  781. WRITE( NOUT, FMT = 9989 )PATH
  782. END IF
  783. *
  784. ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN
  785. *
  786. * TB: triangular banded matrices
  787. *
  788. NTYPES = 17
  789. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  790. *
  791. IF( TSTCHK ) THEN
  792. CALL DCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  793. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  794. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  795. $ NOUT )
  796. ELSE
  797. WRITE( NOUT, FMT = 9989 )PATH
  798. END IF
  799. *
  800. ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN
  801. *
  802. * QR: QR factorization
  803. *
  804. NTYPES = 8
  805. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  806. *
  807. IF( TSTCHK ) THEN
  808. CALL DCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  809. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  810. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  811. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  812. $ WORK, RWORK, IWORK, NOUT )
  813. ELSE
  814. WRITE( NOUT, FMT = 9989 )PATH
  815. END IF
  816. *
  817. ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN
  818. *
  819. * LQ: LQ factorization
  820. *
  821. NTYPES = 8
  822. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  823. *
  824. IF( TSTCHK ) THEN
  825. CALL DCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  826. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  827. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  828. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  829. $ WORK, RWORK, NOUT )
  830. ELSE
  831. WRITE( NOUT, FMT = 9989 )PATH
  832. END IF
  833. *
  834. ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN
  835. *
  836. * QL: QL factorization
  837. *
  838. NTYPES = 8
  839. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  840. *
  841. IF( TSTCHK ) THEN
  842. CALL DCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  843. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  844. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  845. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  846. $ WORK, RWORK, NOUT )
  847. ELSE
  848. WRITE( NOUT, FMT = 9989 )PATH
  849. END IF
  850. *
  851. ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN
  852. *
  853. * RQ: RQ factorization
  854. *
  855. NTYPES = 8
  856. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  857. *
  858. IF( TSTCHK ) THEN
  859. CALL DCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  860. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  861. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  862. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  863. $ WORK, RWORK, IWORK, NOUT )
  864. ELSE
  865. WRITE( NOUT, FMT = 9989 )PATH
  866. END IF
  867. *
  868. ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN
  869. *
  870. * QP: QR factorization with pivoting
  871. *
  872. NTYPES = 6
  873. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  874. *
  875. IF( TSTCHK ) THEN
  876. CALL DCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  877. $ THRESH, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  878. $ B( 1, 3 ), WORK, IWORK, NOUT )
  879. ELSE
  880. WRITE( NOUT, FMT = 9989 )PATH
  881. END IF
  882. *
  883. ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN
  884. *
  885. * TZ: Trapezoidal matrix
  886. *
  887. NTYPES = 3
  888. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  889. *
  890. IF( TSTCHK ) THEN
  891. CALL DCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
  892. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  893. $ B( 1, 3 ), WORK, NOUT )
  894. ELSE
  895. WRITE( NOUT, FMT = 9989 )PATH
  896. END IF
  897. *
  898. ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
  899. *
  900. * LS: Least squares drivers
  901. *
  902. NTYPES = 6
  903. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  904. *
  905. IF( TSTDRV ) THEN
  906. CALL DDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
  907. $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
  908. $ A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  909. $ RWORK, RWORK( NMAX+1 ), NOUT )
  910. ELSE
  911. WRITE( NOUT, FMT = 9988 )PATH
  912. END IF
  913. *
  914. ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN
  915. *
  916. * EQ: Equilibration routines for general and positive definite
  917. * matrices (THREQ should be between 2 and 10)
  918. *
  919. IF( TSTCHK ) THEN
  920. CALL DCHKEQ( THREQ, NOUT )
  921. ELSE
  922. WRITE( NOUT, FMT = 9989 )PATH
  923. END IF
  924. *
  925. ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
  926. *
  927. * QT: QRT routines for general matrices
  928. *
  929. IF( TSTCHK ) THEN
  930. CALL DCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  931. $ NBVAL, NOUT )
  932. ELSE
  933. WRITE( NOUT, FMT = 9989 )PATH
  934. END IF
  935. *
  936. ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
  937. *
  938. * QX: QRT routines for triangular-pentagonal matrices
  939. *
  940. IF( TSTCHK ) THEN
  941. CALL DCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  942. $ NBVAL, NOUT )
  943. ELSE
  944. WRITE( NOUT, FMT = 9989 )PATH
  945. END IF
  946. *
  947. ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN
  948. *
  949. * TQ: LQT routines for general matrices
  950. *
  951. IF( TSTCHK ) THEN
  952. CALL DCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  953. $ NBVAL, NOUT )
  954. ELSE
  955. WRITE( NOUT, FMT = 9989 )PATH
  956. END IF
  957. *
  958. ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN
  959. *
  960. * XQ: LQT routines for triangular-pentagonal matrices
  961. *
  962. IF( TSTCHK ) THEN
  963. CALL DCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  964. $ NBVAL, NOUT )
  965. ELSE
  966. WRITE( NOUT, FMT = 9989 )PATH
  967. END IF
  968. *
  969. ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN
  970. *
  971. * TS: QR routines for tall-skinny matrices
  972. *
  973. IF( TSTCHK ) THEN
  974. CALL DCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  975. $ NBVAL, NOUT )
  976. ELSE
  977. WRITE( NOUT, FMT = 9989 )PATH
  978. END IF
  979. *
  980. ELSE
  981. *
  982. WRITE( NOUT, FMT = 9990 )PATH
  983. END IF
  984. *
  985. * Go back to get another input line.
  986. *
  987. GO TO 80
  988. *
  989. * Branch to this line when the last record is read.
  990. *
  991. 140 CONTINUE
  992. CLOSE ( NIN )
  993. S2 = DSECND( )
  994. WRITE( NOUT, FMT = 9998 )
  995. WRITE( NOUT, FMT = 9997 )S2 - S1
  996. *
  997. 9999 FORMAT( / ' Execution not attempted due to input errors' )
  998. 9998 FORMAT( / ' End of tests' )
  999. 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
  1000. 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
  1001. $ I6 )
  1002. 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
  1003. $ I6 )
  1004. 9994 FORMAT( ' Tests of the DOUBLE PRECISION LAPACK routines ',
  1005. $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
  1006. $ / / ' The following parameter values will be used:' )
  1007. 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 )
  1008. 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
  1009. $ 'less than', F8.2, / )
  1010. 9991 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 )
  1011. 9990 FORMAT( / 1X, A3, ': Unrecognized path name' )
  1012. 9989 FORMAT( / 1X, A3, ' routines were not tested' )
  1013. 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )
  1014. *
  1015. * End of DCHKAA
  1016. *
  1017. END