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

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