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

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