LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
aladhd.f
Go to the documentation of this file.
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
 All Files Functions