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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004
  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. *> ZHP 10 List types on next line if 0 < NTYPES < 10
  55. *> ZSY 11 List types on next line if 0 < NTYPES < 11
  56. *> ZSR 11 List types on next line if 0 < NTYPES < 11
  57. *> ZSP 11 List types on next line if 0 < NTYPES < 11
  58. *> ZTR 18 List types on next line if 0 < NTYPES < 18
  59. *> ZTP 18 List types on next line if 0 < NTYPES < 18
  60. *> ZTB 17 List types on next line if 0 < NTYPES < 17
  61. *> ZQR 8 List types on next line if 0 < NTYPES < 8
  62. *> ZRQ 8 List types on next line if 0 < NTYPES < 8
  63. *> ZLQ 8 List types on next line if 0 < NTYPES < 8
  64. *> ZQL 8 List types on next line if 0 < NTYPES < 8
  65. *> ZQP 6 List types on next line if 0 < NTYPES < 6
  66. *> ZTZ 3 List types on next line if 0 < NTYPES < 3
  67. *> ZLS 6 List types on next line if 0 < NTYPES < 6
  68. *> ZEQ
  69. *> ZQT
  70. *> ZQX
  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 November 2015
  106. *
  107. *> \ingroup complex16_lin
  108. *
  109. * =====================================================================
  110. PROGRAM ZCHKAA
  111. *
  112. * -- LAPACK test routine (version 3.6.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. * November 2015
  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 RWORK( 150*NMAX+2*MAXRHS ), S( 2*NMAX )
  152. COMPLEX*16 A( ( KDMAX+1 )*NMAX, 7 ), B( NMAX*MAXRHS, 4 ),
  153. $ WORK( NMAX, NMAX+MAXRHS+10 )
  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, ZCHKEQ, ZCHKGB, ZCHKGE, ZCHKGT, ZCHKHE,
  162. $ ZCHKHE_ROOK, ZCHKHP, ZCHKLQ, ZCHKPB, ZCHKPO,
  163. $ ZCHKPS, ZCHKPP, ZCHKPT, ZCHKQ3, ZCHKQL,
  164. $ ZCHKQR, ZCHKRQ, ZCHKSP, ZCHKSY, ZCHKSY_ROOK,
  165. $ ZCHKTB, ZCHKTP, ZCHKTR, ZCHKTZ, ZDRVGB, ZDRVGE,
  166. $ ZDRVGT, ZDRVHE, ZDRVHE_ROOK, ZDRVHP, ZDRVLS,
  167. $ ZDRVPB, ZDRVPO, ZDRVPP, ZDRVPT, ZDRVSP, ZDRVSY,
  168. $ ZDRVSY_ROOK, ILAVER, ZCHKQRT, ZCHKQRTP
  169. * ..
  170. * .. Scalars in Common ..
  171. LOGICAL LERR, OK
  172. CHARACTER*32 SRNAMT
  173. INTEGER INFOT, NUNIT
  174. * ..
  175. * .. Arrays in Common ..
  176. INTEGER IPARMS( 100 )
  177. * ..
  178. * .. Common blocks ..
  179. COMMON / INFOC / INFOT, NUNIT, OK, LERR
  180. COMMON / SRNAMC / SRNAMT
  181. COMMON / CLAENV / IPARMS
  182. * ..
  183. * .. Data statements ..
  184. DATA THREQ / 2.0D0 / , INTSTR / '0123456789' /
  185. * ..
  186. * .. Executable Statements ..
  187. *
  188. S1 = DSECND( )
  189. LDA = NMAX
  190. FATAL = .FALSE.
  191. *
  192. * Read a dummy line.
  193. *
  194. READ( NIN, FMT = * )
  195. *
  196. * Report values of parameters.
  197. *
  198. CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
  199. WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
  200. *
  201. * Read the values of M
  202. *
  203. READ( NIN, FMT = * )NM
  204. IF( NM.LT.1 ) THEN
  205. WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
  206. NM = 0
  207. FATAL = .TRUE.
  208. ELSE IF( NM.GT.MAXIN ) THEN
  209. WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
  210. NM = 0
  211. FATAL = .TRUE.
  212. END IF
  213. READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
  214. DO 10 I = 1, NM
  215. IF( MVAL( I ).LT.0 ) THEN
  216. WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0
  217. FATAL = .TRUE.
  218. ELSE IF( MVAL( I ).GT.NMAX ) THEN
  219. WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX
  220. FATAL = .TRUE.
  221. END IF
  222. 10 CONTINUE
  223. IF( NM.GT.0 )
  224. $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM )
  225. *
  226. * Read the values of N
  227. *
  228. READ( NIN, FMT = * )NN
  229. IF( NN.LT.1 ) THEN
  230. WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
  231. NN = 0
  232. FATAL = .TRUE.
  233. ELSE IF( NN.GT.MAXIN ) THEN
  234. WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
  235. NN = 0
  236. FATAL = .TRUE.
  237. END IF
  238. READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
  239. DO 20 I = 1, NN
  240. IF( NVAL( I ).LT.0 ) THEN
  241. WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0
  242. FATAL = .TRUE.
  243. ELSE IF( NVAL( I ).GT.NMAX ) THEN
  244. WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX
  245. FATAL = .TRUE.
  246. END IF
  247. 20 CONTINUE
  248. IF( NN.GT.0 )
  249. $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN )
  250. *
  251. * Read the values of NRHS
  252. *
  253. READ( NIN, FMT = * )NNS
  254. IF( NNS.LT.1 ) THEN
  255. WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
  256. NNS = 0
  257. FATAL = .TRUE.
  258. ELSE IF( NNS.GT.MAXIN ) THEN
  259. WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
  260. NNS = 0
  261. FATAL = .TRUE.
  262. END IF
  263. READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
  264. DO 30 I = 1, NNS
  265. IF( NSVAL( I ).LT.0 ) THEN
  266. WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
  267. FATAL = .TRUE.
  268. ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
  269. WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
  270. FATAL = .TRUE.
  271. END IF
  272. 30 CONTINUE
  273. IF( NNS.GT.0 )
  274. $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
  275. *
  276. * Read the values of NB
  277. *
  278. READ( NIN, FMT = * )NNB
  279. IF( NNB.LT.1 ) THEN
  280. WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
  281. NNB = 0
  282. FATAL = .TRUE.
  283. ELSE IF( NNB.GT.MAXIN ) THEN
  284. WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
  285. NNB = 0
  286. FATAL = .TRUE.
  287. END IF
  288. READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
  289. DO 40 I = 1, NNB
  290. IF( NBVAL( I ).LT.0 ) THEN
  291. WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
  292. FATAL = .TRUE.
  293. END IF
  294. 40 CONTINUE
  295. IF( NNB.GT.0 )
  296. $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB )
  297. *
  298. * Set NBVAL2 to be the set of unique values of NB
  299. *
  300. NNB2 = 0
  301. DO 60 I = 1, NNB
  302. NB = NBVAL( I )
  303. DO 50 J = 1, NNB2
  304. IF( NB.EQ.NBVAL2( J ) )
  305. $ GO TO 60
  306. 50 CONTINUE
  307. NNB2 = NNB2 + 1
  308. NBVAL2( NNB2 ) = NB
  309. 60 CONTINUE
  310. *
  311. * Read the values of NX
  312. *
  313. READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
  314. DO 70 I = 1, NNB
  315. IF( NXVAL( I ).LT.0 ) THEN
  316. WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
  317. FATAL = .TRUE.
  318. END IF
  319. 70 CONTINUE
  320. IF( NNB.GT.0 )
  321. $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB )
  322. *
  323. * Read the values of RANKVAL
  324. *
  325. READ( NIN, FMT = * )NRANK
  326. IF( NN.LT.1 ) THEN
  327. WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
  328. NRANK = 0
  329. FATAL = .TRUE.
  330. ELSE IF( NN.GT.MAXIN ) THEN
  331. WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
  332. NRANK = 0
  333. FATAL = .TRUE.
  334. END IF
  335. READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
  336. DO I = 1, NRANK
  337. IF( RANKVAL( I ).LT.0 ) THEN
  338. WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0
  339. FATAL = .TRUE.
  340. ELSE IF( RANKVAL( I ).GT.100 ) THEN
  341. WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100
  342. FATAL = .TRUE.
  343. END IF
  344. END DO
  345. IF( NRANK.GT.0 )
  346. $ WRITE( NOUT, FMT = 9993 )'RANK % OF N',
  347. $ ( RANKVAL( I ), I = 1, NRANK )
  348. *
  349. * Read the threshold value for the test ratios.
  350. *
  351. READ( NIN, FMT = * )THRESH
  352. WRITE( NOUT, FMT = 9992 )THRESH
  353. *
  354. * Read the flag that indicates whether to test the LAPACK routines.
  355. *
  356. READ( NIN, FMT = * )TSTCHK
  357. *
  358. * Read the flag that indicates whether to test the driver routines.
  359. *
  360. READ( NIN, FMT = * )TSTDRV
  361. *
  362. * Read the flag that indicates whether to test the error exits.
  363. *
  364. READ( NIN, FMT = * )TSTERR
  365. *
  366. IF( FATAL ) THEN
  367. WRITE( NOUT, FMT = 9999 )
  368. STOP
  369. END IF
  370. *
  371. * Calculate and print the machine dependent constants.
  372. *
  373. EPS = DLAMCH( 'Underflow threshold' )
  374. WRITE( NOUT, FMT = 9991 )'underflow', EPS
  375. EPS = DLAMCH( 'Overflow threshold' )
  376. WRITE( NOUT, FMT = 9991 )'overflow ', EPS
  377. EPS = DLAMCH( 'Epsilon' )
  378. WRITE( NOUT, FMT = 9991 )'precision', EPS
  379. WRITE( NOUT, FMT = * )
  380. NRHS = NSVAL( 1 )
  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 )
  393. $ GO TO 130
  394. IF( ALINE( I: I ).EQ.' ' )
  395. $ GO TO 90
  396. NMATS = 0
  397. 100 CONTINUE
  398. C1 = ALINE( I: I )
  399. DO 110 K = 1, 10
  400. IF( C1.EQ.INTSTR( K: K ) ) THEN
  401. IC = K - 1
  402. GO TO 120
  403. END IF
  404. 110 CONTINUE
  405. GO TO 130
  406. 120 CONTINUE
  407. NMATS = NMATS*10 + IC
  408. I = I + 1
  409. IF( I.GT.72 )
  410. $ GO TO 130
  411. GO TO 100
  412. 130 CONTINUE
  413. C1 = PATH( 1: 1 )
  414. C2 = PATH( 2: 3 )
  415. *
  416. * Check first character for correct precision.
  417. *
  418. IF( .NOT.LSAME( C1, 'Zomplex precision' ) ) THEN
  419. WRITE( NOUT, FMT = 9990 )PATH
  420. *
  421. ELSE IF( NMATS.LE.0 ) THEN
  422. *
  423. * Check for a positive number of tests requested.
  424. *
  425. WRITE( NOUT, FMT = 9989 )PATH
  426. *
  427. ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
  428. *
  429. * GE: general matrices
  430. *
  431. NTYPES = 11
  432. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  433. *
  434. IF( TSTCHK ) THEN
  435. CALL ZCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  436. $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  437. $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  438. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  439. ELSE
  440. WRITE( NOUT, FMT = 9989 )PATH
  441. END IF
  442. *
  443. IF( TSTDRV ) THEN
  444. CALL ZDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  445. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  446. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  447. $ RWORK, IWORK, NOUT )
  448. ELSE
  449. WRITE( NOUT, FMT = 9988 )PATH
  450. END IF
  451. *
  452. ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
  453. *
  454. * GB: general banded matrices
  455. *
  456. LA = ( 2*KDMAX+1 )*NMAX
  457. LAFAC = ( 3*KDMAX+1 )*NMAX
  458. NTYPES = 8
  459. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  460. *
  461. IF( TSTCHK ) THEN
  462. CALL ZCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  463. $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
  464. $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
  465. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  466. ELSE
  467. WRITE( NOUT, FMT = 9989 )PATH
  468. END IF
  469. *
  470. IF( TSTDRV ) THEN
  471. CALL ZDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  472. $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
  473. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
  474. $ WORK, RWORK, IWORK, NOUT )
  475. ELSE
  476. WRITE( NOUT, FMT = 9988 )PATH
  477. END IF
  478. *
  479. ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
  480. *
  481. * GT: general tridiagonal matrices
  482. *
  483. NTYPES = 12
  484. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  485. *
  486. IF( TSTCHK ) THEN
  487. CALL ZCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  488. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  489. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  490. ELSE
  491. WRITE( NOUT, FMT = 9989 )PATH
  492. END IF
  493. *
  494. IF( TSTDRV ) THEN
  495. CALL ZDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  496. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  497. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  498. ELSE
  499. WRITE( NOUT, FMT = 9988 )PATH
  500. END IF
  501. *
  502. ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
  503. *
  504. * PO: positive definite matrices
  505. *
  506. NTYPES = 9
  507. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  508. *
  509. IF( TSTCHK ) THEN
  510. CALL ZCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  511. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  512. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  513. $ WORK, RWORK, NOUT )
  514. ELSE
  515. WRITE( NOUT, FMT = 9989 )PATH
  516. END IF
  517. *
  518. IF( TSTDRV ) THEN
  519. CALL ZDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  520. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  521. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  522. $ RWORK, NOUT )
  523. ELSE
  524. WRITE( NOUT, FMT = 9988 )PATH
  525. END IF
  526. *
  527. ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
  528. *
  529. * PS: positive semi-definite matrices
  530. *
  531. NTYPES = 9
  532. *
  533. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  534. *
  535. IF( TSTCHK ) THEN
  536. CALL ZCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
  537. $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  538. $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
  539. $ NOUT )
  540. ELSE
  541. WRITE( NOUT, FMT = 9989 )PATH
  542. END IF
  543. *
  544. ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
  545. *
  546. * PP: positive definite packed matrices
  547. *
  548. NTYPES = 9
  549. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  550. *
  551. IF( TSTCHK ) THEN
  552. CALL ZCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  553. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  554. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  555. $ NOUT )
  556. ELSE
  557. WRITE( NOUT, FMT = 9989 )PATH
  558. END IF
  559. *
  560. IF( TSTDRV ) THEN
  561. CALL ZDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  562. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  563. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  564. $ RWORK, NOUT )
  565. ELSE
  566. WRITE( NOUT, FMT = 9988 )PATH
  567. END IF
  568. *
  569. ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
  570. *
  571. * PB: positive definite banded matrices
  572. *
  573. NTYPES = 8
  574. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  575. *
  576. IF( TSTCHK ) THEN
  577. CALL ZCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  578. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  579. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  580. $ WORK, RWORK, NOUT )
  581. ELSE
  582. WRITE( NOUT, FMT = 9989 )PATH
  583. END IF
  584. *
  585. IF( TSTDRV ) THEN
  586. CALL ZDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  587. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  588. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  589. $ RWORK, NOUT )
  590. ELSE
  591. WRITE( NOUT, FMT = 9988 )PATH
  592. END IF
  593. *
  594. ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
  595. *
  596. * PT: positive definite tridiagonal matrices
  597. *
  598. NTYPES = 12
  599. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  600. *
  601. IF( TSTCHK ) THEN
  602. CALL ZCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  603. $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  604. $ B( 1, 3 ), WORK, RWORK, NOUT )
  605. ELSE
  606. WRITE( NOUT, FMT = 9989 )PATH
  607. END IF
  608. *
  609. IF( TSTDRV ) THEN
  610. CALL ZDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  611. $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  612. $ B( 1, 3 ), WORK, RWORK, NOUT )
  613. ELSE
  614. WRITE( NOUT, FMT = 9988 )PATH
  615. END IF
  616. *
  617. ELSE IF( LSAMEN( 2, C2, 'HE' ) ) THEN
  618. *
  619. * HE: Hermitian indefinite matrices
  620. *
  621. NTYPES = 10
  622. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  623. *
  624. IF( TSTCHK ) THEN
  625. CALL ZCHKHE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  626. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  627. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  628. $ WORK, RWORK, IWORK, NOUT )
  629. ELSE
  630. WRITE( NOUT, FMT = 9989 )PATH
  631. END IF
  632. *
  633. IF( TSTDRV ) THEN
  634. CALL ZDRVHE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  635. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  636. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  637. $ NOUT )
  638. ELSE
  639. WRITE( NOUT, FMT = 9988 )PATH
  640. END IF
  641. *
  642. ELSE IF( LSAMEN( 2, C2, 'HR' ) ) THEN
  643. *
  644. * HR: Hermitian indefinite matrices,
  645. * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
  646. *
  647. NTYPES = 10
  648. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  649. *
  650. IF( TSTCHK ) THEN
  651. CALL ZCHKHE_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  652. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  653. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  654. $ WORK, RWORK, IWORK, NOUT )
  655. ELSE
  656. WRITE( NOUT, FMT = 9989 )PATH
  657. END IF
  658. *
  659. IF( TSTDRV ) THEN
  660. CALL ZDRVHE_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  661. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  662. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  663. $ RWORK, IWORK, NOUT )
  664. ELSE
  665. WRITE( NOUT, FMT = 9988 )PATH
  666. END IF
  667. *
  668. ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN
  669. *
  670. * HP: Hermitian indefinite packed matrices
  671. *
  672. NTYPES = 10
  673. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  674. *
  675. IF( TSTCHK ) THEN
  676. CALL ZCHKHP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  677. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  678. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  679. $ IWORK, NOUT )
  680. ELSE
  681. WRITE( NOUT, FMT = 9989 )PATH
  682. END IF
  683. *
  684. IF( TSTDRV ) THEN
  685. CALL ZDRVHP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  686. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  687. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  688. $ NOUT )
  689. ELSE
  690. WRITE( NOUT, FMT = 9988 )PATH
  691. END IF
  692. *
  693. ELSE IF( LSAMEN( 2, C2, 'SY' ) ) THEN
  694. *
  695. * SY: symmetric indefinite matrices,
  696. * with partial (Bunch-Kaufman) pivoting algorithm
  697. *
  698. NTYPES = 11
  699. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  700. *
  701. IF( TSTCHK ) THEN
  702. CALL ZCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  703. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  704. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  705. $ WORK, RWORK, IWORK, NOUT )
  706. ELSE
  707. WRITE( NOUT, FMT = 9989 )PATH
  708. END IF
  709. *
  710. IF( TSTDRV ) THEN
  711. CALL ZDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  712. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  713. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  714. $ NOUT )
  715. ELSE
  716. WRITE( NOUT, FMT = 9988 )PATH
  717. END IF
  718. *
  719. ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
  720. *
  721. * SR: symmetric indefinite matrices,
  722. * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
  723. *
  724. NTYPES = 11
  725. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  726. *
  727. IF( TSTCHK ) THEN
  728. CALL ZCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  729. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  730. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  731. $ WORK, RWORK, IWORK, NOUT )
  732. ELSE
  733. WRITE( NOUT, FMT = 9989 )PATH
  734. END IF
  735. *
  736. IF( TSTDRV ) THEN
  737. CALL ZDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  738. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  739. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK,
  740. $ RWORK, IWORK, NOUT )
  741. ELSE
  742. WRITE( NOUT, FMT = 9988 )PATH
  743. END IF
  744. *
  745. ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
  746. *
  747. * SP: symmetric indefinite packed matrices,
  748. * with partial (Bunch-Kaufman) pivoting algorithm
  749. *
  750. NTYPES = 11
  751. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  752. *
  753. IF( TSTCHK ) THEN
  754. CALL ZCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  755. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  756. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  757. $ IWORK, NOUT )
  758. ELSE
  759. WRITE( NOUT, FMT = 9989 )PATH
  760. END IF
  761. *
  762. IF( TSTDRV ) THEN
  763. CALL ZDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  764. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  765. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  766. $ NOUT )
  767. ELSE
  768. WRITE( NOUT, FMT = 9988 )PATH
  769. END IF
  770. *
  771. ELSE IF( LSAMEN( 2, C2, 'TR' ) ) THEN
  772. *
  773. * TR: triangular matrices
  774. *
  775. NTYPES = 18
  776. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  777. *
  778. IF( TSTCHK ) THEN
  779. CALL ZCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  780. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  781. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  782. $ NOUT )
  783. ELSE
  784. WRITE( NOUT, FMT = 9989 )PATH
  785. END IF
  786. *
  787. ELSE IF( LSAMEN( 2, C2, 'TP' ) ) THEN
  788. *
  789. * TP: triangular packed matrices
  790. *
  791. NTYPES = 18
  792. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  793. *
  794. IF( TSTCHK ) THEN
  795. CALL ZCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  796. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  797. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  798. ELSE
  799. WRITE( NOUT, FMT = 9989 )PATH
  800. END IF
  801. *
  802. ELSE IF( LSAMEN( 2, C2, 'TB' ) ) THEN
  803. *
  804. * TB: triangular banded matrices
  805. *
  806. NTYPES = 17
  807. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  808. *
  809. IF( TSTCHK ) THEN
  810. CALL ZCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  811. $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
  812. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
  813. ELSE
  814. WRITE( NOUT, FMT = 9989 )PATH
  815. END IF
  816. *
  817. ELSE IF( LSAMEN( 2, C2, 'QR' ) ) THEN
  818. *
  819. * QR: QR factorization
  820. *
  821. NTYPES = 8
  822. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  823. *
  824. IF( TSTCHK ) THEN
  825. CALL ZCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  826. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  827. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  828. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  829. $ WORK, RWORK, IWORK, NOUT )
  830. ELSE
  831. WRITE( NOUT, FMT = 9989 )PATH
  832. END IF
  833. *
  834. ELSE IF( LSAMEN( 2, C2, 'LQ' ) ) THEN
  835. *
  836. * LQ: LQ factorization
  837. *
  838. NTYPES = 8
  839. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  840. *
  841. IF( TSTCHK ) THEN
  842. CALL ZCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  843. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  844. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  845. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  846. $ WORK, RWORK, NOUT )
  847. ELSE
  848. WRITE( NOUT, FMT = 9989 )PATH
  849. END IF
  850. *
  851. ELSE IF( LSAMEN( 2, C2, 'QL' ) ) THEN
  852. *
  853. * QL: QL factorization
  854. *
  855. NTYPES = 8
  856. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  857. *
  858. IF( TSTCHK ) THEN
  859. CALL ZCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  860. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  861. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  862. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  863. $ WORK, RWORK, NOUT )
  864. ELSE
  865. WRITE( NOUT, FMT = 9989 )PATH
  866. END IF
  867. *
  868. ELSE IF( LSAMEN( 2, C2, 'RQ' ) ) THEN
  869. *
  870. * RQ: RQ factorization
  871. *
  872. NTYPES = 8
  873. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  874. *
  875. IF( TSTCHK ) THEN
  876. CALL ZCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  877. $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
  878. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  879. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
  880. $ WORK, RWORK, IWORK, NOUT )
  881. ELSE
  882. WRITE( NOUT, FMT = 9989 )PATH
  883. END IF
  884. *
  885. ELSE IF( LSAMEN( 2, C2, 'EQ' ) ) THEN
  886. *
  887. * EQ: Equilibration routines for general and positive definite
  888. * matrices (THREQ should be between 2 and 10)
  889. *
  890. IF( TSTCHK ) THEN
  891. CALL ZCHKEQ( THREQ, NOUT )
  892. ELSE
  893. WRITE( NOUT, FMT = 9989 )PATH
  894. END IF
  895. *
  896. ELSE IF( LSAMEN( 2, C2, 'TZ' ) ) THEN
  897. *
  898. * TZ: Trapezoidal matrix
  899. *
  900. NTYPES = 3
  901. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  902. *
  903. IF( TSTCHK ) THEN
  904. CALL ZCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
  905. $ A( 1, 1 ), A( 1, 2 ), S( 1 ),
  906. $ B( 1, 1 ), WORK, RWORK, NOUT )
  907. ELSE
  908. WRITE( NOUT, FMT = 9989 )PATH
  909. END IF
  910. *
  911. ELSE IF( LSAMEN( 2, C2, 'QP' ) ) THEN
  912. *
  913. * QP: QR factorization with pivoting
  914. *
  915. NTYPES = 6
  916. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  917. *
  918. IF( TSTCHK ) THEN
  919. CALL ZCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
  920. $ THRESH, A( 1, 1 ), A( 1, 2 ), S( 1 ),
  921. $ B( 1, 1 ), WORK, RWORK, IWORK,
  922. $ NOUT )
  923. ELSE
  924. WRITE( NOUT, FMT = 9989 )PATH
  925. END IF
  926. *
  927. ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
  928. *
  929. * LS: Least squares drivers
  930. *
  931. NTYPES = 6
  932. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  933. *
  934. IF( TSTDRV ) THEN
  935. CALL ZDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
  936. $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
  937. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  938. $ S( 1 ), S( NMAX+1 ), WORK, RWORK, IWORK,
  939. $ NOUT )
  940. ELSE
  941. WRITE( NOUT, FMT = 9989 )PATH
  942. END IF
  943. *
  944. *
  945. ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
  946. *
  947. * QT: QRT routines for general matrices
  948. *
  949. IF( TSTCHK ) THEN
  950. CALL ZCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  951. $ NBVAL, NOUT )
  952. ELSE
  953. WRITE( NOUT, FMT = 9989 )PATH
  954. END IF
  955. *
  956. ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
  957. *
  958. * QX: QRT routines for triangular-pentagonal matrices
  959. *
  960. IF( TSTCHK ) THEN
  961. CALL ZCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  962. $ NBVAL, NOUT )
  963. ELSE
  964. WRITE( NOUT, FMT = 9989 )PATH
  965. END IF
  966. *
  967. ELSE
  968. *
  969. WRITE( NOUT, FMT = 9990 )PATH
  970. END IF
  971. *
  972. * Go back to get another input line.
  973. *
  974. GO TO 80
  975. *
  976. * Branch to this line when the last record is read.
  977. *
  978. 140 CONTINUE
  979. CLOSE ( NIN )
  980. S2 = DSECND( )
  981. WRITE( NOUT, FMT = 9998 )
  982. WRITE( NOUT, FMT = 9997 )S2 - S1
  983. *
  984. 9999 FORMAT( / ' Execution not attempted due to input errors' )
  985. 9998 FORMAT( / ' End of tests' )
  986. 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
  987. 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
  988. $ I6 )
  989. 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
  990. $ I6 )
  991. 9994 FORMAT( ' Tests of the COMPLEX*16 LAPACK routines ',
  992. $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
  993. $ / / ' The following parameter values will be used:' )
  994. 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 )
  995. 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
  996. $ 'less than', F8.2, / )
  997. 9991 FORMAT( ' Relative machine ', A, ' is taken to be', D16.6 )
  998. 9990 FORMAT( / 1X, A3, ': Unrecognized path name' )
  999. 9989 FORMAT( / 1X, A3, ' routines were not tested' )
  1000. 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )
  1001. *
  1002. * End of ZCHKAA
  1003. *
  1004. END