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.

cchkaa.f 41 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206
  1. *> \brief \b CCHKAA
  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 CCHKAA
  12. *
  13. *
  14. *> \par Purpose:
  15. * =============
  16. *>
  17. *> \verbatim
  18. *>
  19. *> CCHKAA is the main test program for the COMPLEX 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 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. *> CGE 11 List types on next line if 0 < NTYPES < 11
  45. *> CGB 8 List types on next line if 0 < NTYPES < 8
  46. *> CGT 12 List types on next line if 0 < NTYPES < 12
  47. *> CPO 9 List types on next line if 0 < NTYPES < 9
  48. *> CPO 9 List types on next line if 0 < NTYPES < 9
  49. *> CPP 9 List types on next line if 0 < NTYPES < 9
  50. *> CPB 8 List types on next line if 0 < NTYPES < 8
  51. *> CPT 12 List types on next line if 0 < NTYPES < 12
  52. *> CHE 10 List types on next line if 0 < NTYPES < 10
  53. *> CHR 10 List types on next line if 0 < NTYPES < 10
  54. *> CHK 10 List types on next line if 0 < NTYPES < 10
  55. *> CHA 10 List types on next line if 0 < NTYPES < 10
  56. *> CH2 10 List types on next line if 0 < NTYPES < 10
  57. *> CSA 11 List types on next line if 0 < NTYPES < 10
  58. *> CS2 11 List types on next line if 0 < NTYPES < 10
  59. *> CHP 10 List types on next line if 0 < NTYPES < 10
  60. *> CSY 11 List types on next line if 0 < NTYPES < 11
  61. *> CSK 11 List types on next line if 0 < NTYPES < 11
  62. *> CSR 11 List types on next line if 0 < NTYPES < 11
  63. *> CSP 11 List types on next line if 0 < NTYPES < 11
  64. *> CTR 18 List types on next line if 0 < NTYPES < 18
  65. *> CTP 18 List types on next line if 0 < NTYPES < 18
  66. *> CTB 17 List types on next line if 0 < NTYPES < 17
  67. *> CQR 8 List types on next line if 0 < NTYPES < 8
  68. *> CRQ 8 List types on next line if 0 < NTYPES < 8
  69. *> CLQ 8 List types on next line if 0 < NTYPES < 8
  70. *> CQL 8 List types on next line if 0 < NTYPES < 8
  71. *> CQP 6 List types on next line if 0 < NTYPES < 6
  72. *> CTZ 3 List types on next line if 0 < NTYPES < 3
  73. *> CLS 6 List types on next line if 0 < NTYPES < 6
  74. *> CEQ
  75. *> CQT
  76. *> CQX
  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 complex_lin
  114. *
  115. * =====================================================================
  116. PROGRAM CCHKAA
  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. REAL 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. REAL RWORK( 150*NMAX+2*MAXRHS ), S( 2*NMAX )
  158. COMPLEX 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. REAL SECOND, SLAMCH
  164. EXTERNAL LSAME, LSAMEN, SECOND, SLAMCH
  165. * ..
  166. * .. External Subroutines ..
  167. EXTERNAL ALAREQ, CCHKEQ, CCHKGB, CCHKGE, CCHKGT, CCHKHE,
  168. $ CCHKHE_ROOK, CCHKHE_RK, CCHKHE_AA, CCHKLQ,
  169. $ CCHKPB,CCHKPO, CCHKPS, CCHKPP, CCHKPT, CCHKQ3,
  170. $ CCHKQL, CCHKQR, CCHKRQ, CCHKSP, CCHKSY,
  171. $ CCHKSY_ROOK, CCHKSY_RK, CCHKSY_AA, CCHKTB,
  172. $ CCHKTP, CCHKTR, CCHKTZ, CDRVGB, CDRVGE, CDRVGT,
  173. $ CDRVHE, CDRVHE_ROOK, CDRVHE_RK, CDRVHE_AA,
  174. $ CDRVHP, CDRVLS, CDRVPB, CDRVPO, CDRVPP, CDRVPT,
  175. $ CDRVSP, CDRVSY, CDRVSY_ROOK, CDRVSY_RK,
  176. $ CDRVSY_AA, ILAVER, CCHKQRT, CCHKQRTP
  177. * ..
  178. * .. Scalars in Common ..
  179. LOGICAL LERR, OK
  180. CHARACTER*32 SRNAMT
  181. INTEGER INFOT, NUNIT
  182. * ..
  183. * .. Arrays in Common ..
  184. INTEGER IPARMS( 100 )
  185. * ..
  186. * .. Common blocks ..
  187. COMMON / CLAENV / IPARMS
  188. COMMON / INFOC / INFOT, NUNIT, OK, LERR
  189. COMMON / SRNAMC / SRNAMT
  190. * ..
  191. * .. Data statements ..
  192. DATA THREQ / 2.0 / , INTSTR / '0123456789' /
  193. * ..
  194. * .. Executable Statements ..
  195. *
  196. S1 = SECOND( )
  197. LDA = NMAX
  198. FATAL = .FALSE.
  199. *
  200. * Read a dummy line.
  201. *
  202. READ( NIN, FMT = * )
  203. *
  204. * Report values of parameters.
  205. *
  206. CALL ILAVER( VERS_MAJOR, VERS_MINOR, VERS_PATCH )
  207. WRITE( NOUT, FMT = 9994 ) VERS_MAJOR, VERS_MINOR, VERS_PATCH
  208. *
  209. * Read the values of M
  210. *
  211. READ( NIN, FMT = * )NM
  212. IF( NM.LT.1 ) THEN
  213. WRITE( NOUT, FMT = 9996 )' NM ', NM, 1
  214. NM = 0
  215. FATAL = .TRUE.
  216. ELSE IF( NM.GT.MAXIN ) THEN
  217. WRITE( NOUT, FMT = 9995 )' NM ', NM, MAXIN
  218. NM = 0
  219. FATAL = .TRUE.
  220. END IF
  221. READ( NIN, FMT = * )( MVAL( I ), I = 1, NM )
  222. DO 10 I = 1, NM
  223. IF( MVAL( I ).LT.0 ) THEN
  224. WRITE( NOUT, FMT = 9996 )' M ', MVAL( I ), 0
  225. FATAL = .TRUE.
  226. ELSE IF( MVAL( I ).GT.NMAX ) THEN
  227. WRITE( NOUT, FMT = 9995 )' M ', MVAL( I ), NMAX
  228. FATAL = .TRUE.
  229. END IF
  230. 10 CONTINUE
  231. IF( NM.GT.0 )
  232. $ WRITE( NOUT, FMT = 9993 )'M ', ( MVAL( I ), I = 1, NM )
  233. *
  234. * Read the values of N
  235. *
  236. READ( NIN, FMT = * )NN
  237. IF( NN.LT.1 ) THEN
  238. WRITE( NOUT, FMT = 9996 )' NN ', NN, 1
  239. NN = 0
  240. FATAL = .TRUE.
  241. ELSE IF( NN.GT.MAXIN ) THEN
  242. WRITE( NOUT, FMT = 9995 )' NN ', NN, MAXIN
  243. NN = 0
  244. FATAL = .TRUE.
  245. END IF
  246. READ( NIN, FMT = * )( NVAL( I ), I = 1, NN )
  247. DO 20 I = 1, NN
  248. IF( NVAL( I ).LT.0 ) THEN
  249. WRITE( NOUT, FMT = 9996 )' N ', NVAL( I ), 0
  250. FATAL = .TRUE.
  251. ELSE IF( NVAL( I ).GT.NMAX ) THEN
  252. WRITE( NOUT, FMT = 9995 )' N ', NVAL( I ), NMAX
  253. FATAL = .TRUE.
  254. END IF
  255. 20 CONTINUE
  256. IF( NN.GT.0 )
  257. $ WRITE( NOUT, FMT = 9993 )'N ', ( NVAL( I ), I = 1, NN )
  258. *
  259. * Read the values of NRHS
  260. *
  261. READ( NIN, FMT = * )NNS
  262. IF( NNS.LT.1 ) THEN
  263. WRITE( NOUT, FMT = 9996 )' NNS', NNS, 1
  264. NNS = 0
  265. FATAL = .TRUE.
  266. ELSE IF( NNS.GT.MAXIN ) THEN
  267. WRITE( NOUT, FMT = 9995 )' NNS', NNS, MAXIN
  268. NNS = 0
  269. FATAL = .TRUE.
  270. END IF
  271. READ( NIN, FMT = * )( NSVAL( I ), I = 1, NNS )
  272. DO 30 I = 1, NNS
  273. IF( NSVAL( I ).LT.0 ) THEN
  274. WRITE( NOUT, FMT = 9996 )'NRHS', NSVAL( I ), 0
  275. FATAL = .TRUE.
  276. ELSE IF( NSVAL( I ).GT.MAXRHS ) THEN
  277. WRITE( NOUT, FMT = 9995 )'NRHS', NSVAL( I ), MAXRHS
  278. FATAL = .TRUE.
  279. END IF
  280. 30 CONTINUE
  281. IF( NNS.GT.0 )
  282. $ WRITE( NOUT, FMT = 9993 )'NRHS', ( NSVAL( I ), I = 1, NNS )
  283. *
  284. * Read the values of NB
  285. *
  286. READ( NIN, FMT = * )NNB
  287. IF( NNB.LT.1 ) THEN
  288. WRITE( NOUT, FMT = 9996 )'NNB ', NNB, 1
  289. NNB = 0
  290. FATAL = .TRUE.
  291. ELSE IF( NNB.GT.MAXIN ) THEN
  292. WRITE( NOUT, FMT = 9995 )'NNB ', NNB, MAXIN
  293. NNB = 0
  294. FATAL = .TRUE.
  295. END IF
  296. READ( NIN, FMT = * )( NBVAL( I ), I = 1, NNB )
  297. DO 40 I = 1, NNB
  298. IF( NBVAL( I ).LT.0 ) THEN
  299. WRITE( NOUT, FMT = 9996 )' NB ', NBVAL( I ), 0
  300. FATAL = .TRUE.
  301. END IF
  302. 40 CONTINUE
  303. IF( NNB.GT.0 )
  304. $ WRITE( NOUT, FMT = 9993 )'NB ', ( NBVAL( I ), I = 1, NNB )
  305. *
  306. * Set NBVAL2 to be the set of unique values of NB
  307. *
  308. NNB2 = 0
  309. DO 60 I = 1, NNB
  310. NB = NBVAL( I )
  311. DO 50 J = 1, NNB2
  312. IF( NB.EQ.NBVAL2( J ) )
  313. $ GO TO 60
  314. 50 CONTINUE
  315. NNB2 = NNB2 + 1
  316. NBVAL2( NNB2 ) = NB
  317. 60 CONTINUE
  318. *
  319. * Read the values of NX
  320. *
  321. READ( NIN, FMT = * )( NXVAL( I ), I = 1, NNB )
  322. DO 70 I = 1, NNB
  323. IF( NXVAL( I ).LT.0 ) THEN
  324. WRITE( NOUT, FMT = 9996 )' NX ', NXVAL( I ), 0
  325. FATAL = .TRUE.
  326. END IF
  327. 70 CONTINUE
  328. IF( NNB.GT.0 )
  329. $ WRITE( NOUT, FMT = 9993 )'NX ', ( NXVAL( I ), I = 1, NNB )
  330. *
  331. * Read the values of RANKVAL
  332. *
  333. READ( NIN, FMT = * )NRANK
  334. IF( NN.LT.1 ) THEN
  335. WRITE( NOUT, FMT = 9996 )' NRANK ', NRANK, 1
  336. NRANK = 0
  337. FATAL = .TRUE.
  338. ELSE IF( NN.GT.MAXIN ) THEN
  339. WRITE( NOUT, FMT = 9995 )' NRANK ', NRANK, MAXIN
  340. NRANK = 0
  341. FATAL = .TRUE.
  342. END IF
  343. READ( NIN, FMT = * )( RANKVAL( I ), I = 1, NRANK )
  344. DO I = 1, NRANK
  345. IF( RANKVAL( I ).LT.0 ) THEN
  346. WRITE( NOUT, FMT = 9996 )' RANK ', RANKVAL( I ), 0
  347. FATAL = .TRUE.
  348. ELSE IF( RANKVAL( I ).GT.100 ) THEN
  349. WRITE( NOUT, FMT = 9995 )' RANK ', RANKVAL( I ), 100
  350. FATAL = .TRUE.
  351. END IF
  352. END DO
  353. IF( NRANK.GT.0 )
  354. $ WRITE( NOUT, FMT = 9993 )'RANK % OF N',
  355. $ ( RANKVAL( I ), I = 1, NRANK )
  356. *
  357. * Read the threshold value for the test ratios.
  358. *
  359. READ( NIN, FMT = * )THRESH
  360. WRITE( NOUT, FMT = 9992 )THRESH
  361. *
  362. * Read the flag that indicates whether to test the LAPACK routines.
  363. *
  364. READ( NIN, FMT = * )TSTCHK
  365. *
  366. * Read the flag that indicates whether to test the driver routines.
  367. *
  368. READ( NIN, FMT = * )TSTDRV
  369. *
  370. * Read the flag that indicates whether to test the error exits.
  371. *
  372. READ( NIN, FMT = * )TSTERR
  373. *
  374. IF( FATAL ) THEN
  375. WRITE( NOUT, FMT = 9999 )
  376. STOP
  377. END IF
  378. *
  379. * Calculate and print the machine dependent constants.
  380. *
  381. EPS = SLAMCH( 'Underflow threshold' )
  382. WRITE( NOUT, FMT = 9991 )'underflow', EPS
  383. EPS = SLAMCH( 'Overflow threshold' )
  384. WRITE( NOUT, FMT = 9991 )'overflow ', EPS
  385. EPS = SLAMCH( 'Epsilon' )
  386. WRITE( NOUT, FMT = 9991 )'precision', EPS
  387. WRITE( NOUT, FMT = * )
  388. NRHS = NSVAL( 1 )
  389. *
  390. 80 CONTINUE
  391. *
  392. * Read a test path and the number of matrix types to use.
  393. *
  394. READ( NIN, FMT = '(A72)', END = 140 )ALINE
  395. PATH = ALINE( 1: 3 )
  396. NMATS = MATMAX
  397. I = 3
  398. 90 CONTINUE
  399. I = I + 1
  400. IF( I.GT.72 )
  401. $ GO TO 130
  402. IF( ALINE( I: I ).EQ.' ' )
  403. $ GO TO 90
  404. NMATS = 0
  405. 100 CONTINUE
  406. C1 = ALINE( I: I )
  407. DO 110 K = 1, 10
  408. IF( C1.EQ.INTSTR( K: K ) ) THEN
  409. IC = K - 1
  410. GO TO 120
  411. END IF
  412. 110 CONTINUE
  413. GO TO 130
  414. 120 CONTINUE
  415. NMATS = NMATS*10 + IC
  416. I = I + 1
  417. IF( I.GT.72 )
  418. $ GO TO 130
  419. GO TO 100
  420. 130 CONTINUE
  421. C1 = PATH( 1: 1 )
  422. C2 = PATH( 2: 3 )
  423. *
  424. * Check first character for correct precision.
  425. *
  426. IF( .NOT.LSAME( C1, 'Complex precision' ) ) THEN
  427. WRITE( NOUT, FMT = 9990 )PATH
  428. *
  429. ELSE IF( NMATS.LE.0 ) THEN
  430. *
  431. * Check for a positive number of tests requested.
  432. *
  433. WRITE( NOUT, FMT = 9989 )PATH
  434. *
  435. ELSE IF( LSAMEN( 2, C2, 'GE' ) ) THEN
  436. *
  437. * GE: general matrices
  438. *
  439. NTYPES = 11
  440. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  441. *
  442. IF( TSTCHK ) THEN
  443. CALL CCHKGE( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  444. $ NSVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  445. $ A( 1, 2 ), A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
  446. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  447. ELSE
  448. WRITE( NOUT, FMT = 9989 )PATH
  449. END IF
  450. *
  451. IF( TSTDRV ) THEN
  452. CALL CDRVGE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  453. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  454. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  455. $ RWORK, IWORK, NOUT )
  456. ELSE
  457. WRITE( NOUT, FMT = 9988 )PATH
  458. END IF
  459. *
  460. ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
  461. *
  462. * GB: general banded matrices
  463. *
  464. LA = ( 2*KDMAX+1 )*NMAX
  465. LAFAC = ( 3*KDMAX+1 )*NMAX
  466. NTYPES = 8
  467. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  468. *
  469. IF( TSTCHK ) THEN
  470. CALL CCHKGB( DOTYPE, NM, MVAL, NN, NVAL, NNB2, NBVAL2, NNS,
  471. $ NSVAL, THRESH, TSTERR, A( 1, 1 ), LA,
  472. $ A( 1, 3 ), LAFAC, B( 1, 1 ), B( 1, 2 ),
  473. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  474. ELSE
  475. WRITE( NOUT, FMT = 9989 )PATH
  476. END IF
  477. *
  478. IF( TSTDRV ) THEN
  479. CALL CDRVGB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  480. $ A( 1, 1 ), LA, A( 1, 3 ), LAFAC, A( 1, 6 ),
  481. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S,
  482. $ WORK, RWORK, IWORK, NOUT )
  483. ELSE
  484. WRITE( NOUT, FMT = 9988 )PATH
  485. END IF
  486. *
  487. ELSE IF( LSAMEN( 2, C2, 'GT' ) ) THEN
  488. *
  489. * GT: general tridiagonal matrices
  490. *
  491. NTYPES = 12
  492. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  493. *
  494. IF( TSTCHK ) THEN
  495. CALL CCHKGT( DOTYPE, NN, NVAL, NNS, NSVAL, 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 = 9989 )PATH
  500. END IF
  501. *
  502. IF( TSTDRV ) THEN
  503. CALL CDRVGT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  504. $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  505. $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
  506. ELSE
  507. WRITE( NOUT, FMT = 9988 )PATH
  508. END IF
  509. *
  510. ELSE IF( LSAMEN( 2, C2, 'PO' ) ) THEN
  511. *
  512. * PO: positive definite matrices
  513. *
  514. NTYPES = 9
  515. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  516. *
  517. IF( TSTCHK ) THEN
  518. CALL CCHKPO( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  519. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  520. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  521. $ WORK, RWORK, NOUT )
  522. ELSE
  523. WRITE( NOUT, FMT = 9989 )PATH
  524. END IF
  525. *
  526. IF( TSTDRV ) THEN
  527. CALL CDRVPO( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  528. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  529. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  530. $ RWORK, NOUT )
  531. ELSE
  532. WRITE( NOUT, FMT = 9988 )PATH
  533. END IF
  534. *
  535. ELSE IF( LSAMEN( 2, C2, 'PS' ) ) THEN
  536. *
  537. * PS: positive semi-definite matrices
  538. *
  539. NTYPES = 9
  540. *
  541. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  542. *
  543. IF( TSTCHK ) THEN
  544. CALL CCHKPS( DOTYPE, NN, NVAL, NNB2, NBVAL2, NRANK,
  545. $ RANKVAL, THRESH, TSTERR, LDA, A( 1, 1 ),
  546. $ A( 1, 2 ), A( 1, 3 ), PIV, WORK, RWORK,
  547. $ NOUT )
  548. ELSE
  549. WRITE( NOUT, FMT = 9989 )PATH
  550. END IF
  551. *
  552. ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
  553. *
  554. * PP: positive definite packed matrices
  555. *
  556. NTYPES = 9
  557. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  558. *
  559. IF( TSTCHK ) THEN
  560. CALL CCHKPP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
  561. $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
  562. $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
  563. $ NOUT )
  564. ELSE
  565. WRITE( NOUT, FMT = 9989 )PATH
  566. END IF
  567. *
  568. IF( TSTDRV ) THEN
  569. CALL CDRVPP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  570. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  571. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  572. $ RWORK, NOUT )
  573. ELSE
  574. WRITE( NOUT, FMT = 9988 )PATH
  575. END IF
  576. *
  577. ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
  578. *
  579. * PB: positive definite banded matrices
  580. *
  581. NTYPES = 8
  582. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  583. *
  584. IF( TSTCHK ) THEN
  585. CALL CCHKPB( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  586. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  587. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  588. $ WORK, RWORK, NOUT )
  589. ELSE
  590. WRITE( NOUT, FMT = 9989 )PATH
  591. END IF
  592. *
  593. IF( TSTDRV ) THEN
  594. CALL CDRVPB( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  595. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  596. $ B( 1, 2 ), B( 1, 3 ), B( 1, 4 ), S, WORK,
  597. $ RWORK, NOUT )
  598. ELSE
  599. WRITE( NOUT, FMT = 9988 )PATH
  600. END IF
  601. *
  602. ELSE IF( LSAMEN( 2, C2, 'PT' ) ) THEN
  603. *
  604. * PT: positive definite tridiagonal matrices
  605. *
  606. NTYPES = 12
  607. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  608. *
  609. IF( TSTCHK ) THEN
  610. CALL CCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, 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 = 9989 )PATH
  615. END IF
  616. *
  617. IF( TSTDRV ) THEN
  618. CALL CDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
  619. $ A( 1, 1 ), S, A( 1, 2 ), B( 1, 1 ), B( 1, 2 ),
  620. $ B( 1, 3 ), WORK, RWORK, NOUT )
  621. ELSE
  622. WRITE( NOUT, FMT = 9988 )PATH
  623. END IF
  624. *
  625. ELSE IF( LSAMEN( 2, C2, 'HE' ) ) THEN
  626. *
  627. * HE: Hermitian indefinite matrices,
  628. * with partial (Bunch-Kaufman) pivoting algorithm
  629. *
  630. NTYPES = 10
  631. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  632. *
  633. IF( TSTCHK ) THEN
  634. CALL CCHKHE( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
  635. $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
  636. $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
  637. $ WORK, RWORK, IWORK, NOUT )
  638. ELSE
  639. WRITE( NOUT, FMT = 9989 )PATH
  640. END IF
  641. *
  642. IF( TSTDRV ) THEN
  643. CALL CDRVHE( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
  644. $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
  645. $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
  646. $ NOUT )
  647. ELSE
  648. WRITE( NOUT, FMT = 9988 )PATH
  649. END IF
  650. *
  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 CCHKHE_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 CDRVHE_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 CCHKHE_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 CDRVHE_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 CCHKHE_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 CDRVHE_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 CCHKHE_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 CDRVHE_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. ELSE IF( LSAMEN( 2, C2, 'HP' ) ) THEN
  760. *
  761. * HP: Hermitian indefinite packed matrices,
  762. * with partial (Bunch-Kaufman) pivoting algorithm
  763. *
  764. NTYPES = 10
  765. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  766. *
  767. IF( TSTCHK ) THEN
  768. CALL CCHKHP( 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 CDRVHP( 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 CCHKSY( 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 CDRVSY( 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 CCHKSY_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 CDRVSY_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 CCHKSY_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 CDRVSY_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 CCHKSY_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 CDRVSY_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 CCHKSY_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 CDRVSY_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 CCHKSP( 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 CDRVSP( 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 CCHKTR( 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 CCHKTP( 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 CCHKTB( 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 CCHKQR( 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 CCHKLQ( 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 CCHKQL( 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 CCHKRQ( 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 CCHKEQ( 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 CCHKTZ( 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 CCHKQ3( 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, NOUT )
  1094. ELSE
  1095. WRITE( NOUT, FMT = 9989 )PATH
  1096. END IF
  1097. *
  1098. ELSE IF( LSAMEN( 2, C2, 'LS' ) ) THEN
  1099. *
  1100. * LS: Least squares drivers
  1101. *
  1102. NTYPES = 6
  1103. CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
  1104. *
  1105. IF( TSTDRV ) THEN
  1106. CALL CDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
  1107. $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
  1108. $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
  1109. $ S( 1 ), S( NMAX+1 ), NOUT )
  1110. ELSE
  1111. WRITE( NOUT, FMT = 9989 )PATH
  1112. END IF
  1113. *
  1114. ELSE IF( LSAMEN( 2, C2, 'QT' ) ) THEN
  1115. *
  1116. * QT: QRT routines for general matrices
  1117. *
  1118. IF( TSTCHK ) THEN
  1119. CALL CCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1120. $ NBVAL, NOUT )
  1121. ELSE
  1122. WRITE( NOUT, FMT = 9989 )PATH
  1123. END IF
  1124. *
  1125. ELSE IF( LSAMEN( 2, C2, 'QX' ) ) THEN
  1126. *
  1127. * QX: QRT routines for triangular-pentagonal matrices
  1128. *
  1129. IF( TSTCHK ) THEN
  1130. CALL CCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1131. $ NBVAL, NOUT )
  1132. ELSE
  1133. WRITE( NOUT, FMT = 9989 )PATH
  1134. END IF
  1135. *
  1136. ELSE IF( LSAMEN( 2, C2, 'TQ' ) ) THEN
  1137. *
  1138. * TQ: LQT routines for general matrices
  1139. *
  1140. IF( TSTCHK ) THEN
  1141. CALL CCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1142. $ NBVAL, NOUT )
  1143. ELSE
  1144. WRITE( NOUT, FMT = 9989 )PATH
  1145. END IF
  1146. *
  1147. ELSE IF( LSAMEN( 2, C2, 'XQ' ) ) THEN
  1148. *
  1149. * XQ: LQT routines for triangular-pentagonal matrices
  1150. *
  1151. IF( TSTCHK ) THEN
  1152. CALL CCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1153. $ NBVAL, NOUT )
  1154. ELSE
  1155. WRITE( NOUT, FMT = 9989 )PATH
  1156. END IF
  1157. *
  1158. ELSE IF( LSAMEN( 2, C2, 'TS' ) ) THEN
  1159. *
  1160. * TS: QR routines for tall-skinny matrices
  1161. *
  1162. IF( TSTCHK ) THEN
  1163. CALL CCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
  1164. $ NBVAL, NOUT )
  1165. ELSE
  1166. WRITE( NOUT, FMT = 9989 )PATH
  1167. END IF
  1168. *
  1169. ELSE
  1170. *
  1171. WRITE( NOUT, FMT = 9990 )PATH
  1172. END IF
  1173. *
  1174. * Go back to get another input line.
  1175. *
  1176. GO TO 80
  1177. *
  1178. * Branch to this line when the last record is read.
  1179. *
  1180. 140 CONTINUE
  1181. CLOSE ( NIN )
  1182. S2 = SECOND( )
  1183. WRITE( NOUT, FMT = 9998 )
  1184. WRITE( NOUT, FMT = 9997 )S2 - S1
  1185. *
  1186. 9999 FORMAT( / ' Execution not attempted due to input errors' )
  1187. 9998 FORMAT( / ' End of tests' )
  1188. 9997 FORMAT( ' Total time used = ', F12.2, ' seconds', / )
  1189. 9996 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be >=',
  1190. $ I6 )
  1191. 9995 FORMAT( ' Invalid input value: ', A4, '=', I6, '; must be <=',
  1192. $ I6 )
  1193. 9994 FORMAT( ' Tests of the COMPLEX LAPACK routines ',
  1194. $ / ' LAPACK VERSION ', I1, '.', I1, '.', I1,
  1195. $ / / ' The following parameter values will be used:' )
  1196. 9993 FORMAT( 4X, A4, ': ', 10I6, / 11X, 10I6 )
  1197. 9992 FORMAT( / ' Routines pass computational tests if test ratio is ',
  1198. $ 'less than', F8.2, / )
  1199. 9991 FORMAT( ' Relative machine ', A, ' is taken to be', E16.6 )
  1200. 9990 FORMAT( / 1X, A3, ': Unrecognized path name' )
  1201. 9989 FORMAT( / 1X, A3, ' routines were not tested' )
  1202. 9988 FORMAT( / 1X, A3, ' driver routines were not tested' )
  1203. *
  1204. * End of CCHKAA
  1205. *
  1206. END