 LAPACK  3.10.0 LAPACK: Linear Algebra PACKage

## ◆ dgesv()

 subroutine dgesv ( integer N, integer NRHS, double precision, dimension( lda, * ) A, integer LDA, integer, dimension( * ) IPIV, double precision, dimension( ldb, * ) B, integer LDB, integer INFO )

DGESV computes the solution to system of linear equations A * X = B for GE matrices

Purpose:
``` DGESV computes the solution to a real system of linear equations
A * X = B,
where A is an N-by-N matrix and X and B are N-by-NRHS matrices.

The LU decomposition with partial pivoting and row interchanges is
used to factor A as
A = P * L * U,
where P is a permutation matrix, L is unit lower triangular, and U is
upper triangular.  The factored form of A is then used to solve the
system of equations A * X = B.```
Parameters
 [in] N ``` N is INTEGER The number of linear equations, i.e., the order of the matrix A. N >= 0.``` [in] NRHS ``` NRHS is INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.``` [in,out] A ``` A is DOUBLE PRECISION array, dimension (LDA,N) On entry, the N-by-N coefficient matrix A. On exit, the factors L and U from the factorization A = P*L*U; the unit diagonal elements of L are not stored.``` [in] LDA ``` LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).``` [out] IPIV ``` IPIV is INTEGER array, dimension (N) The pivot indices that define the permutation matrix P; row i of the matrix was interchanged with row IPIV(i).``` [in,out] B ``` B is DOUBLE PRECISION array, dimension (LDB,NRHS) On entry, the N-by-NRHS matrix of right hand side matrix B. On exit, if INFO = 0, the N-by-NRHS solution matrix X.``` [in] LDB ``` LDB is INTEGER The leading dimension of the array B. LDB >= max(1,N).``` [out] INFO ``` INFO is INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value > 0: if INFO = i, U(i,i) is exactly zero. The factorization has been completed, but the factor U is exactly singular, so the solution could not be computed.```

Definition at line 121 of file dgesv.f.

122 *
123 * -- LAPACK driver routine --
124 * -- LAPACK is a software package provided by Univ. of Tennessee, --
125 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
126 *
127 * .. Scalar Arguments ..
128  INTEGER INFO, LDA, LDB, N, NRHS
129 * ..
130 * .. Array Arguments ..
131  INTEGER IPIV( * )
132  DOUBLE PRECISION A( LDA, * ), B( LDB, * )
133 * ..
134 *
135 * =====================================================================
136 *
137 * .. External Subroutines ..
138  EXTERNAL dgetrf, dgetrs, xerbla
139 * ..
140 * .. Intrinsic Functions ..
141  INTRINSIC max
142 * ..
143 * .. Executable Statements ..
144 *
145 * Test the input parameters.
146 *
147  info = 0
148  IF( n.LT.0 ) THEN
149  info = -1
150  ELSE IF( nrhs.LT.0 ) THEN
151  info = -2
152  ELSE IF( lda.LT.max( 1, n ) ) THEN
153  info = -4
154  ELSE IF( ldb.LT.max( 1, n ) ) THEN
155  info = -7
156  END IF
157  IF( info.NE.0 ) THEN
158  CALL xerbla( 'DGESV ', -info )
159  RETURN
160  END IF
161 *
162 * Compute the LU factorization of A.
163 *
164  CALL dgetrf( n, n, a, lda, ipiv, info )
165  IF( info.EQ.0 ) THEN
166 *
167 * Solve the system A*X = B, overwriting B with X.
168 *
169  CALL dgetrs( 'No transpose', n, nrhs, a, lda, ipiv, b, ldb,
170  \$ info )
171  END IF
172  RETURN
173 *
174 * End of DGESV
175 *
subroutine xerbla(SRNAME, INFO)
XERBLA
Definition: xerbla.f:60
subroutine dgetrf(M, N, A, LDA, IPIV, INFO)
DGETRF
Definition: dgetrf.f:108
subroutine dgetrs(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
DGETRS
Definition: dgetrs.f:121
Here is the call graph for this function:
Here is the caller graph for this function: