You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

zchkaa.F 43 kB

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