LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
derrls.f
Go to the documentation of this file.
00001 *> \brief \b DERRLS
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 DERRLS( 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 *> DERRLS tests the error exits for the DOUBLE PRECISION least squares
00025 *> driver routines (DGELS, SGELSS, SGELSX, SGELSY, SGELSD).
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 double_lin
00054 *
00055 *  =====================================================================
00056       SUBROUTINE DERRLS( 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       DOUBLE PRECISION   RCOND
00078 *     ..
00079 *     .. Local Arrays ..
00080       INTEGER            IP( NMAX )
00081       DOUBLE PRECISION   A( NMAX, NMAX ), B( NMAX, NMAX ), S( NMAX ),
00082      $                   W( NMAX )
00083 *     ..
00084 *     .. External Functions ..
00085       LOGICAL            LSAMEN
00086       EXTERNAL           LSAMEN
00087 *     ..
00088 *     .. External Subroutines ..
00089       EXTERNAL           ALAESM, CHKXER, DGELS, DGELSD, DGELSS, DGELSX,
00090      $                   DGELSY
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       WRITE( NOUT, FMT = * )
00105       C2 = PATH( 2: 3 )
00106       A( 1, 1 ) = 1.0D+0
00107       A( 1, 2 ) = 2.0D+0
00108       A( 2, 2 ) = 3.0D+0
00109       A( 2, 1 ) = 4.0D+0
00110       OK = .TRUE.
00111 *
00112       IF( LSAMEN( 2, C2, 'LS' ) ) THEN
00113 *
00114 *        Test error exits for the least squares driver routines.
00115 *
00116 *        DGELS
00117 *
00118          SRNAMT = 'DGELS '
00119          INFOT = 1
00120          CALL DGELS( '/', 0, 0, 0, A, 1, B, 1, W, 1, INFO )
00121          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00122          INFOT = 2
00123          CALL DGELS( 'N', -1, 0, 0, A, 1, B, 1, W, 1, INFO )
00124          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00125          INFOT = 3
00126          CALL DGELS( 'N', 0, -1, 0, A, 1, B, 1, W, 1, INFO )
00127          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00128          INFOT = 4
00129          CALL DGELS( 'N', 0, 0, -1, A, 1, B, 1, W, 1, INFO )
00130          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00131          INFOT = 6
00132          CALL DGELS( 'N', 2, 0, 0, A, 1, B, 2, W, 2, INFO )
00133          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00134          INFOT = 8
00135          CALL DGELS( 'N', 2, 0, 0, A, 2, B, 1, W, 2, INFO )
00136          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00137          INFOT = 10
00138          CALL DGELS( 'N', 1, 1, 0, A, 1, B, 1, W, 1, INFO )
00139          CALL CHKXER( 'DGELS ', INFOT, NOUT, LERR, OK )
00140 *
00141 *        DGELSS
00142 *
00143          SRNAMT = 'DGELSS'
00144          INFOT = 1
00145          CALL DGELSS( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, INFO )
00146          CALL CHKXER( 'DGELSS', INFOT, NOUT, LERR, OK )
00147          INFOT = 2
00148          CALL DGELSS( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, INFO )
00149          CALL CHKXER( 'DGELSS', INFOT, NOUT, LERR, OK )
00150          INFOT = 3
00151          CALL DGELSS( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 1, INFO )
00152          CALL CHKXER( 'DGELSS', INFOT, NOUT, LERR, OK )
00153          INFOT = 5
00154          CALL DGELSS( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 2, INFO )
00155          CALL CHKXER( 'DGELSS', INFOT, NOUT, LERR, OK )
00156          INFOT = 7
00157          CALL DGELSS( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 2, INFO )
00158          CALL CHKXER( 'DGELSS', INFOT, NOUT, LERR, OK )
00159 *
00160 *        DGELSX
00161 *
00162          SRNAMT = 'DGELSX'
00163          INFOT = 1
00164          CALL DGELSX( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, INFO )
00165          CALL CHKXER( 'DGELSX', INFOT, NOUT, LERR, OK )
00166          INFOT = 2
00167          CALL DGELSX( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, INFO )
00168          CALL CHKXER( 'DGELSX', INFOT, NOUT, LERR, OK )
00169          INFOT = 3
00170          CALL DGELSX( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, INFO )
00171          CALL CHKXER( 'DGELSX', INFOT, NOUT, LERR, OK )
00172          INFOT = 5
00173          CALL DGELSX( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, INFO )
00174          CALL CHKXER( 'DGELSX', INFOT, NOUT, LERR, OK )
00175          INFOT = 7
00176          CALL DGELSX( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, INFO )
00177          CALL CHKXER( 'DGELSX', INFOT, NOUT, LERR, OK )
00178 *
00179 *        DGELSY
00180 *
00181          SRNAMT = 'DGELSY'
00182          INFOT = 1
00183          CALL DGELSY( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10,
00184      $                INFO )
00185          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00186          INFOT = 2
00187          CALL DGELSY( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10,
00188      $                INFO )
00189          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00190          INFOT = 3
00191          CALL DGELSY( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, 10,
00192      $                INFO )
00193          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00194          INFOT = 5
00195          CALL DGELSY( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, 10,
00196      $                INFO )
00197          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00198          INFOT = 7
00199          CALL DGELSY( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, 10,
00200      $                INFO )
00201          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00202          INFOT = 12
00203          CALL DGELSY( 2, 2, 1, A, 2, B, 2, IP, RCOND, IRNK, W, 1, INFO )
00204          CALL CHKXER( 'DGELSY', INFOT, NOUT, LERR, OK )
00205 *
00206 *        DGELSD
00207 *
00208          SRNAMT = 'DGELSD'
00209          INFOT = 1
00210          CALL DGELSD( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, IP,
00211      $                INFO )
00212          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00213          INFOT = 2
00214          CALL DGELSD( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, IP,
00215      $                INFO )
00216          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00217          INFOT = 3
00218          CALL DGELSD( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 10, IP,
00219      $                INFO )
00220          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00221          INFOT = 5
00222          CALL DGELSD( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 10, IP,
00223      $                INFO )
00224          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00225          INFOT = 7
00226          CALL DGELSD( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 10, IP,
00227      $                INFO )
00228          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00229          INFOT = 12
00230          CALL DGELSD( 2, 2, 1, A, 2, B, 2, S, RCOND, IRNK, W, 1, IP,
00231      $                INFO )
00232          CALL CHKXER( 'DGELSD', INFOT, NOUT, LERR, OK )
00233       END IF
00234 *
00235 *     Print a summary line.
00236 *
00237       CALL ALAESM( PATH, OK, NOUT )
00238 *
00239       RETURN
00240 *
00241 *     End of DERRLS
00242 *
00243       END
 All Files Functions