LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
cerrls.f
Go to the documentation of this file.
00001 *> \brief \b CERRLS
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 CERRLS( 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 *> CERRLS tests the error exits for the COMPLEX least squares
00025 *> driver routines (CGELS, CGELSS, CGELSX, CGELSY, CGELSD).
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 complex_lin
00054 *
00055 *  =====================================================================
00056       SUBROUTINE CERRLS( 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
00072       PARAMETER          ( NMAX = 2 )
00073 *     ..
00074 *     .. Local Scalars ..
00075       CHARACTER*2        C2
00076       INTEGER            INFO, IRNK
00077       REAL               RCOND
00078 *     ..
00079 *     .. Local Arrays ..
00080       INTEGER            IP( NMAX )
00081       REAL               RW( NMAX ), S( NMAX )
00082       COMPLEX            A( NMAX, NMAX ), B( NMAX, NMAX ), W( NMAX )
00083 *     ..
00084 *     .. External Functions ..
00085       LOGICAL            LSAMEN
00086       EXTERNAL           LSAMEN
00087 *     ..
00088 *     .. External Subroutines ..
00089       EXTERNAL           ALAESM, CGELS, CGELSD, CGELSS, CGELSX, CGELSY,
00090      $                   CHKXER
00091 *     ..
00092 *     .. Scalars in Common ..
00093       LOGICAL            LERR, OK
00094       CHARACTER*32       SRNAMT
00095       INTEGER            INFOT, NOUT
00096 *     ..
00097 *     .. Common blocks ..
00098       COMMON             / INFOC / INFOT, NOUT, OK, LERR
00099       COMMON             / SRNAMC / SRNAMT
00100 *     ..
00101 *     .. Executable Statements ..
00102 *
00103       NOUT = NUNIT
00104       C2 = PATH( 2: 3 )
00105       A( 1, 1 ) = ( 1.0E+0, 0.0E+0 )
00106       A( 1, 2 ) = ( 2.0E+0, 0.0E+0 )
00107       A( 2, 2 ) = ( 3.0E+0, 0.0E+0 )
00108       A( 2, 1 ) = ( 4.0E+0, 0.0E+0 )
00109       OK = .TRUE.
00110       WRITE( NOUT, FMT = * )
00111 *
00112 *     Test error exits for the least squares driver routines.
00113 *
00114       IF( LSAMEN( 2, C2, 'LS' ) ) THEN
00115 *
00116 *        CGELS
00117 *
00118          SRNAMT = 'CGELS '
00119          INFOT = 1
00120          CALL CGELS( '/', 0, 0, 0, A, 1, B, 1, W, 1, INFO )
00121          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00122          INFOT = 2
00123          CALL CGELS( 'N', -1, 0, 0, A, 1, B, 1, W, 1, INFO )
00124          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00125          INFOT = 3
00126          CALL CGELS( 'N', 0, -1, 0, A, 1, B, 1, W, 1, INFO )
00127          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00128          INFOT = 4
00129          CALL CGELS( 'N', 0, 0, -1, A, 1, B, 1, W, 1, INFO )
00130          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00131          INFOT = 6
00132          CALL CGELS( 'N', 2, 0, 0, A, 1, B, 2, W, 2, INFO )
00133          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00134          INFOT = 8
00135          CALL CGELS( 'N', 2, 0, 0, A, 2, B, 1, W, 2, INFO )
00136          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00137          INFOT = 10
00138          CALL CGELS( 'N', 1, 1, 0, A, 1, B, 1, W, 1, INFO )
00139          CALL CHKXER( 'CGELS ', INFOT, NOUT, LERR, OK )
00140 *
00141 *        CGELSS
00142 *
00143          SRNAMT = 'CGELSS'
00144          INFOT = 1
00145          CALL CGELSS( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
00146      $                INFO )
00147          CALL CHKXER( 'CGELSS', INFOT, NOUT, LERR, OK )
00148          INFOT = 2
00149          CALL CGELSS( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
00150      $                INFO )
00151          CALL CHKXER( 'CGELSS', INFOT, NOUT, LERR, OK )
00152          INFOT = 3
00153          CALL CGELSS( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
00154      $                INFO )
00155          CALL CHKXER( 'CGELSS', INFOT, NOUT, LERR, OK )
00156          INFOT = 5
00157          CALL CGELSS( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 2, RW,
00158      $                INFO )
00159          CALL CHKXER( 'CGELSS', INFOT, NOUT, LERR, OK )
00160          INFOT = 7
00161          CALL CGELSS( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 2, RW,
00162      $                INFO )
00163          CALL CHKXER( 'CGELSS', INFOT, NOUT, LERR, OK )
00164 *
00165 *        CGELSX
00166 *
00167          SRNAMT = 'CGELSX'
00168          INFOT = 1
00169          CALL CGELSX( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
00170      $                INFO )
00171          CALL CHKXER( 'CGELSX', INFOT, NOUT, LERR, OK )
00172          INFOT = 2
00173          CALL CGELSX( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
00174      $                INFO )
00175          CALL CHKXER( 'CGELSX', INFOT, NOUT, LERR, OK )
00176          INFOT = 3
00177          CALL CGELSX( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
00178      $                INFO )
00179          CALL CHKXER( 'CGELSX', INFOT, NOUT, LERR, OK )
00180          INFOT = 5
00181          CALL CGELSX( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, RW,
00182      $                INFO )
00183          CALL CHKXER( 'CGELSX', INFOT, NOUT, LERR, OK )
00184          INFOT = 7
00185          CALL CGELSX( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, RW,
00186      $                INFO )
00187          CALL CHKXER( 'CGELSX', INFOT, NOUT, LERR, OK )
00188 *
00189 *        CGELSY
00190 *
00191          SRNAMT = 'CGELSY'
00192          INFOT = 1
00193          CALL CGELSY( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
00194      $                INFO )
00195          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00196          INFOT = 2
00197          CALL CGELSY( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
00198      $                INFO )
00199          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00200          INFOT = 3
00201          CALL CGELSY( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
00202      $                INFO )
00203          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00204          INFOT = 5
00205          CALL CGELSY( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, 10, RW,
00206      $                INFO )
00207          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00208          INFOT = 7
00209          CALL CGELSY( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, 10, RW,
00210      $                INFO )
00211          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00212          INFOT = 12
00213          CALL CGELSY( 0, 3, 0, A, 1, B, 3, IP, RCOND, IRNK, W, 1, RW,
00214      $                INFO )
00215          CALL CHKXER( 'CGELSY', INFOT, NOUT, LERR, OK )
00216 *
00217 *        CGELSD
00218 *
00219          SRNAMT = 'CGELSD'
00220          INFOT = 1
00221          CALL CGELSD( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10,
00222      $                RW, IP, INFO )
00223          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00224          INFOT = 2
00225          CALL CGELSD( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10,
00226      $                RW, IP, INFO )
00227          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00228          INFOT = 3
00229          CALL CGELSD( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 10,
00230      $                RW, IP, INFO )
00231          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00232          INFOT = 5
00233          CALL CGELSD( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 10,
00234      $                RW, IP, INFO )
00235          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00236          INFOT = 7
00237          CALL CGELSD( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 10,
00238      $                RW, IP, INFO )
00239          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00240          INFOT = 12
00241          CALL CGELSD( 2, 2, 1, A, 2, B, 2, S, RCOND, IRNK, W, 1,
00242      $                RW, IP, INFO )
00243          CALL CHKXER( 'CGELSD', INFOT, NOUT, LERR, OK )
00244       END IF
00245 *
00246 *     Print a summary line.
00247 *
00248       CALL ALAESM( PATH, OK, NOUT )
00249 *
00250       RETURN
00251 *
00252 *     End of CERRLS
00253 *
00254       END
 All Files Functions