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.

zchkaa.f 42 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255
  1. *> \brief \b ZCHKAA
  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 ZCHKAA
  12. *
  13. *
  14. *> \par Purpose:
  15. * =============
  16. *>
  17. *> \verbatim
  18. *>
  19. *> ZCHKAA is the main test program for the COMPLEX*16 linear equation
  20. *> 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 42 lines:
  28. *> Data file for testing COMPLEX*16 LAPACK linear equation 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. *> 30.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. *> ZGE 11 List types on next line if 0 < NTYPES < 11
  45. *> ZGB 8 List types on next line if 0 < NTYPES < 8
  46. *> ZGT 12 List types on next line if 0 < NTYPES < 12
  47. *> ZPO 9 List types on next line if 0 < NTYPES < 9
  48. *> ZPS 9 List types on next line if 0 < NTYPES < 9
  49. *> ZPP 9 List types on next line if 0 < NTYPES < 9
  50. *> ZPB 8 List types on next line if 0 < NTYPES < 8
  51. *> ZPT 12 List types on next line if 0 < NTYPES < 12
  52. *> ZHE 10 List types on next line if 0 < NTYPES < 10
  53. *> ZHR 10 List types on next line if 0 < NTYPES < 10
  54. *> ZHK 10 List types on next line if 0 < NTYPES < 10
  55. *> ZHA 10 List types on next line if 0 < NTYPES < 10
  56. *> ZH2 10 List types on next line if 0 < NTYPES < 10
  57. *> ZSA 11 List types on next line if 0 < NTYPES < 10
  58. *> ZS2 11 List types on next line if 0 < NTYPES < 10
  59. *> ZHP 10 List types on next line if 0 < NTYPES < 10
  60. *> ZSY 11 List types on next line if 0 < NTYPES < 11
  61. *> ZSR 11 List types on next line if 0 < NTYPES < 11
  62. *> ZSK 11 List types on next line if 0 < NTYPES < 11
  63. *> ZSP 11 List types on next line if 0 < NTYPES < 11
  64. *> ZTR 18 List types on next line if 0 < NTYPES < 18
  65. *> ZTP 18 List types on next line if 0 < NTYPES < 18
  66. *> ZTB 17 List types on next line if 0 < NTYPES < 17
  67. *> ZQR 8 List types on next line if 0 < NTYPES < 8
  68. *> ZRQ 8 List types on next line if 0 < NTYPES < 8
  69. *> ZLQ 8 List types on next line if 0 < NTYPES < 8
  70. *> ZQL 8 List types on next line if 0 < NTYPES < 8
  71. *> ZQP 6 List types on next line if 0 < NTYPES < 6
  72. *> ZTZ 3 List types on next line if 0 < NTYPES < 3
  73. *> ZLS 6 List types on next line if 0 < NTYPES < 6
  74. *> ZEQ
  75. *> ZQT
  76. *> ZQX
  77. *> ZTS
  78. *> ZHH
  79. *> \endverbatim
  80. *
  81. * Parameters:
  82. * ==========
  83. *
  84. *> \verbatim
  85. *> NMAX INTEGER
  86. *> The maximum allowable value for M and N.
  87. *>
  88. *> MAXIN INTEGER
  89. *> The number of different values that can be used for each of
  90. *> M, N, NRHS, NB, NX and RANK
  91. *>
  92. *> MAXRHS INTEGER
  93. *> The maximum number of right hand sides
  94. *>
  95. *> MATMAX INTEGER
  96. *> The maximum number of matrix types to use for testing
  97. *>
  98. *> NIN INTEGER
  99. *> The unit number for input
  100. *>
  101. *> NOUT INTEGER
  102. *> The unit number for output
  103. *> \endverbatim
  104. *
  105. * Authors:
  106. * ========
  107. *
  108. *> \author Univ. of Tennessee
  109. *> \author Univ. of California Berkeley
  110. *> \author Univ. of Colorado Denver
  111. *> \author NAG Ltd.
  112. *
  113. *> \date November 2019
  114. *
  115. *> \ingroup complex16_lin
  116. *
  117. * =====================================================================
  118. PROGRAM ZCHKAA
  119. *
  120. * -- LAPACK test routine (version 3.9.0) --
  121. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  122. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  123. * November 2019
  124. *
  125. * =====================================================================
  126. *
  127. * .. Parameters ..
  128. INTEGER NMAX
  129. PARAMETER ( NMAX = 132 )
  130. INTEGER MAXIN
  131. PARAMETER ( MAXIN = 12 )
  132. INTEGER MAXRHS
  133. PARAMETER ( MAXRHS = 16 )
  134. INTEGER MATMAX
  135. PARAMETER ( MATMAX = 30 )
  136. INTEGER NIN, NOUT
  137. PARAMETER ( NIN = 5, NOUT = 6 )
  138. INTEGER KDMAX
  139. PARAMETER ( KDMAX = NMAX+( NMAX+1 ) / 4 )
  140. * ..
  141. * .. Local Scalars ..
  142. LOGICAL FATAL, TSTCHK, TSTDRV, TSTERR
  143. CHARACTER C1
  144. CHARACTER*2 C2
  145. CHARACTER*3 PATH
  146. CHARACTER*10 INTSTR
  147. CHARACTER*72 ALINE
  148. INTEGER I, IC, J, K, LA, LAFAC, LDA, NB, NM, NMATS, NN,
  149. $ NNB, NNB2, NNS, NRHS, NTYPES, NRANK,
  150. $ VERS_MAJOR, VERS_MINOR, VERS_PATCH
  151. DOUBLE PRECISION EPS, S1, S2, THREQ, THRESH
  152. * ..
  153. * .. Local Arrays ..
  154. LOGICAL DOTYPE( MATMAX )
  155. INTEGER IWORK( 25*NMAX ), MVAL( MAXIN ),
  156. $ NBVAL( MAXIN ), NBVAL2( MAXIN ),
  157. $ NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
  158. $ RANKVAL( MAXIN ), PIV( NMAX )
  159. DOUBLE PRECISION RWORK( 150*NMAX+2*MAXRHS ), S( 2*NMAX )
  160. COMPLEX*16 A( ( KDMAX+1 )*NMAX, 7 ), B( NMAX*MAXRHS, 4 ),
  161. $ E( NMAX ), WORK( NMAX, NMAX+MAXRHS+10 )
  162. * ..
  163. * .. External Functions ..
  164. LOGICAL LSAME, LSAMEN
  165. DOUBLE PRECISION DLAMCH, DSECND
  166. EXTERNAL LSAME, LSAMEN, DLAMCH, DSECND
  167. * ..
  168. * .. External Subroutines ..
  169. EXTERNAL ALAREQ, ZCHKEQ, ZCHKGB, ZCHKGE, ZCHKGT, ZCHKHE,
  170. $ ZCHKHE_ROOK, ZCHKHE_RK, ZCHKHE_AA, ZCHKHP,
  171. $ ZCHKLQ, ZCHKUNHR_COL, ZCHKPB, ZCHKPO, ZCHKPS,
  172. $ ZCHKPP, ZCHKPT, ZCHKQ3, ZCHKQL, ZCHKQR, ZCHKRQ,
  173. $ ZCHKSP, ZCHKSY, ZCHKSY_ROOK, ZCHKSY_RK,
  174. $ ZCHKSY_AA, ZCHKTB, ZCHKTP, ZCHKTR, ZCHKTZ,
  175. $ ZDRVGB, ZDRVGE, ZDRVGT, ZDRVHE, ZDRVHE_ROOK,
  176. $ ZDRVHE_RK, ZDRVHE_AA, ZDRVHE_AA_2STAGE, ZDRVHP,
  177. $ ZDRVLS, ZDRVPB, ZDRVPO, ZDRVPP, ZDRVPT,
  178. $ ZDRVSP, ZDRVSY, ZDRVSY_ROOK, ZDRVSY_RK,
  179. $ ZDRVSY_AA, ZDRVSY_AA_2STAGE, ILAVER, ZCHKQRT,
  180. $ ZCHKQRTP, ZCHKLQT, ZCHKLQTP, ZCHKTSQR
  181. * ..
  182. * .. Scalars in Common ..
  183. LOGICAL LERR, OK
  184. CHARACTER*32 SRNAMT
  185. INTEGER INFOT, NUNIT
  186. * ..
  187. * .. Arrays in Common ..
  188. INTEGER IPARMS( 100 )
  189. * ..
  190. * .. Common blocks ..
  191. COMMON / INFOC / INFOT, NUNIT, OK, LERR
  192. COMMON / SRNAMC / SRNAMT
  193. COMMON / CLAENV / IPARMS
  194. * ..
  195. * .. Data statements ..
  196. DATA THREQ / 2.0D0 / , INTSTR / '0123456789' /
  197. * ..
  198. * .. Executable Statements ..
  199. *
  200. S1 = DSECND( )
  201. LDA = NMAX
  202. FATAL = .FALSE.
  203. *
  204. * Read a dummy line.
  205. *
  206. READ( NIN, FMT = * )
  207. *
  208. * Report values of parameters.
  209. *
  210. CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
  211. WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
  212. *
  213. * Read the values of M
  214. *
  215. READ( NIN, FMT = * )NM
  216. IF( NM.LT.1 ) THEN
  217. WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
  218. NM = 0
  219. FATAL = .TRUE.
  220. ELSE IF( NM.GT.MAXIN ) THEN
  221. WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
  222. NM = 0
  223. FATAL = .TRUE.
  224. END IF
  225. READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
  226. DO 10 I = 1, NM
  227. IF( MVAL( I ).LT.0 ) THEN
  228. WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0
  229. FATAL = .TRUE.
  230. ELSE IF( MVAL( I ).GT.NMAX ) THEN
  231. WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX
  232. FATAL = .TRUE.
  233. END IF
  234. 10 CONTINUE
  235. IF( NM.GT.0 )
  236. $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM )
  237. *
  238. * Read the values of N
  239. *
  240. READ( NIN, FMT = * )NN
  241. IF( NN.LT.1 ) THEN
  242. WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
  243. NN = 0
  244. FATAL = .TRUE.
  245. ELSE IF( NN.GT.MAXIN ) THEN
  246. WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
  247. NN = 0
  248. FATAL = .TRUE.
  249. END IF
  250. READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
  251. DO 20 I = 1, NN
  252. IF( NVAL( I ).LT.0 ) THEN
  253. WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0
  254. FATAL = .TRUE.
  255. ELSE IF( NVAL( I ).GT.NMAX ) THEN
  256. WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX
  257. FATAL = .TRUE.
  258. END IF
  259. 20 CONTINUE
  260. IF( NN.GT.0 )
  261. $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN )
  262. *
  263. * Read the values of NRHS
  264. *
  265. READ( NIN, FMT = * )NNS
  266. IF( NNS.LT.1 ) THEN
  267. WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
  268. NNS = 0
  269. FATAL = .TRUE.
  270. ELSE IF( NNS.GT.MAXIN ) THEN
  271. WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
  272. NNS = 0
  273. FATAL = .TRUE.
  274. END IF
  275. READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
  276. DO 30 I = 1, NNS
  277. IF( NSVAL( I ).LT.0 ) THEN
  278. WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
  279. FATAL = .TRUE.
  280. ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
  281. WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
  282. FATAL = .TRUE.
  283. END IF
  284. 30 CONTINUE
  285. IF( NNS.GT.0 )
  286. $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
  287. *
  288. * Read the values of NB
  289. *
  290. READ( NIN, FMT = * )NNB
  291. IF( NNB.LT.1 ) THEN
  292. WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
  293. NNB = 0
  294. FATAL = .TRUE.
  295. ELSE IF( NNB.GT.MAXIN ) THEN
  296. WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
  297. NNB = 0
  298. FATAL = .TRUE.
  299. END IF
  300. READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
  301. DO 40 I = 1, NNB
  302. IF( NBVAL( I ).LT.0 ) THEN
  303. WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
  304. FATAL = .TRUE.
  305. END IF
  306. 40 CONTINUE
  307. IF( NNB.GT.0 )
  308. $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB )
  309. *
  310. * Set NBVAL2 to be the set of unique values of NB
  311. *
  312. NNB2 = 0
  313. DO 60 I = 1, NNB
  314. NB = NBVAL( I )
  315. DO 50 J = 1, NNB2
  316. IF( NB.EQ.NBVAL2( J ) )
  317. $ GO TO 60
  318. 50 CONTINUE
  319. NNB2 = NNB2 + 1
  320. NBVAL2( NNB2 ) = NB
  321. 60 CONTINUE
  322. *
  323. * Read the values of NX
  324. *
  325. READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
  326. DO 70 I = 1, NNB
  327. IF( NXVAL( I ).LT.0 ) THEN
  328. WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
  329. FATAL = .TRUE.
  330. END IF
  331. 70 CONTINUE
  332. IF( NNB.GT.0 )
  333. $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB )
  334. *
  335. * Read the values of RANKVAL
  336. *
  337. READ( NIN, FMT = * )NRANK
  338. IF( NN.LT.1 ) THEN
  339. WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
  340. NRANK = 0
  341. FATAL = .TRUE.
  342. ELSE IF( NN.GT.MAXIN ) THEN
  343. WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
  344. NRANK = 0
  345. FATAL = .TRUE.
  346. END IF
  347. READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
  348. DO I = 1, NRANK
  349. IF( RANKVAL( I ).LT.0 ) THEN
  350. WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0
  351. FATAL = .TRUE.
  352. ELSE IF( RANKVAL( I ).GT.100 ) THEN
  353. WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100
  354. FATAL = .TRUE.
  355. END IF
  356. END DO
  357. IF( NRANK.GT.0 )
  358. $ WRITE( NOUT, FMT = 9993 )'RANK % OF N',
  359. $ ( RANKVAL( I ), I = 1, NRANK )
  360. *
  361. * Read the threshold value for the test ratios.
  362. *
  363. READ( NIN, FMT = * )THRESH
  364. WRITE( NOUT, FMT = 9992 )THRESH
  365. *
  366. * Read the flag that indicates whether to test the LAPACK routines.
  367. *
  368. READ( NIN, FMT = * )TSTCHK
  369. *
  370. * Read the flag that indicates whether to test the driver routines.
  371. *
  372. READ( NIN, FMT = * )TSTDRV
  373. *
  374. * Read the flag that indicates whether to test the error exits.
  375. *
  376. READ( NIN, FMT = * )TSTERR
  377. *
  378. IF( FATAL ) THEN
  379. WRITE( NOUT, FMT = 9999 )
  380. STOP
  381. END IF
  382. *
  383. * Calculate and print the machine dependent constants.
  384. *
  385. EPS = DLAMCH( 'Underflow threshold' )
  386. WRITE( NOUT, FMT = 9991 )'underflow', EPS
  387. EPS = DLAMCH( 'Overflow threshold' )
  388. WRITE( NOUT, FMT = 9991 )'overflow ', EPS
  389. EPS = DLAMCH( 'Epsilon' )
  390. WRITE( NOUT, FMT = 9991 )'precision', EPS
  391. WRITE( NOUT, FMT = * )
  392. NRHS = NSVAL( 1 )
  393. *
  394. 80 CONTINUE
  395. *
  396. * Read a test path and the number of matrix types to use.
  397. *
  398. READ( NIN, FMT = '(A72)', END = 140 )ALINE
  399. PATH = ALINE( 1: 3 )
  400. NMATS = MATMAX
  401. I = 3
  402. 90 CONTINUE
  403. I = I + 1
  404. IF( I.GT.72 )
  405. $ GO TO 130
  406. IF( ALINE( I: I ).EQ.' ' )
  407. $ GO TO 90
  408. NMATS = 0
  409. 100 CONTINUE
  410. C1 = ALINE( I: I )
  411. DO 110 K = 1, 10
  412. IF( C1.EQ.INTSTR( K: K ) ) THEN
  413. IC = K - 1
  414. GO TO 120
  415. END IF
  416. 110 CONTINUE
  417. GO TO 130
  418. 120 CONTINUE
  419. NMATS = NMATS*10 + IC
  420. I = I + 1
  421. IF( I.GT.72 )
  422. $ GO TO 130
  423. GO TO 100
  424. 130 CONTINUE
  425. C1 = PATH( 1: 1 )
  426. C2 = PATH( 2: 3 )
  427. *
  428. * Check first character for correct precision.
  429. *
  430. IF( .NOT.LSAME( C1, 'Zomplex precision' ) ) THEN
  431. WRITE( NOUT, FMT = 9990 )PATH
  432. *
  433. ELSE IF( NMATS.LE.0 ) THEN
  434. *
  435. * Check for a positive number of tests requested.
  436. *
  437. WRITE( NOUT, FMT = 9989 )PATH
  438. *
  439. ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
  440. *
  441. * GE: general matrices
  442. *
  443. NTYPES = 11
  444. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  445. *
  446. IF( TSTCHK ) THEN
  447. CALL ZCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  448. $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  449. $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  450. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  451. ELSE
  452. WRITE( NOUT, FMT = 9989 )PATH
  453. END IF
  454. *
  455. IF( TSTDRV ) THEN
  456. CALL ZDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  457. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  458. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  459. $ RWORK, IWORK, NOUT )
  460. ELSE
  461. WRITE( NOUT, FMT = 9988 )PATH
  462. END IF
  463. *
  464. ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
  465. *
  466. * GB: general banded matrices
  467. *
  468. LA = ( 2*KDMAX+1 )*NMAX
  469. LAFAC = ( 3*KDMAX+1 )*NMAX
  470. NTYPES = 8
  471. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  472. *
  473. IF( TSTCHK ) THEN
  474. CALL ZCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  475. $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
  476. $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
  477. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  478. ELSE
  479. WRITE( NOUT, FMT = 9989 )PATH
  480. END IF
  481. *
  482. IF( TSTDRV ) THEN
  483. CALL ZDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  484. $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
  485. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
  486. $ WORK, RWORK, IWORK, NOUT )
  487. ELSE
  488. WRITE( NOUT, FMT = 9988 )PATH
  489. END IF
  490. *
  491. ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
  492. *
  493. * GT: general tridiagonal matrices
  494. *
  495. NTYPES = 12
  496. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  497. *
  498. IF( TSTCHK ) THEN
  499. CALL ZCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  500. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  501. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  502. ELSE
  503. WRITE( NOUT, FMT = 9989 )PATH
  504. END IF
  505. *
  506. IF( TSTDRV ) THEN
  507. CALL ZDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  508. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  509. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  510. ELSE
  511. WRITE( NOUT, FMT = 9988 )PATH
  512. END IF
  513. *
  514. ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
  515. *
  516. * PO: positive definite matrices
  517. *
  518. NTYPES = 9
  519. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  520. *
  521. IF( TSTCHK ) THEN
  522. CALL ZCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  523. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  524. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  525. $ WORK, RWORK, NOUT )
  526. ELSE
  527. WRITE( NOUT, FMT = 9989 )PATH
  528. END IF
  529. *
  530. IF( TSTDRV ) THEN
  531. CALL ZDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  532. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  533. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  534. $ RWORK, NOUT )
  535. ELSE
  536. WRITE( NOUT, FMT = 9988 )PATH
  537. END IF
  538. *
  539. ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
  540. *
  541. * PS: positive semi-definite matrices
  542. *
  543. NTYPES = 9
  544. *
  545. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  546. *
  547. IF( TSTCHK ) THEN
  548. CALL ZCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
  549. $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  550. $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
  551. $ NOUT )
  552. ELSE
  553. WRITE( NOUT, FMT = 9989 )PATH
  554. END IF
  555. *
  556. ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
  557. *
  558. * PP: positive definite packed matrices
  559. *
  560. NTYPES = 9
  561. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  562. *
  563. IF( TSTCHK ) THEN
  564. CALL ZCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  565. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  566. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  567. $ NOUT )
  568. ELSE
  569. WRITE( NOUT, FMT = 9989 )PATH
  570. END IF
  571. *
  572. IF( TSTDRV ) THEN
  573. CALL ZDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  574. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  575. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  576. $ RWORK, NOUT )
  577. ELSE
  578. WRITE( NOUT, FMT = 9988 )PATH
  579. END IF
  580. *
  581. ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
  582. *
  583. * PB: positive definite banded matrices
  584. *
  585. NTYPES = 8
  586. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  587. *
  588. IF( TSTCHK ) THEN
  589. CALL ZCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  590. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  591. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  592. $ WORK, RWORK, NOUT )
  593. ELSE
  594. WRITE( NOUT, FMT = 9989 )PATH
  595. END IF
  596. *
  597. IF( TSTDRV ) THEN
  598. CALL ZDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  599. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  600. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  601. $ RWORK, NOUT )
  602. ELSE
  603. WRITE( NOUT, FMT = 9988 )PATH
  604. END IF
  605. *
  606. ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
  607. *
  608. * PT: positive definite tridiagonal matrices
  609. *
  610. NTYPES = 12
  611. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  612. *
  613. IF( TSTCHK ) THEN
  614. CALL ZCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  615. $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  616. $ B( 1, 3 ), WORK, RWORK, NOUT )
  617. ELSE
  618. WRITE( NOUT, FMT = 9989 )PATH
  619. END IF
  620. *
  621. IF( TSTDRV ) THEN
  622. CALL ZDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  623. $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  624. $ B( 1, 3 ), WORK, RWORK, NOUT )
  625. ELSE
  626. WRITE( NOUT, FMT = 9988 )PATH
  627. END IF
  628. *
  629. ELSE IF( LSAMEN( 2, C2, 'HE' ) ) THEN
  630. *
  631. * HE: Hermitian indefinite matrices
  632. *
  633. NTYPES = 10
  634. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  635. *
  636. IF( TSTCHK ) THEN
  637. CALL ZCHKHE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  638. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  639. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  640. $ WORK, RWORK, IWORK, NOUT )
  641. ELSE
  642. WRITE( NOUT, FMT = 9989 )PATH
  643. END IF
  644. *
  645. IF( TSTDRV ) THEN
  646. CALL ZDRVHE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  647. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  648. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  649. $ NOUT )
  650. ELSE
  651. WRITE( NOUT, FMT = 9988 )PATH
  652. END IF
  653. ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN
  654. *
  655. * HR: Hermitian indefinite matrices,
  656. * with bounded Bunch-Kaufman (rook) pivoting algorithm,
  657. *
  658. NTYPES = 10
  659. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  660. *
  661. IF( TSTCHK ) THEN
  662. CALL ZCHKHE_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  663. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  664. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  665. $ WORK, RWORK, IWORK, NOUT )
  666. ELSE
  667. WRITE( NOUT, FMT = 9989 )PATH
  668. END IF
  669. *
  670. IF( TSTDRV ) THEN
  671. CALL ZDRVHE_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  672. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  673. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  674. $ RWORK, IWORK, NOUT )
  675. ELSE
  676. WRITE( NOUT, FMT = 9988 )PATH
  677. END IF
  678. *
  679. ELSE IF( LSAMEN( 2, C2, 'HK' ) ) THEN
  680. *
  681. * HK: Hermitian indefinite matrices,
  682. * with bounded Bunch-Kaufman (rook) pivoting algorithm,
  683. * different matrix storage format than HR path version.
  684. *
  685. NTYPES = 10
  686. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  687. *
  688. IF( TSTCHK ) THEN
  689. CALL ZCHKHE_RK ( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  690. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  691. $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  692. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  693. ELSE
  694. WRITE( NOUT, FMT = 9989 )PATH
  695. END IF
  696. *
  697. IF( TSTDRV ) THEN
  698. CALL ZDRVHE_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  699. $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ),
  700. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  701. $ RWORK, IWORK, NOUT )
  702. ELSE
  703. WRITE( NOUT, FMT = 9988 )PATH
  704. END IF
  705. *
  706. ELSE IF( LSAMEN( 2, C2, 'HA' ) ) THEN
  707. *
  708. * HA: Hermitian matrices,
  709. * Aasen Algorithm
  710. *
  711. NTYPES = 10
  712. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  713. *
  714. IF( TSTCHK ) THEN
  715. CALL ZCHKHE_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS,
  716. $ NSVAL, THRESH, TSTERR, LDA,
  717. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  718. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  719. $ WORK, RWORK, IWORK, NOUT )
  720. ELSE
  721. WRITE( NOUT, FMT = 9989 )PATH
  722. END IF
  723. *
  724. IF( TSTDRV ) THEN
  725. CALL ZDRVHE_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  726. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  727. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  728. $ WORK, RWORK, IWORK, NOUT )
  729. ELSE
  730. WRITE( NOUT, FMT = 9988 )PATH
  731. END IF
  732. *
  733. ELSE IF( LSAMEN( 2, C2, 'H2' ) ) THEN
  734. *
  735. * H2: Hermitian matrices,
  736. * with partial (Aasen's) pivoting algorithm
  737. *
  738. NTYPES = 10
  739. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  740. *
  741. IF( TSTCHK ) THEN
  742. CALL ZCHKHE_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2,
  743. $ NNS, NSVAL, THRESH, TSTERR, LDA,
  744. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  745. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  746. $ WORK, RWORK, IWORK, NOUT )
  747. ELSE
  748. WRITE( NOUT, FMT = 9989 )PATH
  749. END IF
  750. *
  751. IF( TSTDRV ) THEN
  752. CALL ZDRVHE_AA_2STAGE(
  753. $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  754. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  755. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  756. $ WORK, RWORK, IWORK, NOUT )
  757. ELSE
  758. WRITE( NOUT, FMT = 9988 )PATH
  759. END IF
  760. *
  761. *
  762. ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN
  763. *
  764. * HP: Hermitian indefinite packed matrices
  765. *
  766. NTYPES = 10
  767. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  768. *
  769. IF( TSTCHK ) THEN
  770. CALL ZCHKHP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  771. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  772. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  773. $ IWORK, NOUT )
  774. ELSE
  775. WRITE( NOUT, FMT = 9989 )PATH
  776. END IF
  777. *
  778. IF( TSTDRV ) THEN
  779. CALL ZDRVHP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  780. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  781. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  782. $ NOUT )
  783. ELSE
  784. WRITE( NOUT, FMT = 9988 )PATH
  785. END IF
  786. *
  787. ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
  788. *
  789. * SY: symmetric indefinite matrices,
  790. * with partial (Bunch-Kaufman) pivoting algorithm
  791. *
  792. NTYPES = 11
  793. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  794. *
  795. IF( TSTCHK ) THEN
  796. CALL ZCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  797. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  798. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  799. $ WORK, RWORK, IWORK, NOUT )
  800. ELSE
  801. WRITE( NOUT, FMT = 9989 )PATH
  802. END IF
  803. *
  804. IF( TSTDRV ) THEN
  805. CALL ZDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  806. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  807. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  808. $ NOUT )
  809. ELSE
  810. WRITE( NOUT, FMT = 9988 )PATH
  811. END IF
  812. *
  813. ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
  814. *
  815. * SR: symmetric indefinite matrices,
  816. * with bounded Bunch-Kaufman (rook) pivoting algorithm
  817. *
  818. NTYPES = 11
  819. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  820. *
  821. IF( TSTCHK ) THEN
  822. CALL ZCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  823. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  824. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  825. $ WORK, RWORK, IWORK, NOUT )
  826. ELSE
  827. WRITE( NOUT, FMT = 9989 )PATH
  828. END IF
  829. *
  830. IF( TSTDRV ) THEN
  831. CALL ZDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  832. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  833. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  834. $ RWORK, IWORK, NOUT )
  835. ELSE
  836. WRITE( NOUT, FMT = 9988 )PATH
  837. END IF
  838. *
  839. ELSE IF( LSAMEN( 2, C2, 'SK' ) ) THEN
  840. *
  841. * SK: symmetric indefinite matrices,
  842. * with bounded Bunch-Kaufman (rook) pivoting algorithm,
  843. * different matrix storage format than SR path version.
  844. *
  845. NTYPES = 11
  846. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  847. *
  848. IF( TSTCHK ) THEN
  849. CALL ZCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  850. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  851. $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  852. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  853. ELSE
  854. WRITE( NOUT, FMT = 9989 )PATH
  855. END IF
  856. *
  857. IF( TSTDRV ) THEN
  858. CALL ZDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  859. $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ),
  860. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  861. $ RWORK, IWORK, NOUT )
  862. ELSE
  863. WRITE( NOUT, FMT = 9988 )PATH
  864. END IF
  865. *
  866. ELSE IF( LSAMEN( 2, C2, 'SA' ) ) THEN
  867. *
  868. * SA: symmetric indefinite matrices with Aasen's algorithm,
  869. *
  870. NTYPES = 11
  871. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  872. *
  873. IF( TSTCHK ) THEN
  874. CALL ZCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  875. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  876. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  877. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  878. ELSE
  879. WRITE( NOUT, FMT = 9989 )PATH
  880. END IF
  881. *
  882. IF( TSTDRV ) THEN
  883. CALL ZDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  884. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  885. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  886. $ RWORK, IWORK, NOUT )
  887. ELSE
  888. WRITE( NOUT, FMT = 9988 )PATH
  889. END IF
  890. *
  891. ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN
  892. *
  893. * S2: symmetric indefinite matrices with Aasen's algorithm
  894. * 2 stage
  895. *
  896. NTYPES = 11
  897. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  898. *
  899. IF( TSTCHK ) THEN
  900. CALL ZCHKSY_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS,
  901. $ NSVAL, THRESH, TSTERR, LDA,
  902. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  903. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  904. $ WORK, RWORK, IWORK, NOUT )
  905. ELSE
  906. WRITE( NOUT, FMT = 9989 )PATH
  907. END IF
  908. *
  909. IF( TSTDRV ) THEN
  910. CALL ZDRVSY_AA_2STAGE(
  911. $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  912. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  913. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  914. $ RWORK, IWORK, NOUT )
  915. ELSE
  916. WRITE( NOUT, FMT = 9988 )PATH
  917. END IF
  918. *
  919. ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
  920. *
  921. * SP: symmetric indefinite packed matrices,
  922. * with partial (Bunch-Kaufman) pivoting algorithm
  923. *
  924. NTYPES = 11
  925. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  926. *
  927. IF( TSTCHK ) THEN
  928. CALL ZCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  929. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  930. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  931. $ IWORK, NOUT )
  932. ELSE
  933. WRITE( NOUT, FMT = 9989 )PATH
  934. END IF
  935. *
  936. IF( TSTDRV ) THEN
  937. CALL ZDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  938. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  939. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  940. $ NOUT )
  941. ELSE
  942. WRITE( NOUT, FMT = 9988 )PATH
  943. END IF
  944. *
  945. ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN
  946. *
  947. * TR: triangular matrices
  948. *
  949. NTYPES = 18
  950. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  951. *
  952. IF( TSTCHK ) THEN
  953. CALL ZCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  954. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  955. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  956. $ NOUT )
  957. ELSE
  958. WRITE( NOUT, FMT = 9989 )PATH
  959. END IF
  960. *
  961. ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN
  962. *
  963. * TP: triangular packed matrices
  964. *
  965. NTYPES = 18
  966. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  967. *
  968. IF( TSTCHK ) THEN
  969. CALL ZCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  970. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  971. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  972. ELSE
  973. WRITE( NOUT, FMT = 9989 )PATH
  974. END IF
  975. *
  976. ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN
  977. *
  978. * TB: triangular banded matrices
  979. *
  980. NTYPES = 17
  981. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  982. *
  983. IF( TSTCHK ) THEN
  984. CALL ZCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  985. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  986. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  987. ELSE
  988. WRITE( NOUT, FMT = 9989 )PATH
  989. END IF
  990. *
  991. ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN
  992. *
  993. * QR: QR factorization
  994. *
  995. NTYPES = 8
  996. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  997. *
  998. IF( TSTCHK ) THEN
  999. CALL ZCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  1000. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  1001. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1002. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  1003. $ WORK, RWORK, IWORK, NOUT )
  1004. ELSE
  1005. WRITE( NOUT, FMT = 9989 )PATH
  1006. END IF
  1007. *
  1008. ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN
  1009. *
  1010. * LQ: LQ factorization
  1011. *
  1012. NTYPES = 8
  1013. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1014. *
  1015. IF( TSTCHK ) THEN
  1016. CALL ZCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  1017. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  1018. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1019. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  1020. $ WORK, RWORK, NOUT )
  1021. ELSE
  1022. WRITE( NOUT, FMT = 9989 )PATH
  1023. END IF
  1024. *
  1025. ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN
  1026. *
  1027. * QL: QL factorization
  1028. *
  1029. NTYPES = 8
  1030. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1031. *
  1032. IF( TSTCHK ) THEN
  1033. CALL ZCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  1034. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  1035. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1036. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  1037. $ WORK, RWORK, NOUT )
  1038. ELSE
  1039. WRITE( NOUT, FMT = 9989 )PATH
  1040. END IF
  1041. *
  1042. ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN
  1043. *
  1044. * RQ: RQ factorization
  1045. *
  1046. NTYPES = 8
  1047. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1048. *
  1049. IF( TSTCHK ) THEN
  1050. CALL ZCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  1051. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  1052. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1053. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  1054. $ WORK, RWORK, IWORK, NOUT )
  1055. ELSE
  1056. WRITE( NOUT, FMT = 9989 )PATH
  1057. END IF
  1058. *
  1059. ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN
  1060. *
  1061. * EQ: Equilibration routines for general and positive definite
  1062. * matrices (THREQ should be between 2 and 10)
  1063. *
  1064. IF( TSTCHK ) THEN
  1065. CALL ZCHKEQ( THREQ, NOUT )
  1066. ELSE
  1067. WRITE( NOUT, FMT = 9989 )PATH
  1068. END IF
  1069. *
  1070. ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN
  1071. *
  1072. * TZ: Trapezoidal matrix
  1073. *
  1074. NTYPES = 3
  1075. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1076. *
  1077. IF( TSTCHK ) THEN
  1078. CALL ZCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
  1079. $ A( 1, 1 ), A( 1, 2 ), S( 1 ),
  1080. $ B( 1, 1 ), WORK, RWORK, NOUT )
  1081. ELSE
  1082. WRITE( NOUT, FMT = 9989 )PATH
  1083. END IF
  1084. *
  1085. ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN
  1086. *
  1087. * QP: QR factorization with pivoting
  1088. *
  1089. NTYPES = 6
  1090. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1091. *
  1092. IF( TSTCHK ) THEN
  1093. CALL ZCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  1094. $ THRESH, A( 1, 1 ), A( 1, 2 ), S( 1 ),
  1095. $ B( 1, 1 ), WORK, RWORK, IWORK,
  1096. $ NOUT )
  1097. ELSE
  1098. WRITE( NOUT, FMT = 9989 )PATH
  1099. END IF
  1100. *
  1101. ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
  1102. *
  1103. * LS: Least squares drivers
  1104. *
  1105. NTYPES = 6
  1106. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1107. *
  1108. IF( TSTDRV ) THEN
  1109. CALL ZDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
  1110. $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
  1111. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1112. $ S( 1 ), S( NMAX+1 ), NOUT )
  1113. ELSE
  1114. WRITE( NOUT, FMT = 9989 )PATH
  1115. END IF
  1116. *
  1117. *
  1118. ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
  1119. *
  1120. * QT: QRT routines for general matrices
  1121. *
  1122. IF( TSTCHK ) THEN
  1123. CALL ZCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1124. $ NBVAL, NOUT )
  1125. ELSE
  1126. WRITE( NOUT, FMT = 9989 )PATH
  1127. END IF
  1128. *
  1129. ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
  1130. *
  1131. * QX: QRT routines for triangular-pentagonal matrices
  1132. *
  1133. IF( TSTCHK ) THEN
  1134. CALL ZCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1135. $ NBVAL, NOUT )
  1136. ELSE
  1137. WRITE( NOUT, FMT = 9989 )PATH
  1138. END IF
  1139. *
  1140. ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN
  1141. *
  1142. * TQ: LQT routines for general matrices
  1143. *
  1144. IF( TSTCHK ) THEN
  1145. CALL ZCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1146. $ NBVAL, NOUT )
  1147. ELSE
  1148. WRITE( NOUT, FMT = 9989 )PATH
  1149. END IF
  1150. *
  1151. ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN
  1152. *
  1153. * XQ: LQT routines for triangular-pentagonal matrices
  1154. *
  1155. IF( TSTCHK ) THEN
  1156. CALL ZCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1157. $ NBVAL, NOUT )
  1158. ELSE
  1159. WRITE( NOUT, FMT = 9989 )PATH
  1160. END IF
  1161. *
  1162. ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN
  1163. *
  1164. * TS: QR routines for tall-skinny matrices
  1165. *
  1166. IF( TSTCHK ) THEN
  1167. CALL ZCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1168. $ NBVAL, NOUT )
  1169. ELSE
  1170. WRITE( NOUT, FMT = 9989 )PATH
  1171. END IF
  1172. *
  1173. ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN
  1174. *
  1175. * TQ: LQT routines for general matrices
  1176. *
  1177. IF( TSTCHK ) THEN
  1178. CALL ZCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1179. $ NBVAL, NOUT )
  1180. ELSE
  1181. WRITE( NOUT, FMT = 9989 )PATH
  1182. END IF
  1183. *
  1184. ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN
  1185. *
  1186. * XQ: LQT routines for triangular-pentagonal matrices
  1187. *
  1188. IF( TSTCHK ) THEN
  1189. CALL ZCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1190. $ NBVAL, NOUT )
  1191. ELSE
  1192. WRITE( NOUT, FMT = 9989 )PATH
  1193. END IF
  1194. *
  1195. ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN
  1196. *
  1197. * TS: QR routines for tall-skinny matrices
  1198. *
  1199. IF( TSTCHK ) THEN
  1200. CALL ZCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1201. $ NBVAL, NOUT )
  1202. ELSE
  1203. WRITE( NOUT, FMT = 9989 )PATH
  1204. END IF
  1205. *
  1206. ELSE IF( LSAMEN( 2, C2, 'HH' ) ) THEN
  1207. *
  1208. * HH: Householder reconstruction for tall-skinny matrices
  1209. *
  1210. IF( TSTCHK ) THEN
  1211. CALL ZCHKUNHR_COL( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1212. $ NBVAL, NOUT )
  1213. ELSE
  1214. WRITE( NOUT, FMT = 9989 ) PATH
  1215. END IF
  1216. *
  1217. ELSE
  1218. *
  1219. WRITE( NOUT, FMT = 9990 )PATH
  1220. END IF
  1221. *
  1222. * Go back to get another input line.
  1223. *
  1224. GO TO 80
  1225. *
  1226. * Branch to this line when the last record is read.
  1227. *
  1228. 140 CONTINUE
  1229. CLOSE ( NIN )
  1230. S2 = DSECND( )
  1231. WRITE( NOUT, FMT = 9998 )
  1232. WRITE( NOUT, FMT = 9997 )S2 - S1
  1233. *
  1234. 9999 FORMAT( / ' Execution not attempted due to input errors' )
  1235. 9998 FORMAT( / ' End of tests' )
  1236. 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
  1237. 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
  1238. $ I6 )
  1239. 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
  1240. $ I6 )
  1241. 9994 FORMAT( ' Tests of the COMPLEX*16 LAPACK routines ',
  1242. $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
  1243. $ / / ' The following parameter values will be used:' )
  1244. 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 )
  1245. 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
  1246. $ 'less than', F8.2, / )
  1247. 9991 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 )
  1248. 9990 FORMAT( / 1X, A3, ': Unrecognized path name' )
  1249. 9989 FORMAT( / 1X, A3, ' routines were not tested' )
  1250. 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )
  1251. *
  1252. * End of ZCHKAA
  1253. *
  1254. END