1 SUBROUTINE ALADHD( IOUNIT, PATH )
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER IOUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ALADHD prints header information for the driver routines 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 * The first character must be one of S, D, C, or Z (C or Z only
40 * if complex).
41 *
42 * .. Local Scalars ..
43 LOGICAL CORZ, SORD
44 CHARACTER C1, C3
45 CHARACTER*2 P2
46 CHARACTER*9 SYM
47 * ..
48 * .. External Functions ..
49 LOGICAL LSAME, LSAMEN
50 EXTERNAL LSAME, LSAMEN
51 * ..
52 * .. Executable Statements ..
53 *
54 IF( IOUNIT.LE.0 )
55 $ RETURN
56 C1 = PATH( 1: 1 )
57 C3 = PATH( 3: 3 )
58 P2 = PATH( 2: 3 )
59 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
60 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
61 IF( .NOT.( SORD .OR. CORZ ) )
62 $ RETURN
63 *
64 IF( LSAMEN( 2, P2, 'GE' ) ) THEN
65 *
66 * GE: General dense
67 *
68 WRITE( IOUNIT, FMT = 9999 )PATH
69 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
70 WRITE( IOUNIT, FMT = 9989 )
71 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
72 WRITE( IOUNIT, FMT = 9981 )1
73 WRITE( IOUNIT, FMT = 9980 )2
74 WRITE( IOUNIT, FMT = 9979 )3
75 WRITE( IOUNIT, FMT = 9978 )4
76 WRITE( IOUNIT, FMT = 9977 )5
77 WRITE( IOUNIT, FMT = 9976 )6
78 WRITE( IOUNIT, FMT = 9972 )7
79 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
80 *
81 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
82 *
83 * GB: General band
84 *
85 WRITE( IOUNIT, FMT = 9998 )PATH
86 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
87 WRITE( IOUNIT, FMT = 9988 )
88 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
89 WRITE( IOUNIT, FMT = 9981 )1
90 WRITE( IOUNIT, FMT = 9980 )2
91 WRITE( IOUNIT, FMT = 9979 )3
92 WRITE( IOUNIT, FMT = 9978 )4
93 WRITE( IOUNIT, FMT = 9977 )5
94 WRITE( IOUNIT, FMT = 9976 )6
95 WRITE( IOUNIT, FMT = 9972 )7
96 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
97 *
98 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
99 *
100 * GT: General tridiagonal
101 *
102 WRITE( IOUNIT, FMT = 9997 )PATH
103 WRITE( IOUNIT, FMT = 9987 )
104 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
105 WRITE( IOUNIT, FMT = 9981 )1
106 WRITE( IOUNIT, FMT = 9980 )2
107 WRITE( IOUNIT, FMT = 9979 )3
108 WRITE( IOUNIT, FMT = 9978 )4
109 WRITE( IOUNIT, FMT = 9977 )5
110 WRITE( IOUNIT, FMT = 9976 )6
111 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
112 *
113 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' )
114 $ .OR. LSAMEN( 2, P2, 'PS' ) ) THEN
115 *
116 * PO: Positive definite full
117 * PS: Positive definite full
118 * PP: Positive definite packed
119 *
120 IF( SORD ) THEN
121 SYM = 'Symmetric'
122 ELSE
123 SYM = 'Hermitian'
124 END IF
125 IF( LSAME( C3, 'O' ) ) THEN
126 WRITE( IOUNIT, FMT = 9996 )PATH, SYM
127 ELSE
128 WRITE( IOUNIT, FMT = 9995 )PATH, SYM
129 END IF
130 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
131 WRITE( IOUNIT, FMT = 9985 )PATH
132 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
133 WRITE( IOUNIT, FMT = 9975 )1
134 WRITE( IOUNIT, FMT = 9980 )2
135 WRITE( IOUNIT, FMT = 9979 )3
136 WRITE( IOUNIT, FMT = 9978 )4
137 WRITE( IOUNIT, FMT = 9977 )5
138 WRITE( IOUNIT, FMT = 9976 )6
139 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
140 *
141 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
142 *
143 * PB: Positive definite band
144 *
145 IF( SORD ) THEN
146 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
147 ELSE
148 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
149 END IF
150 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
151 WRITE( IOUNIT, FMT = 9984 )PATH
152 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
153 WRITE( IOUNIT, FMT = 9975 )1
154 WRITE( IOUNIT, FMT = 9980 )2
155 WRITE( IOUNIT, FMT = 9979 )3
156 WRITE( IOUNIT, FMT = 9978 )4
157 WRITE( IOUNIT, FMT = 9977 )5
158 WRITE( IOUNIT, FMT = 9976 )6
159 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
160 *
161 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
162 *
163 * PT: Positive definite tridiagonal
164 *
165 IF( SORD ) THEN
166 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
167 ELSE
168 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
169 END IF
170 WRITE( IOUNIT, FMT = 9986 )
171 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
172 WRITE( IOUNIT, FMT = 9973 )1
173 WRITE( IOUNIT, FMT = 9980 )2
174 WRITE( IOUNIT, FMT = 9979 )3
175 WRITE( IOUNIT, FMT = 9978 )4
176 WRITE( IOUNIT, FMT = 9977 )5
177 WRITE( IOUNIT, FMT = 9976 )6
178 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
179 *
180 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN
181 *
182 * SY: Symmetric indefinite full
183 * SP: Symmetric indefinite packed
184 *
185 IF( LSAME( C3, 'Y' ) ) THEN
186 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
187 ELSE
188 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
189 END IF
190 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
191 IF( SORD ) THEN
192 WRITE( IOUNIT, FMT = 9983 )
193 ELSE
194 WRITE( IOUNIT, FMT = 9982 )
195 END IF
196 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
197 WRITE( IOUNIT, FMT = 9974 )1
198 WRITE( IOUNIT, FMT = 9980 )2
199 WRITE( IOUNIT, FMT = 9979 )3
200 WRITE( IOUNIT, FMT = 9977 )4
201 WRITE( IOUNIT, FMT = 9978 )5
202 WRITE( IOUNIT, FMT = 9976 )6
203 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
204 *
205 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. LSAMEN( 2, P2, 'HP' ) ) THEN
206 *
207 * HE: Hermitian indefinite full
208 * HP: Hermitian indefinite packed
209 *
210 IF( LSAME( C3, 'E' ) ) THEN
211 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
212 ELSE
213 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
214 END IF
215 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
216 WRITE( IOUNIT, FMT = 9983 )
217 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
218 WRITE( IOUNIT, FMT = 9974 )1
219 WRITE( IOUNIT, FMT = 9980 )2
220 WRITE( IOUNIT, FMT = 9979 )3
221 WRITE( IOUNIT, FMT = 9977 )4
222 WRITE( IOUNIT, FMT = 9978 )5
223 WRITE( IOUNIT, FMT = 9976 )6
224 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
225 *
226 ELSE
227 *
228 * Print error message if no header is available.
229 *
230 WRITE( IOUNIT, FMT = 9990 )PATH
231 END IF
232 *
233 * First line of header
234 *
235 9999 FORMAT( / 1X, A3, ' drivers: General dense matrices' )
236 9998 FORMAT( / 1X, A3, ' drivers: General band matrices' )
237 9997 FORMAT( / 1X, A3, ' drivers: General tridiagonal' )
238 9996 FORMAT( / 1X, A3, ' drivers: ', A9,
239 $ ' positive definite matrices' )
240 9995 FORMAT( / 1X, A3, ' drivers: ', A9,
241 $ ' positive definite packed matrices' )
242 9994 FORMAT( / 1X, A3, ' drivers: ', A9,
243 $ ' positive definite band matrices' )
244 9993 FORMAT( / 1X, A3, ' drivers: ', A9,
245 $ ' positive definite tridiagonal' )
246 9992 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices' )
247 9991 FORMAT( / 1X, A3, ' drivers: ', A9,
248 $ ' indefinite packed matrices' )
249 9990 FORMAT( / 1X, A3, ': No header available' )
250 *
251 * GE matrix types
252 *
253 9989 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
254 $ '2. Upper triangular', 16X,
255 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
256 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
257 $ / 4X, '4. Random, CNDNUM = 2', 13X,
258 $ '10. Scaled near underflow', / 4X, '5. First column zero',
259 $ 14X, '11. Scaled near overflow', / 4X,
260 $ '6. Last column zero' )
261 *
262 * GB matrix types
263 *
264 9988 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
265 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
266 $ '2. First column zero', 15X, '6. Random, CNDNUM = 0.1/EPS',
267 $ / 4X, '3. Last column zero', 16X,
268 $ '7. Scaled near underflow', / 4X,
269 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
270 *
271 * GT matrix types
272 *
273 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
274 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
275 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
276 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
277 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
278 $ 7X, '10. Last n/2 columns zero', / 4X,
279 $ '5. Scaled near underflow', 10X,
280 $ '11. Scaled near underflow', / 4X,
281 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
282 *
283 * PT matrix types
284 *
285 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
286 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
287 $ / 4X, '2. Random, CNDNUM = 2', 14X,
288 $ '8. First row and column zero', / 4X,
289 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
290 $ '9. Last row and column zero', / 4X,
291 $ '4. Random, CNDNUM = 0.1/EPS', 7X,
292 $ '10. Middle row and column zero', / 4X,
293 $ '5. Scaled near underflow', 10X,
294 $ '11. Scaled near underflow', / 4X,
295 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
296 *
297 * PO, PP matrix types
298 *
299 9985 FORMAT( 4X, '1. Diagonal', 24X,
300 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
301 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
302 $ / 3X, '*3. First row and column zero', 7X,
303 $ '8. Scaled near underflow', / 3X,
304 $ '*4. Last row and column zero', 8X,
305 $ '9. Scaled near overflow', / 3X,
306 $ '*5. Middle row and column zero', / 3X,
307 $ '(* - tests error exits from ', A3,
308 $ 'TRF, no test ratios are computed)' )
309 *
310 * PB matrix types
311 *
312 9984 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
313 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
314 $ '*2. First row and column zero', 7X,
315 $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
316 $ '*3. Last row and column zero', 8X,
317 $ '7. Scaled near underflow', / 3X,
318 $ '*4. Middle row and column zero', 6X,
319 $ '8. Scaled near overflow', / 3X,
320 $ '(* - tests error exits from ', A3,
321 $ 'TRF, no test ratios are computed)' )
322 *
323 * SSY, SSP, CHE, CHP matrix types
324 *
325 9983 FORMAT( 4X, '1. Diagonal', 24X,
326 $ '6. Last n/2 rows and columns zero', / 4X,
327 $ '2. Random, CNDNUM = 2', 14X,
328 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
329 $ '3. First row and column zero', 7X,
330 $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
331 $ '4. Last row and column zero', 8X,
332 $ '9. Scaled near underflow', / 4X,
333 $ '5. Middle row and column zero', 5X,
334 $ '10. Scaled near overflow' )
335 *
336 * CSY, CSP matrix types
337 *
338 9982 FORMAT( 4X, '1. Diagonal', 24X,
339 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
340 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
341 $ / 4X, '3. First row and column zero', 7X,
342 $ '9. Scaled near underflow', / 4X,
343 $ '4. Last row and column zero', 7X,
344 $ '10. Scaled near overflow', / 4X,
345 $ '5. Middle row and column zero', 5X,
346 $ '11. Block diagonal matrix', / 4X,
347 $ '6. Last n/2 rows and columns zero' )
348 *
349 * Test ratios
350 *
351 9981 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
352 9980 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
353 $ '( norm(A) * norm(X) * EPS )' )
354 9979 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
355 $ '( norm(XACT) * CNDNUM * EPS )' )
356 9978 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
357 $ '( norm(XACT) * (error bound) )' )
358 9977 FORMAT( 3X, I2, ': (backward error) / EPS' )
359 9976 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
360 9975 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
361 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
362 $ )
363 9974 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
364 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
365 $ )
366 9973 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
367 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
368 $ )
369 9972 FORMAT( 3X, I2, ': abs( WORK(1) - RPVGRW ) /',
370 $ ' ( max( WORK(1), RPVGRW ) * EPS )' )
371 *
372 RETURN
373 *
374 * End of ALADHD
375 *
376 END
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER IOUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ALADHD prints header information for the driver routines 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 * The first character must be one of S, D, C, or Z (C or Z only
40 * if complex).
41 *
42 * .. Local Scalars ..
43 LOGICAL CORZ, SORD
44 CHARACTER C1, C3
45 CHARACTER*2 P2
46 CHARACTER*9 SYM
47 * ..
48 * .. External Functions ..
49 LOGICAL LSAME, LSAMEN
50 EXTERNAL LSAME, LSAMEN
51 * ..
52 * .. Executable Statements ..
53 *
54 IF( IOUNIT.LE.0 )
55 $ RETURN
56 C1 = PATH( 1: 1 )
57 C3 = PATH( 3: 3 )
58 P2 = PATH( 2: 3 )
59 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
60 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
61 IF( .NOT.( SORD .OR. CORZ ) )
62 $ RETURN
63 *
64 IF( LSAMEN( 2, P2, 'GE' ) ) THEN
65 *
66 * GE: General dense
67 *
68 WRITE( IOUNIT, FMT = 9999 )PATH
69 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
70 WRITE( IOUNIT, FMT = 9989 )
71 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
72 WRITE( IOUNIT, FMT = 9981 )1
73 WRITE( IOUNIT, FMT = 9980 )2
74 WRITE( IOUNIT, FMT = 9979 )3
75 WRITE( IOUNIT, FMT = 9978 )4
76 WRITE( IOUNIT, FMT = 9977 )5
77 WRITE( IOUNIT, FMT = 9976 )6
78 WRITE( IOUNIT, FMT = 9972 )7
79 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
80 *
81 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
82 *
83 * GB: General band
84 *
85 WRITE( IOUNIT, FMT = 9998 )PATH
86 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
87 WRITE( IOUNIT, FMT = 9988 )
88 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
89 WRITE( IOUNIT, FMT = 9981 )1
90 WRITE( IOUNIT, FMT = 9980 )2
91 WRITE( IOUNIT, FMT = 9979 )3
92 WRITE( IOUNIT, FMT = 9978 )4
93 WRITE( IOUNIT, FMT = 9977 )5
94 WRITE( IOUNIT, FMT = 9976 )6
95 WRITE( IOUNIT, FMT = 9972 )7
96 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
97 *
98 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
99 *
100 * GT: General tridiagonal
101 *
102 WRITE( IOUNIT, FMT = 9997 )PATH
103 WRITE( IOUNIT, FMT = 9987 )
104 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
105 WRITE( IOUNIT, FMT = 9981 )1
106 WRITE( IOUNIT, FMT = 9980 )2
107 WRITE( IOUNIT, FMT = 9979 )3
108 WRITE( IOUNIT, FMT = 9978 )4
109 WRITE( IOUNIT, FMT = 9977 )5
110 WRITE( IOUNIT, FMT = 9976 )6
111 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
112 *
113 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' )
114 $ .OR. LSAMEN( 2, P2, 'PS' ) ) THEN
115 *
116 * PO: Positive definite full
117 * PS: Positive definite full
118 * PP: Positive definite packed
119 *
120 IF( SORD ) THEN
121 SYM = 'Symmetric'
122 ELSE
123 SYM = 'Hermitian'
124 END IF
125 IF( LSAME( C3, 'O' ) ) THEN
126 WRITE( IOUNIT, FMT = 9996 )PATH, SYM
127 ELSE
128 WRITE( IOUNIT, FMT = 9995 )PATH, SYM
129 END IF
130 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
131 WRITE( IOUNIT, FMT = 9985 )PATH
132 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
133 WRITE( IOUNIT, FMT = 9975 )1
134 WRITE( IOUNIT, FMT = 9980 )2
135 WRITE( IOUNIT, FMT = 9979 )3
136 WRITE( IOUNIT, FMT = 9978 )4
137 WRITE( IOUNIT, FMT = 9977 )5
138 WRITE( IOUNIT, FMT = 9976 )6
139 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
140 *
141 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
142 *
143 * PB: Positive definite band
144 *
145 IF( SORD ) THEN
146 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
147 ELSE
148 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
149 END IF
150 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
151 WRITE( IOUNIT, FMT = 9984 )PATH
152 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
153 WRITE( IOUNIT, FMT = 9975 )1
154 WRITE( IOUNIT, FMT = 9980 )2
155 WRITE( IOUNIT, FMT = 9979 )3
156 WRITE( IOUNIT, FMT = 9978 )4
157 WRITE( IOUNIT, FMT = 9977 )5
158 WRITE( IOUNIT, FMT = 9976 )6
159 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
160 *
161 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
162 *
163 * PT: Positive definite tridiagonal
164 *
165 IF( SORD ) THEN
166 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
167 ELSE
168 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
169 END IF
170 WRITE( IOUNIT, FMT = 9986 )
171 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
172 WRITE( IOUNIT, FMT = 9973 )1
173 WRITE( IOUNIT, FMT = 9980 )2
174 WRITE( IOUNIT, FMT = 9979 )3
175 WRITE( IOUNIT, FMT = 9978 )4
176 WRITE( IOUNIT, FMT = 9977 )5
177 WRITE( IOUNIT, FMT = 9976 )6
178 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
179 *
180 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN
181 *
182 * SY: Symmetric indefinite full
183 * SP: Symmetric indefinite packed
184 *
185 IF( LSAME( C3, 'Y' ) ) THEN
186 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
187 ELSE
188 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
189 END IF
190 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
191 IF( SORD ) THEN
192 WRITE( IOUNIT, FMT = 9983 )
193 ELSE
194 WRITE( IOUNIT, FMT = 9982 )
195 END IF
196 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
197 WRITE( IOUNIT, FMT = 9974 )1
198 WRITE( IOUNIT, FMT = 9980 )2
199 WRITE( IOUNIT, FMT = 9979 )3
200 WRITE( IOUNIT, FMT = 9977 )4
201 WRITE( IOUNIT, FMT = 9978 )5
202 WRITE( IOUNIT, FMT = 9976 )6
203 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
204 *
205 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. LSAMEN( 2, P2, 'HP' ) ) THEN
206 *
207 * HE: Hermitian indefinite full
208 * HP: Hermitian indefinite packed
209 *
210 IF( LSAME( C3, 'E' ) ) THEN
211 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
212 ELSE
213 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
214 END IF
215 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
216 WRITE( IOUNIT, FMT = 9983 )
217 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
218 WRITE( IOUNIT, FMT = 9974 )1
219 WRITE( IOUNIT, FMT = 9980 )2
220 WRITE( IOUNIT, FMT = 9979 )3
221 WRITE( IOUNIT, FMT = 9977 )4
222 WRITE( IOUNIT, FMT = 9978 )5
223 WRITE( IOUNIT, FMT = 9976 )6
224 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
225 *
226 ELSE
227 *
228 * Print error message if no header is available.
229 *
230 WRITE( IOUNIT, FMT = 9990 )PATH
231 END IF
232 *
233 * First line of header
234 *
235 9999 FORMAT( / 1X, A3, ' drivers: General dense matrices' )
236 9998 FORMAT( / 1X, A3, ' drivers: General band matrices' )
237 9997 FORMAT( / 1X, A3, ' drivers: General tridiagonal' )
238 9996 FORMAT( / 1X, A3, ' drivers: ', A9,
239 $ ' positive definite matrices' )
240 9995 FORMAT( / 1X, A3, ' drivers: ', A9,
241 $ ' positive definite packed matrices' )
242 9994 FORMAT( / 1X, A3, ' drivers: ', A9,
243 $ ' positive definite band matrices' )
244 9993 FORMAT( / 1X, A3, ' drivers: ', A9,
245 $ ' positive definite tridiagonal' )
246 9992 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices' )
247 9991 FORMAT( / 1X, A3, ' drivers: ', A9,
248 $ ' indefinite packed matrices' )
249 9990 FORMAT( / 1X, A3, ': No header available' )
250 *
251 * GE matrix types
252 *
253 9989 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
254 $ '2. Upper triangular', 16X,
255 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
256 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
257 $ / 4X, '4. Random, CNDNUM = 2', 13X,
258 $ '10. Scaled near underflow', / 4X, '5. First column zero',
259 $ 14X, '11. Scaled near overflow', / 4X,
260 $ '6. Last column zero' )
261 *
262 * GB matrix types
263 *
264 9988 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
265 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
266 $ '2. First column zero', 15X, '6. Random, CNDNUM = 0.1/EPS',
267 $ / 4X, '3. Last column zero', 16X,
268 $ '7. Scaled near underflow', / 4X,
269 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
270 *
271 * GT matrix types
272 *
273 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
274 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
275 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
276 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
277 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
278 $ 7X, '10. Last n/2 columns zero', / 4X,
279 $ '5. Scaled near underflow', 10X,
280 $ '11. Scaled near underflow', / 4X,
281 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
282 *
283 * PT matrix types
284 *
285 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
286 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
287 $ / 4X, '2. Random, CNDNUM = 2', 14X,
288 $ '8. First row and column zero', / 4X,
289 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
290 $ '9. Last row and column zero', / 4X,
291 $ '4. Random, CNDNUM = 0.1/EPS', 7X,
292 $ '10. Middle row and column zero', / 4X,
293 $ '5. Scaled near underflow', 10X,
294 $ '11. Scaled near underflow', / 4X,
295 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
296 *
297 * PO, PP matrix types
298 *
299 9985 FORMAT( 4X, '1. Diagonal', 24X,
300 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
301 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
302 $ / 3X, '*3. First row and column zero', 7X,
303 $ '8. Scaled near underflow', / 3X,
304 $ '*4. Last row and column zero', 8X,
305 $ '9. Scaled near overflow', / 3X,
306 $ '*5. Middle row and column zero', / 3X,
307 $ '(* - tests error exits from ', A3,
308 $ 'TRF, no test ratios are computed)' )
309 *
310 * PB matrix types
311 *
312 9984 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
313 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
314 $ '*2. First row and column zero', 7X,
315 $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
316 $ '*3. Last row and column zero', 8X,
317 $ '7. Scaled near underflow', / 3X,
318 $ '*4. Middle row and column zero', 6X,
319 $ '8. Scaled near overflow', / 3X,
320 $ '(* - tests error exits from ', A3,
321 $ 'TRF, no test ratios are computed)' )
322 *
323 * SSY, SSP, CHE, CHP matrix types
324 *
325 9983 FORMAT( 4X, '1. Diagonal', 24X,
326 $ '6. Last n/2 rows and columns zero', / 4X,
327 $ '2. Random, CNDNUM = 2', 14X,
328 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
329 $ '3. First row and column zero', 7X,
330 $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
331 $ '4. Last row and column zero', 8X,
332 $ '9. Scaled near underflow', / 4X,
333 $ '5. Middle row and column zero', 5X,
334 $ '10. Scaled near overflow' )
335 *
336 * CSY, CSP matrix types
337 *
338 9982 FORMAT( 4X, '1. Diagonal', 24X,
339 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
340 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
341 $ / 4X, '3. First row and column zero', 7X,
342 $ '9. Scaled near underflow', / 4X,
343 $ '4. Last row and column zero', 7X,
344 $ '10. Scaled near overflow', / 4X,
345 $ '5. Middle row and column zero', 5X,
346 $ '11. Block diagonal matrix', / 4X,
347 $ '6. Last n/2 rows and columns zero' )
348 *
349 * Test ratios
350 *
351 9981 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
352 9980 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
353 $ '( norm(A) * norm(X) * EPS )' )
354 9979 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
355 $ '( norm(XACT) * CNDNUM * EPS )' )
356 9978 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
357 $ '( norm(XACT) * (error bound) )' )
358 9977 FORMAT( 3X, I2, ': (backward error) / EPS' )
359 9976 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
360 9975 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
361 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
362 $ )
363 9974 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
364 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
365 $ )
366 9973 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
367 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
368 $ )
369 9972 FORMAT( 3X, I2, ': abs( WORK(1) - RPVGRW ) /',
370 $ ' ( max( WORK(1), RPVGRW ) * EPS )' )
371 *
372 RETURN
373 *
374 * End of ALADHD
375 *
376 END