112 LOGICAL LSAME, LSAMEN
124 IF( .NOT.( sord .OR. corz ) )
127 IF(
lsamen( 2, p2,
'GE' ) )
THEN
131 WRITE( iounit, fmt = 9999 )path
132 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
133 WRITE( iounit, fmt = 9989 )
134 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
135 WRITE( iounit, fmt = 9981 )1
136 WRITE( iounit, fmt = 9980 )2
137 WRITE( iounit, fmt = 9979 )3
138 WRITE( iounit, fmt = 9978 )4
139 WRITE( iounit, fmt = 9977 )5
140 WRITE( iounit, fmt = 9976 )6
141 WRITE( iounit, fmt = 9972 )7
142 WRITE( iounit, fmt =
'( '' Messages:'' )' )
144 ELSE IF(
lsamen( 2, p2,
'GB' ) )
THEN
148 WRITE( iounit, fmt = 9998 )path
149 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
150 WRITE( iounit, fmt = 9988 )
151 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
152 WRITE( iounit, fmt = 9981 )1
153 WRITE( iounit, fmt = 9980 )2
154 WRITE( iounit, fmt = 9979 )3
155 WRITE( iounit, fmt = 9978 )4
156 WRITE( iounit, fmt = 9977 )5
157 WRITE( iounit, fmt = 9976 )6
158 WRITE( iounit, fmt = 9972 )7
159 WRITE( iounit, fmt =
'( '' Messages:'' )' )
161 ELSE IF(
lsamen( 2, p2,
'GT' ) )
THEN
165 WRITE( iounit, fmt = 9997 )path
166 WRITE( iounit, fmt = 9987 )
167 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
168 WRITE( iounit, fmt = 9981 )1
169 WRITE( iounit, fmt = 9980 )2
170 WRITE( iounit, fmt = 9979 )3
171 WRITE( iounit, fmt = 9978 )4
172 WRITE( iounit, fmt = 9977 )5
173 WRITE( iounit, fmt = 9976 )6
174 WRITE( iounit, fmt =
'( '' Messages:'' )' )
176 ELSE IF(
lsamen( 2, p2,
'PO' ) .OR.
lsamen( 2, p2,
'PP' )
177 $ .OR.
lsamen( 2, p2,
'PS' ) )
THEN
188 IF(
lsame( c3,
'O' ) )
THEN
189 WRITE( iounit, fmt = 9996 )path, sym
191 WRITE( iounit, fmt = 9995 )path, sym
193 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
194 WRITE( iounit, fmt = 9985 )path
195 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
196 WRITE( iounit, fmt = 9975 )1
197 WRITE( iounit, fmt = 9980 )2
198 WRITE( iounit, fmt = 9979 )3
199 WRITE( iounit, fmt = 9978 )4
200 WRITE( iounit, fmt = 9977 )5
201 WRITE( iounit, fmt = 9976 )6
202 WRITE( iounit, fmt =
'( '' Messages:'' )' )
204 ELSE IF(
lsamen( 2, p2,
'PB' ) )
THEN
209 WRITE( iounit, fmt = 9994 )path,
'Symmetric'
211 WRITE( iounit, fmt = 9994 )path,
'Hermitian'
213 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
214 WRITE( iounit, fmt = 9984 )path
215 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
216 WRITE( iounit, fmt = 9975 )1
217 WRITE( iounit, fmt = 9980 )2
218 WRITE( iounit, fmt = 9979 )3
219 WRITE( iounit, fmt = 9978 )4
220 WRITE( iounit, fmt = 9977 )5
221 WRITE( iounit, fmt = 9976 )6
222 WRITE( iounit, fmt =
'( '' Messages:'' )' )
224 ELSE IF(
lsamen( 2, p2,
'PT' ) )
THEN
229 WRITE( iounit, fmt = 9993 )path,
'Symmetric'
231 WRITE( iounit, fmt = 9993 )path,
'Hermitian'
233 WRITE( iounit, fmt = 9986 )
234 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
235 WRITE( iounit, fmt = 9973 )1
236 WRITE( iounit, fmt = 9980 )2
237 WRITE( iounit, fmt = 9979 )3
238 WRITE( iounit, fmt = 9978 )4
239 WRITE( iounit, fmt = 9977 )5
240 WRITE( iounit, fmt = 9976 )6
241 WRITE( iounit, fmt =
'( '' Messages:'' )' )
243 ELSE IF(
lsamen( 2, p2,
'SY' ) .OR.
lsamen( 2, p2,
'SP' ) )
THEN
250 IF(
lsame( c3,
'Y' ) )
THEN
251 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
253 WRITE( iounit, fmt = 9991 )path,
'Symmetric'
255 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
257 WRITE( iounit, fmt = 9983 )
259 WRITE( iounit, fmt = 9982 )
261 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
262 WRITE( iounit, fmt = 9974 )1
263 WRITE( iounit, fmt = 9980 )2
264 WRITE( iounit, fmt = 9979 )3
265 WRITE( iounit, fmt = 9977 )4
266 WRITE( iounit, fmt = 9978 )5
267 WRITE( iounit, fmt = 9976 )6
268 WRITE( iounit, fmt =
'( '' Messages:'' )' )
270 ELSE IF(
lsamen( 2, p2,
'SR' ) .OR.
lsamen( 2, p2,
'SK') )
THEN
281 WRITE( iounit, fmt = 9992 )path,
'Symmetric'
283 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
285 WRITE( iounit, fmt = 9983 )
287 WRITE( iounit, fmt = 9982 )
290 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
291 WRITE( iounit, fmt = 9974 )1
292 WRITE( iounit, fmt = 9980 )2
293 WRITE( iounit, fmt = 9979 )3
294 WRITE( iounit, fmt =
'( '' Messages:'' )' )
296 ELSE IF(
lsamen( 2, p2,
'HA' ) )
THEN
300 WRITE( iounit, fmt = 9971 )path,
'Hermitian'
302 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
303 WRITE( iounit, fmt = 9983 )
305 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
306 WRITE( iounit, fmt = 9974 )1
307 WRITE( iounit, fmt = 9980 )2
308 WRITE( iounit, fmt = 9979 )3
309 WRITE( iounit, fmt = 9977 )4
310 WRITE( iounit, fmt = 9978 )5
311 WRITE( iounit, fmt = 9976 )6
312 WRITE( iounit, fmt =
'( '' Messages:'' )' )
315 ELSE IF(
lsamen( 2, p2,
'HE' ) .OR.
316 $
lsamen( 2, p2,
'HP' ) )
THEN
323 IF(
lsame( c3,
'E' ) )
THEN
324 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
326 WRITE( iounit, fmt = 9991 )path,
'Hermitian'
329 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
330 WRITE( iounit, fmt = 9983 )
332 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
333 WRITE( iounit, fmt = 9974 )1
334 WRITE( iounit, fmt = 9980 )2
335 WRITE( iounit, fmt = 9979 )3
336 WRITE( iounit, fmt = 9977 )4
337 WRITE( iounit, fmt = 9978 )5
338 WRITE( iounit, fmt = 9976 )6
339 WRITE( iounit, fmt =
'( '' Messages:'' )' )
341 ELSE IF(
lsamen( 2, p2,
'HR' ) .OR.
lsamen( 2, p2,
'HK' ) )
THEN
352 WRITE( iounit, fmt = 9992 )path,
'Hermitian'
354 WRITE( iounit, fmt =
'( '' Matrix types:'' )' )
355 WRITE( iounit, fmt = 9983 )
357 WRITE( iounit, fmt =
'( '' Test ratios:'' )' )
358 WRITE( iounit, fmt = 9974 )1
359 WRITE( iounit, fmt = 9980 )2
360 WRITE( iounit, fmt = 9979 )3
361 WRITE( iounit, fmt =
'( '' Messages:'' )' )
367 WRITE( iounit, fmt = 9990 )path
372 9999
FORMAT( / 1x, a3,
' drivers: General dense matrices' )
373 9998
FORMAT( / 1x, a3,
' drivers: General band matrices' )
374 9997
FORMAT( / 1x, a3,
' drivers: General tridiagonal' )
375 9996
FORMAT( / 1x, a3,
' drivers: ', a9,
376 $
' positive definite matrices' )
377 9995
FORMAT( / 1x, a3,
' drivers: ', a9,
378 $
' positive definite packed matrices' )
379 9994
FORMAT( / 1x, a3,
' drivers: ', a9,
380 $
' positive definite band matrices' )
381 9993
FORMAT( / 1x, a3,
' drivers: ', a9,
382 $
' positive definite tridiagonal' )
383 9971
FORMAT( / 1x, a3,
' drivers: ', a9,
' indefinite matrices',
384 $
', "Aasen" Algorithm' )
385 9992
FORMAT( / 1x, a3,
' drivers: ', a9,
' indefinite matrices',
386 $
', "rook" (bounded Bunch-Kaufman) pivoting' )
387 9991
FORMAT( / 1x, a3,
' drivers: ', a9,
388 $
' indefinite packed matrices',
389 $
', partial (Bunch-Kaufman) pivoting' )
390 9891
FORMAT( / 1x, a3,
' drivers: ', a9,
391 $
' indefinite packed matrices',
392 $
', "rook" (bounded Bunch-Kaufman) pivoting' )
393 9990
FORMAT( / 1x, a3,
': No header available' )
397 9989
FORMAT( 4x,
'1. Diagonal', 24x,
'7. Last n/2 columns zero', / 4x,
398 $
'2. Upper triangular', 16x,
399 $
'8. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
400 $
'3. Lower triangular', 16x,
'9. Random, CNDNUM = 0.1/EPS',
401 $ / 4x,
'4. Random, CNDNUM = 2', 13x,
402 $
'10. Scaled near underflow', / 4x,
'5. First column zero',
403 $ 14x,
'11. Scaled near overflow', / 4x,
404 $
'6. Last column zero' )
408 9988
FORMAT( 4x,
'1. Random, CNDNUM = 2', 14x,
409 $
'5. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
410 $
'2. First column zero', 15x,
'6. Random, CNDNUM = 0.1/EPS',
411 $ / 4x,
'3. Last column zero', 16x,
412 $
'7. Scaled near underflow', / 4x,
413 $
'4. Last n/2 columns zero', 11x,
'8. Scaled near overflow' )
417 9987
FORMAT(
' Matrix types (1-6 have specified condition numbers):',
418 $ / 4x,
'1. Diagonal', 24x,
'7. Random, unspecified CNDNUM',
419 $ / 4x,
'2. Random, CNDNUM = 2', 14x,
'8. First column zero',
420 $ / 4x,
'3. Random, CNDNUM = sqrt(0.1/EPS)', 2x,
421 $
'9. Last column zero', / 4x,
'4. Random, CNDNUM = 0.1/EPS',
422 $ 7x,
'10. Last n/2 columns zero', / 4x,
423 $
'5. Scaled near underflow', 10x,
424 $
'11. Scaled near underflow', / 4x,
425 $
'6. Scaled near overflow', 11x,
'12. Scaled near overflow' )
429 9986
FORMAT(
' Matrix types (1-6 have specified condition numbers):',
430 $ / 4x,
'1. Diagonal', 24x,
'7. Random, unspecified CNDNUM',
431 $ / 4x,
'2. Random, CNDNUM = 2', 14x,
432 $
'8. First row and column zero', / 4x,
433 $
'3. Random, CNDNUM = sqrt(0.1/EPS)', 2x,
434 $
'9. Last row and column zero', / 4x,
435 $
'4. Random, CNDNUM = 0.1/EPS', 7x,
436 $
'10. Middle row and column zero', / 4x,
437 $
'5. Scaled near underflow', 10x,
438 $
'11. Scaled near underflow', / 4x,
439 $
'6. Scaled near overflow', 11x,
'12. Scaled near overflow' )
443 9985
FORMAT( 4x,
'1. Diagonal', 24x,
444 $
'6. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
445 $
'2. Random, CNDNUM = 2', 14x,
'7. Random, CNDNUM = 0.1/EPS',
446 $ / 3x,
'*3. First row and column zero', 7x,
447 $
'8. Scaled near underflow', / 3x,
448 $
'*4. Last row and column zero', 8x,
449 $
'9. Scaled near overflow', / 3x,
450 $
'*5. Middle row and column zero', / 3x,
451 $
'(* - tests error exits from ', a3,
452 $
'TRF, no test ratios are computed)' )
456 9984
FORMAT( 4x,
'1. Random, CNDNUM = 2', 14x,
457 $
'5. Random, CNDNUM = sqrt(0.1/EPS)', / 3x,
458 $
'*2. First row and column zero', 7x,
459 $
'6. Random, CNDNUM = 0.1/EPS', / 3x,
460 $
'*3. Last row and column zero', 8x,
461 $
'7. Scaled near underflow', / 3x,
462 $
'*4. Middle row and column zero', 6x,
463 $
'8. Scaled near overflow', / 3x,
464 $
'(* - tests error exits from ', a3,
465 $
'TRF, no test ratios are computed)' )
469 9983
FORMAT( 4x,
'1. Diagonal', 24x,
470 $
'6. Last n/2 rows and columns zero', / 4x,
471 $
'2. Random, CNDNUM = 2', 14x,
472 $
'7. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
473 $
'3. First row and column zero', 7x,
474 $
'8. Random, CNDNUM = 0.1/EPS', / 4x,
475 $
'4. Last row and column zero', 8x,
476 $
'9. Scaled near underflow', / 4x,
477 $
'5. Middle row and column zero', 5x,
478 $
'10. Scaled near overflow' )
482 9982
FORMAT( 4x,
'1. Diagonal', 24x,
483 $
'7. Random, CNDNUM = sqrt(0.1/EPS)', / 4x,
484 $
'2. Random, CNDNUM = 2', 14x,
'8. Random, CNDNUM = 0.1/EPS',
485 $ / 4x,
'3. First row and column zero', 7x,
486 $
'9. Scaled near underflow', / 4x,
487 $
'4. Last row and column zero', 7x,
488 $
'10. Scaled near overflow', / 4x,
489 $
'5. Middle row and column zero', 5x,
490 $
'11. Block diagonal matrix', / 4x,
491 $
'6. Last n/2 rows and columns zero' )
495 9981
FORMAT( 3x, i2,
': norm( L * U - A ) / ( N * norm(A) * EPS )' )
496 9980
FORMAT( 3x, i2,
': norm( B - A * X ) / ',
497 $
'( norm(A) * norm(X) * EPS )' )
498 9979
FORMAT( 3x, i2,
': norm( X - XACT ) / ',
499 $
'( norm(XACT) * CNDNUM * EPS )' )
500 9978
FORMAT( 3x, i2,
': norm( X - XACT ) / ',
501 $
'( norm(XACT) * (error bound) )' )
502 9977
FORMAT( 3x, i2,
': (backward error) / EPS' )
503 9976
FORMAT( 3x, i2,
': RCOND * CNDNUM - 1.0' )
504 9975
FORMAT( 3x, i2,
': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
505 $
', or', / 7x,
'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
507 9974
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 9973
FORMAT( 3x, i2,
': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
511 $
', or', / 7x,
'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
513 9972
FORMAT( 3x, i2,
': abs( WORK(1) - RPVGRW ) /',
514 $
' ( max( WORK(1), RPVGRW ) * EPS )' )