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.

schkaa.f 35 kB

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