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( 11 )
 77       C3 = PATH( 33 )
 78       P2 = PATH( 23 )
 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( 11 ) // 'LATRS'
336          ELSE
337             WRITE( IOUNIT, FMT = 9989 )PATH
338             SUBNAM = PATH( 11 ) // '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( 11 ) // '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 FORMAT4X'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 FORMAT4X'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 FORMAT4X'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 FORMAT4X'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 FORMAT4X'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 FORMAT3X'RANK minus computed rank, returned by ', A, 'PSTRF' )
634 *
635 *     PB matrix types
636 *
637  9973 FORMAT4X'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 FORMAT4X'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 FORMAT4X'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 FORMAT4X'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 FORMAT3X, I2, ': norm( L * U - A )  / ( N * norm(A) * EPS )' )
753  9961 FORMAT3X, I2, ': norm( I - A*AINV ) / ',
754      $      '( N * norm(A) * norm(AINV) * EPS )' )
755  9960 FORMAT3X, I2, ': norm( B - A * X )  / ',
756      $      '( norm(A) * norm(X) * EPS )' )
757  6660 FORMAT3X, I2, ': diagonal is not non-negative')
758  9959 FORMAT3X, I2, ': norm( X - XACT )   / ',
759      $      '( norm(XACT) * CNDNUM * EPS )' )
760  9958 FORMAT3X, I2, ': norm( X - XACT )   / ',
761      $      '( norm(XACT) * CNDNUM * EPS ), refined' )
762  9957 FORMAT3X, I2, ': norm( X - XACT )   / ',
763      $      '( norm(XACT) * (error bound) )' )
764  9956 FORMAT3X, I2, ': (backward error)   / EPS' )
765  9955 FORMAT3X, I2, ': RCOND * CNDNUM - 1.0' )
766  9954 FORMAT3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
767      $      ', or'/ 7X'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
768      $       )
769  8950 FORMAT3X,
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 FORMAT3X, 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 FORMAT3X, 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 FORMAT3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
782  6950 FORMAT3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )
783      $       [RFPG]' )
784  9949 FORMAT3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
785  9948 FORMAT3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
786  9947 FORMAT3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
787  9946 FORMAT3X, I2, ': norm( I - Q''*Q )   / ( M * EPS )' )
788  9945 FORMAT3X, I2, ': norm( I - Q*Q'' )   / ( N * EPS )' )
789  9944 FORMAT3X, I2, ': norm( Q*C - Q*C )  / ''( ', A1,
790      $      ' * norm(C) * EPS )' )
791  9943 FORMAT3X, I2, ': norm( C*Q - C*Q )  / ''( ', A1,
792      $      ' * norm(C) * EPS )' )
793  9942 FORMAT3X, I2, ': norm( Q''*C - Q''*C )/ ''( ', A1,
794      $      ' * norm(C) * EPS )' )
795  9941 FORMAT3X, I2, ': norm( C*Q'' - C*Q'' )/ ''( ', A1,
796      $      ' * norm(C) * EPS )' )
797  9940 FORMAT3X, I2, ': norm(svd(A) - svd(R)) / ',
798      $      '( M * norm(svd(R)) * EPS )' )
799  9939 FORMAT3X, I2, ': norm( A*P - Q*R )     / ( M * norm(A) * EPS )'
800      $       )
801  9938 FORMAT3X, I2, ': norm( I - Q''*Q )      / ( M * EPS )' )
802  9937 FORMAT3X, 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 FORMAT3X, I2, ': norm( B - A * X )   / ',
807      $      '( max(M,N) * norm(A) * norm(X) * EPS )' )
808  9934 FORMAT3X, I2, ': norm( (A*X-B)'' *A ) / ',
809      $      '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
810  9933 FORMAT3X, I2, ': norm(svd(A)-svd(R)) / ',
811      $      '( min(M,N) * norm(svd(R)) * EPS )' )
812  9932 FORMAT3X, I2, ': Check if X is in the row space of A or A''' )
813  9931 FORMAT3X, I2, ': norm( (A*X-B)'' *A ) / ',
814      $      '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )'/ 7X,
815      $      'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ',
816      $      'otherwise'/ 7X,
817      $      'check if X is in the row space of A or A'' ',
818      $      '(overdetermined case)' )
819  9930 FORMAT3X' 7-10: same as 3-6' )
820  9929 FORMAT' Test ratios (1-3: ', A1, 'TZRQF, 4-6: ', A1,
821      $      'TZRZF):' )
822  9920 FORMAT3X' 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