1*eeb7e5b3SAdam Hornáček* Copyright (c) 2013 Samuel Halliday 2*eeb7e5b3SAdam Hornáček* Copyright (c) 1992-2011 The University of Tennessee and The University 3*eeb7e5b3SAdam Hornáček* of Tennessee Research Foundation. All rights 4*eeb7e5b3SAdam Hornáček* reserved. 5*eeb7e5b3SAdam Hornáček* Copyright (c) 2000-2011 The University of California Berkeley. All 6*eeb7e5b3SAdam Hornáček* rights reserved. 7*eeb7e5b3SAdam Hornáček* Copyright (c) 2006-2011 The University of Colorado Denver. All rights 8*eeb7e5b3SAdam Hornáček* reserved. 9*eeb7e5b3SAdam Hornáček* 10*eeb7e5b3SAdam Hornáček* $COPYRIGHT$ 11*eeb7e5b3SAdam Hornáček* 12*eeb7e5b3SAdam Hornáček* Additional copyrights may follow 13*eeb7e5b3SAdam Hornáček* 14*eeb7e5b3SAdam Hornáček* $HEADER$ 15*eeb7e5b3SAdam Hornáček* 16*eeb7e5b3SAdam Hornáček* Redistribution and use in source and binary forms, with or without 17*eeb7e5b3SAdam Hornáček* modification, are permitted provided that the following conditions are 18*eeb7e5b3SAdam Hornáček* met: 19*eeb7e5b3SAdam Hornáček* 20*eeb7e5b3SAdam Hornáček* - Redistributions of source code must retain the above copyright 21*eeb7e5b3SAdam Hornáček* notice, this list of conditions and the following disclaimer. 22*eeb7e5b3SAdam Hornáček* 23*eeb7e5b3SAdam Hornáček* - Redistributions in binary form must reproduce the above copyright 24*eeb7e5b3SAdam Hornáček* notice, this list of conditions and the following disclaimer listed 25*eeb7e5b3SAdam Hornáček* in this license in the documentation and/or other materials 26*eeb7e5b3SAdam Hornáček* provided with the distribution. 27*eeb7e5b3SAdam Hornáček* 28*eeb7e5b3SAdam Hornáček* - Neither the name of the copyright holders nor the names of its 29*eeb7e5b3SAdam Hornáček* contributors may be used to endorse or promote products derived from 30*eeb7e5b3SAdam Hornáček* this software without specific prior written permission. 31*eeb7e5b3SAdam Hornáček* 32*eeb7e5b3SAdam Hornáček* The copyright holders provide no reassurances that the source code 33*eeb7e5b3SAdam Hornáček* provided does not infringe any patent, copyright, or any other 34*eeb7e5b3SAdam Hornáček* intellectual property rights of third parties. The copyright holders 35*eeb7e5b3SAdam Hornáček* disclaim any liability to any recipient for claims brought against 36*eeb7e5b3SAdam Hornáček* recipient by any third party for infringement of that parties 37*eeb7e5b3SAdam Hornáček* intellectual property rights. 38*eeb7e5b3SAdam Hornáček* 39*eeb7e5b3SAdam Hornáček* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 40*eeb7e5b3SAdam Hornáček* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 41*eeb7e5b3SAdam Hornáček* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 42*eeb7e5b3SAdam Hornáček* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 43*eeb7e5b3SAdam Hornáček* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44*eeb7e5b3SAdam Hornáček* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 45*eeb7e5b3SAdam Hornáček* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 46*eeb7e5b3SAdam Hornáček* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 47*eeb7e5b3SAdam Hornáček* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 48*eeb7e5b3SAdam Hornáček* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 49*eeb7e5b3SAdam Hornáček* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50*eeb7e5b3SAdam Hornáček 51*eeb7e5b3SAdam Hornáček*> \brief <b> DGESV computes the solution to system of linear equations A * X = B for GE matrices</b> 52*eeb7e5b3SAdam Hornáček* 53*eeb7e5b3SAdam Hornáček* =========== DOCUMENTATION =========== 54*eeb7e5b3SAdam Hornáček* 55*eeb7e5b3SAdam Hornáček* Online html documentation available at 56*eeb7e5b3SAdam Hornáček* http://www.netlib.org/lapack/explore-html/ 57*eeb7e5b3SAdam Hornáček* 58*eeb7e5b3SAdam Hornáček*> \htmlonly 59*eeb7e5b3SAdam Hornáček*> Download DGESV + dependencies 60*eeb7e5b3SAdam Hornáček*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgesv.f"> 61*eeb7e5b3SAdam Hornáček*> [TGZ]</a> 62*eeb7e5b3SAdam Hornáček*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgesv.f"> 63*eeb7e5b3SAdam Hornáček*> [ZIP]</a> 64*eeb7e5b3SAdam Hornáček*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgesv.f"> 65*eeb7e5b3SAdam Hornáček*> [TXT]</a> 66*eeb7e5b3SAdam Hornáček*> \endhtmlonly 67*eeb7e5b3SAdam Hornáček* 68*eeb7e5b3SAdam Hornáček* Definition: 69*eeb7e5b3SAdam Hornáček* =========== 70*eeb7e5b3SAdam Hornáček* 71*eeb7e5b3SAdam Hornáček* SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) 72*eeb7e5b3SAdam Hornáček* 73*eeb7e5b3SAdam Hornáček* .. Scalar Arguments .. 74*eeb7e5b3SAdam Hornáček* INTEGER INFO, LDA, LDB, N, NRHS 75*eeb7e5b3SAdam Hornáček* .. 76*eeb7e5b3SAdam Hornáček* .. Array Arguments .. 77*eeb7e5b3SAdam Hornáček* INTEGER IPIV( * ) 78*eeb7e5b3SAdam Hornáček* DOUBLE PRECISION A( LDA, * ), B( LDB, * ) 79*eeb7e5b3SAdam Hornáček* .. 80*eeb7e5b3SAdam Hornáček* 81*eeb7e5b3SAdam Hornáček* 82*eeb7e5b3SAdam Hornáček*> \par Purpose: 83*eeb7e5b3SAdam Hornáček* ============= 84*eeb7e5b3SAdam Hornáček*> 85*eeb7e5b3SAdam Hornáček*> \verbatim 86*eeb7e5b3SAdam Hornáček*> 87*eeb7e5b3SAdam Hornáček*> DGESV computes the solution to a real system of linear equations 88*eeb7e5b3SAdam Hornáček*> A * X = B, 89*eeb7e5b3SAdam Hornáček*> where A is an N-by-N matrix and X and B are N-by-NRHS matrices. 90*eeb7e5b3SAdam Hornáček*> 91*eeb7e5b3SAdam Hornáček*> The LU decomposition with partial pivoting and row interchanges is 92*eeb7e5b3SAdam Hornáček*> used to factor A as 93*eeb7e5b3SAdam Hornáček*> A = P * L * U, 94*eeb7e5b3SAdam Hornáček*> where P is a permutation matrix, L is unit lower triangular, and U is 95*eeb7e5b3SAdam Hornáček*> upper triangular. The factored form of A is then used to solve the 96*eeb7e5b3SAdam Hornáček*> system of equations A * X = B. 97*eeb7e5b3SAdam Hornáček*> \endverbatim 98*eeb7e5b3SAdam Hornáček* 99*eeb7e5b3SAdam Hornáček* Arguments: 100*eeb7e5b3SAdam Hornáček* ========== 101*eeb7e5b3SAdam Hornáček* 102*eeb7e5b3SAdam Hornáček*> \param[in] N 103*eeb7e5b3SAdam Hornáček*> \verbatim 104*eeb7e5b3SAdam Hornáček*> N is INTEGER 105*eeb7e5b3SAdam Hornáček*> The number of linear equations, i.e., the order of the 106*eeb7e5b3SAdam Hornáček*> matrix A. N >= 0. 107*eeb7e5b3SAdam Hornáček*> \endverbatim 108*eeb7e5b3SAdam Hornáček*> 109*eeb7e5b3SAdam Hornáček*> \param[in] NRHS 110*eeb7e5b3SAdam Hornáček*> \verbatim 111*eeb7e5b3SAdam Hornáček*> NRHS is INTEGER 112*eeb7e5b3SAdam Hornáček*> The number of right hand sides, i.e., the number of columns 113*eeb7e5b3SAdam Hornáček*> of the matrix B. NRHS >= 0. 114*eeb7e5b3SAdam Hornáček*> \endverbatim 115*eeb7e5b3SAdam Hornáček*> 116*eeb7e5b3SAdam Hornáček*> \param[in,out] A 117*eeb7e5b3SAdam Hornáček*> \verbatim 118*eeb7e5b3SAdam Hornáček*> A is DOUBLE PRECISION array, dimension (LDA,N) 119*eeb7e5b3SAdam Hornáček*> On entry, the N-by-N coefficient matrix A. 120*eeb7e5b3SAdam Hornáček*> On exit, the factors L and U from the factorization 121*eeb7e5b3SAdam Hornáček*> A = P*L*U; the unit diagonal elements of L are not stored. 122*eeb7e5b3SAdam Hornáček*> \endverbatim 123*eeb7e5b3SAdam Hornáček*> 124*eeb7e5b3SAdam Hornáček*> \param[in] LDA 125*eeb7e5b3SAdam Hornáček*> \verbatim 126*eeb7e5b3SAdam Hornáček*> LDA is INTEGER 127*eeb7e5b3SAdam Hornáček*> The leading dimension of the array A. LDA >= max(1,N). 128*eeb7e5b3SAdam Hornáček*> \endverbatim 129*eeb7e5b3SAdam Hornáček*> 130*eeb7e5b3SAdam Hornáček*> \param[out] IPIV 131*eeb7e5b3SAdam Hornáček*> \verbatim 132*eeb7e5b3SAdam Hornáček*> IPIV is INTEGER array, dimension (N) 133*eeb7e5b3SAdam Hornáček*> The pivot indices that define the permutation matrix P; 134*eeb7e5b3SAdam Hornáček*> row i of the matrix was interchanged with row IPIV(i). 135*eeb7e5b3SAdam Hornáček*> \endverbatim 136*eeb7e5b3SAdam Hornáček*> 137*eeb7e5b3SAdam Hornáček*> \param[in,out] B 138*eeb7e5b3SAdam Hornáček*> \verbatim 139*eeb7e5b3SAdam Hornáček*> B is DOUBLE PRECISION array, dimension (LDB,NRHS) 140*eeb7e5b3SAdam Hornáček*> On entry, the N-by-NRHS matrix of right hand side matrix B. 141*eeb7e5b3SAdam Hornáček*> On exit, if INFO = 0, the N-by-NRHS solution matrix X. 142*eeb7e5b3SAdam Hornáček*> \endverbatim 143*eeb7e5b3SAdam Hornáček*> 144*eeb7e5b3SAdam Hornáček*> \param[in] LDB 145*eeb7e5b3SAdam Hornáček*> \verbatim 146*eeb7e5b3SAdam Hornáček*> LDB is INTEGER 147*eeb7e5b3SAdam Hornáček*> The leading dimension of the array B. LDB >= max(1,N). 148*eeb7e5b3SAdam Hornáček*> \endverbatim 149*eeb7e5b3SAdam Hornáček*> 150*eeb7e5b3SAdam Hornáček*> \param[out] INFO 151*eeb7e5b3SAdam Hornáček*> \verbatim 152*eeb7e5b3SAdam Hornáček*> INFO is INTEGER 153*eeb7e5b3SAdam Hornáček*> = 0: successful exit 154*eeb7e5b3SAdam Hornáček*> < 0: if INFO = -i, the i-th argument had an illegal value 155*eeb7e5b3SAdam Hornáček*> > 0: if INFO = i, U(i,i) is exactly zero. The factorization 156*eeb7e5b3SAdam Hornáček*> has been completed, but the factor U is exactly 157*eeb7e5b3SAdam Hornáček*> singular, so the solution could not be computed. 158*eeb7e5b3SAdam Hornáček*> \endverbatim 159*eeb7e5b3SAdam Hornáček* 160*eeb7e5b3SAdam Hornáček* Authors: 161*eeb7e5b3SAdam Hornáček* ======== 162*eeb7e5b3SAdam Hornáček* 163*eeb7e5b3SAdam Hornáček*> \author Univ. of Tennessee 164*eeb7e5b3SAdam Hornáček*> \author Univ. of California Berkeley 165*eeb7e5b3SAdam Hornáček*> \author Univ. of Colorado Denver 166*eeb7e5b3SAdam Hornáček*> \author NAG Ltd. 167*eeb7e5b3SAdam Hornáček* 168*eeb7e5b3SAdam Hornáček*> \date November 2011 169*eeb7e5b3SAdam Hornáček* 170*eeb7e5b3SAdam Hornáček*> \ingroup doubleGEsolve 171*eeb7e5b3SAdam Hornáček* 172*eeb7e5b3SAdam Hornáček* ===================================================================== 173*eeb7e5b3SAdam Hornáček SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO ) 174*eeb7e5b3SAdam Hornáček* 175*eeb7e5b3SAdam Hornáček* -- LAPACK driver routine (version 3.4.0) -- 176*eeb7e5b3SAdam Hornáček* -- LAPACK is a software package provided by Univ. of Tennessee, -- 177*eeb7e5b3SAdam Hornáček* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 178*eeb7e5b3SAdam Hornáček* November 2011 179*eeb7e5b3SAdam Hornáček* 180*eeb7e5b3SAdam Hornáček* .. Scalar Arguments .. 181*eeb7e5b3SAdam Hornáček INTEGER INFO, LDA, LDB, N, NRHS 182*eeb7e5b3SAdam Hornáček* .. 183*eeb7e5b3SAdam Hornáček* .. Array Arguments .. 184*eeb7e5b3SAdam Hornáček INTEGER IPIV( * ) 185*eeb7e5b3SAdam Hornáček DOUBLE PRECISION A( LDA, * ), B( LDB, * ) 186*eeb7e5b3SAdam Hornáček* .. 187*eeb7e5b3SAdam Hornáček* 188*eeb7e5b3SAdam Hornáček* ===================================================================== 189*eeb7e5b3SAdam Hornáček* 190*eeb7e5b3SAdam Hornáček* .. External Subroutines .. 191*eeb7e5b3SAdam Hornáček EXTERNAL DGETRF, DGETRS, XERBLA 192*eeb7e5b3SAdam Hornáček* .. 193*eeb7e5b3SAdam Hornáček* .. Intrinsic Functions .. 194*eeb7e5b3SAdam Hornáček INTRINSIC MAX 195*eeb7e5b3SAdam Hornáček* .. 196*eeb7e5b3SAdam Hornáček* .. Executable Statements .. 197*eeb7e5b3SAdam Hornáček* 198*eeb7e5b3SAdam Hornáček* Test the input parameters. 199*eeb7e5b3SAdam Hornáček* 200*eeb7e5b3SAdam Hornáček INFO = 0 + 0xFFFF - 0XFF - 0xFF00 201*eeb7e5b3SAdam Hornáček IF( N.LT.0 ) THEN 202*eeb7e5b3SAdam Hornáček INFO = -1 203*eeb7e5b3SAdam Hornáček ELSE IF( NRHS.LT.0 ) THEN 204*eeb7e5b3SAdam Hornáček INFO = -2 205*eeb7e5b3SAdam Hornáček ELSE IF( LDA.LT.MAX( 1, N ) ) THEN 206*eeb7e5b3SAdam Hornáček INFO = -4 207*eeb7e5b3SAdam Hornáček ELSE IF( LDB.LT.MAX( 1, N ) ) THEN 208*eeb7e5b3SAdam Hornáček INFO = -7 209*eeb7e5b3SAdam Hornáček END IF 210*eeb7e5b3SAdam Hornáček IF( INFO.NE.0 ) THEN 211*eeb7e5b3SAdam Hornáček CALL XERBLA( 'DGESV ', -INFO ) 212*eeb7e5b3SAdam Hornáček RETURN 213*eeb7e5b3SAdam Hornáček END IF 214*eeb7e5b3SAdam Hornáček* 215*eeb7e5b3SAdam Hornáček* Compute the LU factorization of A. 216*eeb7e5b3SAdam Hornáček* 217*eeb7e5b3SAdam Hornáček CALL DGETRF( N, N, A, LDA, IPIV, INFO ) 218*eeb7e5b3SAdam Hornáček IF( INFO.EQ.0 ) THEN 219*eeb7e5b3SAdam Hornáček* 220*eeb7e5b3SAdam Hornáček* Solve the system A*X = B, overwriting B with X. 221*eeb7e5b3SAdam Hornáček* 222*eeb7e5b3SAdam Hornáček CALL DGETRS( 'No transpose', N, NRHS, A, LDA, IPIV, B, LDB, 223*eeb7e5b3SAdam Hornáček $ INFO ) 224*eeb7e5b3SAdam Hornáček END IF 225*eeb7e5b3SAdam Hornáček RETURN 226*eeb7e5b3SAdam Hornáček* 227*eeb7e5b3SAdam Hornáček* End of DGESV 228*eeb7e5b3SAdam Hornáček* 229*eeb7e5b3SAdam Hornáček END 230*eeb7e5b3SAdam Hornáček CALL 'http://example.com' 231