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

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