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

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