109 LOGICAL LSAME, LSAMEN
110 EXTERNAL lsame, lsamen
119 sord = lsame( c1,
'S' ) .OR. lsame( c1,
'D' )
120 corz = lsame( c1,
'C' ) .OR. lsame( c1,
'Z' )
121 IF( .NOT.( sord .OR. corz ) )
124 IF( lsamen( 2, p2,
'GE' ) )
THEN
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:'' )' )
141 ELSE IF( lsamen( 2, p2,
'GB' ) )
THEN
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:'' )' )
158 ELSE IF( lsamen( 2, p2,
'GT' ) )
THEN
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:'' )' )
173 ELSE IF( lsamen( 2, p2,
'PO' ) .OR. lsamen( 2, p2,
'PP' )
174 $ .OR. lsamen( 2, p2,
'PS' ) )
THEN
185 IF( lsame( c3,
'O' ) )
THEN
186 WRITE( iounit, fmt = 9996 )path, sym
188 WRITE( iounit, fmt = 9995 )path, sym
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:'' )' )
201 ELSE IF( lsamen( 2, p2,
'PB' ) )
THEN
206 WRITE( iounit, fmt = 9994 )path,
'Symmetric'
208 WRITE( iounit, fmt = 9994 )path,
'Hermitian'
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:'' )' )
221 ELSE IF( lsamen( 2, p2,
'PT' ) )
THEN
226 WRITE( iounit, fmt = 9993 )path,
'Symmetric'
228 WRITE( iounit, fmt = 9993 )path,
'Hermitian'
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:'' )' )
240 ELSE IF( lsamen( 2, p2,
'SY' ) .OR. lsamen( 2, p2,
'SP' ) )
THEN
247 IF( lsame( c3,
'Y' ) )
THEN
248 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
250 WRITE( iounit, fmt = 9991 )path,
'Symmetric'
252 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
254 WRITE( iounit, fmt = 9983 )
256 WRITE( iounit, fmt = 9982 )
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:'' )' )
267 ELSE IF( lsamen( 2, p2,
'SR' ) .OR. lsamen( 2, p2,
'SK') )
THEN
278 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
280 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
282 WRITE( iounit, fmt = 9983 )
284 WRITE( iounit, fmt = 9982 )
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:'' )' )
293 ELSE IF( lsamen( 2, p2,
'HA' ) )
THEN
297 WRITE( iounit, fmt = 9971 )path,
'Hermitian'
299 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
300 WRITE( iounit, fmt = 9983 )
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:'' )' )
312 ELSE IF( lsamen( 2, p2,
'HE' ) .OR.
313 $ lsamen( 2, p2,
'HP' ) )
THEN
320 IF( lsame( c3,
'E' ) )
THEN
321 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
323 WRITE( iounit, fmt = 9991 )path,
'Hermitian'
326 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
327 WRITE( iounit, fmt = 9983 )
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:'' )' )
338 ELSE IF( lsamen( 2, p2,
'HR' ) .OR. lsamen( 2, p2,
'HK' ) )
THEN
349 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
351 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
352 WRITE( iounit, fmt = 9983 )
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:'' )' )
364 WRITE( iounit, fmt = 9990 )path
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' )
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' )
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' )
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' )
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' )
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)' )
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)' )
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' )
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' )
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 )'
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 )'
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 )'
510 9972
FORMAT( 3x, i2,
': abs( WORK(1) - RPVGRW ) /',
511 $
' ( max( WORK(1), RPVGRW ) * EPS )' )
subroutine aladhd(iounit, path)
ALADHD