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