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 35 kB

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