1 SUBROUTINE alahd( IOUNIT, PATH )
67 EXTERNAL lsame, lsamen
79 sord = lsame( c1,
'S' ) .OR. lsame( c1,
'D' )
80 corz = lsame( c1,
'C' ) .OR. lsame( c1,
'Z' )
81 IF( .NOT.( sord .OR. corz ) )
84 IF( lsamen( 2, p2,
'GE' ) )
THEN
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:'' )' )
102 ELSE IF( lsamen( 2, p2,
'GB' ) )
THEN
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:'' )' )
119 ELSE IF( lsamen( 2, p2,
'GT' ) )
THEN
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:'' )' )
135 ELSE IF( lsamen( 2, p2,
'PO' ) .OR. lsamen( 2, p2,
'PP' ) )
THEN
145 IF( lsame( c3,
'O' ) )
THEN
146 WRITE( iounit, fmt = 9996 )path, sym
148 WRITE( iounit, fmt = 9995 )path, sym
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:'' )' )
163 ELSE IF( lsamen( 2, p2,
'PS' ) )
THEN
172 IF( lsame( c1,
'S' ) .OR. lsame( c1,
'C' ) )
THEN
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
190 WRITE( iounit, fmt = 9994 )path,
'Symmetric'
192 WRITE( iounit, fmt = 9994 )path,
'Hermitian'
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:'' )' )
206 ELSE IF( lsamen( 2, p2,
'PT' ) )
THEN
211 WRITE( iounit, fmt = 9993 )path,
'Symmetric'
213 WRITE( iounit, fmt = 9993 )path,
'Hermitian'
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:'' )' )
226 ELSE IF( lsamen( 2, p2,
'SY' ) )
THEN
230 IF( lsame( c3,
'Y' ) )
THEN
231 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
233 WRITE( iounit, fmt = 9991 )path,
'Symmetric'
235 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
237 WRITE( iounit, fmt = 9972 )
239 WRITE( iounit, fmt = 9971 )
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:'' )' )
253 ELSE IF( lsamen( 2, p2,
'SP' ) )
THEN
257 IF( lsame( c3,
'Y' ) )
THEN
258 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
260 WRITE( iounit, fmt = 9991 )path,
'Symmetric'
262 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
264 WRITE( iounit, fmt = 9972 )
266 WRITE( iounit, fmt = 9971 )
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:'' )' )
279 ELSE IF( lsamen( 2, p2,
'HE' ) )
THEN
283 IF( lsame( c3,
'E' ) )
THEN
284 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
286 WRITE( iounit, fmt = 9991 )path,
'Hermitian'
288 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
290 WRITE( iounit, fmt = 9972 )
292 WRITE( iounit, fmt = 9971 )
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:'' )' )
306 ELSE IF( lsamen( 2, p2,
'HP' ) )
THEN
310 IF( lsame( c3,
'E' ) )
THEN
311 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
313 WRITE( iounit, fmt = 9991 )path,
'Hermitian'
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:'' )' )
328 ELSE IF( lsamen( 2, p2,
'TR' ) .OR. lsamen( 2, p2,
'TP' ) )
THEN
333 IF( lsame( c3,
'R' ) )
THEN
334 WRITE( iounit, fmt = 9990 )path
335 subnam = path( 1: 1 ) //
'LATRS'
337 WRITE( iounit, fmt = 9989 )path
338 subnam = path( 1: 1 ) //
'LATPS'
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:'' )' )
353 ELSE IF( lsamen( 2, p2,
'TB' ) )
THEN
357 WRITE( iounit, fmt = 9988 )path
358 subnam = path( 1: 1 ) //
'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:'' )' )
371 ELSE IF( lsamen( 2, p2,
'QR' ) )
THEN
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:'' )' )
390 ELSE IF( lsamen( 2, p2,
'LQ' ) )
THEN
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:'' )' )
407 ELSE IF( lsamen( 2, p2,
'QL' ) )
THEN
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:'' )' )
424 ELSE IF( lsamen( 2, p2,
'RQ' ) )
THEN
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:'' )' )
441 ELSE IF( lsamen( 2, p2,
'QP' ) )
THEN
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:'' )' )
453 ELSE IF( lsamen( 2, p2,
'TZ' ) )
THEN
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:'' )' )
469 ELSE IF( lsamen( 2, p2,
'LS' ) )
THEN
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:'' )' )
486 ELSE IF( lsamen( 2, p2,
'LU' ) )
THEN
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:'' )' )
497 ELSE IF( lsamen( 2, p2,
'CH' ) )
THEN
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:'' )' )
508 ELSE IF( lsamen( 2, p2,
'QS' ) )
THEN
512 WRITE( iounit, fmt = 9981 )path
513 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
514 WRITE( iounit, fmt = 9970 )
515 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
521 WRITE( iounit, fmt = 9980 )path
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'
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'
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' )
551 9979
format( 4x,
'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' )
562 9978
format( 4x,
'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' )
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' )
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' )
597 9975
format( 4x,
'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)' )
610 9974
format( 4x,
'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)' )
622 8973
format( 4x,
'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
format( 3x,
'RANK minus computed rank, returned by ', a,
'PSTRF' )
637 9973
format( 4x,
'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)' )
650 9972
format( 4x,
'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' )
663 9971
format( 4x,
'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' )
676 9970
format( 4x,
'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' )
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' )
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' )
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' )
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' )
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' )
752 9962
format( 3x, i2,
': norm( L * U - A ) / ( N * norm(A) * EPS )' )
753 9961
format( 3x, i2,
': norm( I - A*AINV ) / ',
754 $
'( N * norm(A) * norm(AINV) * EPS )' )
755 9960
format( 3x, i2,
': norm( B - A * X ) / ',
756 $
'( norm(A) * norm(X) * EPS )' )
757 6660
format( 3x, i2,
': diagonal is not non-negative')
758 9959
format( 3x, i2,
': norm( X - XACT ) / ',
759 $
'( norm(XACT) * CNDNUM * EPS )' )
760 9958
format( 3x, i2,
': norm( X - XACT ) / ',
761 $
'( norm(XACT) * CNDNUM * EPS ), refined' )
762 9957
format( 3x, i2,
': norm( X - XACT ) / ',
763 $
'( norm(XACT) * (error bound) )' )
764 9956
format( 3x, i2,
': (backward error) / EPS' )
765 9955
format( 3x, i2,
': RCOND * CNDNUM - 1.0' )
766 9954
format( 3x, i2,
': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
767 $
', or', / 7x,
'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
770 $
'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )',
772 $
'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' )
773 9953
format( 3x, i2,
': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
774 $
', or', / 7x,
'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
776 9952
format( 3x, i2,
': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
777 $
', or', / 7x,
'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
779 9951
format(
' Test ratio for ', a,
':', / 3x, i2,
780 $
': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' )
781 9950
format( 3x, i2,
': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
782 6950
format( 3x, i2,
': norm( R - Q'
783 ' * A ) / ( M * norm(A) * EPS ) $ [RFPG]' )
784 9949
format( 3x, i2,
': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
785 9948
format( 3x, i2,
': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
786 9947
format( 3x, i2,
': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
787 9946
format( 3x, i2,
': norm( I - Q''*Q ) / ( M * EPS )' )
788 9945
format( 3x, i2,
': norm( I - Q*Q'' ) / ( N * EPS )' )
789 9944
format( 3x, i2,
': norm( Q*C - Q*C ) / ',
'( ', a1,
790 $
' * norm(C) * EPS )' )
791 9943
format( 3x, i2,
': norm( C*Q - C*Q ) / ',
'( ', a1,
792 $
' * norm(C) * EPS )' )
793 9942
format( 3x, i2,
': norm( Q''*C - Q''*C )/ ',
'( ', a1,
794 $
' * norm(C) * EPS )' )
795 9941
format( 3x, i2,
': norm( C*Q'' - C*Q'' )/ ',
'( ', a1,
796 $
' * norm(C) * EPS )' )
797 9940
format( 3x, i2,
': norm(svd(A) - svd(R)) / ',
798 $
'( M * norm(svd(R)) * EPS )' )
799 9939
format( 3x, i2,
': norm( A*P - Q*R ) / ( M * norm(A) * EPS )'
801 9938
format( 3x, i2,
': norm( I - Q''*Q ) / ( M * EPS )' )
802 9937
format( 3x, i2,
': norm( A - R*Q ) / ( M * norm(A) * EPS )'
804 9936
format(
' Test ratios (1-2: ', a1,
'GELS, 3-6: ', a1,
805 $
'GELSS, 7-10: ', a1,
'GELSX):' )
806 9935
format( 3x, i2,
': norm( B - A * X ) / ',
807 $
'( max(M,N) * norm(A) * norm(X) * EPS )' )
808 9934
format( 3x, i2,
': norm( (A*X-B)'' *A ) / ',
809 $
'( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
810 9933
format( 3x, i2,
': norm(svd(A)-svd(R)) / ',
811 $
'( min(M,N) * norm(svd(R)) * EPS )' )
812 9932
format( 3x, i2,
': Check if X is in the row space of A or A''' )
813 9931
format( 3x, i2,
': norm( (A*X-B)'' *A ) / ',
814 $
'( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7x,
815 $
'if TRANS=''N'.GE.
' and MN or TRANS=''T'.LT.
' and MN, ',
817 $
'check if X is in the row space of A or A'' ',
818 $
'(overdetermined case)' )
819 9930
format( 3x,
' 7-10: same as 3-6' )
820 9929
format(
' Test ratios (1-3: ', a1,
'TZRQF, 4-6: ', a1,
822 9920
format( 3x,
' 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: ',