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

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