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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980
  1. *> \brief \b ALAHD
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * SUBROUTINE ALAHD( IOUNIT, PATH )
  12. *
  13. * .. Scalar Arguments ..
  14. * CHARACTER*3 PATH
  15. * INTEGER IOUNIT
  16. * ..
  17. *
  18. *
  19. *> \par Purpose:
  20. * =============
  21. *>
  22. *> \verbatim
  23. *>
  24. *> ALAHD prints header information for the different test paths.
  25. *> \endverbatim
  26. *
  27. * Arguments:
  28. * ==========
  29. *
  30. *> \param[in] IOUNIT
  31. *> \verbatim
  32. *> IOUNIT is INTEGER
  33. *> The unit number to which the header information should be
  34. *> printed.
  35. *> \endverbatim
  36. *>
  37. *> \param[in] PATH
  38. *> \verbatim
  39. *> PATH is CHARACTER*3
  40. *> The name of the path for which the header information is to
  41. *> be printed. Current paths are
  42. *> _GE: General matrices
  43. *> _GB: General band
  44. *> _GT: General Tridiagonal
  45. *> _PO: Symmetric or Hermitian positive definite
  46. *> _PS: Symmetric or Hermitian positive semi-definite
  47. *> _PP: Symmetric or Hermitian positive definite packed
  48. *> _PB: Symmetric or Hermitian positive definite band
  49. *> _PT: Symmetric or Hermitian positive definite tridiagonal
  50. *> _SY: Symmetric indefinite,
  51. *> with partial (Bunch-Kaufman) pivoting
  52. *> _SR: Symmetric indefinite,
  53. *> with "rook" (bounded Bunch-Kaufman) pivoting
  54. *> _SP: Symmetric indefinite packed,
  55. *> with partial (Bunch-Kaufman) pivoting
  56. *> _HE: (complex) Hermitian indefinite,
  57. *> with partial (Bunch-Kaufman) pivoting
  58. *> _HR: Symmetric indefinite,
  59. *> with "rook" (bounded Bunch-Kaufman) pivoting
  60. *> _HP: (complex) Hermitian indefinite packed,
  61. *> with partial (Bunch-Kaufman) pivoting
  62. *> _TR: Triangular
  63. *> _TP: Triangular packed
  64. *> _TB: Triangular band
  65. *> _QR: QR (general matrices)
  66. *> _LQ: LQ (general matrices)
  67. *> _QL: QL (general matrices)
  68. *> _RQ: RQ (general matrices)
  69. *> _QP: QR with column pivoting
  70. *> _TZ: Trapezoidal
  71. *> _LS: Least Squares driver routines
  72. *> _LU: LU variants
  73. *> _CH: Cholesky variants
  74. *> _QS: QR variants
  75. *> _QT: QRT (general matrices)
  76. *> _QX: QRT (triangular-pentagonal matrices)
  77. *> The first character must be one of S, D, C, or Z (C or Z only
  78. *> if complex).
  79. *> \endverbatim
  80. *
  81. * Authors:
  82. * ========
  83. *
  84. *> \author Univ. of Tennessee
  85. *> \author Univ. of California Berkeley
  86. *> \author Univ. of Colorado Denver
  87. *> \author NAG Ltd.
  88. *
  89. *> \date November 2013
  90. *
  91. *> \ingroup aux_lin
  92. *
  93. * =====================================================================
  94. SUBROUTINE ALAHD( IOUNIT, PATH )
  95. *
  96. * -- LAPACK test routine (version 3.5.0) --
  97. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  98. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  99. * November 2013
  100. *
  101. * .. Scalar Arguments ..
  102. CHARACTER*3 PATH
  103. INTEGER IOUNIT
  104. * ..
  105. *
  106. * =====================================================================
  107. *
  108. * .. Local Scalars ..
  109. LOGICAL CORZ, SORD
  110. CHARACTER C1, C3
  111. CHARACTER*2 P2
  112. CHARACTER*4 EIGCNM
  113. CHARACTER*32 SUBNAM
  114. CHARACTER*9 SYM
  115. * ..
  116. * .. External Functions ..
  117. LOGICAL LSAME, LSAMEN
  118. EXTERNAL LSAME, LSAMEN
  119. * ..
  120. * .. Intrinsic Functions ..
  121. INTRINSIC LEN_TRIM
  122. * ..
  123. * .. Executable Statements ..
  124. *
  125. IF( IOUNIT.LE.0 )
  126. $ RETURN
  127. C1 = PATH( 1: 1 )
  128. C3 = PATH( 3: 3 )
  129. P2 = PATH( 2: 3 )
  130. SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
  131. CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
  132. IF( .NOT.( SORD .OR. CORZ ) )
  133. $ RETURN
  134. *
  135. IF( LSAMEN( 2, P2, 'GE' ) ) THEN
  136. *
  137. * GE: General dense
  138. *
  139. WRITE( IOUNIT, FMT = 9999 )PATH
  140. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  141. WRITE( IOUNIT, FMT = 9979 )
  142. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  143. WRITE( IOUNIT, FMT = 9962 )1
  144. WRITE( IOUNIT, FMT = 9961 )2
  145. WRITE( IOUNIT, FMT = 9960 )3
  146. WRITE( IOUNIT, FMT = 9959 )4
  147. WRITE( IOUNIT, FMT = 9958 )5
  148. WRITE( IOUNIT, FMT = 9957 )6
  149. WRITE( IOUNIT, FMT = 9956 )7
  150. WRITE( IOUNIT, FMT = 9955 )8
  151. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  152. *
  153. ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
  154. *
  155. * GB: General band
  156. *
  157. WRITE( IOUNIT, FMT = 9998 )PATH
  158. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  159. WRITE( IOUNIT, FMT = 9978 )
  160. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  161. WRITE( IOUNIT, FMT = 9962 )1
  162. WRITE( IOUNIT, FMT = 9960 )2
  163. WRITE( IOUNIT, FMT = 9959 )3
  164. WRITE( IOUNIT, FMT = 9958 )4
  165. WRITE( IOUNIT, FMT = 9957 )5
  166. WRITE( IOUNIT, FMT = 9956 )6
  167. WRITE( IOUNIT, FMT = 9955 )7
  168. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  169. *
  170. ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
  171. *
  172. * GT: General tridiagonal
  173. *
  174. WRITE( IOUNIT, FMT = 9997 )PATH
  175. WRITE( IOUNIT, FMT = 9977 )
  176. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  177. WRITE( IOUNIT, FMT = 9962 )1
  178. WRITE( IOUNIT, FMT = 9960 )2
  179. WRITE( IOUNIT, FMT = 9959 )3
  180. WRITE( IOUNIT, FMT = 9958 )4
  181. WRITE( IOUNIT, FMT = 9957 )5
  182. WRITE( IOUNIT, FMT = 9956 )6
  183. WRITE( IOUNIT, FMT = 9955 )7
  184. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  185. *
  186. ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) ) THEN
  187. *
  188. * PO: Positive definite full
  189. * PP: Positive definite packed
  190. *
  191. IF( SORD ) THEN
  192. SYM = 'Symmetric'
  193. ELSE
  194. SYM = 'Hermitian'
  195. END IF
  196. IF( LSAME( C3, 'O' ) ) THEN
  197. WRITE( IOUNIT, FMT = 9996 )PATH, SYM
  198. ELSE
  199. WRITE( IOUNIT, FMT = 9995 )PATH, SYM
  200. END IF
  201. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  202. WRITE( IOUNIT, FMT = 9975 )PATH
  203. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  204. WRITE( IOUNIT, FMT = 9954 )1
  205. WRITE( IOUNIT, FMT = 9961 )2
  206. WRITE( IOUNIT, FMT = 9960 )3
  207. WRITE( IOUNIT, FMT = 9959 )4
  208. WRITE( IOUNIT, FMT = 9958 )5
  209. WRITE( IOUNIT, FMT = 9957 )6
  210. WRITE( IOUNIT, FMT = 9956 )7
  211. WRITE( IOUNIT, FMT = 9955 )8
  212. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  213. *
  214. ELSE IF( LSAMEN( 2, P2, 'PS' ) ) THEN
  215. *
  216. * PS: Positive semi-definite full
  217. *
  218. IF( SORD ) THEN
  219. SYM = 'Symmetric'
  220. ELSE
  221. SYM = 'Hermitian'
  222. END IF
  223. IF( LSAME( C1, 'S' ) .OR. LSAME( C1, 'C' ) ) THEN
  224. EIGCNM = '1E04'
  225. ELSE
  226. EIGCNM = '1D12'
  227. END IF
  228. WRITE( IOUNIT, FMT = 9995 )PATH, SYM
  229. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  230. WRITE( IOUNIT, FMT = 8973 )EIGCNM, EIGCNM, EIGCNM
  231. WRITE( IOUNIT, FMT = '( '' Difference:'' )' )
  232. WRITE( IOUNIT, FMT = 8972 )C1
  233. WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  234. WRITE( IOUNIT, FMT = 8950 )
  235. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  236. ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
  237. *
  238. * PB: Positive definite band
  239. *
  240. IF( SORD ) THEN
  241. WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
  242. ELSE
  243. WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
  244. END IF
  245. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  246. WRITE( IOUNIT, FMT = 9973 )PATH
  247. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  248. WRITE( IOUNIT, FMT = 9954 )1
  249. WRITE( IOUNIT, FMT = 9960 )2
  250. WRITE( IOUNIT, FMT = 9959 )3
  251. WRITE( IOUNIT, FMT = 9958 )4
  252. WRITE( IOUNIT, FMT = 9957 )5
  253. WRITE( IOUNIT, FMT = 9956 )6
  254. WRITE( IOUNIT, FMT = 9955 )7
  255. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  256. *
  257. ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
  258. *
  259. * PT: Positive definite tridiagonal
  260. *
  261. IF( SORD ) THEN
  262. WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
  263. ELSE
  264. WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
  265. END IF
  266. WRITE( IOUNIT, FMT = 9976 )
  267. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  268. WRITE( IOUNIT, FMT = 9952 )1
  269. WRITE( IOUNIT, FMT = 9960 )2
  270. WRITE( IOUNIT, FMT = 9959 )3
  271. WRITE( IOUNIT, FMT = 9958 )4
  272. WRITE( IOUNIT, FMT = 9957 )5
  273. WRITE( IOUNIT, FMT = 9956 )6
  274. WRITE( IOUNIT, FMT = 9955 )7
  275. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  276. *
  277. ELSE IF( LSAMEN( 2, P2, 'SY' ) ) THEN
  278. *
  279. * SY: Symmetric indefinite full,
  280. * with partial (Bunch-Kaufman) pivoting algorithm
  281. *
  282. IF( LSAME( C3, 'Y' ) ) THEN
  283. WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
  284. ELSE
  285. WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
  286. END IF
  287. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  288. IF( SORD ) THEN
  289. WRITE( IOUNIT, FMT = 9972 )
  290. ELSE
  291. WRITE( IOUNIT, FMT = 9971 )
  292. END IF
  293. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  294. WRITE( IOUNIT, FMT = 9953 )1
  295. WRITE( IOUNIT, FMT = 9961 )2
  296. WRITE( IOUNIT, FMT = 9960 )3
  297. WRITE( IOUNIT, FMT = 9960 )4
  298. WRITE( IOUNIT, FMT = 9959 )5
  299. WRITE( IOUNIT, FMT = 9958 )6
  300. WRITE( IOUNIT, FMT = 9956 )7
  301. WRITE( IOUNIT, FMT = 9957 )8
  302. WRITE( IOUNIT, FMT = 9955 )9
  303. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  304. *
  305. ELSE IF( LSAMEN( 2, P2, 'SR' ) ) THEN
  306. *
  307. * SR: Symmetric indefinite full,
  308. * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
  309. *
  310. WRITE( IOUNIT, FMT = 9892 )PATH, 'Symmetric'
  311. *
  312. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  313. IF( SORD ) THEN
  314. WRITE( IOUNIT, FMT = 9972 )
  315. ELSE
  316. WRITE( IOUNIT, FMT = 9971 )
  317. END IF
  318. *
  319. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  320. WRITE( IOUNIT, FMT = 9953 )1
  321. WRITE( IOUNIT, FMT = 9961 )2
  322. WRITE( IOUNIT, FMT = 9927 )3
  323. WRITE( IOUNIT, FMT = 9928 )
  324. WRITE( IOUNIT, FMT = 9926 )4
  325. WRITE( IOUNIT, FMT = 9928 )
  326. WRITE( IOUNIT, FMT = 9960 )5
  327. WRITE( IOUNIT, FMT = 9959 )6
  328. WRITE( IOUNIT, FMT = 9955 )7
  329. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  330. *
  331. ELSE IF( LSAMEN( 2, P2, 'SP' ) ) THEN
  332. *
  333. * SP: Symmetric indefinite packed,
  334. * with partial (Bunch-Kaufman) pivoting algorithm
  335. *
  336. IF( LSAME( C3, 'Y' ) ) THEN
  337. WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
  338. ELSE
  339. WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
  340. END IF
  341. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  342. IF( SORD ) THEN
  343. WRITE( IOUNIT, FMT = 9972 )
  344. ELSE
  345. WRITE( IOUNIT, FMT = 9971 )
  346. END IF
  347. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  348. WRITE( IOUNIT, FMT = 9953 )1
  349. WRITE( IOUNIT, FMT = 9961 )2
  350. WRITE( IOUNIT, FMT = 9960 )3
  351. WRITE( IOUNIT, FMT = 9959 )4
  352. WRITE( IOUNIT, FMT = 9958 )5
  353. WRITE( IOUNIT, FMT = 9956 )6
  354. WRITE( IOUNIT, FMT = 9957 )7
  355. WRITE( IOUNIT, FMT = 9955 )8
  356. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  357. *
  358. ELSE IF( LSAMEN( 2, P2, 'HE' ) ) THEN
  359. *
  360. * HE: Hermitian indefinite full,
  361. * with partial (Bunch-Kaufman) pivoting algorithm
  362. *
  363. WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
  364. *
  365. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  366. WRITE( IOUNIT, FMT = 9972 )
  367. *
  368. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  369. WRITE( IOUNIT, FMT = 9953 )1
  370. WRITE( IOUNIT, FMT = 9961 )2
  371. WRITE( IOUNIT, FMT = 9960 )3
  372. WRITE( IOUNIT, FMT = 9960 )4
  373. WRITE( IOUNIT, FMT = 9959 )5
  374. WRITE( IOUNIT, FMT = 9958 )6
  375. WRITE( IOUNIT, FMT = 9956 )7
  376. WRITE( IOUNIT, FMT = 9957 )8
  377. WRITE( IOUNIT, FMT = 9955 )9
  378. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  379. *
  380. ELSE IF( LSAMEN( 2, P2, 'HR' ) ) THEN
  381. *
  382. * HR: Symmetric indefinite full,
  383. * with "rook" (bounded Bunch-Kaufman) pivoting algorithm
  384. *
  385. WRITE( IOUNIT, FMT = 9892 )PATH, 'Hermitian'
  386. *
  387. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  388. WRITE( IOUNIT, FMT = 9972 )
  389. *
  390. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  391. WRITE( IOUNIT, FMT = 9953 )1
  392. WRITE( IOUNIT, FMT = 9961 )2
  393. WRITE( IOUNIT, FMT = 9927 )3
  394. WRITE( IOUNIT, FMT = 9928 )
  395. WRITE( IOUNIT, FMT = 9926 )4
  396. WRITE( IOUNIT, FMT = 9928 )
  397. WRITE( IOUNIT, FMT = 9960 )5
  398. WRITE( IOUNIT, FMT = 9959 )6
  399. WRITE( IOUNIT, FMT = 9955 )7
  400. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  401. *
  402. ELSE IF( LSAMEN( 2, P2, 'HP' ) ) THEN
  403. *
  404. * HP: Hermitian indefinite packed,
  405. * with partial (Bunch-Kaufman) pivoting algorithm
  406. *
  407. IF( LSAME( C3, 'E' ) ) THEN
  408. WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
  409. ELSE
  410. WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
  411. END IF
  412. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  413. WRITE( IOUNIT, FMT = 9972 )
  414. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  415. WRITE( IOUNIT, FMT = 9953 )1
  416. WRITE( IOUNIT, FMT = 9961 )2
  417. WRITE( IOUNIT, FMT = 9960 )3
  418. WRITE( IOUNIT, FMT = 9959 )4
  419. WRITE( IOUNIT, FMT = 9958 )5
  420. WRITE( IOUNIT, FMT = 9956 )6
  421. WRITE( IOUNIT, FMT = 9957 )7
  422. WRITE( IOUNIT, FMT = 9955 )8
  423. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  424. *
  425. ELSE IF( LSAMEN( 2, P2, 'TR' ) .OR. LSAMEN( 2, P2, 'TP' ) ) THEN
  426. *
  427. * TR: Triangular full
  428. * TP: Triangular packed
  429. *
  430. IF( LSAME( C3, 'R' ) ) THEN
  431. WRITE( IOUNIT, FMT = 9990 )PATH
  432. SUBNAM = PATH( 1: 1 ) // 'LATRS'
  433. ELSE
  434. WRITE( IOUNIT, FMT = 9989 )PATH
  435. SUBNAM = PATH( 1: 1 ) // 'LATPS'
  436. END IF
  437. WRITE( IOUNIT, FMT = 9966 )PATH
  438. WRITE( IOUNIT, FMT = 9965 )SUBNAM(1:LEN_TRIM( SUBNAM ))
  439. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  440. WRITE( IOUNIT, FMT = 9961 )1
  441. WRITE( IOUNIT, FMT = 9960 )2
  442. WRITE( IOUNIT, FMT = 9959 )3
  443. WRITE( IOUNIT, FMT = 9958 )4
  444. WRITE( IOUNIT, FMT = 9957 )5
  445. WRITE( IOUNIT, FMT = 9956 )6
  446. WRITE( IOUNIT, FMT = 9955 )7
  447. WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 8
  448. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  449. *
  450. ELSE IF( LSAMEN( 2, P2, 'TB' ) ) THEN
  451. *
  452. * TB: Triangular band
  453. *
  454. WRITE( IOUNIT, FMT = 9988 )PATH
  455. SUBNAM = PATH( 1: 1 ) // 'LATBS'
  456. WRITE( IOUNIT, FMT = 9964 )PATH
  457. WRITE( IOUNIT, FMT = 9963 )SUBNAM(1:LEN_TRIM( SUBNAM ))
  458. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  459. WRITE( IOUNIT, FMT = 9960 )1
  460. WRITE( IOUNIT, FMT = 9959 )2
  461. WRITE( IOUNIT, FMT = 9958 )3
  462. WRITE( IOUNIT, FMT = 9957 )4
  463. WRITE( IOUNIT, FMT = 9956 )5
  464. WRITE( IOUNIT, FMT = 9955 )6
  465. WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 7
  466. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  467. *
  468. ELSE IF( LSAMEN( 2, P2, 'QR' ) ) THEN
  469. *
  470. * QR decomposition of rectangular matrices
  471. *
  472. WRITE( IOUNIT, FMT = 9987 )PATH, 'QR'
  473. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  474. WRITE( IOUNIT, FMT = 9970 )
  475. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  476. WRITE( IOUNIT, FMT = 9950 )1
  477. WRITE( IOUNIT, FMT = 6950 )8
  478. WRITE( IOUNIT, FMT = 9946 )2
  479. WRITE( IOUNIT, FMT = 9944 )3, 'M'
  480. WRITE( IOUNIT, FMT = 9943 )4, 'M'
  481. WRITE( IOUNIT, FMT = 9942 )5, 'M'
  482. WRITE( IOUNIT, FMT = 9941 )6, 'M'
  483. WRITE( IOUNIT, FMT = 9960 )7
  484. WRITE( IOUNIT, FMT = 6660 )9
  485. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  486. *
  487. ELSE IF( LSAMEN( 2, P2, 'LQ' ) ) THEN
  488. *
  489. * LQ decomposition of rectangular matrices
  490. *
  491. WRITE( IOUNIT, FMT = 9987 )PATH, 'LQ'
  492. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  493. WRITE( IOUNIT, FMT = 9970 )
  494. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  495. WRITE( IOUNIT, FMT = 9949 )1
  496. WRITE( IOUNIT, FMT = 9945 )2
  497. WRITE( IOUNIT, FMT = 9944 )3, 'N'
  498. WRITE( IOUNIT, FMT = 9943 )4, 'N'
  499. WRITE( IOUNIT, FMT = 9942 )5, 'N'
  500. WRITE( IOUNIT, FMT = 9941 )6, 'N'
  501. WRITE( IOUNIT, FMT = 9960 )7
  502. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  503. *
  504. ELSE IF( LSAMEN( 2, P2, 'QL' ) ) THEN
  505. *
  506. * QL decomposition of rectangular matrices
  507. *
  508. WRITE( IOUNIT, FMT = 9987 )PATH, 'QL'
  509. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  510. WRITE( IOUNIT, FMT = 9970 )
  511. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  512. WRITE( IOUNIT, FMT = 9948 )1
  513. WRITE( IOUNIT, FMT = 9946 )2
  514. WRITE( IOUNIT, FMT = 9944 )3, 'M'
  515. WRITE( IOUNIT, FMT = 9943 )4, 'M'
  516. WRITE( IOUNIT, FMT = 9942 )5, 'M'
  517. WRITE( IOUNIT, FMT = 9941 )6, 'M'
  518. WRITE( IOUNIT, FMT = 9960 )7
  519. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  520. *
  521. ELSE IF( LSAMEN( 2, P2, 'RQ' ) ) THEN
  522. *
  523. * RQ decomposition of rectangular matrices
  524. *
  525. WRITE( IOUNIT, FMT = 9987 )PATH, 'RQ'
  526. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  527. WRITE( IOUNIT, FMT = 9970 )
  528. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  529. WRITE( IOUNIT, FMT = 9947 )1
  530. WRITE( IOUNIT, FMT = 9945 )2
  531. WRITE( IOUNIT, FMT = 9944 )3, 'N'
  532. WRITE( IOUNIT, FMT = 9943 )4, 'N'
  533. WRITE( IOUNIT, FMT = 9942 )5, 'N'
  534. WRITE( IOUNIT, FMT = 9941 )6, 'N'
  535. WRITE( IOUNIT, FMT = 9960 )7
  536. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  537. *
  538. ELSE IF( LSAMEN( 2, P2, 'QP' ) ) THEN
  539. *
  540. * QR decomposition with column pivoting
  541. *
  542. WRITE( IOUNIT, FMT = 9986 )PATH
  543. WRITE( IOUNIT, FMT = 9969 )
  544. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  545. WRITE( IOUNIT, FMT = 9940 )1
  546. WRITE( IOUNIT, FMT = 9939 )2
  547. WRITE( IOUNIT, FMT = 9938 )3
  548. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  549. *
  550. ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN
  551. *
  552. * TZ: Trapezoidal
  553. *
  554. WRITE( IOUNIT, FMT = 9985 )PATH
  555. WRITE( IOUNIT, FMT = 9968 )
  556. WRITE( IOUNIT, FMT = 9929 )C1, C1
  557. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  558. WRITE( IOUNIT, FMT = 9940 )1
  559. WRITE( IOUNIT, FMT = 9937 )2
  560. WRITE( IOUNIT, FMT = 9938 )3
  561. WRITE( IOUNIT, FMT = 9940 )4
  562. WRITE( IOUNIT, FMT = 9937 )5
  563. WRITE( IOUNIT, FMT = 9938 )6
  564. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  565. *
  566. ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN
  567. *
  568. * LS: Least Squares driver routines for
  569. * LS, LSD, LSS, LSX and LSY.
  570. *
  571. WRITE( IOUNIT, FMT = 9984 )PATH
  572. WRITE( IOUNIT, FMT = 9967 )
  573. WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1, C1
  574. WRITE( IOUNIT, FMT = 9935 )1
  575. WRITE( IOUNIT, FMT = 9931 )2
  576. WRITE( IOUNIT, FMT = 9933 )3
  577. WRITE( IOUNIT, FMT = 9935 )4
  578. WRITE( IOUNIT, FMT = 9934 )5
  579. WRITE( IOUNIT, FMT = 9932 )6
  580. WRITE( IOUNIT, FMT = 9920 )
  581. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  582. *
  583. ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN
  584. *
  585. * LU factorization variants
  586. *
  587. WRITE( IOUNIT, FMT = 9983 )PATH
  588. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  589. WRITE( IOUNIT, FMT = 9979 )
  590. WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  591. WRITE( IOUNIT, FMT = 9962 )1
  592. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  593. *
  594. ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN
  595. *
  596. * Cholesky factorization variants
  597. *
  598. WRITE( IOUNIT, FMT = 9982 )PATH
  599. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  600. WRITE( IOUNIT, FMT = 9974 )
  601. WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  602. WRITE( IOUNIT, FMT = 9954 )1
  603. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  604. *
  605. ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN
  606. *
  607. * QR factorization variants
  608. *
  609. WRITE( IOUNIT, FMT = 9981 )PATH
  610. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  611. WRITE( IOUNIT, FMT = 9970 )
  612. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  613. *
  614. ELSE IF( LSAMEN( 2, P2, 'QT' ) ) THEN
  615. *
  616. * QRT (general matrices)
  617. *
  618. WRITE( IOUNIT, FMT = 8000 ) PATH
  619. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  620. WRITE( IOUNIT, FMT = 8011 ) 1
  621. WRITE( IOUNIT, FMT = 8012 ) 2
  622. WRITE( IOUNIT, FMT = 8013 ) 3
  623. WRITE( IOUNIT, FMT = 8014 ) 4
  624. WRITE( IOUNIT, FMT = 8015 ) 5
  625. WRITE( IOUNIT, FMT = 8016 ) 6
  626. *
  627. ELSE IF( LSAMEN( 2, P2, 'QX' ) ) THEN
  628. *
  629. * QRT (triangular-pentagonal)
  630. *
  631. WRITE( IOUNIT, FMT = 8001 ) PATH
  632. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  633. WRITE( IOUNIT, FMT = 8017 ) 1
  634. WRITE( IOUNIT, FMT = 8018 ) 2
  635. WRITE( IOUNIT, FMT = 8019 ) 3
  636. WRITE( IOUNIT, FMT = 8020 ) 4
  637. WRITE( IOUNIT, FMT = 8021 ) 5
  638. WRITE( IOUNIT, FMT = 8022 ) 6
  639. *
  640. ELSE
  641. *
  642. * Print error message if no header is available.
  643. *
  644. WRITE( IOUNIT, FMT = 9980 )PATH
  645. END IF
  646. *
  647. * First line of header
  648. *
  649. 9999 FORMAT( / 1X, A3, ': General dense matrices' )
  650. 9998 FORMAT( / 1X, A3, ': General band matrices' )
  651. 9997 FORMAT( / 1X, A3, ': General tridiagonal' )
  652. 9996 FORMAT( / 1X, A3, ': ', A9, ' positive definite matrices' )
  653. 9995 FORMAT( / 1X, A3, ': ', A9, ' positive definite packed matrices'
  654. $ )
  655. 9994 FORMAT( / 1X, A3, ': ', A9, ' positive definite band matrices' )
  656. 9993 FORMAT( / 1X, A3, ': ', A9, ' positive definite tridiagonal' )
  657. 9992 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices',
  658. $ ', partial (Bunch-Kaufman) pivoting' )
  659. 9991 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices',
  660. $ ', partial (Bunch-Kaufman) pivoting' )
  661. 9892 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices',
  662. $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
  663. 9891 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices',
  664. $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
  665. 9990 FORMAT( / 1X, A3, ': Triangular matrices' )
  666. 9989 FORMAT( / 1X, A3, ': Triangular packed matrices' )
  667. 9988 FORMAT( / 1X, A3, ': Triangular band matrices' )
  668. 9987 FORMAT( / 1X, A3, ': ', A2, ' factorization of general matrices'
  669. $ )
  670. 9986 FORMAT( / 1X, A3, ': QR factorization with column pivoting' )
  671. 9985 FORMAT( / 1X, A3, ': RQ factorization of trapezoidal matrix' )
  672. 9984 FORMAT( / 1X, A3, ': Least squares driver routines' )
  673. 9983 FORMAT( / 1X, A3, ': LU factorization variants' )
  674. 9982 FORMAT( / 1X, A3, ': Cholesky factorization variants' )
  675. 9981 FORMAT( / 1X, A3, ': QR factorization variants' )
  676. 9980 FORMAT( / 1X, A3, ': No header available' )
  677. 8000 FORMAT( / 1X, A3, ': QRT factorization for general matrices' )
  678. 8001 FORMAT( / 1X, A3, ': QRT factorization for ',
  679. $ 'triangular-pentagonal matrices' )
  680. *
  681. * GE matrix types
  682. *
  683. 9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
  684. $ '2. Upper triangular', 16X,
  685. $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  686. $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
  687. $ / 4X, '4. Random, CNDNUM = 2', 13X,
  688. $ '10. Scaled near underflow', / 4X, '5. First column zero',
  689. $ 14X, '11. Scaled near overflow', / 4X,
  690. $ '6. Last column zero' )
  691. *
  692. * GB matrix types
  693. *
  694. 9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  695. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  696. $ '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS',
  697. $ / 4X, '3. Last column zero', 16X,
  698. $ '7. Scaled near underflow', / 4X,
  699. $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
  700. *
  701. * GT matrix types
  702. *
  703. 9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  704. $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  705. $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
  706. $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  707. $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
  708. $ 7X, '10. Last n/2 columns zero', / 4X,
  709. $ '5. Scaled near underflow', 10X,
  710. $ '11. Scaled near underflow', / 4X,
  711. $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  712. *
  713. * PT matrix types
  714. *
  715. 9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  716. $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  717. $ / 4X, '2. Random, CNDNUM = 2', 14X,
  718. $ '8. First row and column zero', / 4X,
  719. $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  720. $ '9. Last row and column zero', / 4X,
  721. $ '4. Random, CNDNUM = 0.1/EPS', 7X,
  722. $ '10. Middle row and column zero', / 4X,
  723. $ '5. Scaled near underflow', 10X,
  724. $ '11. Scaled near underflow', / 4X,
  725. $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  726. *
  727. * PO, PP matrix types
  728. *
  729. 9975 FORMAT( 4X, '1. Diagonal', 24X,
  730. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  731. $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  732. $ / 3X, '*3. First row and column zero', 7X,
  733. $ '8. Scaled near underflow', / 3X,
  734. $ '*4. Last row and column zero', 8X,
  735. $ '9. Scaled near overflow', / 3X,
  736. $ '*5. Middle row and column zero', / 3X,
  737. $ '(* - tests error exits from ', A3,
  738. $ 'TRF, no test ratios are computed)' )
  739. *
  740. * CH matrix types
  741. *
  742. 9974 FORMAT( 4X, '1. Diagonal', 24X,
  743. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  744. $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  745. $ / 3X, '*3. First row and column zero', 7X,
  746. $ '8. Scaled near underflow', / 3X,
  747. $ '*4. Last row and column zero', 8X,
  748. $ '9. Scaled near overflow', / 3X,
  749. $ '*5. Middle row and column zero', / 3X,
  750. $ '(* - tests error exits, no test ratios are computed)' )
  751. *
  752. * PS matrix types
  753. *
  754. 8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X,
  755. $ / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ',
  756. $ 'D(RANK) = 1.0/', A4, / 3X,
  757. $ '*4. Nonzero eigenvalues of: D(1)=1 and ',
  758. $ ' D(2:RANK) = 1.0/', A4, / 3X,
  759. $ '*5. Nonzero eigenvalues of: D(I) = ', A4,
  760. $ '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X,
  761. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  762. $ '7. Random, CNDNUM = 0.1/EPS', / 4X,
  763. $ '8. Scaled near underflow', / 4X, '9. Scaled near overflow',
  764. $ / 3X, '(* - Semi-definite tests )' )
  765. 8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' )
  766. *
  767. * PB matrix types
  768. *
  769. 9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  770. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
  771. $ '*2. First row and column zero', 7X,
  772. $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
  773. $ '*3. Last row and column zero', 8X,
  774. $ '7. Scaled near underflow', / 3X,
  775. $ '*4. Middle row and column zero', 6X,
  776. $ '8. Scaled near overflow', / 3X,
  777. $ '(* - tests error exits from ', A3,
  778. $ 'TRF, no test ratios are computed)' )
  779. *
  780. * SSY, SSR, SSP, CHE, CHR, CHP matrix types
  781. *
  782. 9972 FORMAT( 4X, '1. Diagonal', 24X,
  783. $ '6. Last n/2 rows and columns zero', / 4X,
  784. $ '2. Random, CNDNUM = 2', 14X,
  785. $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  786. $ '3. First row and column zero', 7X,
  787. $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
  788. $ '4. Last row and column zero', 8X,
  789. $ '9. Scaled near underflow', / 4X,
  790. $ '5. Middle row and column zero', 5X,
  791. $ '10. Scaled near overflow' )
  792. *
  793. * CSY, CSR, CSP matrix types
  794. *
  795. 9971 FORMAT( 4X, '1. Diagonal', 24X,
  796. $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  797. $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
  798. $ / 4X, '3. First row and column zero', 7X,
  799. $ '9. Scaled near underflow', / 4X,
  800. $ '4. Last row and column zero', 7X,
  801. $ '10. Scaled near overflow', / 4X,
  802. $ '5. Middle row and column zero', 5X,
  803. $ '11. Block diagonal matrix', / 4X,
  804. $ '6. Last n/2 rows and columns zero' )
  805. *
  806. * QR matrix types
  807. *
  808. 9970 FORMAT( 4X, '1. Diagonal', 24X,
  809. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  810. $ '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS',
  811. $ / 4X, '3. Lower triangular', 16X,
  812. $ '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2',
  813. $ 14X, '8. Scaled near overflow' )
  814. *
  815. * QP matrix types
  816. *
  817. 9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X,
  818. $ '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X,
  819. $ '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed',
  820. $ / 4X, '3. Geometric distribution', 10X,
  821. $ '6. Every second column fixed' )
  822. *
  823. * TZ matrix types
  824. *
  825. 9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X,
  826. $ '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X,
  827. $ '3. Geometric distribution' )
  828. *
  829. * LS matrix types
  830. *
  831. 9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):',
  832. $ / 4X, '1 and 4. Normal scaling', / 4X,
  833. $ '2 and 5. Scaled near overflow', / 4X,
  834. $ '3 and 6. Scaled near underflow' )
  835. *
  836. * TR, TP matrix types
  837. *
  838. 9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  839. $ '1. Diagonal', 24X, '6. Scaled near overflow', / 4X,
  840. $ '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X,
  841. $ '3. Random, CNDNUM = sqrt(0.1/EPS) ',
  842. $ '8. Unit triangular, CNDNUM = 2', / 4X,
  843. $ '4. Random, CNDNUM = 0.1/EPS', 8X,
  844. $ '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  845. $ '5. Scaled near underflow', 10X,
  846. $ '10. Unit, CNDNUM = 0.1/EPS' )
  847. 9965 FORMAT( ' Special types for testing ', A, ':', / 3X,
  848. $ '11. Matrix elements are O(1), large right hand side', / 3X,
  849. $ '12. First diagonal causes overflow,',
  850. $ ' offdiagonal column norms < 1', / 3X,
  851. $ '13. First diagonal causes overflow,',
  852. $ ' offdiagonal column norms > 1', / 3X,
  853. $ '14. Growth factor underflows, solution does not overflow',
  854. $ / 3X, '15. Small diagonal causes gradual overflow', / 3X,
  855. $ '16. One zero diagonal element', / 3X,
  856. $ '17. Large offdiagonals cause overflow when adding a column'
  857. $ , / 3X, '18. Unit triangular with large right hand side' )
  858. *
  859. * TB matrix types
  860. *
  861. 9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  862. $ '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X,
  863. $ '2. Random, CNDNUM = sqrt(0.1/EPS) ',
  864. $ '7. Unit triangular, CNDNUM = 2', / 4X,
  865. $ '3. Random, CNDNUM = 0.1/EPS', 8X,
  866. $ '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  867. $ '4. Scaled near underflow', 11X,
  868. $ '9. Unit, CNDNUM = 0.1/EPS', / 4X,
  869. $ '5. Scaled near overflow' )
  870. 9963 FORMAT( ' Special types for testing ', A, ':', / 3X,
  871. $ '10. Matrix elements are O(1), large right hand side', / 3X,
  872. $ '11. First diagonal causes overflow,',
  873. $ ' offdiagonal column norms < 1', / 3X,
  874. $ '12. First diagonal causes overflow,',
  875. $ ' offdiagonal column norms > 1', / 3X,
  876. $ '13. Growth factor underflows, solution does not overflow',
  877. $ / 3X, '14. Small diagonal causes gradual overflow', / 3X,
  878. $ '15. One zero diagonal element', / 3X,
  879. $ '16. Large offdiagonals cause overflow when adding a column'
  880. $ , / 3X, '17. Unit triangular with large right hand side' )
  881. *
  882. * Test ratios
  883. *
  884. 9962 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
  885. 9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ',
  886. $ '( N * norm(A) * norm(AINV) * EPS )' )
  887. 9960 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
  888. $ '( norm(A) * norm(X) * EPS )' )
  889. 6660 FORMAT( 3X, I2, ': diagonal is not non-negative')
  890. 9959 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  891. $ '( norm(XACT) * CNDNUM * EPS )' )
  892. 9958 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  893. $ '( norm(XACT) * CNDNUM * EPS ), refined' )
  894. 9957 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  895. $ '( norm(XACT) * (error bound) )' )
  896. 9956 FORMAT( 3X, I2, ': (backward error) / EPS' )
  897. 9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
  898. 9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
  899. $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
  900. $ )
  901. 8950 FORMAT( 3X,
  902. $ 'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )',
  903. $ ', or', / 3X,
  904. $ 'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' )
  905. 9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
  906. $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
  907. $ )
  908. 9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
  909. $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
  910. $ )
  911. 9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2,
  912. $ ': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' )
  913. 9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
  914. 6950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )
  915. $ [RFPG]' )
  916. 9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
  917. 9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
  918. 9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
  919. 9946 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
  920. 9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' ) / ( N * EPS )' )
  921. 9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C ) / ', '( ', A1,
  922. $ ' * norm(C) * EPS )' )
  923. 9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q ) / ', '( ', A1,
  924. $ ' * norm(C) * EPS )' )
  925. 9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1,
  926. $ ' * norm(C) * EPS )' )
  927. 9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1,
  928. $ ' * norm(C) * EPS )' )
  929. 9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ',
  930. $ '( M * norm(svd(R)) * EPS )' )
  931. 9939 FORMAT( 3X, I2, ': norm( A*P - Q*R ) / ( M * norm(A) * EPS )'
  932. $ )
  933. 9938 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
  934. 9937 FORMAT( 3X, I2, ': norm( A - R*Q ) / ( M * norm(A) * EPS )'
  935. $ )
  936. 9935 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
  937. $ '( max(M,N) * norm(A) * norm(X) * EPS )' )
  938. 9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
  939. $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
  940. 9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ',
  941. $ '( min(M,N) * norm(svd(R)) * EPS )' )
  942. 9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' )
  943. 9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
  944. $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X,
  945. $ 'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ',
  946. $ 'otherwise', / 7X,
  947. $ 'check if X is in the row space of A or A'' ',
  948. $ '(overdetermined case)' )
  949. 9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRQF, 4-6: ', A1,
  950. $ 'TZRZF):' )
  951. 9920 FORMAT( 3X, ' 7-10: same as 3-6', 3X, ' 11-14: same as 3-6',
  952. $ 3X, ' 15-18: same as 3-6' )
  953. 9921 FORMAT( ' Test ratios:', / ' (1-2: ', A1, 'GELS, 3-6: ', A1,
  954. $ 'GELSX, 7-10: ', A1, 'GELSY, 11-14: ', A1, 'GELSS, 15-18: ',
  955. $ A1, 'GELSD)' )
  956. 9928 FORMAT( 7X, 'where ALPHA = ( 1 + SQRT( 17 ) ) / 8' )
  957. 9927 FORMAT( 3X, I2, ': ABS( Largest element in L )', / 12X,
  958. $ ' - ( 1 / ( 1 - ALPHA ) ) + THRESH' )
  959. 9926 FORMAT( 3X, I2, ': Largest 2-Norm of 2-by-2 pivots', / 12X,
  960. $ ' - ( ( 1 + ALPHA ) / ( 1 - ALPHA ) ) + THRESH' )
  961. 8011 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' )
  962. 8012 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' )
  963. 8013 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' )
  964. 8014 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )')
  965. 8015 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' )
  966. 8016 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )')
  967. 8017 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' )
  968. 8018 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' )
  969. 8019 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
  970. 8020 FORMAT(3X,I2,
  971. $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
  972. 8021 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
  973. 8022 FORMAT(3X,I2,
  974. $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
  975. *
  976. RETURN
  977. *
  978. * End of ALAHD
  979. *
  980. END