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

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