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.

alahd.f 46 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167
  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 = 8006 )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, 'QK' ) ) THEN
  596. *
  597. * truncated QR decomposition with column pivoting
  598. *
  599. WRITE( IOUNIT, FMT = 8006 )PATH
  600. WRITE( IOUNIT, FMT = 9871 )
  601. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  602. WRITE( IOUNIT, FMT = 8060 )1
  603. WRITE( IOUNIT, FMT = 8061 )2
  604. WRITE( IOUNIT, FMT = 8062 )3
  605. WRITE( IOUNIT, FMT = 8063 )4
  606. WRITE( IOUNIT, FMT = 8064 )5
  607. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  608. *
  609. ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN
  610. *
  611. * TZ: Trapezoidal
  612. *
  613. WRITE( IOUNIT, FMT = 9985 )PATH
  614. WRITE( IOUNIT, FMT = 9968 )
  615. WRITE( IOUNIT, FMT = 9929 )C1
  616. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  617. WRITE( IOUNIT, FMT = 9940 )1
  618. WRITE( IOUNIT, FMT = 9937 )2
  619. WRITE( IOUNIT, FMT = 9938 )3
  620. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  621. *
  622. ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN
  623. *
  624. * LS: Least Squares driver routines for
  625. * LS, LST, TSLS, LSD, LSS, LSX and LSY.
  626. *
  627. WRITE( IOUNIT, FMT = 9984 )PATH
  628. WRITE( IOUNIT, FMT = 9967 )
  629. WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1, C1, C1
  630. WRITE( IOUNIT, FMT = 9935 )1
  631. WRITE( IOUNIT, FMT = 9931 )2
  632. WRITE( IOUNIT, FMT = 9919 )
  633. WRITE( IOUNIT, FMT = 9933 )7
  634. WRITE( IOUNIT, FMT = 9935 )8
  635. WRITE( IOUNIT, FMT = 9934 )9
  636. WRITE( IOUNIT, FMT = 9932 )10
  637. WRITE( IOUNIT, FMT = 9920 )
  638. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  639. *
  640. ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN
  641. *
  642. * LU factorization variants
  643. *
  644. WRITE( IOUNIT, FMT = 9983 )PATH
  645. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  646. WRITE( IOUNIT, FMT = 9979 )
  647. WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  648. WRITE( IOUNIT, FMT = 9962 )1
  649. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  650. *
  651. ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN
  652. *
  653. * Cholesky factorization variants
  654. *
  655. WRITE( IOUNIT, FMT = 9982 )PATH
  656. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  657. WRITE( IOUNIT, FMT = 9974 )
  658. WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  659. WRITE( IOUNIT, FMT = 9954 )1
  660. WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  661. *
  662. ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN
  663. *
  664. * QR factorization variants
  665. *
  666. WRITE( IOUNIT, FMT = 9981 )PATH
  667. WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  668. WRITE( IOUNIT, FMT = 9970 )
  669. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  670. *
  671. ELSE IF( LSAMEN( 2, P2, 'QT' ) ) THEN
  672. *
  673. * QRT (general matrices)
  674. *
  675. WRITE( IOUNIT, FMT = 8000 ) PATH
  676. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  677. WRITE( IOUNIT, FMT = 8011 ) 1
  678. WRITE( IOUNIT, FMT = 8012 ) 2
  679. WRITE( IOUNIT, FMT = 8013 ) 3
  680. WRITE( IOUNIT, FMT = 8014 ) 4
  681. WRITE( IOUNIT, FMT = 8015 ) 5
  682. WRITE( IOUNIT, FMT = 8016 ) 6
  683. *
  684. ELSE IF( LSAMEN( 2, P2, 'QX' ) ) THEN
  685. *
  686. * QRT (triangular-pentagonal)
  687. *
  688. WRITE( IOUNIT, FMT = 8001 ) PATH
  689. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  690. WRITE( IOUNIT, FMT = 8017 ) 1
  691. WRITE( IOUNIT, FMT = 8018 ) 2
  692. WRITE( IOUNIT, FMT = 8019 ) 3
  693. WRITE( IOUNIT, FMT = 8020 ) 4
  694. WRITE( IOUNIT, FMT = 8021 ) 5
  695. WRITE( IOUNIT, FMT = 8022 ) 6
  696. *
  697. ELSE IF( LSAMEN( 2, P2, 'TQ' ) ) THEN
  698. *
  699. * QRT (triangular-pentagonal)
  700. *
  701. WRITE( IOUNIT, FMT = 8002 ) PATH
  702. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  703. WRITE( IOUNIT, FMT = 8023 ) 1
  704. WRITE( IOUNIT, FMT = 8024 ) 2
  705. WRITE( IOUNIT, FMT = 8025 ) 3
  706. WRITE( IOUNIT, FMT = 8026 ) 4
  707. WRITE( IOUNIT, FMT = 8027 ) 5
  708. WRITE( IOUNIT, FMT = 8028 ) 6
  709. *
  710. ELSE IF( LSAMEN( 2, P2, 'XQ' ) ) THEN
  711. *
  712. * QRT (triangular-pentagonal)
  713. *
  714. WRITE( IOUNIT, FMT = 8003 ) PATH
  715. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  716. WRITE( IOUNIT, FMT = 8029 ) 1
  717. WRITE( IOUNIT, FMT = 8030 ) 2
  718. WRITE( IOUNIT, FMT = 8031 ) 3
  719. WRITE( IOUNIT, FMT = 8032 ) 4
  720. WRITE( IOUNIT, FMT = 8033 ) 5
  721. WRITE( IOUNIT, FMT = 8034 ) 6
  722. *
  723. ELSE IF( LSAMEN( 2, P2, 'TS' ) ) THEN
  724. *
  725. * TS: QR routines for tall-skinny and short-wide matrices
  726. *
  727. WRITE( IOUNIT, FMT = 8004 ) PATH
  728. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  729. WRITE( IOUNIT, FMT = 8035 ) 1
  730. WRITE( IOUNIT, FMT = 8036 ) 2
  731. WRITE( IOUNIT, FMT = 8037 ) 3
  732. WRITE( IOUNIT, FMT = 8038 ) 4
  733. WRITE( IOUNIT, FMT = 8039 ) 5
  734. WRITE( IOUNIT, FMT = 8040 ) 6
  735. *
  736. ELSE IF( LSAMEN( 2, P2, 'HH' ) ) THEN
  737. *
  738. * HH: Householder reconstruction for tall-skinny matrices
  739. *
  740. WRITE( IOUNIT, FMT = 8005 ) PATH
  741. WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  742. WRITE( IOUNIT, FMT = 8050 ) 1
  743. WRITE( IOUNIT, FMT = 8051 ) 2
  744. WRITE( IOUNIT, FMT = 8052 ) 3
  745. WRITE( IOUNIT, FMT = 8053 ) 4
  746. WRITE( IOUNIT, FMT = 8054 ) 5
  747. WRITE( IOUNIT, FMT = 8055 ) 6
  748. *
  749. ELSE
  750. *
  751. * Print error message if no header is available.
  752. *
  753. WRITE( IOUNIT, FMT = 9980 )PATH
  754. END IF
  755. *
  756. * First line of header
  757. *
  758. 9999 FORMAT( / 1X, A3, ': General dense matrices' )
  759. 9998 FORMAT( / 1X, A3, ': General band matrices' )
  760. 9997 FORMAT( / 1X, A3, ': General tridiagonal' )
  761. 9996 FORMAT( / 1X, A3, ': ', A9, ' positive definite matrices' )
  762. 9995 FORMAT( / 1X, A3, ': ', A9, ' positive definite packed matrices'
  763. $ )
  764. 9994 FORMAT( / 1X, A3, ': ', A9, ' positive definite band matrices' )
  765. 9993 FORMAT( / 1X, A3, ': ', A9, ' positive definite tridiagonal' )
  766. 9992 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices',
  767. $ ', partial (Bunch-Kaufman) pivoting' )
  768. 9991 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices',
  769. $ ', partial (Bunch-Kaufman) pivoting' )
  770. 9892 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices',
  771. $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
  772. 9891 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices',
  773. $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
  774. 9990 FORMAT( / 1X, A3, ': Triangular matrices' )
  775. 9989 FORMAT( / 1X, A3, ': Triangular packed matrices' )
  776. 9988 FORMAT( / 1X, A3, ': Triangular band matrices' )
  777. 9987 FORMAT( / 1X, A3, ': ', A2, ' factorization of general matrices'
  778. $ )
  779. 9986 FORMAT( / 1X, A3, ': QR factorization with column pivoting' )
  780. 9985 FORMAT( / 1X, A3, ': RQ factorization of trapezoidal matrix' )
  781. 9984 FORMAT( / 1X, A3, ': Least squares driver routines' )
  782. 9983 FORMAT( / 1X, A3, ': LU factorization variants' )
  783. 9982 FORMAT( / 1X, A3, ': Cholesky factorization variants' )
  784. 9981 FORMAT( / 1X, A3, ': QR factorization variants' )
  785. 9980 FORMAT( / 1X, A3, ': No header available' )
  786. 8000 FORMAT( / 1X, A3, ': QRT factorization for general matrices' )
  787. 8001 FORMAT( / 1X, A3, ': QRT factorization for ',
  788. $ 'triangular-pentagonal matrices' )
  789. 8002 FORMAT( / 1X, A3, ': LQT factorization for general matrices' )
  790. 8003 FORMAT( / 1X, A3, ': LQT factorization for ',
  791. $ 'triangular-pentagonal matrices' )
  792. 8004 FORMAT( / 1X, A3, ': TS factorization for ',
  793. $ 'tall-skinny or short-wide matrices' )
  794. 8005 FORMAT( / 1X, A3, ': Householder reconstruction from TSQR',
  795. $ ' factorization output ', /,' for tall-skinny matrices.' )
  796. 8006 FORMAT( / 1X, A3, ': truncated QR factorization',
  797. $ ' with column pivoting' )
  798. *
  799. * GE matrix types
  800. *
  801. 9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
  802. $ '2. Upper triangular', 16X,
  803. $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  804. $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
  805. $ / 4X, '4. Random, CNDNUM = 2', 13X,
  806. $ '10. Scaled near underflow', / 4X, '5. First column zero',
  807. $ 14X, '11. Scaled near overflow', / 4X,
  808. $ '6. Last column zero' )
  809. *
  810. * GB matrix types
  811. *
  812. 9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  813. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  814. $ '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS',
  815. $ / 4X, '3. Last column zero', 16X,
  816. $ '7. Scaled near underflow', / 4X,
  817. $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
  818. *
  819. * GT matrix types
  820. *
  821. 9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  822. $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  823. $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
  824. $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  825. $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
  826. $ 7X, '10. Last n/2 columns zero', / 4X,
  827. $ '5. Scaled near underflow', 10X,
  828. $ '11. Scaled near underflow', / 4X,
  829. $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  830. *
  831. * PT matrix types
  832. *
  833. 9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  834. $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  835. $ / 4X, '2. Random, CNDNUM = 2', 14X,
  836. $ '8. First row and column zero', / 4X,
  837. $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  838. $ '9. Last row and column zero', / 4X,
  839. $ '4. Random, CNDNUM = 0.1/EPS', 7X,
  840. $ '10. Middle row and column zero', / 4X,
  841. $ '5. Scaled near underflow', 10X,
  842. $ '11. Scaled near underflow', / 4X,
  843. $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  844. *
  845. * PO, PP matrix types
  846. *
  847. 9975 FORMAT( 4X, '1. Diagonal', 24X,
  848. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  849. $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  850. $ / 3X, '*3. First row and column zero', 7X,
  851. $ '8. Scaled near underflow', / 3X,
  852. $ '*4. Last row and column zero', 8X,
  853. $ '9. Scaled near overflow', / 3X,
  854. $ '*5. Middle row and column zero', / 3X,
  855. $ '(* - tests error exits from ', A3,
  856. $ 'TRF, no test ratios are computed)' )
  857. *
  858. * CH matrix types
  859. *
  860. 9974 FORMAT( 4X, '1. Diagonal', 24X,
  861. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  862. $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  863. $ / 3X, '*3. First row and column zero', 7X,
  864. $ '8. Scaled near underflow', / 3X,
  865. $ '*4. Last row and column zero', 8X,
  866. $ '9. Scaled near overflow', / 3X,
  867. $ '*5. Middle row and column zero', / 3X,
  868. $ '(* - tests error exits, no test ratios are computed)' )
  869. *
  870. * PS matrix types
  871. *
  872. 8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X,
  873. $ / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ',
  874. $ 'D(RANK) = 1.0/', A4, / 3X,
  875. $ '*4. Nonzero eigenvalues of: D(1)=1 and ',
  876. $ ' D(2:RANK) = 1.0/', A4, / 3X,
  877. $ '*5. Nonzero eigenvalues of: D(I) = ', A4,
  878. $ '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X,
  879. $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  880. $ '7. Random, CNDNUM = 0.1/EPS', / 4X,
  881. $ '8. Scaled near underflow', / 4X, '9. Scaled near overflow',
  882. $ / 3X, '(* - Semi-definite tests )' )
  883. 8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' )
  884. *
  885. * PB matrix types
  886. *
  887. 9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  888. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
  889. $ '*2. First row and column zero', 7X,
  890. $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
  891. $ '*3. Last row and column zero', 8X,
  892. $ '7. Scaled near underflow', / 3X,
  893. $ '*4. Middle row and column zero', 6X,
  894. $ '8. Scaled near overflow', / 3X,
  895. $ '(* - tests error exits from ', A3,
  896. $ 'TRF, no test ratios are computed)' )
  897. *
  898. * SSY, SSR, SSP, CHE, CHR, CHP matrix types
  899. *
  900. 9972 FORMAT( 4X, '1. Diagonal', 24X,
  901. $ '6. Last n/2 rows and columns zero', / 4X,
  902. $ '2. Random, CNDNUM = 2', 14X,
  903. $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  904. $ '3. First row and column zero', 7X,
  905. $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
  906. $ '4. Last row and column zero', 8X,
  907. $ '9. Scaled near underflow', / 4X,
  908. $ '5. Middle row and column zero', 5X,
  909. $ '10. Scaled near overflow' )
  910. *
  911. * CSY, CSR, CSP matrix types
  912. *
  913. 9971 FORMAT( 4X, '1. Diagonal', 24X,
  914. $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  915. $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
  916. $ / 4X, '3. First row and column zero', 7X,
  917. $ '9. Scaled near underflow', / 4X,
  918. $ '4. Last row and column zero', 7X,
  919. $ '10. Scaled near overflow', / 4X,
  920. $ '5. Middle row and column zero', 5X,
  921. $ '11. Block diagonal matrix', / 4X,
  922. $ '6. Last n/2 rows and columns zero' )
  923. *
  924. * QR matrix types
  925. *
  926. 9970 FORMAT( 4X, '1. Diagonal', 24X,
  927. $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  928. $ '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS',
  929. $ / 4X, '3. Lower triangular', 16X,
  930. $ '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2',
  931. $ 14X, '8. Scaled near overflow' )
  932. *
  933. * QP matrix types
  934. *
  935. 9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X,
  936. $ '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X,
  937. $ '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed',
  938. $ / 4X, '3. Geometric distribution', 10X,
  939. $ '6. Every second column fixed' )
  940. *
  941. * QK matrix types
  942. *
  943. 9871 FORMAT( 4X, ' 1. Zero matrix', /
  944. $ 4X, ' 2. Random, Diagonal, CNDNUM = 2', /
  945. $ 4X, ' 3. Random, Upper triangular, CNDNUM = 2', /
  946. $ 4X, ' 4. Random, Lower triangular, CNDNUM = 2', /
  947. $ 4X, ' 5. Random, First column is zero, CNDNUM = 2', /
  948. $ 4X, ' 6. Random, Last MINMN column is zero, CNDNUM = 2', /
  949. $ 4X, ' 7. Random, Last N column is zero, CNDNUM = 2', /
  950. $ 4X, ' 8. Random, Middle column in MINMN is zero,',
  951. $ ' CNDNUM = 2', /
  952. $ 4X, ' 9. Random, First half of MINMN columns are zero,',
  953. $ ' CNDNUM = 2', /
  954. $ 4X, '10. Random, Last columns are zero starting from',
  955. $ ' MINMN/2+1, CNDNUM = 2', /
  956. $ 4X, '11. Random, Half MINMN columns in the middle are',
  957. $ ' zero starting from MINMN/2-(MINMN/2)/2+1,',
  958. $ ' CNDNUM = 2', /
  959. $ 4X, '12. Random, Odd columns are ZERO, CNDNUM = 2', /
  960. $ 4X, '13. Random, Even columns are ZERO, CNDNUM = 2', /
  961. $ 4X, '14. Random, CNDNUM = 2', /
  962. $ 4X, '15. Random, CNDNUM = sqrt(0.1/EPS)', /
  963. $ 4X, '16. Random, CNDNUM = 0.1/EPS', /
  964. $ 4X, '17. Random, CNDNUM = 0.1/EPS,',
  965. $ ' one small singular value S(N)=1/CNDNUM', /
  966. $ 4X, '18. Random, CNDNUM = 2, scaled near underflow,',
  967. $ ' NORM = SMALL = SAFMIN', /
  968. $ 4X, '19. Random, CNDNUM = 2, scaled near overflow,',
  969. $ ' NORM = LARGE = 1.0/( 0.25 * ( SAFMIN / EPS ) )' )
  970. *
  971. * TZ matrix types
  972. *
  973. 9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X,
  974. $ '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X,
  975. $ '3. Geometric distribution' )
  976. *
  977. * LS matrix types
  978. *
  979. 9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):',
  980. $ / 4X, '1 and 4. Normal scaling', / 4X,
  981. $ '2 and 5. Scaled near overflow', / 4X,
  982. $ '3 and 6. Scaled near underflow' )
  983. *
  984. * TR, TP matrix types
  985. *
  986. 9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  987. $ '1. Diagonal', 24X, '6. Scaled near overflow', / 4X,
  988. $ '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X,
  989. $ '3. Random, CNDNUM = sqrt(0.1/EPS) ',
  990. $ '8. Unit triangular, CNDNUM = 2', / 4X,
  991. $ '4. Random, CNDNUM = 0.1/EPS', 8X,
  992. $ '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  993. $ '5. Scaled near underflow', 10X,
  994. $ '10. Unit, CNDNUM = 0.1/EPS' )
  995. 9965 FORMAT( ' Special types for testing ', A, ':', / 3X,
  996. $ '11. Matrix elements are O(1), large right hand side', / 3X,
  997. $ '12. First diagonal causes overflow,',
  998. $ ' offdiagonal column norms < 1', / 3X,
  999. $ '13. First diagonal causes overflow,',
  1000. $ ' offdiagonal column norms > 1', / 3X,
  1001. $ '14. Growth factor underflows, solution does not overflow',
  1002. $ / 3X, '15. Small diagonal causes gradual overflow', / 3X,
  1003. $ '16. One zero diagonal element', / 3X,
  1004. $ '17. Large offdiagonals cause overflow when adding a column'
  1005. $ , / 3X, '18. Unit triangular with large right hand side' )
  1006. *
  1007. * TB matrix types
  1008. *
  1009. 9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  1010. $ '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X,
  1011. $ '2. Random, CNDNUM = sqrt(0.1/EPS) ',
  1012. $ '7. Unit triangular, CNDNUM = 2', / 4X,
  1013. $ '3. Random, CNDNUM = 0.1/EPS', 8X,
  1014. $ '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  1015. $ '4. Scaled near underflow', 11X,
  1016. $ '9. Unit, CNDNUM = 0.1/EPS', / 4X,
  1017. $ '5. Scaled near overflow' )
  1018. 9963 FORMAT( ' Special types for testing ', A, ':', / 3X,
  1019. $ '10. Matrix elements are O(1), large right hand side', / 3X,
  1020. $ '11. First diagonal causes overflow,',
  1021. $ ' offdiagonal column norms < 1', / 3X,
  1022. $ '12. First diagonal causes overflow,',
  1023. $ ' offdiagonal column norms > 1', / 3X,
  1024. $ '13. Growth factor underflows, solution does not overflow',
  1025. $ / 3X, '14. Small diagonal causes gradual overflow', / 3X,
  1026. $ '15. One zero diagonal element', / 3X,
  1027. $ '16. Large offdiagonals cause overflow when adding a column'
  1028. $ , / 3X, '17. Unit triangular with large right hand side' )
  1029. *
  1030. * Test ratios
  1031. *
  1032. 9962 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
  1033. 9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ',
  1034. $ '( N * norm(A) * norm(AINV) * EPS )' )
  1035. 9960 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
  1036. $ '( norm(A) * norm(X) * EPS )' )
  1037. 6660 FORMAT( 3X, I2, ': diagonal is not non-negative')
  1038. 9959 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  1039. $ '( norm(XACT) * CNDNUM * EPS )' )
  1040. 9958 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  1041. $ '( norm(XACT) * CNDNUM * EPS ), refined' )
  1042. 9957 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
  1043. $ '( norm(XACT) * (error bound) )' )
  1044. 9956 FORMAT( 3X, I2, ': (backward error) / EPS' )
  1045. 9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
  1046. 9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
  1047. $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
  1048. $ )
  1049. 8950 FORMAT( 3X,
  1050. $ 'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )',
  1051. $ ', or', / 3X,
  1052. $ 'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' )
  1053. 9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
  1054. $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
  1055. $ )
  1056. 9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
  1057. $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
  1058. $ )
  1059. 9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2,
  1060. $ ': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' )
  1061. 9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
  1062. 6950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )
  1063. $ [RFPG]' )
  1064. 9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
  1065. 9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
  1066. 9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
  1067. 9946 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
  1068. 9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' ) / ( N * EPS )' )
  1069. 9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C ) / ', '( ', A1,
  1070. $ ' * norm(C) * EPS )' )
  1071. 9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q ) / ', '( ', A1,
  1072. $ ' * norm(C) * EPS )' )
  1073. 9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1,
  1074. $ ' * norm(C) * EPS )' )
  1075. 9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1,
  1076. $ ' * norm(C) * EPS )' )
  1077. 9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ',
  1078. $ '( M * norm(svd(R)) * EPS )' )
  1079. 9939 FORMAT( 3X, I2, ': norm( A*P - Q*R ) / ( M * norm(A) * EPS )')
  1080. 9938 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
  1081. 9937 FORMAT( 3X, I2, ': norm( A - R*Q ) / ( M * norm(A) * EPS )'
  1082. $ )
  1083. 9935 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
  1084. $ '( max(M,N) * norm(A) * norm(X) * EPS )' )
  1085. 9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
  1086. $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
  1087. 9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ',
  1088. $ '( min(M,N) * norm(svd(R)) * EPS )' )
  1089. 9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' )
  1090. 9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
  1091. $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X,
  1092. $ 'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ',
  1093. $ 'otherwise', / 7X,
  1094. $ 'check if X is in the row space of A or A'' ',
  1095. $ '(overdetermined case)' )
  1096. 9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRZF):' )
  1097. 9919 FORMAT( 3X, ' 3-4: same as 1-2', 3X, ' 5-6: same as 1-2' )
  1098. 9920 FORMAT( 3X, ' 11-14: same as 7-10', 3X, ' 15-18: same as 7-10' )
  1099. 9921 FORMAT( ' Test ratios:', / ' (1-2: ', A1, 'GELS, 3-4: ', A1,
  1100. $ 'GELST, 5-6: ', A1, 'GETSLS, 7-10: ', A1, 'GELSY, 11-14: ',
  1101. $ A1, 'GETSS, 15-18: ', A1, 'GELSD)' )
  1102. 9928 FORMAT( 7X, 'where ALPHA = ( 1 + SQRT( 17 ) ) / 8' )
  1103. 9927 FORMAT( 3X, I2, ': ABS( Largest element in L )', / 12X,
  1104. $ ' - ( 1 / ( 1 - ALPHA ) ) + THRESH' )
  1105. 9926 FORMAT( 3X, I2, ': Largest 2-Norm of 2-by-2 pivots', / 12X,
  1106. $ ' - ( ( 1 + ALPHA ) / ( 1 - ALPHA ) ) + THRESH' )
  1107. 8011 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' )
  1108. 8012 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' )
  1109. 8013 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' )
  1110. 8014 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )')
  1111. 8015 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' )
  1112. 8016 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )')
  1113. 8017 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' )
  1114. 8018 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' )
  1115. 8019 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
  1116. 8020 FORMAT(3X,I2,
  1117. $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
  1118. 8021 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
  1119. 8022 FORMAT(3X,I2,
  1120. $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
  1121. 8023 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' )
  1122. 8024 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' )
  1123. 8025 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
  1124. 8026 FORMAT(3X,I2,
  1125. $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
  1126. 8027 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
  1127. 8028 FORMAT(3X,I2,
  1128. $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
  1129. 8029 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' )
  1130. 8030 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' )
  1131. 8031 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
  1132. 8032 FORMAT(3X,I2,
  1133. $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
  1134. 8033 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
  1135. 8034 FORMAT(3X,I2,
  1136. $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
  1137. 8035 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' )
  1138. 8036 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' )
  1139. 8037 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
  1140. 8038 FORMAT(3X,I2,
  1141. $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
  1142. 8039 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
  1143. 8040 FORMAT(3X,I2,
  1144. $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
  1145. *
  1146. 8050 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' )
  1147. 8051 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' )
  1148. 8052 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' )
  1149. 8053 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )')
  1150. 8054 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' )
  1151. 8055 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )')
  1152. 8060 FORMAT( 3X, I2, ': 2-norm(svd(A) - svd(R)) / ',
  1153. $ '( max(M,N) * 2-norm(svd(R)) * EPS )' )
  1154. 8061 FORMAT( 3X, I2, ': 1-norm( A*P - Q*R ) / ( max(M,N) * 1-norm(A)',
  1155. $ ' * EPS )')
  1156. 8062 FORMAT( 3X, I2, ': 1-norm( I - Q''*Q ) / ( M * EPS )' )
  1157. 8063 FORMAT( 3X, I2, ': Returns 1.0D+100, if abs(R(K+1,K+1))',
  1158. $ ' > abs(R(K,K)), where K=1:KFACT-1' )
  1159. 8064 FORMAT( 3X, I2, ': 1-norm(Q**T * B - Q**T * B ) / ( M * EPS )')
  1160. *
  1161. RETURN
  1162. *
  1163. * End of ALAHD
  1164. *
  1165. END