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

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