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

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