"Fossies" - the Fresh Open Source Software Archive

Member "lapack-3.9.1/TESTING/LIN/alahd.f" (25 Mar 2021, 43185 Bytes) of package /linux/misc/lapack-3.9.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Fortran 77 source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "alahd.f": 3.9.0_vs_3.9.1.

    1 *> \brief \b ALAHD
    2 *
    3 *  =========== DOCUMENTATION ===========
    4 *
    5 * Online html documentation available at
    6 *            http://www.netlib.org/lapack/explore-html/
    7 *
    8 *  Definition:
    9 *  ===========
   10 *
   11 *       SUBROUTINE ALAHD( IOUNIT, PATH )
   12 *
   13 *       .. Scalar Arguments ..
   14 *       CHARACTER*3        PATH
   15 *       INTEGER            IOUNIT
   16 *       ..
   17 *
   18 *
   19 *> \par Purpose:
   20 *  =============
   21 *>
   22 *> \verbatim
   23 *>
   24 *> ALAHD prints header information for the different test paths.
   25 *> \endverbatim
   26 *
   27 *  Arguments:
   28 *  ==========
   29 *
   30 *> \param[in] IOUNIT
   31 *> \verbatim
   32 *>          IOUNIT is INTEGER
   33 *>          The unit number to which the header information should be
   34 *>          printed.
   35 *> \endverbatim
   36 *>
   37 *> \param[in] PATH
   38 *> \verbatim
   39 *>          PATH is CHARACTER*3
   40 *>          The name of the path for which the header information is to
   41 *>          be printed.  Current paths are
   42 *>             _GE:  General matrices
   43 *>             _GB:  General band
   44 *>             _GT:  General Tridiagonal
   45 *>             _PO:  Symmetric or Hermitian positive definite
   46 *>             _PS:  Symmetric or Hermitian positive semi-definite
   47 *>             _PP:  Symmetric or Hermitian positive definite packed
   48 *>             _PB:  Symmetric or Hermitian positive definite band
   49 *>             _PT:  Symmetric or Hermitian positive definite tridiagonal
   50 *>             _SY:  Symmetric indefinite,
   51 *>                     with partial (Bunch-Kaufman) pivoting
   52 *>             _SR:  Symmetric indefinite,
   53 *>                     with rook (bounded Bunch-Kaufman) pivoting
   54 *>             _SK:  Symmetric indefinite,
   55 *>                     with rook (bounded Bunch-Kaufman) pivoting
   56 *>                     ( new storage format for factors:
   57 *>                       L and diagonal of D is stored in A,
   58 *>                       subdiagonal of D is stored in E )
   59 *>             _SP:  Symmetric indefinite packed,
   60 *>                     with partial (Bunch-Kaufman) pivoting
   61 *>             _HA:  (complex) Hermitian ,
   62 *>                     with Aasen Algorithm
   63 *>             _HE:  (complex) Hermitian indefinite,
   64 *>                     with partial (Bunch-Kaufman) pivoting
   65 *>             _HR:  (complex) Hermitian indefinite,
   66 *>                     with rook (bounded Bunch-Kaufman) pivoting
   67 *>             _HK:  (complex) Hermitian indefinite,
   68 *>                     with rook (bounded Bunch-Kaufman) pivoting
   69 *>                     ( new storage format for factors:
   70 *>                       L and diagonal of D is stored in A,
   71 *>                       subdiagonal of D is stored in E )
   72 *>             _HP:  (complex) Hermitian indefinite packed,
   73 *>                     with partial (Bunch-Kaufman) pivoting
   74 *>             _TR:  Triangular
   75 *>             _TP:  Triangular packed
   76 *>             _TB:  Triangular band
   77 *>             _QR:  QR (general matrices)
   78 *>             _LQ:  LQ (general matrices)
   79 *>             _QL:  QL (general matrices)
   80 *>             _RQ:  RQ (general matrices)
   81 *>             _QP:  QR with column pivoting
   82 *>             _TZ:  Trapezoidal
   83 *>             _LS:  Least Squares driver routines
   84 *>             _LU:  LU variants
   85 *>             _CH:  Cholesky variants
   86 *>             _QS:  QR variants
   87 *>             _QT:  QRT (general matrices)
   88 *>             _QX:  QRT (triangular-pentagonal matrices)
   89 *>             _TS:  QR routines for tall-skinny and short-wide matrices
   90 *>             _HH:  Householder reconstruction for tall-skinny matrices
   91 *>          The first character must be one of S, D, C, or Z (C or Z only
   92 *>          if complex).
   93 *> \endverbatim
   94 *
   95 *  Authors:
   96 *  ========
   97 *
   98 *> \author Univ. of Tennessee
   99 *> \author Univ. of California Berkeley
  100 *> \author Univ. of Colorado Denver
  101 *> \author NAG Ltd.
  102 *
  103 *> \ingroup aux_lin
  104 *
  105 *  =====================================================================
  106       SUBROUTINE ALAHD( IOUNIT, PATH )
  107 *
  108 *  -- LAPACK test routine --
  109 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
  110 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  111 *
  112 *     .. Scalar Arguments ..
  113       CHARACTER*3        PATH
  114       INTEGER            IOUNIT
  115 *     ..
  116 *
  117 *  =====================================================================
  118 *
  119 *     .. Local Scalars ..
  120       LOGICAL            CORZ, SORD
  121       CHARACTER          C1, C3
  122       CHARACTER*2        P2
  123       CHARACTER*4        EIGCNM
  124       CHARACTER*32       SUBNAM
  125       CHARACTER*9        SYM
  126 *     ..
  127 *     .. External Functions ..
  128       LOGICAL            LSAME, LSAMEN
  129       EXTERNAL           LSAME, LSAMEN
  130 *     ..
  131 *     .. Intrinsic Functions ..
  132       INTRINSIC          LEN_TRIM
  133 *     ..
  134 *     .. Executable Statements ..
  135 *
  136       IF( IOUNIT.LE.0 )
  137      $   RETURN
  138       C1 = PATH( 1: 1 )
  139       C3 = PATH( 3: 3 )
  140       P2 = PATH( 2: 3 )
  141       SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' )
  142       CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' )
  143       IF( .NOT.( SORD .OR. CORZ ) )
  144      $   RETURN
  145 *
  146       IF( LSAMEN( 2, P2, 'GE' ) ) THEN
  147 *
  148 *        GE: General dense
  149 *
  150          WRITE( IOUNIT, FMT = 9999 )PATH
  151          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  152          WRITE( IOUNIT, FMT = 9979 )
  153          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  154          WRITE( IOUNIT, FMT = 9962 )1
  155          WRITE( IOUNIT, FMT = 9961 )2
  156          WRITE( IOUNIT, FMT = 9960 )3
  157          WRITE( IOUNIT, FMT = 9959 )4
  158          WRITE( IOUNIT, FMT = 9958 )5
  159          WRITE( IOUNIT, FMT = 9957 )6
  160          WRITE( IOUNIT, FMT = 9956 )7
  161          WRITE( IOUNIT, FMT = 9955 )8
  162          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  163 *
  164       ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN
  165 *
  166 *        GB: General band
  167 *
  168          WRITE( IOUNIT, FMT = 9998 )PATH
  169          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  170          WRITE( IOUNIT, FMT = 9978 )
  171          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  172          WRITE( IOUNIT, FMT = 9962 )1
  173          WRITE( IOUNIT, FMT = 9960 )2
  174          WRITE( IOUNIT, FMT = 9959 )3
  175          WRITE( IOUNIT, FMT = 9958 )4
  176          WRITE( IOUNIT, FMT = 9957 )5
  177          WRITE( IOUNIT, FMT = 9956 )6
  178          WRITE( IOUNIT, FMT = 9955 )7
  179          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  180 *
  181       ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN
  182 *
  183 *        GT: General tridiagonal
  184 *
  185          WRITE( IOUNIT, FMT = 9997 )PATH
  186          WRITE( IOUNIT, FMT = 9977 )
  187          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  188          WRITE( IOUNIT, FMT = 9962 )1
  189          WRITE( IOUNIT, FMT = 9960 )2
  190          WRITE( IOUNIT, FMT = 9959 )3
  191          WRITE( IOUNIT, FMT = 9958 )4
  192          WRITE( IOUNIT, FMT = 9957 )5
  193          WRITE( IOUNIT, FMT = 9956 )6
  194          WRITE( IOUNIT, FMT = 9955 )7
  195          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  196 *
  197       ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) ) THEN
  198 *
  199 *        PO: Positive definite full
  200 *        PP: Positive definite packed
  201 *
  202          IF( SORD ) THEN
  203             SYM = 'Symmetric'
  204          ELSE
  205             SYM = 'Hermitian'
  206          END IF
  207          IF( LSAME( C3, 'O' ) ) THEN
  208             WRITE( IOUNIT, FMT = 9996 )PATH, SYM
  209          ELSE
  210             WRITE( IOUNIT, FMT = 9995 )PATH, SYM
  211          END IF
  212          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  213          WRITE( IOUNIT, FMT = 9975 )PATH
  214          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  215          WRITE( IOUNIT, FMT = 9954 )1
  216          WRITE( IOUNIT, FMT = 9961 )2
  217          WRITE( IOUNIT, FMT = 9960 )3
  218          WRITE( IOUNIT, FMT = 9959 )4
  219          WRITE( IOUNIT, FMT = 9958 )5
  220          WRITE( IOUNIT, FMT = 9957 )6
  221          WRITE( IOUNIT, FMT = 9956 )7
  222          WRITE( IOUNIT, FMT = 9955 )8
  223          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  224 *
  225       ELSE IF( LSAMEN( 2, P2, 'PS' ) ) THEN
  226 *
  227 *        PS: Positive semi-definite full
  228 *
  229          IF( SORD ) THEN
  230             SYM = 'Symmetric'
  231          ELSE
  232             SYM = 'Hermitian'
  233          END IF
  234          IF( LSAME( C1, 'S' ) .OR. LSAME( C1, 'C' ) ) THEN
  235             EIGCNM = '1E04'
  236          ELSE
  237             EIGCNM = '1D12'
  238          END IF
  239          WRITE( IOUNIT, FMT = 9995 )PATH, SYM
  240          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  241          WRITE( IOUNIT, FMT = 8973 )EIGCNM, EIGCNM, EIGCNM
  242          WRITE( IOUNIT, FMT = '( '' Difference:'' )' )
  243          WRITE( IOUNIT, FMT = 8972 )C1
  244          WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  245          WRITE( IOUNIT, FMT = 8950 )
  246          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  247       ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN
  248 *
  249 *        PB: Positive definite band
  250 *
  251          IF( SORD ) THEN
  252             WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric'
  253          ELSE
  254             WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian'
  255          END IF
  256          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  257          WRITE( IOUNIT, FMT = 9973 )PATH
  258          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  259          WRITE( IOUNIT, FMT = 9954 )1
  260          WRITE( IOUNIT, FMT = 9960 )2
  261          WRITE( IOUNIT, FMT = 9959 )3
  262          WRITE( IOUNIT, FMT = 9958 )4
  263          WRITE( IOUNIT, FMT = 9957 )5
  264          WRITE( IOUNIT, FMT = 9956 )6
  265          WRITE( IOUNIT, FMT = 9955 )7
  266          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  267 *
  268       ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN
  269 *
  270 *        PT: Positive definite tridiagonal
  271 *
  272          IF( SORD ) THEN
  273             WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric'
  274          ELSE
  275             WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian'
  276          END IF
  277          WRITE( IOUNIT, FMT = 9976 )
  278          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  279          WRITE( IOUNIT, FMT = 9952 )1
  280          WRITE( IOUNIT, FMT = 9960 )2
  281          WRITE( IOUNIT, FMT = 9959 )3
  282          WRITE( IOUNIT, FMT = 9958 )4
  283          WRITE( IOUNIT, FMT = 9957 )5
  284          WRITE( IOUNIT, FMT = 9956 )6
  285          WRITE( IOUNIT, FMT = 9955 )7
  286          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  287 *
  288       ELSE IF( LSAMEN( 2, P2, 'SY' )  ) THEN
  289 *
  290 *        SY: Symmetric indefinite full,
  291 *            with partial (Bunch-Kaufman) pivoting algorithm
  292 *
  293          IF( LSAME( C3, 'Y' ) ) THEN
  294             WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
  295          ELSE
  296             WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
  297          END IF
  298          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  299          IF( SORD ) THEN
  300             WRITE( IOUNIT, FMT = 9972 )
  301          ELSE
  302             WRITE( IOUNIT, FMT = 9971 )
  303          END IF
  304          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  305          WRITE( IOUNIT, FMT = 9953 )1
  306          WRITE( IOUNIT, FMT = 9961 )2
  307          WRITE( IOUNIT, FMT = 9960 )3
  308          WRITE( IOUNIT, FMT = 9960 )4
  309          WRITE( IOUNIT, FMT = 9959 )5
  310          WRITE( IOUNIT, FMT = 9958 )6
  311          WRITE( IOUNIT, FMT = 9956 )7
  312          WRITE( IOUNIT, FMT = 9957 )8
  313          WRITE( IOUNIT, FMT = 9955 )9
  314          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  315 *
  316       ELSE IF( LSAMEN( 2, P2, 'SR' ) .OR. LSAMEN( 2, P2, 'SK') ) THEN
  317 *
  318 *        SR: Symmetric indefinite full,
  319 *            with rook (bounded Bunch-Kaufman) pivoting algorithm
  320 *
  321 *        SK: Symmetric indefinite full,
  322 *            with rook (bounded Bunch-Kaufman) pivoting algorithm,
  323 *            ( new storage format for factors:
  324 *              L and diagonal of D is stored in A,
  325 *              subdiagonal of D is stored in E )
  326 *
  327          WRITE( IOUNIT, FMT = 9892 )PATH, 'Symmetric'
  328 *
  329          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  330          IF( SORD ) THEN
  331             WRITE( IOUNIT, FMT = 9972 )
  332          ELSE
  333             WRITE( IOUNIT, FMT = 9971 )
  334          END IF
  335 *
  336          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  337          WRITE( IOUNIT, FMT = 9953 )1
  338          WRITE( IOUNIT, FMT = 9961 )2
  339          WRITE( IOUNIT, FMT = 9927 )3
  340          WRITE( IOUNIT, FMT = 9928 )
  341          WRITE( IOUNIT, FMT = 9926 )4
  342          WRITE( IOUNIT, FMT = 9928 )
  343          WRITE( IOUNIT, FMT = 9960 )5
  344          WRITE( IOUNIT, FMT = 9959 )6
  345          WRITE( IOUNIT, FMT = 9955 )7
  346          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  347 *
  348       ELSE IF( LSAMEN( 2, P2, 'SP' ) ) THEN
  349 *
  350 *        SP: Symmetric indefinite packed,
  351 *            with partial (Bunch-Kaufman) pivoting algorithm
  352 *
  353          IF( LSAME( C3, 'Y' ) ) THEN
  354             WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric'
  355          ELSE
  356             WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric'
  357          END IF
  358          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  359          IF( SORD ) THEN
  360             WRITE( IOUNIT, FMT = 9972 )
  361          ELSE
  362             WRITE( IOUNIT, FMT = 9971 )
  363          END IF
  364          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  365          WRITE( IOUNIT, FMT = 9953 )1
  366          WRITE( IOUNIT, FMT = 9961 )2
  367          WRITE( IOUNIT, FMT = 9960 )3
  368          WRITE( IOUNIT, FMT = 9959 )4
  369          WRITE( IOUNIT, FMT = 9958 )5
  370          WRITE( IOUNIT, FMT = 9956 )6
  371          WRITE( IOUNIT, FMT = 9957 )7
  372          WRITE( IOUNIT, FMT = 9955 )8
  373          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  374 *
  375       ELSE IF( LSAMEN( 2, P2, 'HA' )  ) THEN
  376 *
  377 *        HA: Hermitian,
  378 *            with Assen Algorithm
  379 *
  380          WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
  381 *
  382          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  383          WRITE( IOUNIT, FMT = 9972 )
  384 *
  385          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  386          WRITE( IOUNIT, FMT = 9953 )1
  387          WRITE( IOUNIT, FMT = 9961 )2
  388          WRITE( IOUNIT, FMT = 9960 )3
  389          WRITE( IOUNIT, FMT = 9960 )4
  390          WRITE( IOUNIT, FMT = 9959 )5
  391          WRITE( IOUNIT, FMT = 9958 )6
  392          WRITE( IOUNIT, FMT = 9956 )7
  393          WRITE( IOUNIT, FMT = 9957 )8
  394          WRITE( IOUNIT, FMT = 9955 )9
  395          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  396 *
  397       ELSE IF( LSAMEN( 2, P2, 'HE' )  ) THEN
  398 *
  399 *        HE: Hermitian indefinite full,
  400 *            with partial (Bunch-Kaufman) pivoting algorithm
  401 *
  402          WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
  403 *
  404          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  405          WRITE( IOUNIT, FMT = 9972 )
  406 *
  407          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  408          WRITE( IOUNIT, FMT = 9953 )1
  409          WRITE( IOUNIT, FMT = 9961 )2
  410          WRITE( IOUNIT, FMT = 9960 )3
  411          WRITE( IOUNIT, FMT = 9960 )4
  412          WRITE( IOUNIT, FMT = 9959 )5
  413          WRITE( IOUNIT, FMT = 9958 )6
  414          WRITE( IOUNIT, FMT = 9956 )7
  415          WRITE( IOUNIT, FMT = 9957 )8
  416          WRITE( IOUNIT, FMT = 9955 )9
  417          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  418 *
  419       ELSE IF( LSAMEN( 2, P2, 'HR' ) .OR. LSAMEN( 2, P2, 'HR' ) ) THEN
  420 *
  421 *        HR: Hermitian indefinite full,
  422 *            with rook (bounded Bunch-Kaufman) pivoting algorithm
  423 *
  424 *        HK: Hermitian indefinite full,
  425 *            with rook (bounded Bunch-Kaufman) pivoting algorithm,
  426 *            ( new storage format for factors:
  427 *              L and diagonal of D is stored in A,
  428 *              subdiagonal of D is stored in E )
  429 *
  430          WRITE( IOUNIT, FMT = 9892 )PATH, 'Hermitian'
  431 *
  432          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  433          WRITE( IOUNIT, FMT = 9972 )
  434 *
  435          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  436          WRITE( IOUNIT, FMT = 9953 )1
  437          WRITE( IOUNIT, FMT = 9961 )2
  438          WRITE( IOUNIT, FMT = 9927 )3
  439          WRITE( IOUNIT, FMT = 9928 )
  440          WRITE( IOUNIT, FMT = 9926 )4
  441          WRITE( IOUNIT, FMT = 9928 )
  442          WRITE( IOUNIT, FMT = 9960 )5
  443          WRITE( IOUNIT, FMT = 9959 )6
  444          WRITE( IOUNIT, FMT = 9955 )7
  445          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  446 *
  447       ELSE IF( LSAMEN( 2, P2, 'HP' ) ) THEN
  448 *
  449 *        HP: Hermitian indefinite packed,
  450 *            with partial (Bunch-Kaufman) pivoting algorithm
  451 *
  452          IF( LSAME( C3, 'E' ) ) THEN
  453             WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian'
  454          ELSE
  455             WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian'
  456          END IF
  457          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  458          WRITE( IOUNIT, FMT = 9972 )
  459          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  460          WRITE( IOUNIT, FMT = 9953 )1
  461          WRITE( IOUNIT, FMT = 9961 )2
  462          WRITE( IOUNIT, FMT = 9960 )3
  463          WRITE( IOUNIT, FMT = 9959 )4
  464          WRITE( IOUNIT, FMT = 9958 )5
  465          WRITE( IOUNIT, FMT = 9956 )6
  466          WRITE( IOUNIT, FMT = 9957 )7
  467          WRITE( IOUNIT, FMT = 9955 )8
  468          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  469 *
  470       ELSE IF( LSAMEN( 2, P2, 'TR' ) .OR. LSAMEN( 2, P2, 'TP' ) ) THEN
  471 *
  472 *        TR: Triangular full
  473 *        TP: Triangular packed
  474 *
  475          IF( LSAME( C3, 'R' ) ) THEN
  476             WRITE( IOUNIT, FMT = 9990 )PATH
  477             SUBNAM = PATH( 1: 1 ) // 'LATRS'
  478          ELSE
  479             WRITE( IOUNIT, FMT = 9989 )PATH
  480             SUBNAM = PATH( 1: 1 ) // 'LATPS'
  481          END IF
  482          WRITE( IOUNIT, FMT = 9966 )PATH
  483          WRITE( IOUNIT, FMT = 9965 )SUBNAM(1:LEN_TRIM( SUBNAM ))
  484          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  485          WRITE( IOUNIT, FMT = 9961 )1
  486          WRITE( IOUNIT, FMT = 9960 )2
  487          WRITE( IOUNIT, FMT = 9959 )3
  488          WRITE( IOUNIT, FMT = 9958 )4
  489          WRITE( IOUNIT, FMT = 9957 )5
  490          WRITE( IOUNIT, FMT = 9956 )6
  491          WRITE( IOUNIT, FMT = 9955 )7
  492          WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 8
  493          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  494 *
  495       ELSE IF( LSAMEN( 2, P2, 'TB' ) ) THEN
  496 *
  497 *        TB: Triangular band
  498 *
  499          WRITE( IOUNIT, FMT = 9988 )PATH
  500          SUBNAM = PATH( 1: 1 ) // 'LATBS'
  501          WRITE( IOUNIT, FMT = 9964 )PATH
  502          WRITE( IOUNIT, FMT = 9963 )SUBNAM(1:LEN_TRIM( SUBNAM ))
  503          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  504          WRITE( IOUNIT, FMT = 9960 )1
  505          WRITE( IOUNIT, FMT = 9959 )2
  506          WRITE( IOUNIT, FMT = 9958 )3
  507          WRITE( IOUNIT, FMT = 9957 )4
  508          WRITE( IOUNIT, FMT = 9956 )5
  509          WRITE( IOUNIT, FMT = 9955 )6
  510          WRITE( IOUNIT, FMT = 9951 )SUBNAM(1:LEN_TRIM( SUBNAM )), 7
  511          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  512 *
  513       ELSE IF( LSAMEN( 2, P2, 'QR' ) ) THEN
  514 *
  515 *        QR decomposition of rectangular matrices
  516 *
  517          WRITE( IOUNIT, FMT = 9987 )PATH, 'QR'
  518          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  519          WRITE( IOUNIT, FMT = 9970 )
  520          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  521          WRITE( IOUNIT, FMT = 9950 )1
  522          WRITE( IOUNIT, FMT = 6950 )8
  523          WRITE( IOUNIT, FMT = 9946 )2
  524          WRITE( IOUNIT, FMT = 9944 )3, 'M'
  525          WRITE( IOUNIT, FMT = 9943 )4, 'M'
  526          WRITE( IOUNIT, FMT = 9942 )5, 'M'
  527          WRITE( IOUNIT, FMT = 9941 )6, 'M'
  528          WRITE( IOUNIT, FMT = 9960 )7
  529          WRITE( IOUNIT, FMT = 6660 )9
  530          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  531 *
  532       ELSE IF( LSAMEN( 2, P2, 'LQ' ) ) THEN
  533 *
  534 *        LQ decomposition of rectangular matrices
  535 *
  536          WRITE( IOUNIT, FMT = 9987 )PATH, 'LQ'
  537          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  538          WRITE( IOUNIT, FMT = 9970 )
  539          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  540          WRITE( IOUNIT, FMT = 9949 )1
  541          WRITE( IOUNIT, FMT = 9945 )2
  542          WRITE( IOUNIT, FMT = 9944 )3, 'N'
  543          WRITE( IOUNIT, FMT = 9943 )4, 'N'
  544          WRITE( IOUNIT, FMT = 9942 )5, 'N'
  545          WRITE( IOUNIT, FMT = 9941 )6, 'N'
  546          WRITE( IOUNIT, FMT = 9960 )7
  547          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  548 *
  549       ELSE IF( LSAMEN( 2, P2, 'QL' ) ) THEN
  550 *
  551 *        QL decomposition of rectangular matrices
  552 *
  553          WRITE( IOUNIT, FMT = 9987 )PATH, 'QL'
  554          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  555          WRITE( IOUNIT, FMT = 9970 )
  556          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  557          WRITE( IOUNIT, FMT = 9948 )1
  558          WRITE( IOUNIT, FMT = 9946 )2
  559          WRITE( IOUNIT, FMT = 9944 )3, 'M'
  560          WRITE( IOUNIT, FMT = 9943 )4, 'M'
  561          WRITE( IOUNIT, FMT = 9942 )5, 'M'
  562          WRITE( IOUNIT, FMT = 9941 )6, 'M'
  563          WRITE( IOUNIT, FMT = 9960 )7
  564          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  565 *
  566       ELSE IF( LSAMEN( 2, P2, 'RQ' ) ) THEN
  567 *
  568 *        RQ decomposition of rectangular matrices
  569 *
  570          WRITE( IOUNIT, FMT = 9987 )PATH, 'RQ'
  571          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  572          WRITE( IOUNIT, FMT = 9970 )
  573          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  574          WRITE( IOUNIT, FMT = 9947 )1
  575          WRITE( IOUNIT, FMT = 9945 )2
  576          WRITE( IOUNIT, FMT = 9944 )3, 'N'
  577          WRITE( IOUNIT, FMT = 9943 )4, 'N'
  578          WRITE( IOUNIT, FMT = 9942 )5, 'N'
  579          WRITE( IOUNIT, FMT = 9941 )6, 'N'
  580          WRITE( IOUNIT, FMT = 9960 )7
  581          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  582 *
  583       ELSE IF( LSAMEN( 2, P2, 'QP' ) ) THEN
  584 *
  585 *        QR decomposition with column pivoting
  586 *
  587          WRITE( IOUNIT, FMT = 9986 )PATH
  588          WRITE( IOUNIT, FMT = 9969 )
  589          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  590          WRITE( IOUNIT, FMT = 9940 )1
  591          WRITE( IOUNIT, FMT = 9939 )2
  592          WRITE( IOUNIT, FMT = 9938 )3
  593          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  594 *
  595       ELSE IF( LSAMEN( 2, P2, 'TZ' ) ) THEN
  596 *
  597 *        TZ:  Trapezoidal
  598 *
  599          WRITE( IOUNIT, FMT = 9985 )PATH
  600          WRITE( IOUNIT, FMT = 9968 )
  601          WRITE( IOUNIT, FMT = 9929 )C1
  602          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  603          WRITE( IOUNIT, FMT = 9940 )1
  604          WRITE( IOUNIT, FMT = 9937 )2
  605          WRITE( IOUNIT, FMT = 9938 )3
  606          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  607 *
  608       ELSE IF( LSAMEN( 2, P2, 'LS' ) ) THEN
  609 *
  610 *        LS:  Least Squares driver routines for
  611 *             LS, LSD, LSS, LSX and LSY.
  612 *
  613          WRITE( IOUNIT, FMT = 9984 )PATH
  614          WRITE( IOUNIT, FMT = 9967 )
  615          WRITE( IOUNIT, FMT = 9921 )C1, C1, C1, C1
  616          WRITE( IOUNIT, FMT = 9935 )1
  617          WRITE( IOUNIT, FMT = 9931 )2
  618          WRITE( IOUNIT, FMT = 9933 )3
  619          WRITE( IOUNIT, FMT = 9935 )4
  620          WRITE( IOUNIT, FMT = 9934 )5
  621          WRITE( IOUNIT, FMT = 9932 )6
  622          WRITE( IOUNIT, FMT = 9920 )
  623          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  624 *
  625       ELSE IF( LSAMEN( 2, P2, 'LU' ) ) THEN
  626 *
  627 *        LU factorization variants
  628 *
  629          WRITE( IOUNIT, FMT = 9983 )PATH
  630          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  631          WRITE( IOUNIT, FMT = 9979 )
  632          WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  633          WRITE( IOUNIT, FMT = 9962 )1
  634          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  635 *
  636       ELSE IF( LSAMEN( 2, P2, 'CH' ) ) THEN
  637 *
  638 *        Cholesky factorization variants
  639 *
  640          WRITE( IOUNIT, FMT = 9982 )PATH
  641          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  642          WRITE( IOUNIT, FMT = 9974 )
  643          WRITE( IOUNIT, FMT = '( '' Test ratio:'' )' )
  644          WRITE( IOUNIT, FMT = 9954 )1
  645          WRITE( IOUNIT, FMT = '( '' Messages:'' )' )
  646 *
  647       ELSE IF( LSAMEN( 2, P2, 'QS' ) ) THEN
  648 *
  649 *        QR factorization variants
  650 *
  651          WRITE( IOUNIT, FMT = 9981 )PATH
  652          WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' )
  653          WRITE( IOUNIT, FMT = 9970 )
  654          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  655 *
  656       ELSE IF( LSAMEN( 2, P2, 'QT' ) ) THEN
  657 *
  658 *        QRT (general matrices)
  659 *
  660          WRITE( IOUNIT, FMT = 8000 ) PATH
  661          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  662          WRITE( IOUNIT, FMT = 8011 ) 1
  663          WRITE( IOUNIT, FMT = 8012 ) 2
  664          WRITE( IOUNIT, FMT = 8013 ) 3
  665          WRITE( IOUNIT, FMT = 8014 ) 4
  666          WRITE( IOUNIT, FMT = 8015 ) 5
  667          WRITE( IOUNIT, FMT = 8016 ) 6
  668 *
  669       ELSE IF( LSAMEN( 2, P2, 'QX' ) ) THEN
  670 *
  671 *        QRT (triangular-pentagonal)
  672 *
  673          WRITE( IOUNIT, FMT = 8001 ) PATH
  674          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  675          WRITE( IOUNIT, FMT = 8017 ) 1
  676          WRITE( IOUNIT, FMT = 8018 ) 2
  677          WRITE( IOUNIT, FMT = 8019 ) 3
  678          WRITE( IOUNIT, FMT = 8020 ) 4
  679          WRITE( IOUNIT, FMT = 8021 ) 5
  680          WRITE( IOUNIT, FMT = 8022 ) 6
  681 *
  682       ELSE IF( LSAMEN( 2, P2, 'TQ' ) ) THEN
  683 *
  684 *        QRT (triangular-pentagonal)
  685 *
  686          WRITE( IOUNIT, FMT = 8002 ) PATH
  687          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  688          WRITE( IOUNIT, FMT = 8023 ) 1
  689          WRITE( IOUNIT, FMT = 8024 ) 2
  690          WRITE( IOUNIT, FMT = 8025 ) 3
  691          WRITE( IOUNIT, FMT = 8026 ) 4
  692          WRITE( IOUNIT, FMT = 8027 ) 5
  693          WRITE( IOUNIT, FMT = 8028 ) 6
  694 *
  695       ELSE IF( LSAMEN( 2, P2, 'XQ' ) ) THEN
  696 *
  697 *        QRT (triangular-pentagonal)
  698 *
  699          WRITE( IOUNIT, FMT = 8003 ) PATH
  700          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  701          WRITE( IOUNIT, FMT = 8029 ) 1
  702          WRITE( IOUNIT, FMT = 8030 ) 2
  703          WRITE( IOUNIT, FMT = 8031 ) 3
  704          WRITE( IOUNIT, FMT = 8032 ) 4
  705          WRITE( IOUNIT, FMT = 8033 ) 5
  706          WRITE( IOUNIT, FMT = 8034 ) 6
  707 *
  708       ELSE IF( LSAMEN( 2, P2, 'TS' ) ) THEN
  709 *
  710 *        TS:  QR routines for tall-skinny and short-wide matrices
  711 *
  712          WRITE( IOUNIT, FMT = 8004 ) PATH
  713          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  714          WRITE( IOUNIT, FMT = 8035 ) 1
  715          WRITE( IOUNIT, FMT = 8036 ) 2
  716          WRITE( IOUNIT, FMT = 8037 ) 3
  717          WRITE( IOUNIT, FMT = 8038 ) 4
  718          WRITE( IOUNIT, FMT = 8039 ) 5
  719          WRITE( IOUNIT, FMT = 8040 ) 6
  720 *
  721       ELSE IF( LSAMEN( 2, P2, 'HH' ) ) THEN
  722 *
  723 *        HH:  Householder reconstruction for tall-skinny matrices
  724 *
  725          WRITE( IOUNIT, FMT = 8005 ) PATH
  726          WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' )
  727          WRITE( IOUNIT, FMT = 8050 ) 1
  728          WRITE( IOUNIT, FMT = 8051 ) 2
  729          WRITE( IOUNIT, FMT = 8052 ) 3
  730          WRITE( IOUNIT, FMT = 8053 ) 4
  731          WRITE( IOUNIT, FMT = 8054 ) 5
  732          WRITE( IOUNIT, FMT = 8055 ) 6
  733 *
  734       ELSE
  735 *
  736 *        Print error message if no header is available.
  737 *
  738          WRITE( IOUNIT, FMT = 9980 )PATH
  739       END IF
  740 *
  741 *     First line of header
  742 *
  743  9999 FORMAT( / 1X, A3, ':  General dense matrices' )
  744  9998 FORMAT( / 1X, A3, ':  General band matrices' )
  745  9997 FORMAT( / 1X, A3, ':  General tridiagonal' )
  746  9996 FORMAT( / 1X, A3, ':  ', A9, ' positive definite matrices' )
  747  9995 FORMAT( / 1X, A3, ':  ', A9, ' positive definite packed matrices'
  748      $       )
  749  9994 FORMAT( / 1X, A3, ':  ', A9, ' positive definite band matrices' )
  750  9993 FORMAT( / 1X, A3, ':  ', A9, ' positive definite tridiagonal' )
  751  9992 FORMAT( / 1X, A3, ':  ', A9, ' indefinite matrices',
  752      $      ', partial (Bunch-Kaufman) pivoting' )
  753  9991 FORMAT( / 1X, A3, ':  ', A9, ' indefinite packed matrices',
  754      $      ', partial (Bunch-Kaufman) pivoting' )
  755  9892 FORMAT( / 1X, A3, ':  ', A9, ' indefinite matrices',
  756      $      ', "rook" (bounded Bunch-Kaufman) pivoting' )
  757  9891 FORMAT( / 1X, A3, ':  ', A9, ' indefinite packed matrices',
  758      $      ', "rook" (bounded Bunch-Kaufman) pivoting' )
  759  9990 FORMAT( / 1X, A3, ':  Triangular matrices' )
  760  9989 FORMAT( / 1X, A3, ':  Triangular packed matrices' )
  761  9988 FORMAT( / 1X, A3, ':  Triangular band matrices' )
  762  9987 FORMAT( / 1X, A3, ':  ', A2, ' factorization of general matrices'
  763      $       )
  764  9986 FORMAT( / 1X, A3, ':  QR factorization with column pivoting' )
  765  9985 FORMAT( / 1X, A3, ':  RQ factorization of trapezoidal matrix' )
  766  9984 FORMAT( / 1X, A3, ':  Least squares driver routines' )
  767  9983 FORMAT( / 1X, A3, ':  LU factorization variants' )
  768  9982 FORMAT( / 1X, A3, ':  Cholesky factorization variants' )
  769  9981 FORMAT( / 1X, A3, ':  QR factorization variants' )
  770  9980 FORMAT( / 1X, A3, ':  No header available' )
  771  8000 FORMAT( / 1X, A3, ':  QRT factorization for general matrices' )
  772  8001 FORMAT( / 1X, A3, ':  QRT factorization for ',
  773      $       'triangular-pentagonal matrices' )
  774  8002 FORMAT( / 1X, A3, ':  LQT factorization for general matrices' )
  775  8003 FORMAT( / 1X, A3, ':  LQT factorization for ',
  776      $       'triangular-pentagonal matrices' )
  777  8004 FORMAT( / 1X, A3, ':  TS factorization for ',
  778      $       'tall-skinny or short-wide matrices' )
  779  8005 FORMAT( / 1X, A3, ':  Householder recostruction from TSQR',
  780      $       ' factorization output ', /,' for tall-skinny matrices.' )
  781 *
  782 *     GE matrix types
  783 *
  784  9979 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X,
  785      $      '2. Upper triangular', 16X,
  786      $      '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  787      $      '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS',
  788      $      / 4X, '4. Random, CNDNUM = 2', 13X,
  789      $      '10. Scaled near underflow', / 4X, '5. First column zero',
  790      $      14X, '11. Scaled near overflow', / 4X,
  791      $      '6. Last column zero' )
  792 *
  793 *     GB matrix types
  794 *
  795  9978 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  796      $      '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  797      $      '2. First column zero', 15X, '6. Random, CNDNUM = .01/EPS',
  798      $      / 4X, '3. Last column zero', 16X,
  799      $      '7. Scaled near underflow', / 4X,
  800      $      '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' )
  801 *
  802 *     GT matrix types
  803 *
  804  9977 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  805      $      / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  806      $      / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero',
  807      $      / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  808      $      '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS',
  809      $      7X, '10. Last n/2 columns zero', / 4X,
  810      $      '5. Scaled near underflow', 10X,
  811      $      '11. Scaled near underflow', / 4X,
  812      $      '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  813 *
  814 *     PT matrix types
  815 *
  816  9976 FORMAT( ' Matrix types (1-6 have specified condition numbers):',
  817      $      / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM',
  818      $      / 4X, '2. Random, CNDNUM = 2', 14X,
  819      $      '8. First row and column zero', / 4X,
  820      $      '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X,
  821      $      '9. Last row and column zero', / 4X,
  822      $      '4. Random, CNDNUM = 0.1/EPS', 7X,
  823      $      '10. Middle row and column zero', / 4X,
  824      $      '5. Scaled near underflow', 10X,
  825      $      '11. Scaled near underflow', / 4X,
  826      $      '6. Scaled near overflow', 11X, '12. Scaled near overflow' )
  827 *
  828 *     PO, PP matrix types
  829 *
  830  9975 FORMAT( 4X, '1. Diagonal', 24X,
  831      $      '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  832      $      '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  833      $      / 3X, '*3. First row and column zero', 7X,
  834      $      '8. Scaled near underflow', / 3X,
  835      $      '*4. Last row and column zero', 8X,
  836      $      '9. Scaled near overflow', / 3X,
  837      $      '*5. Middle row and column zero', / 3X,
  838      $      '(* - tests error exits from ', A3,
  839      $      'TRF, no test ratios are computed)' )
  840 *
  841 *     CH matrix types
  842 *
  843  9974 FORMAT( 4X, '1. Diagonal', 24X,
  844      $      '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  845      $      '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS',
  846      $      / 3X, '*3. First row and column zero', 7X,
  847      $      '8. Scaled near underflow', / 3X,
  848      $      '*4. Last row and column zero', 8X,
  849      $      '9. Scaled near overflow', / 3X,
  850      $      '*5. Middle row and column zero', / 3X,
  851      $      '(* - tests error exits, no test ratios are computed)' )
  852 *
  853 *     PS matrix types
  854 *
  855  8973 FORMAT( 4X, '1. Diagonal', / 4X, '2. Random, CNDNUM = 2', 14X,
  856      $      / 3X, '*3. Nonzero eigenvalues of: D(1:RANK-1)=1 and ',
  857      $      'D(RANK) = 1.0/', A4, / 3X,
  858      $      '*4. Nonzero eigenvalues of: D(1)=1 and ',
  859      $      ' D(2:RANK) = 1.0/', A4, / 3X,
  860      $      '*5. Nonzero eigenvalues of: D(I) = ', A4,
  861      $      '**(-(I-1)/(RANK-1)) ', ' I=1:RANK', / 4X,
  862      $      '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  863      $      '7. Random, CNDNUM = 0.1/EPS', / 4X,
  864      $      '8. Scaled near underflow', / 4X, '9. Scaled near overflow',
  865      $      / 3X, '(* - Semi-definite tests )' )
  866  8972 FORMAT( 3X, 'RANK minus computed rank, returned by ', A, 'PSTRF' )
  867 *
  868 *     PB matrix types
  869 *
  870  9973 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X,
  871      $      '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X,
  872      $      '*2. First row and column zero', 7X,
  873      $      '6. Random, CNDNUM = 0.1/EPS', / 3X,
  874      $      '*3. Last row and column zero', 8X,
  875      $      '7. Scaled near underflow', / 3X,
  876      $      '*4. Middle row and column zero', 6X,
  877      $      '8. Scaled near overflow', / 3X,
  878      $      '(* - tests error exits from ', A3,
  879      $      'TRF, no test ratios are computed)' )
  880 *
  881 *     SSY, SSR, SSP, CHE, CHR, CHP matrix types
  882 *
  883  9972 FORMAT( 4X, '1. Diagonal', 24X,
  884      $      '6. Last n/2 rows and columns zero', / 4X,
  885      $      '2. Random, CNDNUM = 2', 14X,
  886      $      '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  887      $      '3. First row and column zero', 7X,
  888      $      '8. Random, CNDNUM = 0.1/EPS', / 4X,
  889      $      '4. Last row and column zero', 8X,
  890      $      '9. Scaled near underflow', / 4X,
  891      $      '5. Middle row and column zero', 5X,
  892      $      '10. Scaled near overflow' )
  893 *
  894 *     CSY, CSR, CSP matrix types
  895 *
  896  9971 FORMAT( 4X, '1. Diagonal', 24X,
  897      $      '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  898      $      '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS',
  899      $      / 4X, '3. First row and column zero', 7X,
  900      $      '9. Scaled near underflow', / 4X,
  901      $      '4. Last row and column zero', 7X,
  902      $      '10. Scaled near overflow', / 4X,
  903      $      '5. Middle row and column zero', 5X,
  904      $      '11. Block diagonal matrix', / 4X,
  905      $      '6. Last n/2 rows and columns zero' )
  906 *
  907 *     QR matrix types
  908 *
  909  9970 FORMAT( 4X, '1. Diagonal', 24X,
  910      $      '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X,
  911      $      '2. Upper triangular', 16X, '6. Random, CNDNUM = 0.1/EPS',
  912      $      / 4X, '3. Lower triangular', 16X,
  913      $      '7. Scaled near underflow', / 4X, '4. Random, CNDNUM = 2',
  914      $      14X, '8. Scaled near overflow' )
  915 *
  916 *     QP matrix types
  917 *
  918  9969 FORMAT( ' Matrix types (2-6 have condition 1/EPS):', / 4X,
  919      $      '1. Zero matrix', 21X, '4. First n/2 columns fixed', / 4X,
  920      $      '2. One small eigenvalue', 12X, '5. Last n/2 columns fixed',
  921      $      / 4X, '3. Geometric distribution', 10X,
  922      $      '6. Every second column fixed' )
  923 *
  924 *     TZ matrix types
  925 *
  926  9968 FORMAT( ' Matrix types (2-3 have condition 1/EPS):', / 4X,
  927      $      '1. Zero matrix', / 4X, '2. One small eigenvalue', / 4X,
  928      $      '3. Geometric distribution' )
  929 *
  930 *     LS matrix types
  931 *
  932  9967 FORMAT( ' Matrix types (1-3: full rank, 4-6: rank deficient):',
  933      $      / 4X, '1 and 4. Normal scaling', / 4X,
  934      $      '2 and 5. Scaled near overflow', / 4X,
  935      $      '3 and 6. Scaled near underflow' )
  936 *
  937 *     TR, TP matrix types
  938 *
  939  9966 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  940      $      '1. Diagonal', 24X, '6. Scaled near overflow', / 4X,
  941      $      '2. Random, CNDNUM = 2', 14X, '7. Identity', / 4X,
  942      $      '3. Random, CNDNUM = sqrt(0.1/EPS)  ',
  943      $      '8. Unit triangular, CNDNUM = 2', / 4X,
  944      $      '4. Random, CNDNUM = 0.1/EPS', 8X,
  945      $      '9. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  946      $      '5. Scaled near underflow', 10X,
  947      $      '10. Unit, CNDNUM = 0.1/EPS' )
  948  9965 FORMAT( ' Special types for testing ', A, ':', / 3X,
  949      $      '11. Matrix elements are O(1), large right hand side', / 3X,
  950      $      '12. First diagonal causes overflow,',
  951      $      ' offdiagonal column norms < 1', / 3X,
  952      $      '13. First diagonal causes overflow,',
  953      $      ' offdiagonal column norms > 1', / 3X,
  954      $      '14. Growth factor underflows, solution does not overflow',
  955      $      / 3X, '15. Small diagonal causes gradual overflow', / 3X,
  956      $      '16. One zero diagonal element', / 3X,
  957      $      '17. Large offdiagonals cause overflow when adding a column'
  958      $      , / 3X, '18. Unit triangular with large right hand side' )
  959 *
  960 *     TB matrix types
  961 *
  962  9964 FORMAT( ' Matrix types for ', A3, ' routines:', / 4X,
  963      $      '1. Random, CNDNUM = 2', 14X, '6. Identity', / 4X,
  964      $      '2. Random, CNDNUM = sqrt(0.1/EPS)  ',
  965      $      '7. Unit triangular, CNDNUM = 2', / 4X,
  966      $      '3. Random, CNDNUM = 0.1/EPS', 8X,
  967      $      '8. Unit, CNDNUM = sqrt(0.1/EPS)', / 4X,
  968      $      '4. Scaled near underflow', 11X,
  969      $      '9. Unit, CNDNUM = 0.1/EPS', / 4X,
  970      $      '5. Scaled near overflow' )
  971  9963 FORMAT( ' Special types for testing ', A, ':', / 3X,
  972      $      '10. Matrix elements are O(1), large right hand side', / 3X,
  973      $      '11. First diagonal causes overflow,',
  974      $      ' offdiagonal column norms < 1', / 3X,
  975      $      '12. First diagonal causes overflow,',
  976      $      ' offdiagonal column norms > 1', / 3X,
  977      $      '13. Growth factor underflows, solution does not overflow',
  978      $      / 3X, '14. Small diagonal causes gradual overflow', / 3X,
  979      $      '15. One zero diagonal element', / 3X,
  980      $      '16. Large offdiagonals cause overflow when adding a column'
  981      $      , / 3X, '17. Unit triangular with large right hand side' )
  982 *
  983 *     Test ratios
  984 *
  985  9962 FORMAT( 3X, I2, ': norm( L * U - A )  / ( N * norm(A) * EPS )' )
  986  9961 FORMAT( 3X, I2, ': norm( I - A*AINV ) / ',
  987      $      '( N * norm(A) * norm(AINV) * EPS )' )
  988  9960 FORMAT( 3X, I2, ': norm( B - A * X )  / ',
  989      $      '( norm(A) * norm(X) * EPS )' )
  990  6660 FORMAT( 3X, I2, ': diagonal is not non-negative')
  991  9959 FORMAT( 3X, I2, ': norm( X - XACT )   / ',
  992      $      '( norm(XACT) * CNDNUM * EPS )' )
  993  9958 FORMAT( 3X, I2, ': norm( X - XACT )   / ',
  994      $      '( norm(XACT) * CNDNUM * EPS ), refined' )
  995  9957 FORMAT( 3X, I2, ': norm( X - XACT )   / ',
  996      $      '( norm(XACT) * (error bound) )' )
  997  9956 FORMAT( 3X, I2, ': (backward error)   / EPS' )
  998  9955 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' )
  999  9954 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )',
 1000      $      ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )'
 1001      $       )
 1002  8950 FORMAT( 3X,
 1003      $      'norm( P * U'' * U * P'' - A ) / ( N * norm(A) * EPS )',
 1004      $      ', or', / 3X,
 1005      $      'norm( P * L * L'' * P'' - A ) / ( N * norm(A) * EPS )' )
 1006  9953 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )',
 1007      $      ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
 1008      $       )
 1009  9952 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )',
 1010      $      ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )'
 1011      $       )
 1012  9951 FORMAT( ' Test ratio for ', A, ':', / 3X, I2,
 1013      $      ': norm( s*b - A*x )  / ( norm(A) * norm(x) * EPS )' )
 1014  9950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )' )
 1015  6950 FORMAT( 3X, I2, ': norm( R - Q'' * A ) / ( M * norm(A) * EPS )
 1016      $       [RFPG]' )
 1017  9949 FORMAT( 3X, I2, ': norm( L - A * Q'' ) / ( N * norm(A) * EPS )' )
 1018  9948 FORMAT( 3X, I2, ': norm( L - Q'' * A ) / ( M * norm(A) * EPS )' )
 1019  9947 FORMAT( 3X, I2, ': norm( R - A * Q'' ) / ( N * norm(A) * EPS )' )
 1020  9946 FORMAT( 3X, I2, ': norm( I - Q''*Q )   / ( M * EPS )' )
 1021  9945 FORMAT( 3X, I2, ': norm( I - Q*Q'' )   / ( N * EPS )' )
 1022  9944 FORMAT( 3X, I2, ': norm( Q*C - Q*C )  / ', '( ', A1,
 1023      $      ' * norm(C) * EPS )' )
 1024  9943 FORMAT( 3X, I2, ': norm( C*Q - C*Q )  / ', '( ', A1,
 1025      $      ' * norm(C) * EPS )' )
 1026  9942 FORMAT( 3X, I2, ': norm( Q''*C - Q''*C )/ ', '( ', A1,
 1027      $      ' * norm(C) * EPS )' )
 1028  9941 FORMAT( 3X, I2, ': norm( C*Q'' - C*Q'' )/ ', '( ', A1,
 1029      $      ' * norm(C) * EPS )' )
 1030  9940 FORMAT( 3X, I2, ': norm(svd(A) - svd(R)) / ',
 1031      $      '( M * norm(svd(R)) * EPS )' )
 1032  9939 FORMAT( 3X, I2, ': norm( A*P - Q*R )     / ( M * norm(A) * EPS )'
 1033      $       )
 1034  9938 FORMAT( 3X, I2, ': norm( I - Q''*Q )      / ( M * EPS )' )
 1035  9937 FORMAT( 3X, I2, ': norm( A - R*Q )       / ( M * norm(A) * EPS )'
 1036      $       )
 1037  9935 FORMAT( 3X, I2, ': norm( B - A * X )   / ',
 1038      $      '( max(M,N) * norm(A) * norm(X) * EPS )' )
 1039  9934 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
 1040      $      '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )' )
 1041  9933 FORMAT( 3X, I2, ': norm(svd(A)-svd(R)) / ',
 1042      $      '( min(M,N) * norm(svd(R)) * EPS )' )
 1043  9932 FORMAT( 3X, I2, ': Check if X is in the row space of A or A''' )
 1044  9931 FORMAT( 3X, I2, ': norm( (A*X-B)'' *A ) / ',
 1045      $      '( max(M,N,NRHS) * norm(A) * norm(B) * EPS )', / 7X,
 1046      $      'if TRANS=''N'' and M.GE.N or TRANS=''T'' and M.LT.N, ',
 1047      $      'otherwise', / 7X,
 1048      $      'check if X is in the row space of A or A'' ',
 1049      $      '(overdetermined case)' )
 1050  9929 FORMAT( ' Test ratios (1-3: ', A1, 'TZRZF):' )
 1051  9920 FORMAT( 3X, ' 7-10: same as 3-6', 3X, ' 11-14: same as 3-6' )
 1052  9921 FORMAT( ' Test ratios:', / '    (1-2: ', A1, 'GELS, 3-6: ', A1,
 1053      $      'GELSY, 7-10: ', A1, 'GELSS, 11-14: ', A1, 'GELSD, 15-16: ',
 1054      $        A1, 'GETSLS)')
 1055  9928 FORMAT( 7X, 'where ALPHA = ( 1 + SQRT( 17 ) ) / 8' )
 1056  9927 FORMAT( 3X, I2, ': ABS( Largest element in L )', / 12X,
 1057      $      ' - ( 1 / ( 1 - ALPHA ) ) + THRESH' )
 1058  9926 FORMAT( 3X, I2, ': Largest 2-Norm of 2-by-2 pivots', / 12X,
 1059      $      ' - ( ( 1 + ALPHA ) / ( 1 - ALPHA ) ) + THRESH' )
 1060  8011 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' )
 1061  8012 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' )
 1062  8013 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' )
 1063  8014 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )')
 1064  8015 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' )
 1065  8016 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )')
 1066  8017 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' )
 1067  8018 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' )
 1068  8019 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
 1069  8020 FORMAT(3X,I2,
 1070      $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
 1071  8021 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
 1072  8022 FORMAT(3X,I2,
 1073      $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
 1074  8023 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' )
 1075  8024 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' )
 1076  8025 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
 1077  8026 FORMAT(3X,I2,
 1078      $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
 1079  8027 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
 1080  8028 FORMAT(3X,I2,
 1081      $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
 1082  8029 FORMAT(3X,I2,': norm( L - A*Q'' ) / ( (M+N) * norm(A) * EPS )' )
 1083  8030 FORMAT(3X,I2,': norm( I - Q*Q'' ) / ( (M+N) * EPS )' )
 1084  8031 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
 1085  8032 FORMAT(3X,I2,
 1086      $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
 1087  8033 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
 1088  8034 FORMAT(3X,I2,
 1089      $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
 1090  8035 FORMAT(3X,I2,': norm( R - Q''*A ) / ( (M+N) * norm(A) * EPS )' )
 1091  8036 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( (M+N) * EPS )' )
 1092  8037 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( (M+N) * norm(C) * EPS )' )
 1093  8038 FORMAT(3X,I2,
 1094      $ ': norm( Q''*C - Q''*C ) / ( (M+N) * norm(C) * EPS )')
 1095  8039 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( (M+N) * norm(C) * EPS )' )
 1096  8040 FORMAT(3X,I2,
 1097      $ ': norm( C*Q'' - C*Q'' ) / ( (M+N) * norm(C) * EPS )')
 1098 *
 1099  8050 FORMAT(3X,I2,': norm( R - Q''*A ) / ( M * norm(A) * EPS )' )
 1100  8051 FORMAT(3X,I2,': norm( I - Q''*Q ) / ( M * EPS )' )
 1101  8052 FORMAT(3X,I2,': norm( Q*C - Q*C ) / ( M * norm(C) * EPS )' )
 1102  8053 FORMAT(3X,I2,': norm( Q''*C - Q''*C ) / ( M * norm(C) * EPS )')
 1103  8054 FORMAT(3X,I2,': norm( C*Q - C*Q ) / ( M * norm(C) * EPS )' )
 1104  8055 FORMAT(3X,I2,': norm( C*Q'' - C*Q'' ) / ( M * norm(C) * EPS )')
 1105 
 1106 *
 1107       RETURN
 1108 *
 1109 *     End of ALAHD
 1110 *
 1111       END