MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
alahd.f
Go to the documentation of this file.
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'
783 ' * A ) / ( M * norm(A) * EPS ) $ [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'.GE.' and MN or TRANS=''T'.LT.' and MN, ',
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