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