LAPACK 3.3.1
Linear Algebra PACKage
|
00001 SUBROUTINE ALAHD( IOUNIT, PATH ) 00002 * 00003 * -- LAPACK test routine (version 3.3.0) -- 00004 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. 00005 * November 2010 00006 * 00007 * .. Scalar Arguments .. 00008 CHARACTER*3 PATH 00009 INTEGER IOUNIT 00010 * .. 00011 * 00012 * Purpose 00013 * ======= 00014 * 00015 * ALAHD prints header information for the different test paths. 00016 * 00017 * Arguments 00018 * ========= 00019 * 00020 * IOUNIT (input) INTEGER 00021 * The unit number to which the header information should be 00022 * printed. 00023 * 00024 * PATH (input) CHARACTER*3 00025 * The name of the path for which the header information is to 00026 * be printed. Current paths are 00027 * _GE: General matrices 00028 * _GB: General band 00029 * _GT: General Tridiagonal 00030 * _PO: Symmetric or Hermitian positive definite 00031 * _PS: Symmetric or Hermitian positive semi-definite 00032 * _PP: Symmetric or Hermitian positive definite packed 00033 * _PB: Symmetric or Hermitian positive definite band 00034 * _PT: Symmetric or Hermitian positive definite tridiagonal 00035 * _SY: Symmetric indefinite 00036 * _SP: Symmetric indefinite packed 00037 * _HE: (complex) Hermitian indefinite 00038 * _HP: (complex) Hermitian indefinite packed 00039 * _TR: Triangular 00040 * _TP: Triangular packed 00041 * _TB: Triangular band 00042 * _QR: QR (general matrices) 00043 * _LQ: LQ (general matrices) 00044 * _QL: QL (general matrices) 00045 * _RQ: RQ (general matrices) 00046 * _QP: QR with column pivoting 00047 * _TZ: Trapezoidal 00048 * _LS: Least Squares driver routines 00049 * _LU: LU variants 00050 * _CH: Cholesky variants 00051 * _QS: QR variants 00052 * The first character must be one of S, D, C, or Z (C or Z only 00053 * if complex). 00054 * 00055 * ===================================================================== 00056 * 00057 * .. Local Scalars .. 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 * .. External Functions .. 00066 LOGICAL LSAME, LSAMEN 00067 EXTERNAL LSAME, LSAMEN 00068 * .. 00069 * .. Intrinsic Functions .. 00070 INTRINSIC LEN_TRIM 00071 * .. 00072 * .. Executable Statements .. 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 * GE: General dense 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 * GB: General band 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 * GT: General tridiagonal 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 * PO: Positive definite full 00138 * PP: Positive definite packed 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 * PS: Positive semi-definite full 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 * PB: Positive definite band 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 * PT: Positive definite tridiagonal 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' ) ) THEN 00227 * 00228 * SY: Symmetric indefinite full 00229 * 00230 IF( LSAME( C3, 'Y' ) ) THEN 00231 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 00232 ELSE 00233 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 00234 END IF 00235 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00236 IF( SORD ) THEN 00237 WRITE( IOUNIT, FMT = 9972 ) 00238 ELSE 00239 WRITE( IOUNIT, FMT = 9971 ) 00240 END IF 00241 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00242 WRITE( IOUNIT, FMT = 9953 )1 00243 WRITE( IOUNIT, FMT = 9961 )2 00244 WRITE( IOUNIT, FMT = 9960 )3 00245 WRITE( IOUNIT, FMT = 9960 )4 00246 WRITE( IOUNIT, FMT = 9959 )5 00247 WRITE( IOUNIT, FMT = 9958 )6 00248 WRITE( IOUNIT, FMT = 9956 )7 00249 WRITE( IOUNIT, FMT = 9957 )8 00250 WRITE( IOUNIT, FMT = 9955 )9 00251 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00252 * 00253 ELSE IF( LSAMEN( 2, P2, 'SP' ) ) THEN 00254 * 00255 * SP: Symmetric indefinite packed 00256 * 00257 IF( LSAME( C3, 'Y' ) ) THEN 00258 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 00259 ELSE 00260 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 00261 END IF 00262 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00263 IF( SORD ) THEN 00264 WRITE( IOUNIT, FMT = 9972 ) 00265 ELSE 00266 WRITE( IOUNIT, FMT = 9971 ) 00267 END IF 00268 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00269 WRITE( IOUNIT, FMT = 9953 )1 00270 WRITE( IOUNIT, FMT = 9961 )2 00271 WRITE( IOUNIT, FMT = 9960 )3 00272 WRITE( IOUNIT, FMT = 9959 )4 00273 WRITE( IOUNIT, FMT = 9958 )5 00274 WRITE( IOUNIT, FMT = 9956 )6 00275 WRITE( IOUNIT, FMT = 9957 )7 00276 WRITE( IOUNIT, FMT = 9955 )8 00277 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00278 * 00279 ELSE IF( LSAMEN( 2, P2, 'HE' ) ) THEN 00280 * 00281 * HE: Hermitian indefinite full 00282 * 00283 IF( LSAME( C3, 'E' ) ) THEN 00284 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 00285 ELSE 00286 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian' 00287 END IF 00288 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00289 IF( SORD ) THEN 00290 WRITE( IOUNIT, FMT = 9972 ) 00291 ELSE 00292 WRITE( IOUNIT, FMT = 9971 ) 00293 END IF 00294 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00295 WRITE( IOUNIT, FMT = 9953 )1 00296 WRITE( IOUNIT, FMT = 9961 )2 00297 WRITE( IOUNIT, FMT = 9960 )3 00298 WRITE( IOUNIT, FMT = 9960 )4 00299 WRITE( IOUNIT, FMT = 9959 )5 00300 WRITE( IOUNIT, FMT = 9958 )6 00301 WRITE( IOUNIT, FMT = 9956 )7 00302 WRITE( IOUNIT, FMT = 9957 )8 00303 WRITE( IOUNIT, FMT = 9955 )9 00304 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00305 * 00306 ELSE IF( LSAMEN( 2, P2, 'HP' ) ) THEN 00307 * 00308 * HP: Hermitian indefinite packed 00309 * 00310 IF( LSAME( C3, 'E' ) ) THEN 00311 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 00312 ELSE 00313 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian' 00314 END IF 00315 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00316 WRITE( IOUNIT, FMT = 9972 ) 00317 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00318 WRITE( IOUNIT, FMT = 9953 )1 00319 WRITE( IOUNIT, FMT = 9961 )2 00320 WRITE( IOUNIT, FMT = 9960 )3 00321 WRITE( IOUNIT, FMT = 9959 )4 00322 WRITE( IOUNIT, FMT = 9958 )5 00323 WRITE( IOUNIT, FMT = 9956 )6 00324 WRITE( IOUNIT, FMT = 9957 )7 00325 WRITE( IOUNIT, FMT = 9955 )8 00326 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00327 * 00328 ELSE IF( LSAMEN( 2, P2, 'TR' ) .OR. LSAMEN( 2, P2, 'TP' ) ) THEN 00329 * 00330 * TR: Triangular full 00331 * TP: Triangular packed 00332 * 00333 IF( LSAME( C3, 'R' ) ) THEN 00334 WRITE( IOUNIT, FMT = 9990 )PATH 00335 SUBNAM = PATH( 1: 1 ) // 'LATRS' 00336 ELSE 00337 WRITE( IOUNIT, FMT = 9989 )PATH 00338 SUBNAM = PATH( 1: 1 ) // 'LATPS' 00339 END IF 00340 WRITE( IOUNIT, FMT = 9966 )PATH 00341 WRITE( IOUNIT, FMT = 9965 )SUBNAM(1:LEN_TRIM( SUBNAM )) 00342 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00343 WRITE( IOUNIT, FMT = 9961 )1 00344 WRITE( IOUNIT, FMT = 9960 )2 00345 WRITE( IOUNIT, FMT = 9959 )3 00346 WRITE( IOUNIT, FMT = 9958 )4 00347 WRITE( IOUNIT, FMT = 9957 )5 00348 WRITE( IOUNIT, FMT = 9956 )6 00349 WRITE( IOUNIT, FMT = 9955 )7 00350 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 8 00351 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00352 * 00353 ELSE IF( LSAMEN( 2, P2, 'TB' ) ) THEN 00354 * 00355 * TB: Triangular band 00356 * 00357 WRITE( IOUNIT, FMT = 9988 )PATH 00358 SUBNAM = PATH( 1: 1 ) // 'LATBS' 00359 WRITE( IOUNIT, FMT = 9964 )PATH 00360 WRITE( IOUNIT, FMT = 9963 )SUBNAM(1:LEN_TRIM( SUBNAM )) 00361 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00362 WRITE( IOUNIT, FMT = 9960 )1 00363 WRITE( IOUNIT, FMT = 9959 )2 00364 WRITE( IOUNIT, FMT = 9958 )3 00365 WRITE( IOUNIT, FMT = 9957 )4 00366 WRITE( IOUNIT, FMT = 9956 )5 00367 WRITE( IOUNIT, FMT = 9955 )6 00368 WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 7 00369 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00370 * 00371 ELSE IF( LSAMEN( 2, P2, 'QR' ) ) THEN 00372 * 00373 * QR decomposition of rectangular matrices 00374 * 00375 WRITE( IOUNIT, FMT = 9987 )PATH, 'QR' 00376 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00377 WRITE( IOUNIT, FMT = 9970 ) 00378 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00379 WRITE( IOUNIT, FMT = 9950 )1 00380 WRITE( IOUNIT, FMT = 6950 )8 00381 WRITE( IOUNIT, FMT = 9946 )2 00382 WRITE( IOUNIT, FMT = 9944 )3, 'M' 00383 WRITE( IOUNIT, FMT = 9943 )4, 'M' 00384 WRITE( IOUNIT, FMT = 9942 )5, 'M' 00385 WRITE( IOUNIT, FMT = 9941 )6, 'M' 00386 WRITE( IOUNIT, FMT = 9960 )7 00387 WRITE( IOUNIT, FMT = 6660 )9 00388 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00389 * 00390 ELSE IF( LSAMEN( 2, P2, 'LQ' ) ) THEN 00391 * 00392 * LQ decomposition of rectangular matrices 00393 * 00394 WRITE( IOUNIT, FMT = 9987 )PATH, 'LQ' 00395 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00396 WRITE( IOUNIT, FMT = 9970 ) 00397 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00398 WRITE( IOUNIT, FMT = 9949 )1 00399 WRITE( IOUNIT, FMT = 9945 )2 00400 WRITE( IOUNIT, FMT = 9944 )3, 'N' 00401 WRITE( IOUNIT, FMT = 9943 )4, 'N' 00402 WRITE( IOUNIT, FMT = 9942 )5, 'N' 00403 WRITE( IOUNIT, FMT = 9941 )6, 'N' 00404 WRITE( IOUNIT, FMT = 9960 )7 00405 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00406 * 00407 ELSE IF( LSAMEN( 2, P2, 'QL' ) ) THEN 00408 * 00409 * QL decomposition of rectangular matrices 00410 * 00411 WRITE( IOUNIT, FMT = 9987 )PATH, 'QL' 00412 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00413 WRITE( IOUNIT, FMT = 9970 ) 00414 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00415 WRITE( IOUNIT, FMT = 9948 )1 00416 WRITE( IOUNIT, FMT = 9946 )2 00417 WRITE( IOUNIT, FMT = 9944 )3, 'M' 00418 WRITE( IOUNIT, FMT = 9943 )4, 'M' 00419 WRITE( IOUNIT, FMT = 9942 )5, 'M' 00420 WRITE( IOUNIT, FMT = 9941 )6, 'M' 00421 WRITE( IOUNIT, FMT = 9960 )7 00422 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00423 * 00424 ELSE IF( LSAMEN( 2, P2, 'RQ' ) ) THEN 00425 * 00426 * RQ decomposition of rectangular matrices 00427 * 00428 WRITE( IOUNIT, FMT = 9987 )PATH, 'RQ' 00429 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00430 WRITE( IOUNIT, FMT = 9970 ) 00431 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00432 WRITE( IOUNIT, FMT = 9947 )1 00433 WRITE( IOUNIT, FMT = 9945 )2 00434 WRITE( IOUNIT, FMT = 9944 )3, 'N' 00435 WRITE( IOUNIT, FMT = 9943 )4, 'N' 00436 WRITE( IOUNIT, FMT = 9942 )5, 'N' 00437 WRITE( IOUNIT, FMT = 9941 )6, 'N' 00438 WRITE( IOUNIT, FMT = 9960 )7 00439 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00440 * 00441 ELSE IF( LSAMEN( 2, P2, 'QP' ) ) THEN 00442 * 00443 * QR decomposition with column pivoting 00444 * 00445 WRITE( IOUNIT, FMT = 9986 )PATH 00446 WRITE( IOUNIT, FMT = 9969 ) 00447 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00448 WRITE( IOUNIT, FMT = 9940 )1 00449 WRITE( IOUNIT, FMT = 9939 )2 00450 WRITE( IOUNIT, FMT = 9938 )3 00451 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00452 * 00453 ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN 00454 * 00455 * TZ: Trapezoidal 00456 * 00457 WRITE( IOUNIT, FMT = 9985 )PATH 00458 WRITE( IOUNIT, FMT = 9968 ) 00459 WRITE( IOUNIT, FMT = 9929 )C1, C1 00460 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00461 WRITE( IOUNIT, FMT = 9940 )1 00462 WRITE( IOUNIT, FMT = 9937 )2 00463 WRITE( IOUNIT, FMT = 9938 )3 00464 WRITE( IOUNIT, FMT = 9940 )4 00465 WRITE( IOUNIT, FMT = 9937 )5 00466 WRITE( IOUNIT, FMT = 9938 )6 00467 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00468 * 00469 ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN 00470 * 00471 * LS: Least Squares driver routines for 00472 * LS, LSD, LSS, LSX and LSY. 00473 * 00474 WRITE( IOUNIT, FMT = 9984 )PATH 00475 WRITE( IOUNIT, FMT = 9967 ) 00476 WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1, C1 00477 WRITE( IOUNIT, FMT = 9935 )1 00478 WRITE( IOUNIT, FMT = 9931 )2 00479 WRITE( IOUNIT, FMT = 9933 )3 00480 WRITE( IOUNIT, FMT = 9935 )4 00481 WRITE( IOUNIT, FMT = 9934 )5 00482 WRITE( IOUNIT, FMT = 9932 )6 00483 WRITE( IOUNIT, FMT = 9920 ) 00484 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00485 * 00486 ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN 00487 * 00488 * LU factorization variants 00489 * 00490 WRITE( IOUNIT, FMT = 9983 )PATH 00491 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00492 WRITE( IOUNIT, FMT = 9979 ) 00493 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' ) 00494 WRITE( IOUNIT, FMT = 9962 )1 00495 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00496 * 00497 ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN 00498 * 00499 * Cholesky factorization variants 00500 * 00501 WRITE( IOUNIT, FMT = 9982 )PATH 00502 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00503 WRITE( IOUNIT, FMT = 9974 ) 00504 WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' ) 00505 WRITE( IOUNIT, FMT = 9954 )1 00506 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00507 * 00508 ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN 00509 * 00510 * QR factorization variants 00511 * 00512 WRITE( IOUNIT, FMT = 9981 )PATH 00513 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00514 WRITE( IOUNIT, FMT = 9970 ) 00515 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00516 * 00517 ELSE 00518 * 00519 * Print error message if no header is available. 00520 * 00521 WRITE( IOUNIT, FMT = 9980 )PATH 00522 END IF 00523 * 00524 * First line of header 00525 * 00526 9999 FORMAT( / 1X, A3, ': General dense matrices' ) 00527 9998 FORMAT( / 1X, A3, ': General band matrices' ) 00528 9997 FORMAT( / 1X, A3, ': General tridiagonal' ) 00529 9996 FORMAT( / 1X, A3, ': ', A9, ' positive definite matrices' ) 00530 9995 FORMAT( / 1X, A3, ': ', A9, ' positive definite packed matrices' 00531 $ ) 00532 9994 FORMAT( / 1X, A3, ': ', A9, ' positive definite band matrices' ) 00533 9993 FORMAT( / 1X, A3, ': ', A9, ' positive definite tridiagonal' ) 00534 9992 FORMAT( / 1X, A3, ': ', A9, ' indefinite matrices' ) 00535 9991 FORMAT( / 1X, A3, ': ', A9, ' indefinite packed matrices' ) 00536 9990 FORMAT( / 1X, A3, ': Triangular matrices' ) 00537 9989 FORMAT( / 1X, A3, ': Triangular packed matrices' ) 00538 9988 FORMAT( / 1X, A3, ': Triangular band matrices' ) 00539 9987 FORMAT( / 1X, A3, ': ', A2, ' factorization of general matrices' 00540 $ ) 00541 9986 FORMAT( / 1X, A3, ': QR factorization with column pivoting' ) 00542 9985 FORMAT( / 1X, A3, ': RQ factorization of trapezoidal matrix' ) 00543 9984 FORMAT( / 1X, A3, ': Least squares driver routines' ) 00544 9983 FORMAT( / 1X, A3, ': LU factorization variants' ) 00545 9982 FORMAT( / 1X, A3, ': Cholesky factorization variants' ) 00546 9981 FORMAT( / 1X, A3, ': QR factorization variants' ) 00547 9980 FORMAT( / 1X, A3, ': No header available' ) 00548 * 00549 * GE matrix types 00550 * 00551 9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X, 00552 $ '2. Upper triangular', 16X, 00553 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00554 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS', 00555 $ / 4X, '4. Random, CNDNUM = 2', 13X, 00556 $ '10. Scaled near underflow', / 4X, '5. First column zero', 00557 $ 14X, '11. Scaled near overflow', / 4X, 00558 $ '6. Last column zero' ) 00559 * 00560 * GB matrix types 00561 * 00562 9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 00563 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00564 $ '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS', 00565 $ / 4X, '3. Last column zero', 16X, 00566 $ '7. Scaled near underflow', / 4X, 00567 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' ) 00568 * 00569 * GT matrix types 00570 * 00571 9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 00572 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 00573 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero', 00574 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 00575 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS', 00576 $ 7X, '10. Last n/2 columns zero', / 4X, 00577 $ '5. Scaled near underflow', 10X, 00578 $ '11. Scaled near underflow', / 4X, 00579 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 00580 * 00581 * PT matrix types 00582 * 00583 9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 00584 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 00585 $ / 4X, '2. Random, CNDNUM = 2', 14X, 00586 $ '8. First row and column zero', / 4X, 00587 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 00588 $ '9. Last row and column zero', / 4X, 00589 $ '4. Random, CNDNUM = 0.1/EPS', 7X, 00590 $ '10. Middle row and column zero', / 4X, 00591 $ '5. Scaled near underflow', 10X, 00592 $ '11. Scaled near underflow', / 4X, 00593 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 00594 * 00595 * PO, PP matrix types 00596 * 00597 9975 FORMAT( 4X, '1. Diagonal', 24X, 00598 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00599 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 00600 $ / 3X, '*3. First row and column zero', 7X, 00601 $ '8. Scaled near underflow', / 3X, 00602 $ '*4. Last row and column zero', 8X, 00603 $ '9. Scaled near overflow', / 3X, 00604 $ '*5. Middle row and column zero', / 3X, 00605 $ '(* - tests error exits from ', A3, 00606 $ 'TRF, no test ratios are computed)' ) 00607 * 00608 * CH matrix types 00609 * 00610 9974 FORMAT( 4X, '1. Diagonal', 24X, 00611 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00612 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 00613 $ / 3X, '*3. First row and column zero', 7X, 00614 $ '8. Scaled near underflow', / 3X, 00615 $ '*4. Last row and column zero', 8X, 00616 $ '9. Scaled near overflow', / 3X, 00617 $ '*5. Middle row and column zero', / 3X, 00618 $ '(* - tests error exits, no test ratios are computed)' ) 00619 * 00620 * PS matrix types 00621 * 00622 8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X, 00623 $ / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ', 00624 $ 'D(RANK) = 1.0/', A4, / 3X, 00625 $ '*4. Nonzero eigenvalues of: D(1)=1 and ', 00626 $ ' D(2:RANK) = 1.0/', A4, / 3X, 00627 $ '*5. Nonzero eigenvalues of: D(I) = ', A4, 00628 $ '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X, 00629 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00630 $ '7. Random, CNDNUM = 0.1/EPS', / 4X, 00631 $ '8. Scaled near underflow', / 4X, '9. Scaled near overflow', 00632 $ / 3X, '(* - Semi-definite tests )' ) 00633 8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' ) 00634 * 00635 * PB matrix types 00636 * 00637 9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 00638 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X, 00639 $ '*2. First row and column zero', 7X, 00640 $ '6. Random, CNDNUM = 0.1/EPS', / 3X, 00641 $ '*3. Last row and column zero', 8X, 00642 $ '7. Scaled near underflow', / 3X, 00643 $ '*4. Middle row and column zero', 6X, 00644 $ '8. Scaled near overflow', / 3X, 00645 $ '(* - tests error exits from ', A3, 00646 $ 'TRF, no test ratios are computed)' ) 00647 * 00648 * SSY, SSP, CHE, CHP matrix types 00649 * 00650 9972 FORMAT( 4X, '1. Diagonal', 24X, 00651 $ '6. Last n/2 rows and columns zero', / 4X, 00652 $ '2. Random, CNDNUM = 2', 14X, 00653 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00654 $ '3. First row and column zero', 7X, 00655 $ '8. Random, CNDNUM = 0.1/EPS', / 4X, 00656 $ '4. Last row and column zero', 8X, 00657 $ '9. Scaled near underflow', / 4X, 00658 $ '5. Middle row and column zero', 5X, 00659 $ '10. Scaled near overflow' ) 00660 * 00661 * CSY, CSP matrix types 00662 * 00663 9971 FORMAT( 4X, '1. Diagonal', 24X, 00664 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00665 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS', 00666 $ / 4X, '3. First row and column zero', 7X, 00667 $ '9. Scaled near underflow', / 4X, 00668 $ '4. Last row and column zero', 7X, 00669 $ '10. Scaled near overflow', / 4X, 00670 $ '5. Middle row and column zero', 5X, 00671 $ '11. Block diagonal matrix', / 4X, 00672 $ '6. Last n/2 rows and columns zero' ) 00673 * 00674 * QR matrix types 00675 * 00676 9970 FORMAT( 4X, '1. Diagonal', 24X, 00677 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00678 $ '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS', 00679 $ / 4X, '3. Lower triangular', 16X, 00680 $ '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2', 00681 $ 14X, '8. Scaled near overflow' ) 00682 * 00683 * QP matrix types 00684 * 00685 9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X, 00686 $ '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X, 00687 $ '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed', 00688 $ / 4X, '3. Geometric distribution', 10X, 00689 $ '6. Every second column fixed' ) 00690 * 00691 * TZ matrix types 00692 * 00693 9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X, 00694 $ '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X, 00695 $ '3. Geometric distribution' ) 00696 * 00697 * LS matrix types 00698 * 00699 9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):', 00700 $ / 4X, '1 and 4. Normal scaling', / 4X, 00701 $ '2 and 5. Scaled near overflow', / 4X, 00702 $ '3 and 6. Scaled near underflow' ) 00703 * 00704 * TR, TP matrix types 00705 * 00706 9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X, 00707 $ '1. Diagonal', 24X, '6. Scaled near overflow', / 4X, 00708 $ '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X, 00709 $ '3. Random, CNDNUM = sqrt(0.1/EPS) ', 00710 $ '8. Unit triangular, CNDNUM = 2', / 4X, 00711 $ '4. Random, CNDNUM = 0.1/EPS', 8X, 00712 $ '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X, 00713 $ '5. Scaled near underflow', 10X, 00714 $ '10. Unit, CNDNUM = 0.1/EPS' ) 00715 9965 FORMAT( ' Special types for testing ', A, ':', / 3X, 00716 $ '11. Matrix elements are O(1), large right hand side', / 3X, 00717 $ '12. First diagonal causes overflow,', 00718 $ ' offdiagonal column norms < 1', / 3X, 00719 $ '13. First diagonal causes overflow,', 00720 $ ' offdiagonal column norms > 1', / 3X, 00721 $ '14. Growth factor underflows, solution does not overflow', 00722 $ / 3X, '15. Small diagonal causes gradual overflow', / 3X, 00723 $ '16. One zero diagonal element', / 3X, 00724 $ '17. Large offdiagonals cause overflow when adding a column' 00725 $ , / 3X, '18. Unit triangular with large right hand side' ) 00726 * 00727 * TB matrix types 00728 * 00729 9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X, 00730 $ '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X, 00731 $ '2. Random, CNDNUM = sqrt(0.1/EPS) ', 00732 $ '7. Unit triangular, CNDNUM = 2', / 4X, 00733 $ '3. Random, CNDNUM = 0.1/EPS', 8X, 00734 $ '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X, 00735 $ '4. Scaled near underflow', 11X, 00736 $ '9. Unit, CNDNUM = 0.1/EPS', / 4X, 00737 $ '5. Scaled near overflow' ) 00738 9963 FORMAT( ' Special types for testing ', A, ':', / 3X, 00739 $ '10. Matrix elements are O(1), large right hand side', / 3X, 00740 $ '11. First diagonal causes overflow,', 00741 $ ' offdiagonal column norms < 1', / 3X, 00742 $ '12. First diagonal causes overflow,', 00743 $ ' offdiagonal column norms > 1', / 3X, 00744 $ '13. Growth factor underflows, solution does not overflow', 00745 $ / 3X, '14. Small diagonal causes gradual overflow', / 3X, 00746 $ '15. One zero diagonal element', / 3X, 00747 $ '16. Large offdiagonals cause overflow when adding a column' 00748 $ , / 3X, '17. Unit triangular with large right hand side' ) 00749 * 00750 * Test ratios 00751 * 00752 9962 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' ) 00753 9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ', 00754 $ '( N * norm(A) * norm(AINV) * EPS )' ) 00755 9960 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 00756 $ '( norm(A) * norm(X) * EPS )' ) 00757 6660 FORMAT( 3X, I2, ': diagonal is not non-negative') 00758 9959 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 00759 $ '( norm(XACT) * CNDNUM * EPS )' ) 00760 9958 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 00761 $ '( norm(XACT) * CNDNUM * EPS ), refined' ) 00762 9957 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 00763 $ '( norm(XACT) * (error bound) )' ) 00764 9956 FORMAT( 3X, I2, ': (backward error) / EPS' ) 00765 9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' ) 00766 9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )', 00767 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )' 00768 $ ) 00769 8950 FORMAT( 3X, 00770 $ 'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )', 00771 $ ', or', / 3X, 00772 $ 'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' ) 00773 9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )', 00774 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 00775 $ ) 00776 9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )', 00777 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 00778 $ ) 00779 9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2, 00780 $ ': norm( s*b - A*x ) / ( norm(A) * norm(x) * EPS )' ) 00781 9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' ) 00782 6950 FORMAT( 3X, I2, ': norm( R - Q' 00783 ' * A ) / ( M * norm(A) * EPS ) $ [RFPG]' ) 00784 9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' ) 00785 9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' ) 00786 9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' ) 00787 9946 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' ) 00788 9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' ) / ( N * EPS )' ) 00789 9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C ) / ', '( ', A1, 00790 $ ' * norm(C) * EPS )' ) 00791 9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q ) / ', '( ', A1, 00792 $ ' * norm(C) * EPS )' ) 00793 9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1, 00794 $ ' * norm(C) * EPS )' ) 00795 9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1, 00796 $ ' * norm(C) * EPS )' ) 00797 9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ', 00798 $ '( M * norm(svd(R)) * EPS )' ) 00799 9939 FORMAT( 3X, I2, ': norm( A*P - Q*R ) / ( M * norm(A) * EPS )' 00800 $ ) 00801 9938 FORMAT( 3X, I2, ': norm( I - Q''*Q ) / ( M * EPS )' ) 00802 9937 FORMAT( 3X, I2, ': norm( A - R*Q ) / ( M * norm(A) * EPS )' 00803 $ ) 00804 9936 FORMAT( ' Test ratios (1-2: ', A1, 'GELS, 3-6: ', A1, 00805 $ 'GELSS, 7-10: ', A1, 'GELSX):' ) 00806 9935 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 00807 $ '( max(M,N) * norm(A) * norm(X) * EPS )' ) 00808 9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ', 00809 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' ) 00810 9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ', 00811 $ '( min(M,N) * norm(svd(R)) * EPS )' ) 00812 9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' ) 00813 9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ', 00814 $ '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X, 00815 $ 'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ', 00816 $ 'otherwise', / 7X, 00817 $ 'check if X is in the row space of A or A'' ', 00818 $ '(overdetermined case)' ) 00819 9930 FORMAT( 3X, ' 7-10: same as 3-6' ) 00820 9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRQF, 4-6: ', A1, 00821 $ 'TZRZF):' ) 00822 9920 FORMAT( 3X, ' 7-10: same as 3-6', 3X, ' 11-14: same as 3-6', 00823 $ 3X, ' 15-18: same as 3-6' ) 00824 9921 FORMAT( ' Test ratios:', / ' (1-2: ', A1, 'GELS, 3-6: ', A1, 00825 $ 'GELSX, 7-10: ', A1, 'GELSY, 11-14: ', A1, 'GELSS, 15-18: ', 00826 $ A1, 'GELSD)' ) 00827 * 00828 RETURN 00829 * 00830 * End of ALAHD 00831 * 00832 END