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.

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