00001 SUBROUTINE ALAHD( 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
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058 LOGICAL CORZ, SORD
00059 CHARACTER C1, C3
00060 CHARACTER*2 P2
00061 CHARACTER*4 EIGCNM
00062 CHARACTER*32 SUBNAM
00063 CHARACTER*9 SYM
00064
00065
00066 LOGICAL LSAME, LSAMEN
00067 EXTERNAL LSAME, LSAMEN
00068
00069
00070 INTRINSIC LEN_TRIM
00071
00072
00073
00074 IF( IOUNIT.LE.0 )
00075 $ RETURN
00076 C1 = PATH( 1: 1 )
00077 C3 = PATH( 3: 3 )
00078 P2 = PATH( 2: 3 )
00079 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
00080 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
00081 IF( .NOT.( SORD .OR. CORZ ) )
00082 $ RETURN
00083
00084 IF( LSAMEN( 2, P2, 'GE' ) ) THEN
00085
00086
00087
00088 WRITE( IOUNIT, FMT = 9999 )PATH
00089 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00090 WRITE( IOUNIT, FMT = 9979 )
00091 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00092 WRITE( IOUNIT, FMT = 9962 )1
00093 WRITE( IOUNIT, FMT = 9961 )2
00094 WRITE( IOUNIT, FMT = 9960 )3
00095 WRITE( IOUNIT, FMT = 9959 )4
00096 WRITE( IOUNIT, FMT = 9958 )5
00097 WRITE( IOUNIT, FMT = 9957 )6
00098 WRITE( IOUNIT, FMT = 9956 )7
00099 WRITE( IOUNIT, FMT = 9955 )8
00100 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00101
00102 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
00103
00104
00105
00106 WRITE( IOUNIT, FMT = 9998 )PATH
00107 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00108 WRITE( IOUNIT, FMT = 9978 )
00109 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00110 WRITE( IOUNIT, FMT = 9962 )1
00111 WRITE( IOUNIT, FMT = 9960 )2
00112 WRITE( IOUNIT, FMT = 9959 )3
00113 WRITE( IOUNIT, FMT = 9958 )4
00114 WRITE( IOUNIT, FMT = 9957 )5
00115 WRITE( IOUNIT, FMT = 9956 )6
00116 WRITE( IOUNIT, FMT = 9955 )7
00117 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00118
00119 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
00120
00121
00122
00123 WRITE( IOUNIT, FMT = 9997 )PATH
00124 WRITE( IOUNIT, FMT = 9977 )
00125 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00126 WRITE( IOUNIT, FMT = 9962 )1
00127 WRITE( IOUNIT, FMT = 9960 )2
00128 WRITE( IOUNIT, FMT = 9959 )3
00129 WRITE( IOUNIT, FMT = 9958 )4
00130 WRITE( IOUNIT, FMT = 9957 )5
00131 WRITE( IOUNIT, FMT = 9956 )6
00132 WRITE( IOUNIT, FMT = 9955 )7
00133 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00134
00135 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) ) THEN
00136
00137
00138
00139
00140 IF( SORD ) THEN
00141 SYM = 'Symmetric'
00142 ELSE
00143 SYM = 'Hermitian'
00144 END IF
00145 IF( LSAME( C3, 'O' ) ) THEN
00146 WRITE( IOUNIT, FMT = 9996 )PATH, SYM
00147 ELSE
00148 WRITE( IOUNIT, FMT = 9995 )PATH, SYM
00149 END IF
00150 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00151 WRITE( IOUNIT, FMT = 9975 )PATH
00152 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00153 WRITE( IOUNIT, FMT = 9954 )1
00154 WRITE( IOUNIT, FMT = 9961 )2
00155 WRITE( IOUNIT, FMT = 9960 )3
00156 WRITE( IOUNIT, FMT = 9959 )4
00157 WRITE( IOUNIT, FMT = 9958 )5
00158 WRITE( IOUNIT, FMT = 9957 )6
00159 WRITE( IOUNIT, FMT = 9956 )7
00160 WRITE( IOUNIT, FMT = 9955 )8
00161 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00162
00163 ELSE IF( LSAMEN( 2, P2, 'PS' ) ) THEN
00164
00165
00166
00167 IF( SORD ) THEN
00168 SYM = 'Symmetric'
00169 ELSE
00170 SYM = 'Hermitian'
00171 END IF
00172 IF( LSAME( C1, 'S' ) .OR. LSAME( C1, 'C' ) ) THEN
00173 EIGCNM = '1E04'
00174 ELSE
00175 EIGCNM = '1D12'
00176 END IF
00177 WRITE( IOUNIT, FMT = 9995 )PATH, SYM
00178 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00179 WRITE( IOUNIT, FMT = 8973 )EIGCNM, EIGCNM, EIGCNM
00180 WRITE( IOUNIT, FMT = '( '' Difference:'' )' )
00181 WRITE( IOUNIT, FMT = 8972 )C1
00182 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
00183 WRITE( IOUNIT, FMT = 8950 )
00184 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00185 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
00186
00187
00188
00189 IF( SORD ) THEN
00190 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
00191 ELSE
00192 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
00193 END IF
00194 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00195 WRITE( IOUNIT, FMT = 9973 )PATH
00196 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00197 WRITE( IOUNIT, FMT = 9954 )1
00198 WRITE( IOUNIT, FMT = 9960 )2
00199 WRITE( IOUNIT, FMT = 9959 )3
00200 WRITE( IOUNIT, FMT = 9958 )4
00201 WRITE( IOUNIT, FMT = 9957 )5
00202 WRITE( IOUNIT, FMT = 9956 )6
00203 WRITE( IOUNIT, FMT = 9955 )7
00204 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00205
00206 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
00207
00208
00209
00210 IF( SORD ) THEN
00211 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
00212 ELSE
00213 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
00214 END IF
00215 WRITE( IOUNIT, FMT = 9976 )
00216 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00217 WRITE( IOUNIT, FMT = 9952 )1
00218 WRITE( IOUNIT, FMT = 9960 )2
00219 WRITE( IOUNIT, FMT = 9959 )3
00220 WRITE( IOUNIT, FMT = 9958 )4
00221 WRITE( IOUNIT, FMT = 9957 )5
00222 WRITE( IOUNIT, FMT = 9956 )6
00223 WRITE( IOUNIT, FMT = 9955 )7
00224 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00225
00226 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN
00227
00228
00229
00230
00231 IF( LSAME( C3, 'Y' ) ) THEN
00232 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
00233 ELSE
00234 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
00235 END IF
00236 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00237 IF( SORD ) THEN
00238 WRITE( IOUNIT, FMT = 9972 )
00239 ELSE
00240 WRITE( IOUNIT, FMT = 9971 )
00241 END IF
00242 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00243 WRITE( IOUNIT, FMT = 9953 )1
00244 WRITE( IOUNIT, FMT = 9961 )2
00245 WRITE( IOUNIT, FMT = 9960 )3
00246 WRITE( IOUNIT, FMT = 9959 )4
00247 WRITE( IOUNIT, FMT = 9958 )5
00248 WRITE( IOUNIT, FMT = 9956 )6
00249 WRITE( IOUNIT, FMT = 9957 )7
00250 WRITE( IOUNIT, FMT = 9955 )8
00251 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00252
00253 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. LSAMEN( 2, P2, 'HP' ) ) THEN
00254
00255
00256
00257
00258 IF( LSAME( C3, 'E' ) ) THEN
00259 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
00260 ELSE
00261 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
00262 END IF
00263 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00264 WRITE( IOUNIT, FMT = 9972 )
00265 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00266 WRITE( IOUNIT, FMT = 9953 )1
00267 WRITE( IOUNIT, FMT = 9961 )2
00268 WRITE( IOUNIT, FMT = 9960 )3
00269 WRITE( IOUNIT, FMT = 9959 )4
00270 WRITE( IOUNIT, FMT = 9958 )5
00271 WRITE( IOUNIT, FMT = 9956 )6
00272 WRITE( IOUNIT, FMT = 9957 )7
00273 WRITE( IOUNIT, FMT = 9955 )8
00274 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00275
00276 ELSE IF( LSAMEN( 2, P2, 'TR' ) .OR. LSAMEN( 2, P2, 'TP' ) ) THEN
00277
00278
00279
00280
00281 IF( LSAME( C3, 'R' ) ) THEN
00282 WRITE( IOUNIT, FMT = 9990 )PATH
00283 SUBNAM = PATH( 1: 1 ) // 'LATRS'
00284 ELSE
00285 WRITE( IOUNIT, FMT = 9989 )PATH
00286 SUBNAM = PATH( 1: 1 ) // 'LATPS'
00287 END IF
00288 WRITE( IOUNIT, FMT = 9966 )PATH
00289 WRITE( IOUNIT, FMT = 9965 )SUBNAM(1:LEN_TRIM( SUBNAM ))
00290 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00291 WRITE( IOUNIT, FMT = 9961 )1
00292 WRITE( IOUNIT, FMT = 9960 )2
00293 WRITE( IOUNIT, FMT = 9959 )3
00294 WRITE( IOUNIT, FMT = 9958 )4
00295 WRITE( IOUNIT, FMT = 9957 )5
00296 WRITE( IOUNIT, FMT = 9956 )6
00297 WRITE( IOUNIT, FMT = 9955 )7
00298 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 8
00299 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00300
00301 ELSE IF( LSAMEN( 2, P2, 'TB' ) ) THEN
00302
00303
00304
00305 WRITE( IOUNIT, FMT = 9988 )PATH
00306 SUBNAM = PATH( 1: 1 ) // 'LATBS'
00307 WRITE( IOUNIT, FMT = 9964 )PATH
00308 WRITE( IOUNIT, FMT = 9963 )SUBNAM(1:LEN_TRIM( SUBNAM ))
00309 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00310 WRITE( IOUNIT, FMT = 9960 )1
00311 WRITE( IOUNIT, FMT = 9959 )2
00312 WRITE( IOUNIT, FMT = 9958 )3
00313 WRITE( IOUNIT, FMT = 9957 )4
00314 WRITE( IOUNIT, FMT = 9956 )5
00315 WRITE( IOUNIT, FMT = 9955 )6
00316 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 7
00317 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00318
00319 ELSE IF( LSAMEN( 2, P2, 'QR' ) ) THEN
00320
00321
00322
00323 WRITE( IOUNIT, FMT = 9987 )PATH, 'QR'
00324 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00325 WRITE( IOUNIT, FMT = 9970 )
00326 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00327 WRITE( IOUNIT, FMT = 9950 )1
00328 WRITE( IOUNIT, FMT = 9946 )2
00329 WRITE( IOUNIT, FMT = 9944 )3, 'M'
00330 WRITE( IOUNIT, FMT = 9943 )4, 'M'
00331 WRITE( IOUNIT, FMT = 9942 )5, 'M'
00332 WRITE( IOUNIT, FMT = 9941 )6, 'M'
00333 WRITE( IOUNIT, FMT = 9960 )7
00334 WRITE( IOUNIT, FMT = 6660 )8
00335 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00336
00337 ELSE IF( LSAMEN( 2, P2, 'LQ' ) ) THEN
00338
00339
00340
00341 WRITE( IOUNIT, FMT = 9987 )PATH, 'LQ'
00342 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00343 WRITE( IOUNIT, FMT = 9970 )
00344 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00345 WRITE( IOUNIT, FMT = 9949 )1
00346 WRITE( IOUNIT, FMT = 9945 )2
00347 WRITE( IOUNIT, FMT = 9944 )3, 'N'
00348 WRITE( IOUNIT, FMT = 9943 )4, 'N'
00349 WRITE( IOUNIT, FMT = 9942 )5, 'N'
00350 WRITE( IOUNIT, FMT = 9941 )6, 'N'
00351 WRITE( IOUNIT, FMT = 9960 )7
00352 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00353
00354 ELSE IF( LSAMEN( 2, P2, 'QL' ) ) THEN
00355
00356
00357
00358 WRITE( IOUNIT, FMT = 9987 )PATH, 'QL'
00359 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00360 WRITE( IOUNIT, FMT = 9970 )
00361 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00362 WRITE( IOUNIT, FMT = 9948 )1
00363 WRITE( IOUNIT, FMT = 9946 )2
00364 WRITE( IOUNIT, FMT = 9944 )3, 'M'
00365 WRITE( IOUNIT, FMT = 9943 )4, 'M'
00366 WRITE( IOUNIT, FMT = 9942 )5, 'M'
00367 WRITE( IOUNIT, FMT = 9941 )6, 'M'
00368 WRITE( IOUNIT, FMT = 9960 )7
00369 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00370
00371 ELSE IF( LSAMEN( 2, P2, 'RQ' ) ) THEN
00372
00373
00374
00375 WRITE( IOUNIT, FMT = 9987 )PATH, 'RQ'
00376 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00377 WRITE( IOUNIT, FMT = 9970 )
00378 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00379 WRITE( IOUNIT, FMT = 9947 )1
00380 WRITE( IOUNIT, FMT = 9945 )2
00381 WRITE( IOUNIT, FMT = 9944 )3, 'N'
00382 WRITE( IOUNIT, FMT = 9943 )4, 'N'
00383 WRITE( IOUNIT, FMT = 9942 )5, 'N'
00384 WRITE( IOUNIT, FMT = 9941 )6, 'N'
00385 WRITE( IOUNIT, FMT = 9960 )7
00386 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00387
00388 ELSE IF( LSAMEN( 2, P2, 'QP' ) ) THEN
00389
00390
00391
00392 WRITE( IOUNIT, FMT = 9986 )PATH
00393 WRITE( IOUNIT, FMT = 9969 )
00394 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00395 WRITE( IOUNIT, FMT = 9940 )1
00396 WRITE( IOUNIT, FMT = 9939 )2
00397 WRITE( IOUNIT, FMT = 9938 )3
00398 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00399
00400 ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN
00401
00402
00403
00404 WRITE( IOUNIT, FMT = 9985 )PATH
00405 WRITE( IOUNIT, FMT = 9968 )
00406 WRITE( IOUNIT, FMT = 9929 )C1, C1
00407 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00408 WRITE( IOUNIT, FMT = 9940 )1
00409 WRITE( IOUNIT, FMT = 9937 )2
00410 WRITE( IOUNIT, FMT = 9938 )3
00411 WRITE( IOUNIT, FMT = 9940 )4
00412 WRITE( IOUNIT, FMT = 9937 )5
00413 WRITE( IOUNIT, FMT = 9938 )6
00414 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00415
00416 ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN
00417
00418
00419
00420
00421 WRITE( IOUNIT, FMT = 9984 )PATH
00422 WRITE( IOUNIT, FMT = 9967 )
00423 WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1, C1
00424 WRITE( IOUNIT, FMT = 9935 )1
00425 WRITE( IOUNIT, FMT = 9931 )2
00426 WRITE( IOUNIT, FMT = 9933 )3
00427 WRITE( IOUNIT, FMT = 9935 )4
00428 WRITE( IOUNIT, FMT = 9934 )5
00429 WRITE( IOUNIT, FMT = 9932 )6
00430 WRITE( IOUNIT, FMT = 9920 )
00431 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00432
00433 ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN
00434
00435
00436
00437 WRITE( IOUNIT, FMT = 9983 )PATH
00438 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00439 WRITE( IOUNIT, FMT = 9979 )
00440 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
00441 WRITE( IOUNIT, FMT = 9962 )1
00442 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00443
00444 ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN
00445
00446
00447
00448 WRITE( IOUNIT, FMT = 9982 )PATH
00449 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00450 WRITE( IOUNIT, FMT = 9974 )
00451 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
00452 WRITE( IOUNIT, FMT = 9954 )1
00453 WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
00454
00455 ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN
00456
00457
00458
00459 WRITE( IOUNIT, FMT = 9981 )PATH
00460 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
00461 WRITE( IOUNIT, FMT = 9970 )
00462 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
00463
00464 ELSE
00465
00466
00467
00468 WRITE( IOUNIT, FMT = 9980 )PATH
00469 END IF
00470
00471
00472
00473 9999 FORMAT( / 1X, A3, ': General dense matrices' )
00474 9998 FORMAT( / 1X, A3, ': General band matrices' )
00475 9997 FORMAT( / 1X, A3, ': General tridiagonal' )
00476 9996 FORMAT( / 1X, A3, ': ', A9, ' positive definite matrices' )
00477 9995 FORMAT( / 1X, A3, ': ', A9, ' positive definite packed matrices'
00478 $ )
00479 9994 FORMAT( / 1X, A3, ': ', A9, ' positive definite band matrices' )
00480 9993 FORMAT( / 1X, A3, ': ', A9, ' positive definite tridiagonal' )
00481 9992 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices' )
00482 9991 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices' )
00483 9990 FORMAT( / 1X, A3, ': Triangular matrices' )
00484 9989 FORMAT( / 1X, A3, ': Triangular packed matrices' )
00485 9988 FORMAT( / 1X, A3, ': Triangular band matrices' )
00486 9987 FORMAT( / 1X, A3, ': ', A2, ' factorization of general matrices'
00487 $ )
00488 9986 FORMAT( / 1X, A3, ': QR factorization with column pivoting' )
00489 9985 FORMAT( / 1X, A3, ': RQ factorization of trapezoidal matrix' )
00490 9984 FORMAT( / 1X, A3, ': Least squares driver routines' )
00491 9983 FORMAT( / 1X, A3, ': LU factorization variants' )
00492 9982 FORMAT( / 1X, A3, ': Cholesky factorization variants' )
00493 9981 FORMAT( / 1X, A3, ': QR factorization variants' )
00494 9980 FORMAT( / 1X, A3, ': No header available' )
00495
00496
00497
00498 9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
00499 $ '2. Upper triangular', 16X,
00500 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00501 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
00502 $ / 4X, '4. Random, CNDNUM = 2', 13X,
00503 $ '10. Scaled near underflow', / 4X, '5. First column zero',
00504 $ 14X, '11. Scaled near overflow', / 4X,
00505 $ '6. Last column zero' )
00506
00507
00508
00509 9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
00510 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00511 $ '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS',
00512 $ / 4X, '3. Last column zero', 16X,
00513 $ '7. Scaled near underflow', / 4X,
00514 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
00515
00516
00517
00518 9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
00519 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
00520 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
00521 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
00522 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
00523 $ 7X, '10. Last n/2 columns zero', / 4X,
00524 $ '5. Scaled near underflow', 10X,
00525 $ '11. Scaled near underflow', / 4X,
00526 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
00527
00528
00529
00530 9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
00531 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
00532 $ / 4X, '2. Random, CNDNUM = 2', 14X,
00533 $ '8. First row and column zero', / 4X,
00534 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
00535 $ '9. Last row and column zero', / 4X,
00536 $ '4. Random, CNDNUM = 0.1/EPS', 7X,
00537 $ '10. Middle row and column zero', / 4X,
00538 $ '5. Scaled near underflow', 10X,
00539 $ '11. Scaled near underflow', / 4X,
00540 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
00541
00542
00543
00544 9975 FORMAT( 4X, '1. Diagonal', 24X,
00545 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00546 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
00547 $ / 3X, '*3. First row and column zero', 7X,
00548 $ '8. Scaled near underflow', / 3X,
00549 $ '*4. Last row and column zero', 8X,
00550 $ '9. Scaled near overflow', / 3X,
00551 $ '*5. Middle row and column zero', / 3X,
00552 $ '(* - tests error exits from ', A3,
00553 $ 'TRF, no test ratios are computed)' )
00554
00555
00556
00557 9974 FORMAT( 4X, '1. Diagonal', 24X,
00558 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00559 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
00560 $ / 3X, '*3. First row and column zero', 7X,
00561 $ '8. Scaled near underflow', / 3X,
00562 $ '*4. Last row and column zero', 8X,
00563 $ '9. Scaled near overflow', / 3X,
00564 $ '*5. Middle row and column zero', / 3X,
00565 $ '(* - tests error exits, no test ratios are computed)' )
00566
00567
00568
00569 8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X,
00570 $ / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ',
00571 $ 'D(RANK) = 1.0/', A4, / 3X,
00572 $ '*4. Nonzero eigenvalues of: D(1)=1 and ',
00573 $ ' D(2:RANK) = 1.0/', A4, / 3X,
00574 $ '*5. Nonzero eigenvalues of: D(I) = ', A4,
00575 $ '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X,
00576 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00577 $ '7. Random, CNDNUM = 0.1/EPS', / 4X,
00578 $ '8. Scaled near underflow', / 4X, '9. Scaled near overflow',
00579 $ / 3X, '(* - Semi-definite tests )' )
00580 8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' )
00581
00582
00583
00584 9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
00585 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
00586 $ '*2. First row and column zero', 7X,
00587 $ '6. Random, CNDNUM = 0.1/EPS', / 3X,
00588 $ '*3. Last row and column zero', 8X,
00589 $ '7. Scaled near underflow', / 3X,
00590 $ '*4. Middle row and column zero', 6X,
00591 $ '8. Scaled near overflow', / 3X,
00592 $ '(* - tests error exits from ', A3,
00593 $ 'TRF, no test ratios are computed)' )
00594
00595
00596
00597 9972 FORMAT( 4X, '1. Diagonal', 24X,
00598 $ '6. Last n/2 rows and columns zero', / 4X,
00599 $ '2. Random, CNDNUM = 2', 14X,
00600 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00601 $ '3. First row and column zero', 7X,
00602 $ '8. Random, CNDNUM = 0.1/EPS', / 4X,
00603 $ '4. Last row and column zero', 8X,
00604 $ '9. Scaled near underflow', / 4X,
00605 $ '5. Middle row and column zero', 5X,
00606 $ '10. Scaled near overflow' )
00607
00608
00609
00610 9971 FORMAT( 4X, '1. Diagonal', 24X,
00611 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00612 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
00613 $ / 4X, '3. First row and column zero', 7X,
00614 $ '9. Scaled near underflow', / 4X,
00615 $ '4. Last row and column zero', 7X,
00616 $ '10. Scaled near overflow', / 4X,
00617 $ '5. Middle row and column zero', 5X,
00618 $ '11. Block diagonal matrix', / 4X,
00619 $ '6. Last n/2 rows and columns zero' )
00620
00621
00622
00623 9970 FORMAT( 4X, '1. Diagonal', 24X,
00624 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
00625 $ '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS',
00626 $ / 4X, '3. Lower triangular', 16X,
00627 $ '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2',
00628 $ 14X, '8. Scaled near overflow' )
00629
00630
00631
00632 9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X,
00633 $ '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X,
00634 $ '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed',
00635 $ / 4X, '3. Geometric distribution', 10X,
00636 $ '6. Every second column fixed' )
00637
00638
00639
00640 9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X,
00641 $ '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X,
00642 $ '3. Geometric distribution' )
00643
00644
00645
00646 9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):',
00647 $ / 4X, '1 and 4. Normal scaling', / 4X,
00648 $ '2 and 5. Scaled near overflow', / 4X,
00649 $ '3 and 6. Scaled near underflow' )
00650
00651
00652
00653 9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
00654 $ '1. Diagonal', 24X, '6. Scaled near overflow', / 4X,
00655 $ '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X,
00656 $ '3. Random, CNDNUM = sqrt(0.1/EPS) ',
00657 $ '8. Unit triangular, CNDNUM = 2', / 4X,
00658 $ '4. Random, CNDNUM = 0.1/EPS', 8X,
00659 $ '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
00660 $ '5. Scaled near underflow', 10X,
00661 $ '10. Unit, CNDNUM = 0.1/EPS' )
00662 9965 FORMAT( ' Special types for testing ', A, ':', / 3X,
00663 $ '11. Matrix elements are O(1), large right hand side', / 3X,
00664 $ '12. First diagonal causes overflow,',
00665 $ ' offdiagonal column norms < 1', / 3X,
00666 $ '13. First diagonal causes overflow,',
00667 $ ' offdiagonal column norms > 1', / 3X,
00668 $ '14. Growth factor underflows, solution does not overflow',
00669 $ / 3X, '15. Small diagonal causes gradual overflow', / 3X,
00670 $ '16. One zero diagonal element', / 3X,
00671 $ '17. Large offdiagonals cause overflow when adding a column'
00672 $ , / 3X, '18. Unit triangular with large right hand side' )
00673
00674
00675
00676 9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
00677 $ '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X,
00678 $ '2. Random, CNDNUM = sqrt(0.1/EPS) ',
00679 $ '7. Unit triangular, CNDNUM = 2', / 4X,
00680 $ '3. Random, CNDNUM = 0.1/EPS', 8X,
00681 $ '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
00682 $ '4. Scaled near underflow', 11X,
00683 $ '9. Unit, CNDNUM = 0.1/EPS', / 4X,
00684 $ '5. Scaled near overflow' )
00685 9963 FORMAT( ' Special types for testing ', A, ':', / 3X,
00686 $ '10. Matrix elements are O(1), large right hand side', / 3X,
00687 $ '11. First diagonal causes overflow,',
00688 $ ' offdiagonal column norms < 1', / 3X,
00689 $ '12. First diagonal causes overflow,',
00690 $ ' offdiagonal column norms > 1', / 3X,
00691 $ '13. Growth factor underflows, solution does not overflow',
00692 $ / 3X, '14. Small diagonal causes gradual overflow', / 3X,
00693 $ '15. One zero diagonal element', / 3X,
00694 $ '16. Large offdiagonals cause overflow when adding a column'
00695 $ , / 3X, '17. Unit triangular with large right hand side' )
00696
00697
00698
00699 9962 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' )
00700 9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ',
00701 $ '( N * norm(A) * norm(AINV) * EPS )' )
00702 9960 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
00703 $ '( norm(A) * norm(X) * EPS )' )
00704 6660 FORMAT( 3X, I2, ': diagonal is not non-negative')
00705 9959 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
00706 $ '( norm(XACT) * CNDNUM * EPS )' )
00707 9958 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
00708 $ '( norm(XACT) * CNDNUM * EPS ), refined' )
00709 9957 FORMAT( 3X, I2, ': norm( X - XACT ) / ',
00710 $ '( norm(XACT) * (error bound) )' )
00711 9956 FORMAT( 3X, I2, ': (backward error) / EPS' )
00712 9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
00713 9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
00714 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
00715 $ )
00716 8950 FORMAT( 3X,
00717 $ 'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )',
00718 $ ', or', / 3X,
00719 $ 'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' )
00720 9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
00721 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
00722 $ )
00723 9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
00724 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
00725 $ )
00726 9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2,
00727 $ ': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' )
00728 9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
00729 9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
00730 9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
00731 9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
00732 9946 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
00733 9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' ) / ( N * EPS )' )
00734 9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C ) / ', '( ', A1,
00735 $ ' * norm(C) * EPS )' )
00736 9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q ) / ', '( ', A1,
00737 $ ' * norm(C) * EPS )' )
00738 9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1,
00739 $ ' * norm(C) * EPS )' )
00740 9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1,
00741 $ ' * norm(C) * EPS )' )
00742 9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ',
00743 $ '( M * norm(svd(R)) * EPS )' )
00744 9939 FORMAT( 3X, I2, ': norm( A*P - Q*R ) / ( M * norm(A) * EPS )'
00745 $ )
00746 9938 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' )
00747 9937 FORMAT( 3X, I2, ': norm( A - R*Q ) / ( M * norm(A) * EPS )'
00748 $ )
00749 9936 FORMAT( ' Test ratios (1-2: ', A1, 'GELS, 3-6: ', A1,
00750 $ 'GELSS, 7-10: ', A1, 'GELSX):' )
00751 9935 FORMAT( 3X, I2, ': norm( B - A * X ) / ',
00752 $ '( max(M,N) * norm(A) * norm(X) * EPS )' )
00753 9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
00754 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
00755 9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ',
00756 $ '( min(M,N) * norm(svd(R)) * EPS )' )
00757 9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' )
00758 9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
00759 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X,
00760 $ 'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ',
00761 $ 'otherwise', / 7X,
00762 $ 'check if X is in the row space of A or A'' ',
00763 $ '(overdetermined case)' )
00764 9930 FORMAT( 3X, ' 7-10: same as 3-6' )
00765 9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRQF, 4-6: ', A1,
00766 $ 'TZRZF):' )
00767 9920 FORMAT( 3X, ' 7-10: same as 3-6', 3X, ' 11-14: same as 3-6',
00768 $ 3X, ' 15-18: same as 3-6' )
00769 9921 FORMAT( ' Test ratios:', / ' (1-2: ', A1, 'GELS, 3-6: ', A1,
00770 $ 'GELSX, 7-10: ', A1, 'GELSY, 11-14: ', A1, 'GELSS, 15-18: ',
00771 $ A1, 'GELSD)' )
00772
00773 RETURN
00774
00775
00776
00777 END