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

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