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

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