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

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