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