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