00001 SUBROUTINE ALADHD( IOUNIT, PATH )
00002
00003
00004
00005
00006
00007
00008 CHARACTER*3 PATH
00009 INTEGER IOUNIT
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 LOGICAL CORZ, SORD
00044 CHARACTER C1, C3
00045 CHARACTER*2 P2
00046 CHARACTER*9 SYM
00047
00048
00049 LOGICAL LSAME, LSAMEN
00050 EXTERNAL LSAME, LSAMEN
00051
00052
00053
00054 IF( IOUNIT.LE.0 )
00055 $ RETURN
00056 C1 = PATH( 1: 1 )
00057 C3 = PATH( 3: 3 )
00058 P2 = PATH( 2: 3 )
00059 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
00060 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
00061 IF( .NOT.( SORD .OR. CORZ ) )
00062 $ RETURN
00063
00064 IF( LSAMEN( 2, P2, 'GE' ) ) THEN
00065
00066
00067
00068 WRITE( IOUNIT, FMT = 9999 )PATH
00069 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00070 WRITE( IOUNIT, FMT = 9989 )
00071 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00072 WRITE( IOUNIT, FMT = 9981 )1
00073 WRITE( IOUNIT, FMT = 9980 )2
00074 WRITE( IOUNIT, FMT = 9979 )3
00075 WRITE( IOUNIT, FMT = 9978 )4
00076 WRITE( IOUNIT, FMT = 9977 )5
00077 WRITE( IOUNIT, FMT = 9976 )6
00078 WRITE( IOUNIT, FMT = 9972 )7
00079 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00080
00081 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
00082
00083
00084
00085 WRITE( IOUNIT, FMT = 9998 )PATH
00086 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00087 WRITE( IOUNIT, FMT = 9988 )
00088 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00089 WRITE( IOUNIT, FMT = 9981 )1
00090 WRITE( IOUNIT, FMT = 9980 )2
00091 WRITE( IOUNIT, FMT = 9979 )3
00092 WRITE( IOUNIT, FMT = 9978 )4
00093 WRITE( IOUNIT, FMT = 9977 )5
00094 WRITE( IOUNIT, FMT = 9976 )6
00095 WRITE( IOUNIT, FMT = 9972 )7
00096 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00097
00098 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
00099
00100
00101
00102 WRITE( IOUNIT, FMT = 9997 )PATH
00103 WRITE( IOUNIT, FMT = 9987 )
00104 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00105 WRITE( IOUNIT, FMT = 9981 )1
00106 WRITE( IOUNIT, FMT = 9980 )2
00107 WRITE( IOUNIT, FMT = 9979 )3
00108 WRITE( IOUNIT, FMT = 9978 )4
00109 WRITE( IOUNIT, FMT = 9977 )5
00110 WRITE( IOUNIT, FMT = 9976 )6
00111 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00112
00113 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' )
00114 $ .OR. LSAMEN( 2, P2, 'PS' ) ) THEN
00115
00116
00117
00118
00119
00120 IF( SORD ) THEN
00121 SYM = 'Symmetric'
00122 ELSE
00123 SYM = 'Hermitian'
00124 END IF
00125 IF( LSAME( C3, 'O' ) ) THEN
00126 WRITE( IOUNIT, FMT = 9996 )PATH, SYM
00127 ELSE
00128 WRITE( IOUNIT, FMT = 9995 )PATH, SYM
00129 END IF
00130 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00131 WRITE( IOUNIT, FMT = 9985 )PATH
00132 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00133 WRITE( IOUNIT, FMT = 9975 )1
00134 WRITE( IOUNIT, FMT = 9980 )2
00135 WRITE( IOUNIT, FMT = 9979 )3
00136 WRITE( IOUNIT, FMT = 9978 )4
00137 WRITE( IOUNIT, FMT = 9977 )5
00138 WRITE( IOUNIT, FMT = 9976 )6
00139 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00140
00141 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
00142
00143
00144
00145 IF( SORD ) THEN
00146 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
00147 ELSE
00148 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
00149 END IF
00150 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00151 WRITE( IOUNIT, FMT = 9984 )PATH
00152 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00153 WRITE( IOUNIT, FMT = 9975 )1
00154 WRITE( IOUNIT, FMT = 9980 )2
00155 WRITE( IOUNIT, FMT = 9979 )3
00156 WRITE( IOUNIT, FMT = 9978 )4
00157 WRITE( IOUNIT, FMT = 9977 )5
00158 WRITE( IOUNIT, FMT = 9976 )6
00159 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00160
00161 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
00162
00163
00164
00165 IF( SORD ) THEN
00166 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
00167 ELSE
00168 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
00169 END IF
00170 WRITE( IOUNIT, FMT = 9986 )
00171 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00172 WRITE( IOUNIT, FMT = 9973 )1
00173 WRITE( IOUNIT, FMT = 9980 )2
00174 WRITE( IOUNIT, FMT = 9979 )3
00175 WRITE( IOUNIT, FMT = 9978 )4
00176 WRITE( IOUNIT, FMT = 9977 )5
00177 WRITE( IOUNIT, FMT = 9976 )6
00178 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00179
00180 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN
00181
00182
00183
00184
00185 IF( LSAME( C3, 'Y' ) ) THEN
00186 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
00187 ELSE
00188 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
00189 END IF
00190 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00191 IF( SORD ) THEN
00192 WRITE( IOUNIT, FMT = 9983 )
00193 ELSE
00194 WRITE( IOUNIT, FMT = 9982 )
00195 END IF
00196 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00197 WRITE( IOUNIT, FMT = 9974 )1
00198 WRITE( IOUNIT, FMT = 9980 )2
00199 WRITE( IOUNIT, FMT = 9979 )3
00200 WRITE( IOUNIT, FMT = 9977 )4
00201 WRITE( IOUNIT, FMT = 9978 )5
00202 WRITE( IOUNIT, FMT = 9976 )6
00203 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00204
00205 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. LSAMEN( 2, P2, 'HP' ) ) THEN
00206
00207
00208
00209
00210 IF( LSAME( C3, 'E' ) ) THEN
00211 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
00212 ELSE
00213 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
00214 END IF
00215 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00216 WRITE( IOUNIT, FMT = 9983 )
00217 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00218 WRITE( IOUNIT, FMT = 9974 )1
00219 WRITE( IOUNIT, FMT = 9980 )2
00220 WRITE( IOUNIT, FMT = 9979 )3
00221 WRITE( IOUNIT, FMT = 9977 )4
00222 WRITE( IOUNIT, FMT = 9978 )5
00223 WRITE( IOUNIT, FMT = 9976 )6
00224 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00225
00226 ELSE
00227
00228
00229
00230 WRITE( IOUNIT, FMT = 9990 )PATH
00231 END IF
00232
00233
00234
00235 9999 FORMAT( / 1X, A3, ' drivers: General dense matrices' )
00236 9998 FORMAT( / 1X, A3, ' drivers: General band matrices' )
00237 9997 FORMAT( / 1X, A3, ' drivers: General tridiagonal' )
00238 9996 FORMAT( / 1X, A3, ' drivers: ', A9,
00239 $ ' positive definite matrices' )
00240 9995 FORMAT( / 1X, A3, ' drivers: ', A9,
00241 $ ' positive definite packed matrices' )
00242 9994 FORMAT( / 1X, A3, ' drivers: ', A9,
00243 $ ' positive definite band matrices' )
00244 9993 FORMAT( / 1X, A3, ' drivers: ', A9,
00245 $ ' positive definite tridiagonal' )
00246 9992 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices' )
00247 9991 FORMAT( / 1X, A3, ' drivers: ', A9,
00248 $ ' indefinite packed matrices' )
00249 9990 FORMAT( / 1X, A3, ': No header available' )
00250
00251
00252
00253 9989 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
00254 $ '2. Upper triangular', 16X,
00255 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00256 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
00257 $ / 4X, '4. Random, CNDNUM = 2', 13X,
00258 $ '10. Scaled near underflow', / 4X, '5. First column zero',
00259 $ 14X, '11. Scaled near overflow', / 4X,
00260 $ '6. Last column zero' )
00261
00262
00263
00264 9988 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
00265 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00266 $ '2. First column zero', 15X, '6. Random, CNDNUM = 0.1/EPS',
00267 $ / 4X, '3. Last column zero', 16X,
00268 $ '7. Scaled near underflow', / 4X,
00269 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
00270
00271
00272
00273 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
00274 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
00275 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
00276 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
00277 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
00278 $ 7X, '10. Last n/2 columns zero', / 4X,
00279 $ '5. Scaled near underflow', 10X,
00280 $ '11. Scaled near underflow', / 4X,
00281 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
00282
00283
00284
00285 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
00286 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
00287 $ / 4X, '2. Random, CNDNUM = 2', 14X,
00288 $ '8. First row and column zero', / 4X,
00289 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
00290 $ '9. Last row and column zero', / 4X,
00291 $ '4. Random, CNDNUM = 0.1/EPS', 7X,
00292 $ '10. Middle row and column zero', / 4X,
00293 $ '5. Scaled near underflow', 10X,
00294 $ '11. Scaled near underflow', / 4X,
00295 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
00296
00297
00298
00299 9985 FORMAT( 4X, '1. Diagonal', 24X,
00300 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00301 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
00302 $ / 3X, '*3. First row and column zero', 7X,
00303 $ '8. Scaled near underflow', / 3X,
00304 $ '*4. Last row and column zero', 8X,
00305 $ '9. Scaled near overflow', / 3X,
00306 $ '*5. Middle row and column zero', / 3X,
00307 $ '(* - tests error exits from ', A3,
00308 $ 'TRF, no test ratios are computed)' )
00309
00310
00311
00312 9984 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
00313 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
00314 $ '*2. First row and column zero', 7X,
00315 $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
00316 $ '*3. Last row and column zero', 8X,
00317 $ '7. Scaled near underflow', / 3X,
00318 $ '*4. Middle row and column zero', 6X,
00319 $ '8. Scaled near overflow', / 3X,
00320 $ '(* - tests error exits from ', A3,
00321 $ 'TRF, no test ratios are computed)' )
00322
00323
00324
00325 9983 FORMAT( 4X, '1. Diagonal', 24X,
00326 $ '6. Last n/2 rows and columns zero', / 4X,
00327 $ '2. Random, CNDNUM = 2', 14X,
00328 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00329 $ '3. First row and column zero', 7X,
00330 $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
00331 $ '4. Last row and column zero', 8X,
00332 $ '9. Scaled near underflow', / 4X,
00333 $ '5. Middle row and column zero', 5X,
00334 $ '10. Scaled near overflow' )
00335
00336
00337
00338 9982 FORMAT( 4X, '1. Diagonal', 24X,
00339 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00340 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
00341 $ / 4X, '3. First row and column zero', 7X,
00342 $ '9. Scaled near underflow', / 4X,
00343 $ '4. Last row and column zero', 7X,
00344 $ '10. Scaled near overflow', / 4X,
00345 $ '5. Middle row and column zero', 5X,
00346 $ '11. Block diagonal matrix', / 4X,
00347 $ '6. Last n/2 rows and columns zero' )
00348
00349
00350
00351 9981 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
00352 9980 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
00353 $ '( norm(A) * norm(X) * EPS )' )
00354 9979 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
00355 $ '( norm(XACT) * CNDNUM * EPS )' )
00356 9978 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
00357 $ '( norm(XACT) * (error bound) )' )
00358 9977 FORMAT( 3X, I2, ': (backward error) / EPS' )
00359 9976 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
00360 9975 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
00361 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
00362 $ )
00363 9974 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
00364 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
00365 $ )
00366 9973 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
00367 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
00368 $ )
00369 9972 FORMAT( 3X, I2, ': abs( WORK(1) - RPVGRW ) /',
00370 $ ' ( max( WORK(1), RPVGRW ) * EPS )' )
00371
00372 RETURN
00373
00374
00375
00376 END