![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b ALADHD 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 ALADHD( 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 *> ALADHD prints header information for the driver routines 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 *> The first character must be one of S, D, C, or Z (C or Z only 00055 *> if complex). 00056 *> \endverbatim 00057 * 00058 * Authors: 00059 * ======== 00060 * 00061 *> \author Univ. of Tennessee 00062 *> \author Univ. of California Berkeley 00063 *> \author Univ. of Colorado Denver 00064 *> \author NAG Ltd. 00065 * 00066 *> \date April 2012 00067 * 00068 *> \ingroup aux_lin 00069 * 00070 * ===================================================================== 00071 SUBROUTINE ALADHD( IOUNIT, PATH ) 00072 * 00073 * -- LAPACK test routine (version 3.4.1) -- 00074 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00075 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00076 * April 2012 00077 * 00078 * .. Scalar Arguments .. 00079 CHARACTER*3 PATH 00080 INTEGER IOUNIT 00081 * .. 00082 * 00083 * ===================================================================== 00084 * 00085 * .. Local Scalars .. 00086 LOGICAL CORZ, SORD 00087 CHARACTER C1, C3 00088 CHARACTER*2 P2 00089 CHARACTER*9 SYM 00090 * .. 00091 * .. External Functions .. 00092 LOGICAL LSAME, LSAMEN 00093 EXTERNAL LSAME, LSAMEN 00094 * .. 00095 * .. Executable Statements .. 00096 * 00097 IF( IOUNIT.LE.0 ) 00098 $ RETURN 00099 C1 = PATH( 1: 1 ) 00100 C3 = PATH( 3: 3 ) 00101 P2 = PATH( 2: 3 ) 00102 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' ) 00103 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' ) 00104 IF( .NOT.( SORD .OR. CORZ ) ) 00105 $ RETURN 00106 * 00107 IF( LSAMEN( 2, P2, 'GE' ) ) THEN 00108 * 00109 * GE: General dense 00110 * 00111 WRITE( IOUNIT, FMT = 9999 )PATH 00112 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00113 WRITE( IOUNIT, FMT = 9989 ) 00114 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00115 WRITE( IOUNIT, FMT = 9981 )1 00116 WRITE( IOUNIT, FMT = 9980 )2 00117 WRITE( IOUNIT, FMT = 9979 )3 00118 WRITE( IOUNIT, FMT = 9978 )4 00119 WRITE( IOUNIT, FMT = 9977 )5 00120 WRITE( IOUNIT, FMT = 9976 )6 00121 WRITE( IOUNIT, FMT = 9972 )7 00122 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00123 * 00124 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN 00125 * 00126 * GB: General band 00127 * 00128 WRITE( IOUNIT, FMT = 9998 )PATH 00129 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00130 WRITE( IOUNIT, FMT = 9988 ) 00131 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00132 WRITE( IOUNIT, FMT = 9981 )1 00133 WRITE( IOUNIT, FMT = 9980 )2 00134 WRITE( IOUNIT, FMT = 9979 )3 00135 WRITE( IOUNIT, FMT = 9978 )4 00136 WRITE( IOUNIT, FMT = 9977 )5 00137 WRITE( IOUNIT, FMT = 9976 )6 00138 WRITE( IOUNIT, FMT = 9972 )7 00139 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00140 * 00141 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN 00142 * 00143 * GT: General tridiagonal 00144 * 00145 WRITE( IOUNIT, FMT = 9997 )PATH 00146 WRITE( IOUNIT, FMT = 9987 ) 00147 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00148 WRITE( IOUNIT, FMT = 9981 )1 00149 WRITE( IOUNIT, FMT = 9980 )2 00150 WRITE( IOUNIT, FMT = 9979 )3 00151 WRITE( IOUNIT, FMT = 9978 )4 00152 WRITE( IOUNIT, FMT = 9977 )5 00153 WRITE( IOUNIT, FMT = 9976 )6 00154 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00155 * 00156 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) 00157 $ .OR. LSAMEN( 2, P2, 'PS' ) ) THEN 00158 * 00159 * PO: Positive definite full 00160 * PS: Positive definite full 00161 * PP: Positive definite packed 00162 * 00163 IF( SORD ) THEN 00164 SYM = 'Symmetric' 00165 ELSE 00166 SYM = 'Hermitian' 00167 END IF 00168 IF( LSAME( C3, 'O' ) ) THEN 00169 WRITE( IOUNIT, FMT = 9996 )PATH, SYM 00170 ELSE 00171 WRITE( IOUNIT, FMT = 9995 )PATH, SYM 00172 END IF 00173 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00174 WRITE( IOUNIT, FMT = 9985 )PATH 00175 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00176 WRITE( IOUNIT, FMT = 9975 )1 00177 WRITE( IOUNIT, FMT = 9980 )2 00178 WRITE( IOUNIT, FMT = 9979 )3 00179 WRITE( IOUNIT, FMT = 9978 )4 00180 WRITE( IOUNIT, FMT = 9977 )5 00181 WRITE( IOUNIT, FMT = 9976 )6 00182 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00183 * 00184 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN 00185 * 00186 * PB: Positive definite band 00187 * 00188 IF( SORD ) THEN 00189 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric' 00190 ELSE 00191 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian' 00192 END IF 00193 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00194 WRITE( IOUNIT, FMT = 9984 )PATH 00195 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00196 WRITE( IOUNIT, FMT = 9975 )1 00197 WRITE( IOUNIT, FMT = 9980 )2 00198 WRITE( IOUNIT, FMT = 9979 )3 00199 WRITE( IOUNIT, FMT = 9978 )4 00200 WRITE( IOUNIT, FMT = 9977 )5 00201 WRITE( IOUNIT, FMT = 9976 )6 00202 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00203 * 00204 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN 00205 * 00206 * PT: Positive definite tridiagonal 00207 * 00208 IF( SORD ) THEN 00209 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric' 00210 ELSE 00211 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian' 00212 END IF 00213 WRITE( IOUNIT, FMT = 9986 ) 00214 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00215 WRITE( IOUNIT, FMT = 9973 )1 00216 WRITE( IOUNIT, FMT = 9980 )2 00217 WRITE( IOUNIT, FMT = 9979 )3 00218 WRITE( IOUNIT, FMT = 9978 )4 00219 WRITE( IOUNIT, FMT = 9977 )5 00220 WRITE( IOUNIT, FMT = 9976 )6 00221 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00222 * 00223 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN 00224 * 00225 * SY: Symmetric indefinite full 00226 * SP: Symmetric indefinite packed 00227 * 00228 IF( LSAME( C3, 'Y' ) ) THEN 00229 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 00230 ELSE 00231 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 00232 END IF 00233 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00234 IF( SORD ) THEN 00235 WRITE( IOUNIT, FMT = 9983 ) 00236 ELSE 00237 WRITE( IOUNIT, FMT = 9982 ) 00238 END IF 00239 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00240 WRITE( IOUNIT, FMT = 9974 )1 00241 WRITE( IOUNIT, FMT = 9980 )2 00242 WRITE( IOUNIT, FMT = 9979 )3 00243 WRITE( IOUNIT, FMT = 9977 )4 00244 WRITE( IOUNIT, FMT = 9978 )5 00245 WRITE( IOUNIT, FMT = 9976 )6 00246 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00247 * 00248 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. LSAMEN( 2, P2, 'HP' ) ) THEN 00249 * 00250 * HE: Hermitian indefinite full 00251 * HP: Hermitian indefinite packed 00252 * 00253 IF( LSAME( C3, 'E' ) ) THEN 00254 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 00255 ELSE 00256 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian' 00257 END IF 00258 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 00259 WRITE( IOUNIT, FMT = 9983 ) 00260 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 00261 WRITE( IOUNIT, FMT = 9974 )1 00262 WRITE( IOUNIT, FMT = 9980 )2 00263 WRITE( IOUNIT, FMT = 9979 )3 00264 WRITE( IOUNIT, FMT = 9977 )4 00265 WRITE( IOUNIT, FMT = 9978 )5 00266 WRITE( IOUNIT, FMT = 9976 )6 00267 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 00268 * 00269 ELSE 00270 * 00271 * Print error message if no header is available. 00272 * 00273 WRITE( IOUNIT, FMT = 9990 )PATH 00274 END IF 00275 * 00276 * First line of header 00277 * 00278 9999 FORMAT( / 1X, A3, ' drivers: General dense matrices' ) 00279 9998 FORMAT( / 1X, A3, ' drivers: General band matrices' ) 00280 9997 FORMAT( / 1X, A3, ' drivers: General tridiagonal' ) 00281 9996 FORMAT( / 1X, A3, ' drivers: ', A9, 00282 $ ' positive definite matrices' ) 00283 9995 FORMAT( / 1X, A3, ' drivers: ', A9, 00284 $ ' positive definite packed matrices' ) 00285 9994 FORMAT( / 1X, A3, ' drivers: ', A9, 00286 $ ' positive definite band matrices' ) 00287 9993 FORMAT( / 1X, A3, ' drivers: ', A9, 00288 $ ' positive definite tridiagonal' ) 00289 9992 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices' ) 00290 9991 FORMAT( / 1X, A3, ' drivers: ', A9, 00291 $ ' indefinite packed matrices', 00292 $ ', partial (Bunch-Kaufman) pivoting' ) 00293 9990 FORMAT( / 1X, A3, ': No header available' ) 00294 * 00295 * GE matrix types 00296 * 00297 9989 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X, 00298 $ '2. Upper triangular', 16X, 00299 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00300 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS', 00301 $ / 4X, '4. Random, CNDNUM = 2', 13X, 00302 $ '10. Scaled near underflow', / 4X, '5. First column zero', 00303 $ 14X, '11. Scaled near overflow', / 4X, 00304 $ '6. Last column zero' ) 00305 * 00306 * GB matrix types 00307 * 00308 9988 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 00309 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00310 $ '2. First column zero', 15X, '6. Random, CNDNUM = 0.1/EPS', 00311 $ / 4X, '3. Last column zero', 16X, 00312 $ '7. Scaled near underflow', / 4X, 00313 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' ) 00314 * 00315 * GT matrix types 00316 * 00317 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 00318 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 00319 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero', 00320 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 00321 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS', 00322 $ 7X, '10. Last n/2 columns zero', / 4X, 00323 $ '5. Scaled near underflow', 10X, 00324 $ '11. Scaled near underflow', / 4X, 00325 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 00326 * 00327 * PT matrix types 00328 * 00329 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 00330 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 00331 $ / 4X, '2. Random, CNDNUM = 2', 14X, 00332 $ '8. First row and column zero', / 4X, 00333 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 00334 $ '9. Last row and column zero', / 4X, 00335 $ '4. Random, CNDNUM = 0.1/EPS', 7X, 00336 $ '10. Middle row and column zero', / 4X, 00337 $ '5. Scaled near underflow', 10X, 00338 $ '11. Scaled near underflow', / 4X, 00339 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 00340 * 00341 * PO, PP matrix types 00342 * 00343 9985 FORMAT( 4X, '1. Diagonal', 24X, 00344 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00345 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 00346 $ / 3X, '*3. First row and column zero', 7X, 00347 $ '8. Scaled near underflow', / 3X, 00348 $ '*4. Last row and column zero', 8X, 00349 $ '9. Scaled near overflow', / 3X, 00350 $ '*5. Middle row and column zero', / 3X, 00351 $ '(* - tests error exits from ', A3, 00352 $ 'TRF, no test ratios are computed)' ) 00353 * 00354 * PB matrix types 00355 * 00356 9984 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 00357 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X, 00358 $ '*2. First row and column zero', 7X, 00359 $ '6. Random, CNDNUM = 0.1/EPS', / 3X, 00360 $ '*3. Last row and column zero', 8X, 00361 $ '7. Scaled near underflow', / 3X, 00362 $ '*4. Middle row and column zero', 6X, 00363 $ '8. Scaled near overflow', / 3X, 00364 $ '(* - tests error exits from ', A3, 00365 $ 'TRF, no test ratios are computed)' ) 00366 * 00367 * SSY, SSP, CHE, CHP matrix types 00368 * 00369 9983 FORMAT( 4X, '1. Diagonal', 24X, 00370 $ '6. Last n/2 rows and columns zero', / 4X, 00371 $ '2. Random, CNDNUM = 2', 14X, 00372 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00373 $ '3. First row and column zero', 7X, 00374 $ '8. Random, CNDNUM = 0.1/EPS', / 4X, 00375 $ '4. Last row and column zero', 8X, 00376 $ '9. Scaled near underflow', / 4X, 00377 $ '5. Middle row and column zero', 5X, 00378 $ '10. Scaled near overflow' ) 00379 * 00380 * CSY, CSP matrix types 00381 * 00382 9982 FORMAT( 4X, '1. Diagonal', 24X, 00383 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 00384 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS', 00385 $ / 4X, '3. First row and column zero', 7X, 00386 $ '9. Scaled near underflow', / 4X, 00387 $ '4. Last row and column zero', 7X, 00388 $ '10. Scaled near overflow', / 4X, 00389 $ '5. Middle row and column zero', 5X, 00390 $ '11. Block diagonal matrix', / 4X, 00391 $ '6. Last n/2 rows and columns zero' ) 00392 * 00393 * Test ratios 00394 * 00395 9981 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' ) 00396 9980 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 00397 $ '( norm(A) * norm(X) * EPS )' ) 00398 9979 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 00399 $ '( norm(XACT) * CNDNUM * EPS )' ) 00400 9978 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 00401 $ '( norm(XACT) * (error bound) )' ) 00402 9977 FORMAT( 3X, I2, ': (backward error) / EPS' ) 00403 9976 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' ) 00404 9975 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )', 00405 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )' 00406 $ ) 00407 9974 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )', 00408 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 00409 $ ) 00410 9973 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )', 00411 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 00412 $ ) 00413 9972 FORMAT( 3X, I2, ': abs( WORK(1) - RPVGRW ) /', 00414 $ ' ( max( WORK(1), RPVGRW ) * EPS )' ) 00415 * 00416 RETURN 00417 * 00418 * End of ALADHD 00419 * 00420 END