LAPACK 3.12.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
aladhd.f
Go to the documentation of this file.
1*> \brief \b ALADHD
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 ALADHD( 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*> ALADHD prints header information for the driver routines 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*> Assen 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*> The first character must be one of S, D, C, or Z (C or Z only
75*> if complex).
76*> \endverbatim
77*
78* Authors:
79* ========
80*
81*> \author Univ. of Tennessee
82*> \author Univ. of California Berkeley
83*> \author Univ. of Colorado Denver
84*> \author NAG Ltd.
85*
86*> \ingroup aux_lin
87*
88* =====================================================================
89 SUBROUTINE aladhd( IOUNIT, PATH )
90*
91* -- LAPACK test routine --
92* -- LAPACK is a software package provided by Univ. of Tennessee, --
93* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
94*
95* .. Scalar Arguments ..
96 CHARACTER*3 PATH
97 INTEGER IOUNIT
98* ..
99*
100* =====================================================================
101*
102* .. Local Scalars ..
103 LOGICAL CORZ, SORD
104 CHARACTER C1, C3
105 CHARACTER*2 P2
106 CHARACTER*9 SYM
107* ..
108* .. External Functions ..
109 LOGICAL LSAME, LSAMEN
110 EXTERNAL lsame, lsamen
111* ..
112* .. Executable Statements ..
113*
114 IF( iounit.LE.0 )
115 $ RETURN
116 c1 = path( 1: 1 )
117 c3 = path( 3: 3 )
118 p2 = path( 2: 3 )
119 sord = lsame( c1, 'S' ) .OR. lsame( c1, 'D' )
120 corz = lsame( c1, 'C' ) .OR. lsame( c1, 'Z' )
121 IF( .NOT.( sord .OR. corz ) )
122 $ RETURN
123*
124 IF( lsamen( 2, p2, 'GE' ) ) THEN
125*
126* GE: General dense
127*
128 WRITE( iounit, fmt = 9999 )path
129 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
130 WRITE( iounit, fmt = 9989 )
131 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
132 WRITE( iounit, fmt = 9981 )1
133 WRITE( iounit, fmt = 9980 )2
134 WRITE( iounit, fmt = 9979 )3
135 WRITE( iounit, fmt = 9978 )4
136 WRITE( iounit, fmt = 9977 )5
137 WRITE( iounit, fmt = 9976 )6
138 WRITE( iounit, fmt = 9972 )7
139 WRITE( iounit, fmt = '( '' Messages:'' )' )
140*
141 ELSE IF( lsamen( 2, p2, 'GB' ) ) THEN
142*
143* GB: General band
144*
145 WRITE( iounit, fmt = 9998 )path
146 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
147 WRITE( iounit, fmt = 9988 )
148 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
149 WRITE( iounit, fmt = 9981 )1
150 WRITE( iounit, fmt = 9980 )2
151 WRITE( iounit, fmt = 9979 )3
152 WRITE( iounit, fmt = 9978 )4
153 WRITE( iounit, fmt = 9977 )5
154 WRITE( iounit, fmt = 9976 )6
155 WRITE( iounit, fmt = 9972 )7
156 WRITE( iounit, fmt = '( '' Messages:'' )' )
157*
158 ELSE IF( lsamen( 2, p2, 'GT' ) ) THEN
159*
160* GT: General tridiagonal
161*
162 WRITE( iounit, fmt = 9997 )path
163 WRITE( iounit, fmt = 9987 )
164 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
165 WRITE( iounit, fmt = 9981 )1
166 WRITE( iounit, fmt = 9980 )2
167 WRITE( iounit, fmt = 9979 )3
168 WRITE( iounit, fmt = 9978 )4
169 WRITE( iounit, fmt = 9977 )5
170 WRITE( iounit, fmt = 9976 )6
171 WRITE( iounit, fmt = '( '' Messages:'' )' )
172*
173 ELSE IF( lsamen( 2, p2, 'PO' ) .OR. lsamen( 2, p2, 'PP' )
174 $ .OR. lsamen( 2, p2, 'PS' ) ) THEN
175*
176* PO: Positive definite full
177* PS: Positive definite full
178* PP: Positive definite packed
179*
180 IF( sord ) THEN
181 sym = 'Symmetric'
182 ELSE
183 sym = 'Hermitian'
184 END IF
185 IF( lsame( c3, 'O' ) ) THEN
186 WRITE( iounit, fmt = 9996 )path, sym
187 ELSE
188 WRITE( iounit, fmt = 9995 )path, sym
189 END IF
190 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
191 WRITE( iounit, fmt = 9985 )path
192 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
193 WRITE( iounit, fmt = 9975 )1
194 WRITE( iounit, fmt = 9980 )2
195 WRITE( iounit, fmt = 9979 )3
196 WRITE( iounit, fmt = 9978 )4
197 WRITE( iounit, fmt = 9977 )5
198 WRITE( iounit, fmt = 9976 )6
199 WRITE( iounit, fmt = '( '' Messages:'' )' )
200*
201 ELSE IF( lsamen( 2, p2, 'PB' ) ) THEN
202*
203* PB: Positive definite band
204*
205 IF( sord ) THEN
206 WRITE( iounit, fmt = 9994 )path, 'Symmetric'
207 ELSE
208 WRITE( iounit, fmt = 9994 )path, 'Hermitian'
209 END IF
210 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
211 WRITE( iounit, fmt = 9984 )path
212 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
213 WRITE( iounit, fmt = 9975 )1
214 WRITE( iounit, fmt = 9980 )2
215 WRITE( iounit, fmt = 9979 )3
216 WRITE( iounit, fmt = 9978 )4
217 WRITE( iounit, fmt = 9977 )5
218 WRITE( iounit, fmt = 9976 )6
219 WRITE( iounit, fmt = '( '' Messages:'' )' )
220*
221 ELSE IF( lsamen( 2, p2, 'PT' ) ) THEN
222*
223* PT: Positive definite tridiagonal
224*
225 IF( sord ) THEN
226 WRITE( iounit, fmt = 9993 )path, 'Symmetric'
227 ELSE
228 WRITE( iounit, fmt = 9993 )path, 'Hermitian'
229 END IF
230 WRITE( iounit, fmt = 9986 )
231 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
232 WRITE( iounit, fmt = 9973 )1
233 WRITE( iounit, fmt = 9980 )2
234 WRITE( iounit, fmt = 9979 )3
235 WRITE( iounit, fmt = 9978 )4
236 WRITE( iounit, fmt = 9977 )5
237 WRITE( iounit, fmt = 9976 )6
238 WRITE( iounit, fmt = '( '' Messages:'' )' )
239*
240 ELSE IF( lsamen( 2, p2, 'SY' ) .OR. lsamen( 2, p2, 'SP' ) ) THEN
241*
242* SY: Symmetric indefinite full
243* with partial (Bunch-Kaufman) pivoting algorithm
244* SP: Symmetric indefinite packed
245* with partial (Bunch-Kaufman) pivoting algorithm
246*
247 IF( lsame( c3, 'Y' ) ) THEN
248 WRITE( iounit, fmt = 9992 )path, 'Symmetric'
249 ELSE
250 WRITE( iounit, fmt = 9991 )path, 'Symmetric'
251 END IF
252 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
253 IF( sord ) THEN
254 WRITE( iounit, fmt = 9983 )
255 ELSE
256 WRITE( iounit, fmt = 9982 )
257 END IF
258 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
259 WRITE( iounit, fmt = 9974 )1
260 WRITE( iounit, fmt = 9980 )2
261 WRITE( iounit, fmt = 9979 )3
262 WRITE( iounit, fmt = 9977 )4
263 WRITE( iounit, fmt = 9978 )5
264 WRITE( iounit, fmt = 9976 )6
265 WRITE( iounit, fmt = '( '' Messages:'' )' )
266*
267 ELSE IF( lsamen( 2, p2, 'SR' ) .OR. lsamen( 2, p2, 'SK') ) THEN
268*
269* SR: Symmetric indefinite full,
270* with rook (bounded Bunch-Kaufman) pivoting algorithm
271*
272* SK: Symmetric indefinite full,
273* with rook (bounded Bunch-Kaufman) pivoting algorithm,
274* ( new storage format for factors:
275* L and diagonal of D is stored in A,
276* subdiagonal of D is stored in E )
277*
278 WRITE( iounit, fmt = 9992 )path, 'Symmetric'
279*
280 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
281 IF( sord ) THEN
282 WRITE( iounit, fmt = 9983 )
283 ELSE
284 WRITE( iounit, fmt = 9982 )
285 END IF
286*
287 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
288 WRITE( iounit, fmt = 9974 )1
289 WRITE( iounit, fmt = 9980 )2
290 WRITE( iounit, fmt = 9979 )3
291 WRITE( iounit, fmt = '( '' Messages:'' )' )
292*
293 ELSE IF( lsamen( 2, p2, 'HA' ) ) THEN
294*
295* HA: Hermitian
296* Aasen algorithm
297 WRITE( iounit, fmt = 9971 )path, 'Hermitian'
298*
299 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
300 WRITE( iounit, fmt = 9983 )
301*
302 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
303 WRITE( iounit, fmt = 9974 )1
304 WRITE( iounit, fmt = 9980 )2
305 WRITE( iounit, fmt = 9979 )3
306 WRITE( iounit, fmt = 9977 )4
307 WRITE( iounit, fmt = 9978 )5
308 WRITE( iounit, fmt = 9976 )6
309 WRITE( iounit, fmt = '( '' Messages:'' )' )
310
311
312 ELSE IF( lsamen( 2, p2, 'HE' ) .OR.
313 $ lsamen( 2, p2, 'HP' ) ) THEN
314*
315* HE: Hermitian indefinite full
316* with partial (Bunch-Kaufman) pivoting algorithm
317* HP: Hermitian indefinite packed
318* with partial (Bunch-Kaufman) pivoting algorithm
319*
320 IF( lsame( c3, 'E' ) ) THEN
321 WRITE( iounit, fmt = 9992 )path, 'Hermitian'
322 ELSE
323 WRITE( iounit, fmt = 9991 )path, 'Hermitian'
324 END IF
325*
326 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
327 WRITE( iounit, fmt = 9983 )
328*
329 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
330 WRITE( iounit, fmt = 9974 )1
331 WRITE( iounit, fmt = 9980 )2
332 WRITE( iounit, fmt = 9979 )3
333 WRITE( iounit, fmt = 9977 )4
334 WRITE( iounit, fmt = 9978 )5
335 WRITE( iounit, fmt = 9976 )6
336 WRITE( iounit, fmt = '( '' Messages:'' )' )
337*
338 ELSE IF( lsamen( 2, p2, 'HR' ) .OR. lsamen( 2, p2, 'HK' ) ) THEN
339*
340* HR: Hermitian indefinite full,
341* with rook (bounded Bunch-Kaufman) pivoting algorithm
342*
343* HK: Hermitian indefinite full,
344* with rook (bounded Bunch-Kaufman) pivoting algorithm,
345* ( new storage format for factors:
346* L and diagonal of D is stored in A,
347* subdiagonal of D is stored in E )
348*
349 WRITE( iounit, fmt = 9992 )path, 'Hermitian'
350*
351 WRITE( iounit, fmt = '( '' Matrix types:'' )' )
352 WRITE( iounit, fmt = 9983 )
353*
354 WRITE( iounit, fmt = '( '' Test ratios:'' )' )
355 WRITE( iounit, fmt = 9974 )1
356 WRITE( iounit, fmt = 9980 )2
357 WRITE( iounit, fmt = 9979 )3
358 WRITE( iounit, fmt = '( '' Messages:'' )' )
359*
360 ELSE
361*
362* Print error message if no header is available.
363*
364 WRITE( iounit, fmt = 9990 )path
365 END IF
366*
367* First line of header
368*
369 9999 FORMAT( / 1x, a3, ' drivers: General dense matrices' )
370 9998 FORMAT( / 1x, a3, ' drivers: General band matrices' )
371 9997 FORMAT( / 1x, a3, ' drivers: General tridiagonal' )
372 9996 FORMAT( / 1x, a3, ' drivers: ', a9,
373 $ ' positive definite matrices' )
374 9995 FORMAT( / 1x, a3, ' drivers: ', a9,
375 $ ' positive definite packed matrices' )
376 9994 FORMAT( / 1x, a3, ' drivers: ', a9,
377 $ ' positive definite band matrices' )
378 9993 FORMAT( / 1x, a3, ' drivers: ', a9,
379 $ ' positive definite tridiagonal' )
380 9971 FORMAT( / 1x, a3, ' drivers: ', a9, ' indefinite matrices',
381 $ ', "Aasen" Algorithm' )
382 9992 FORMAT( / 1x, a3, ' drivers: ', a9, ' indefinite matrices',
383 $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
384 9991 FORMAT( / 1x, a3, ' drivers: ', a9,
385 $ ' indefinite packed matrices',
386 $ ', partial (Bunch-Kaufman) pivoting' )
387 9891 FORMAT( / 1x, a3, ' drivers: ', a9,
388 $ ' indefinite packed matrices',
389 $ ', "rook" (bounded Bunch-Kaufman) pivoting' )
390 9990 FORMAT( / 1x, a3, ': No header available' )
391*
392* GE matrix types
393*
394 9989 FORMAT( 4x, '1. Diagonal', 24x, '7. Last n/2 columns zero', / 4x,
395 $ '2. Upper triangular', 16x,
396 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
397 $ '3. Lower triangular', 16x, '9. Random, CNDNUM = 0.1/EPS',
398 $ / 4x, '4. Random, CNDNUM = 2', 13x,
399 $ '10. Scaled near underflow', / 4x, '5. First column zero',
400 $ 14x, '11. Scaled near overflow', / 4x,
401 $ '6. Last column zero' )
402*
403* GB matrix types
404*
405 9988 FORMAT( 4x, '1. Random, CNDNUM = 2', 14x,
406 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
407 $ '2. First column zero', 15x, '6. Random, CNDNUM = 0.1/EPS',
408 $ / 4x, '3. Last column zero', 16x,
409 $ '7. Scaled near underflow', / 4x,
410 $ '4. Last n/2 columns zero', 11x, '8. Scaled near overflow' )
411*
412* GT matrix types
413*
414 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
415 $ / 4x, '1. Diagonal', 24x, '7. Random, unspecified CNDNUM',
416 $ / 4x, '2. Random, CNDNUM = 2', 14x, '8. First column zero',
417 $ / 4x, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2x,
418 $ '9. Last column zero', / 4x, '4. Random, CNDNUM = 0.1/EPS',
419 $ 7x, '10. Last n/2 columns zero', / 4x,
420 $ '5. Scaled near underflow', 10x,
421 $ '11. Scaled near underflow', / 4x,
422 $ '6. Scaled near overflow', 11x, '12. Scaled near overflow' )
423*
424* PT matrix types
425*
426 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
427 $ / 4x, '1. Diagonal', 24x, '7. Random, unspecified CNDNUM',
428 $ / 4x, '2. Random, CNDNUM = 2', 14x,
429 $ '8. First row and column zero', / 4x,
430 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2x,
431 $ '9. Last row and column zero', / 4x,
432 $ '4. Random, CNDNUM = 0.1/EPS', 7x,
433 $ '10. Middle row and column zero', / 4x,
434 $ '5. Scaled near underflow', 10x,
435 $ '11. Scaled near underflow', / 4x,
436 $ '6. Scaled near overflow', 11x, '12. Scaled near overflow' )
437*
438* PO, PP matrix types
439*
440 9985 FORMAT( 4x, '1. Diagonal', 24x,
441 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
442 $ '2. Random, CNDNUM = 2', 14x, '7. Random, CNDNUM = 0.1/EPS',
443 $ / 3x, '*3. First row and column zero', 7x,
444 $ '8. Scaled near underflow', / 3x,
445 $ '*4. Last row and column zero', 8x,
446 $ '9. Scaled near overflow', / 3x,
447 $ '*5. Middle row and column zero', / 3x,
448 $ '(* - tests error exits from ', a3,
449 $ 'TRF, no test ratios are computed)' )
450*
451* PB matrix types
452*
453 9984 FORMAT( 4x, '1. Random, CNDNUM = 2', 14x,
454 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3x,
455 $ '*2. First row and column zero', 7x,
456 $ '6. Random, CNDNUM = 0.1/EPS', / 3x,
457 $ '*3. Last row and column zero', 8x,
458 $ '7. Scaled near underflow', / 3x,
459 $ '*4. Middle row and column zero', 6x,
460 $ '8. Scaled near overflow', / 3x,
461 $ '(* - tests error exits from ', a3,
462 $ 'TRF, no test ratios are computed)' )
463*
464* SSY, SSP, CHE, CHP matrix types
465*
466 9983 FORMAT( 4x, '1. Diagonal', 24x,
467 $ '6. Last n/2 rows and columns zero', / 4x,
468 $ '2. Random, CNDNUM = 2', 14x,
469 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
470 $ '3. First row and column zero', 7x,
471 $ '8. Random, CNDNUM = 0.1/EPS', / 4x,
472 $ '4. Last row and column zero', 8x,
473 $ '9. Scaled near underflow', / 4x,
474 $ '5. Middle row and column zero', 5x,
475 $ '10. Scaled near overflow' )
476*
477* CSY, CSP matrix types
478*
479 9982 FORMAT( 4x, '1. Diagonal', 24x,
480 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
481 $ '2. Random, CNDNUM = 2', 14x, '8. Random, CNDNUM = 0.1/EPS',
482 $ / 4x, '3. First row and column zero', 7x,
483 $ '9. Scaled near underflow', / 4x,
484 $ '4. Last row and column zero', 7x,
485 $ '10. Scaled near overflow', / 4x,
486 $ '5. Middle row and column zero', 5x,
487 $ '11. Block diagonal matrix', / 4x,
488 $ '6. Last n/2 rows and columns zero' )
489*
490* Test ratios
491*
492 9981 FORMAT( 3x, i2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
493 9980 FORMAT( 3x, i2, ': norm( B - A * X ) / ',
494 $ '( norm(A) * norm(X) * EPS )' )
495 9979 FORMAT( 3x, i2, ': norm( X - XACT ) / ',
496 $ '( norm(XACT) * CNDNUM * EPS )' )
497 9978 FORMAT( 3x, i2, ': norm( X - XACT ) / ',
498 $ '( norm(XACT) * (error bound) )' )
499 9977 FORMAT( 3x, i2, ': (backward error) / EPS' )
500 9976 FORMAT( 3x, i2, ': RCOND * CNDNUM - 1.0' )
501 9975 FORMAT( 3x, i2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
502 $ ', or', / 7x, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
503 $ )
504 9974 FORMAT( 3x, i2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
505 $ ', or', / 7x, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
506 $ )
507 9973 FORMAT( 3x, i2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
508 $ ', or', / 7x, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
509 $ )
510 9972 FORMAT( 3x, i2, ': abs( WORK(1) - RPVGRW ) /',
511 $ ' ( max( WORK(1), RPVGRW ) * EPS )' )
512*
513 RETURN
514*
515* End of ALADHD
516*
517 END
subroutine aladhd(iounit, path)
ALADHD
Definition aladhd.f:90