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