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

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