LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
zerrhs.f
Go to the documentation of this file.
00001 *> \brief \b ZERRHS
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 ZERRHS( PATH, NUNIT )
00012 * 
00013 *       .. Scalar Arguments ..
00014 *       CHARACTER*3        PATH
00015 *       INTEGER            NUNIT
00016 *       ..
00017 *  
00018 *
00019 *> \par Purpose:
00020 *  =============
00021 *>
00022 *> \verbatim
00023 *>
00024 *> ZERRHS tests the error exits for ZGEBAK, CGEBAL, CGEHRD, ZUNGHR,
00025 *> ZUNMHR, ZHSEQR, CHSEIN, and ZTREVC.
00026 *> \endverbatim
00027 *
00028 *  Arguments:
00029 *  ==========
00030 *
00031 *> \param[in] PATH
00032 *> \verbatim
00033 *>          PATH is CHARACTER*3
00034 *>          The LAPACK path name for the routines to be tested.
00035 *> \endverbatim
00036 *>
00037 *> \param[in] NUNIT
00038 *> \verbatim
00039 *>          NUNIT is INTEGER
00040 *>          The unit number for output.
00041 *> \endverbatim
00042 *
00043 *  Authors:
00044 *  ========
00045 *
00046 *> \author Univ. of Tennessee 
00047 *> \author Univ. of California Berkeley 
00048 *> \author Univ. of Colorado Denver 
00049 *> \author NAG Ltd. 
00050 *
00051 *> \date November 2011
00052 *
00053 *> \ingroup complex16_eig
00054 *
00055 *  =====================================================================
00056       SUBROUTINE ZERRHS( PATH, NUNIT )
00057 *
00058 *  -- LAPACK test routine (version 3.4.0) --
00059 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
00060 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00061 *     November 2011
00062 *
00063 *     .. Scalar Arguments ..
00064       CHARACTER*3        PATH
00065       INTEGER            NUNIT
00066 *     ..
00067 *
00068 *  =====================================================================
00069 *
00070 *     .. Parameters ..
00071       INTEGER            NMAX, LW
00072       PARAMETER          ( NMAX = 3, LW = NMAX*NMAX )
00073 *     ..
00074 *     .. Local Scalars ..
00075       CHARACTER*2        C2
00076       INTEGER            I, IHI, ILO, INFO, J, M, NT
00077 *     ..
00078 *     .. Local Arrays ..
00079       LOGICAL            SEL( NMAX )
00080       INTEGER            IFAILL( NMAX ), IFAILR( NMAX )
00081       DOUBLE PRECISION   RW( NMAX ), S( NMAX )
00082       COMPLEX*16         A( NMAX, NMAX ), C( NMAX, NMAX ), TAU( NMAX ),
00083      $                   VL( NMAX, NMAX ), VR( NMAX, NMAX ), W( LW ),
00084      $                   X( NMAX )
00085 *     ..
00086 *     .. External Functions ..
00087       LOGICAL            LSAMEN
00088       EXTERNAL           LSAMEN
00089 *     ..
00090 *     .. External Subroutines ..
00091       EXTERNAL           CHKXER, ZGEBAK, ZGEBAL, ZGEHRD, ZHSEIN, ZHSEQR,
00092      $                   ZTREVC, ZUNGHR, ZUNMHR
00093 *     ..
00094 *     .. Intrinsic Functions ..
00095       INTRINSIC          DBLE
00096 *     ..
00097 *     .. Scalars in Common ..
00098       LOGICAL            LERR, OK
00099       CHARACTER*32       SRNAMT
00100       INTEGER            INFOT, NOUT
00101 *     ..
00102 *     .. Common blocks ..
00103       COMMON             / INFOC / INFOT, NOUT, OK, LERR
00104       COMMON             / SRNAMC / SRNAMT
00105 *     ..
00106 *     .. Executable Statements ..
00107 *
00108       NOUT = NUNIT
00109       WRITE( NOUT, FMT = * )
00110       C2 = PATH( 2: 3 )
00111 *
00112 *     Set the variables to innocuous values.
00113 *
00114       DO 20 J = 1, NMAX
00115          DO 10 I = 1, NMAX
00116             A( I, J ) = 1.D0 / DBLE( I+J )
00117    10    CONTINUE
00118          SEL( J ) = .TRUE.
00119    20 CONTINUE
00120       OK = .TRUE.
00121       NT = 0
00122 *
00123 *     Test error exits of the nonsymmetric eigenvalue routines.
00124 *
00125       IF( LSAMEN( 2, C2, 'HS' ) ) THEN
00126 *
00127 *        ZGEBAL
00128 *
00129          SRNAMT = 'ZGEBAL'
00130          INFOT = 1
00131          CALL ZGEBAL( '/', 0, A, 1, ILO, IHI, S, INFO )
00132          CALL CHKXER( 'ZGEBAL', INFOT, NOUT, LERR, OK )
00133          INFOT = 2
00134          CALL ZGEBAL( 'N', -1, A, 1, ILO, IHI, S, INFO )
00135          CALL CHKXER( 'ZGEBAL', INFOT, NOUT, LERR, OK )
00136          INFOT = 4
00137          CALL ZGEBAL( 'N', 2, A, 1, ILO, IHI, S, INFO )
00138          CALL CHKXER( 'ZGEBAL', INFOT, NOUT, LERR, OK )
00139          NT = NT + 3
00140 *
00141 *        ZGEBAK
00142 *
00143          SRNAMT = 'ZGEBAK'
00144          INFOT = 1
00145          CALL ZGEBAK( '/', 'R', 0, 1, 0, S, 0, A, 1, INFO )
00146          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00147          INFOT = 2
00148          CALL ZGEBAK( 'N', '/', 0, 1, 0, S, 0, A, 1, INFO )
00149          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00150          INFOT = 3
00151          CALL ZGEBAK( 'N', 'R', -1, 1, 0, S, 0, A, 1, INFO )
00152          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00153          INFOT = 4
00154          CALL ZGEBAK( 'N', 'R', 0, 0, 0, S, 0, A, 1, INFO )
00155          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00156          INFOT = 4
00157          CALL ZGEBAK( 'N', 'R', 0, 2, 0, S, 0, A, 1, INFO )
00158          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00159          INFOT = 5
00160          CALL ZGEBAK( 'N', 'R', 2, 2, 1, S, 0, A, 2, INFO )
00161          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00162          INFOT = 5
00163          CALL ZGEBAK( 'N', 'R', 0, 1, 1, S, 0, A, 1, INFO )
00164          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00165          INFOT = 7
00166          CALL ZGEBAK( 'N', 'R', 0, 1, 0, S, -1, A, 1, INFO )
00167          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00168          INFOT = 9
00169          CALL ZGEBAK( 'N', 'R', 2, 1, 2, S, 0, A, 1, INFO )
00170          CALL CHKXER( 'ZGEBAK', INFOT, NOUT, LERR, OK )
00171          NT = NT + 9
00172 *
00173 *        ZGEHRD
00174 *
00175          SRNAMT = 'ZGEHRD'
00176          INFOT = 1
00177          CALL ZGEHRD( -1, 1, 1, A, 1, TAU, W, 1, INFO )
00178          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00179          INFOT = 2
00180          CALL ZGEHRD( 0, 0, 0, A, 1, TAU, W, 1, INFO )
00181          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00182          INFOT = 2
00183          CALL ZGEHRD( 0, 2, 0, A, 1, TAU, W, 1, INFO )
00184          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00185          INFOT = 3
00186          CALL ZGEHRD( 1, 1, 0, A, 1, TAU, W, 1, INFO )
00187          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00188          INFOT = 3
00189          CALL ZGEHRD( 0, 1, 1, A, 1, TAU, W, 1, INFO )
00190          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00191          INFOT = 5
00192          CALL ZGEHRD( 2, 1, 1, A, 1, TAU, W, 2, INFO )
00193          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00194          INFOT = 8
00195          CALL ZGEHRD( 2, 1, 2, A, 2, TAU, W, 1, INFO )
00196          CALL CHKXER( 'ZGEHRD', INFOT, NOUT, LERR, OK )
00197          NT = NT + 7
00198 *
00199 *        ZUNGHR
00200 *
00201          SRNAMT = 'ZUNGHR'
00202          INFOT = 1
00203          CALL ZUNGHR( -1, 1, 1, A, 1, TAU, W, 1, INFO )
00204          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00205          INFOT = 2
00206          CALL ZUNGHR( 0, 0, 0, A, 1, TAU, W, 1, INFO )
00207          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00208          INFOT = 2
00209          CALL ZUNGHR( 0, 2, 0, A, 1, TAU, W, 1, INFO )
00210          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00211          INFOT = 3
00212          CALL ZUNGHR( 1, 1, 0, A, 1, TAU, W, 1, INFO )
00213          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00214          INFOT = 3
00215          CALL ZUNGHR( 0, 1, 1, A, 1, TAU, W, 1, INFO )
00216          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00217          INFOT = 5
00218          CALL ZUNGHR( 2, 1, 1, A, 1, TAU, W, 1, INFO )
00219          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00220          INFOT = 8
00221          CALL ZUNGHR( 3, 1, 3, A, 3, TAU, W, 1, INFO )
00222          CALL CHKXER( 'ZUNGHR', INFOT, NOUT, LERR, OK )
00223          NT = NT + 7
00224 *
00225 *        ZUNMHR
00226 *
00227          SRNAMT = 'ZUNMHR'
00228          INFOT = 1
00229          CALL ZUNMHR( '/', 'N', 0, 0, 1, 0, A, 1, TAU, C, 1, W, 1,
00230      $                INFO )
00231          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00232          INFOT = 2
00233          CALL ZUNMHR( 'L', '/', 0, 0, 1, 0, A, 1, TAU, C, 1, W, 1,
00234      $                INFO )
00235          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00236          INFOT = 3
00237          CALL ZUNMHR( 'L', 'N', -1, 0, 1, 0, A, 1, TAU, C, 1, W, 1,
00238      $                INFO )
00239          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00240          INFOT = 4
00241          CALL ZUNMHR( 'L', 'N', 0, -1, 1, 0, A, 1, TAU, C, 1, W, 1,
00242      $                INFO )
00243          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00244          INFOT = 5
00245          CALL ZUNMHR( 'L', 'N', 0, 0, 0, 0, A, 1, TAU, C, 1, W, 1,
00246      $                INFO )
00247          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00248          INFOT = 5
00249          CALL ZUNMHR( 'L', 'N', 0, 0, 2, 0, A, 1, TAU, C, 1, W, 1,
00250      $                INFO )
00251          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00252          INFOT = 5
00253          CALL ZUNMHR( 'L', 'N', 1, 2, 2, 1, A, 1, TAU, C, 1, W, 2,
00254      $                INFO )
00255          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00256          INFOT = 5
00257          CALL ZUNMHR( 'R', 'N', 2, 1, 2, 1, A, 1, TAU, C, 2, W, 2,
00258      $                INFO )
00259          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00260          INFOT = 6
00261          CALL ZUNMHR( 'L', 'N', 1, 1, 1, 0, A, 1, TAU, C, 1, W, 1,
00262      $                INFO )
00263          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00264          INFOT = 6
00265          CALL ZUNMHR( 'L', 'N', 0, 1, 1, 1, A, 1, TAU, C, 1, W, 1,
00266      $                INFO )
00267          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00268          INFOT = 6
00269          CALL ZUNMHR( 'R', 'N', 1, 0, 1, 1, A, 1, TAU, C, 1, W, 1,
00270      $                INFO )
00271          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00272          INFOT = 8
00273          CALL ZUNMHR( 'L', 'N', 2, 1, 1, 1, A, 1, TAU, C, 2, W, 1,
00274      $                INFO )
00275          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00276          INFOT = 8
00277          CALL ZUNMHR( 'R', 'N', 1, 2, 1, 1, A, 1, TAU, C, 1, W, 1,
00278      $                INFO )
00279          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00280          INFOT = 11
00281          CALL ZUNMHR( 'L', 'N', 2, 1, 1, 1, A, 2, TAU, C, 1, W, 1,
00282      $                INFO )
00283          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00284          INFOT = 13
00285          CALL ZUNMHR( 'L', 'N', 1, 2, 1, 1, A, 1, TAU, C, 1, W, 1,
00286      $                INFO )
00287          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00288          INFOT = 13
00289          CALL ZUNMHR( 'R', 'N', 2, 1, 1, 1, A, 1, TAU, C, 2, W, 1,
00290      $                INFO )
00291          CALL CHKXER( 'ZUNMHR', INFOT, NOUT, LERR, OK )
00292          NT = NT + 16
00293 *
00294 *        ZHSEQR
00295 *
00296          SRNAMT = 'ZHSEQR'
00297          INFOT = 1
00298          CALL ZHSEQR( '/', 'N', 0, 1, 0, A, 1, X, C, 1, W, 1, INFO )
00299          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00300          INFOT = 2
00301          CALL ZHSEQR( 'E', '/', 0, 1, 0, A, 1, X, C, 1, W, 1, INFO )
00302          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00303          INFOT = 3
00304          CALL ZHSEQR( 'E', 'N', -1, 1, 0, A, 1, X, C, 1, W, 1, INFO )
00305          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00306          INFOT = 4
00307          CALL ZHSEQR( 'E', 'N', 0, 0, 0, A, 1, X, C, 1, W, 1, INFO )
00308          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00309          INFOT = 4
00310          CALL ZHSEQR( 'E', 'N', 0, 2, 0, A, 1, X, C, 1, W, 1, INFO )
00311          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00312          INFOT = 5
00313          CALL ZHSEQR( 'E', 'N', 1, 1, 0, A, 1, X, C, 1, W, 1, INFO )
00314          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00315          INFOT = 5
00316          CALL ZHSEQR( 'E', 'N', 1, 1, 2, A, 1, X, C, 1, W, 1, INFO )
00317          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00318          INFOT = 7
00319          CALL ZHSEQR( 'E', 'N', 2, 1, 2, A, 1, X, C, 2, W, 1, INFO )
00320          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00321          INFOT = 10
00322          CALL ZHSEQR( 'E', 'V', 2, 1, 2, A, 2, X, C, 1, W, 1, INFO )
00323          CALL CHKXER( 'ZHSEQR', INFOT, NOUT, LERR, OK )
00324          NT = NT + 9
00325 *
00326 *        ZHSEIN
00327 *
00328          SRNAMT = 'ZHSEIN'
00329          INFOT = 1
00330          CALL ZHSEIN( '/', 'N', 'N', SEL, 0, A, 1, X, VL, 1, VR, 1, 0,
00331      $                M, W, RW, IFAILL, IFAILR, INFO )
00332          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00333          INFOT = 2
00334          CALL ZHSEIN( 'R', '/', 'N', SEL, 0, A, 1, X, VL, 1, VR, 1, 0,
00335      $                M, W, RW, IFAILL, IFAILR, INFO )
00336          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00337          INFOT = 3
00338          CALL ZHSEIN( 'R', 'N', '/', SEL, 0, A, 1, X, VL, 1, VR, 1, 0,
00339      $                M, W, RW, IFAILL, IFAILR, INFO )
00340          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00341          INFOT = 5
00342          CALL ZHSEIN( 'R', 'N', 'N', SEL, -1, A, 1, X, VL, 1, VR, 1, 0,
00343      $                M, W, RW, IFAILL, IFAILR, INFO )
00344          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00345          INFOT = 7
00346          CALL ZHSEIN( 'R', 'N', 'N', SEL, 2, A, 1, X, VL, 1, VR, 2, 4,
00347      $                M, W, RW, IFAILL, IFAILR, INFO )
00348          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00349          INFOT = 10
00350          CALL ZHSEIN( 'L', 'N', 'N', SEL, 2, A, 2, X, VL, 1, VR, 1, 4,
00351      $                M, W, RW, IFAILL, IFAILR, INFO )
00352          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00353          INFOT = 12
00354          CALL ZHSEIN( 'R', 'N', 'N', SEL, 2, A, 2, X, VL, 1, VR, 1, 4,
00355      $                M, W, RW, IFAILL, IFAILR, INFO )
00356          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00357          INFOT = 13
00358          CALL ZHSEIN( 'R', 'N', 'N', SEL, 2, A, 2, X, VL, 1, VR, 2, 1,
00359      $                M, W, RW, IFAILL, IFAILR, INFO )
00360          CALL CHKXER( 'ZHSEIN', INFOT, NOUT, LERR, OK )
00361          NT = NT + 8
00362 *
00363 *        ZTREVC
00364 *
00365          SRNAMT = 'ZTREVC'
00366          INFOT = 1
00367          CALL ZTREVC( '/', 'A', SEL, 0, A, 1, VL, 1, VR, 1, 0, M, W, RW,
00368      $                INFO )
00369          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00370          INFOT = 2
00371          CALL ZTREVC( 'L', '/', SEL, 0, A, 1, VL, 1, VR, 1, 0, M, W, RW,
00372      $                INFO )
00373          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00374          INFOT = 4
00375          CALL ZTREVC( 'L', 'A', SEL, -1, A, 1, VL, 1, VR, 1, 0, M, W,
00376      $                RW, INFO )
00377          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00378          INFOT = 6
00379          CALL ZTREVC( 'L', 'A', SEL, 2, A, 1, VL, 2, VR, 1, 4, M, W, RW,
00380      $                INFO )
00381          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00382          INFOT = 8
00383          CALL ZTREVC( 'L', 'A', SEL, 2, A, 2, VL, 1, VR, 1, 4, M, W, RW,
00384      $                INFO )
00385          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00386          INFOT = 10
00387          CALL ZTREVC( 'R', 'A', SEL, 2, A, 2, VL, 1, VR, 1, 4, M, W, RW,
00388      $                INFO )
00389          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00390          INFOT = 11
00391          CALL ZTREVC( 'L', 'A', SEL, 2, A, 2, VL, 2, VR, 1, 1, M, W, RW,
00392      $                INFO )
00393          CALL CHKXER( 'ZTREVC', INFOT, NOUT, LERR, OK )
00394          NT = NT + 7
00395       END IF
00396 *
00397 *     Print a summary line.
00398 *
00399       IF( OK ) THEN
00400          WRITE( NOUT, FMT = 9999 )PATH, NT
00401       ELSE
00402          WRITE( NOUT, FMT = 9998 )PATH
00403       END IF
00404 *
00405  9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits',
00406      $      ' (', I3, ' tests done)' )
00407  9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
00408      $      'exits ***' )
00409 *
00410       RETURN
00411 *
00412 *     End of ZERRHS
00413 *
00414       END
 All Files Functions