![]() |
LAPACK
3.7.0
LAPACK: Linear Algebra PACKage
|
subroutine zgetrf | ( | integer | M, |
integer | N, | ||
complex*16, dimension( lda, * ) | A, | ||
integer | LDA, | ||
integer, dimension( * ) | IPIV, | ||
integer | INFO | ||
) |
ZGETRF VARIANT: Crout Level 3 BLAS version of the algorithm.
ZGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
ZGETRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
ZGETRF computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges. The factorization has the form A = P * L * U where P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m > n), and U is upper triangular (upper trapezoidal if m < n). This is the Crout Level 3 BLAS version of the algorithm.
[in] | M | M is INTEGER The number of rows of the matrix A. M >= 0. |
[in] | N | N is INTEGER The number of columns of the matrix A. N >= 0. |
[in,out] | A | A is COMPLEX*16 array, dimension (LDA,N) On entry, the M-by-N matrix to be factored. 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,M). |
[out] | IPIV | IPIV is INTEGER array, dimension (min(M,N)) The pivot indices; for 1 <= i <= min(M,N), row i of the matrix was interchanged with row IPIV(i). |
[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, and division by zero will occur if it is used to solve a system of equations. |
Purpose:
ZGETRF computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges. The factorization has the form A = P * L * U where P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m > n), and U is upper triangular (upper trapezoidal if m < n). This is the left-looking Level 3 BLAS version of the algorithm.
[in] | M | M is INTEGER The number of rows of the matrix A. M >= 0. |
[in] | N | N is INTEGER The number of columns of the matrix A. N >= 0. |
[in,out] | A | A is COMPLEX*16 array, dimension (LDA,N) On entry, the M-by-N matrix to be factored. 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,M). |
[out] | IPIV | IPIV is INTEGER array, dimension (min(M,N)) The pivot indices; for 1 <= i <= min(M,N), row i of the matrix was interchanged with row IPIV(i). |
[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, and division by zero will occur if it is used to solve a system of equations. |
Purpose:
ZGETRF computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges. The factorization has the form A = P * L * U where P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m > n), and U is upper triangular (upper trapezoidal if m < n). This code implements an iterative version of Sivan Toledo's recursive LU algorithm[1]. For square matrices, this iterative versions should be within a factor of two of the optimum number of memory transfers. The pattern is as follows, with the large blocks of U being updated in one call to DTRSM, and the dotted lines denoting sections that have had all pending permutations applied: 1 2 3 4 5 6 7 8 +-+-+---+-------+------ | |1| | | |.+-+ 2 | | | | | | | |.|.+-+-+ 4 | | | | |1| | | | |.+-+ | | | | | | | |.|.|.|.+-+-+---+ 8 | | | | | |1| | | | | | |.+-+ 2 | | | | | | | | | | | | | |.|.+-+-+ | | | | | | | |1| | | | | | | |.+-+ | | | | | | | | | |.|.|.|.|.|.|.|.+----- | | | | | | | | | The 1-2-1-4-1-2-1-8-... pattern is the position of the last 1 bit in the binary expansion of the current column. Each Schur update is applied as soon as the necessary portion of U is available. [1] Toledo, S. 1997. Locality of Reference in LU Decomposition with Partial Pivoting. SIAM J. Matrix Anal. Appl. 18, 4 (Oct. 1997), 1065-1081. http://dx.doi.org/10.1137/S0895479896297744
[in] | M | M is INTEGER The number of rows of the matrix A. M >= 0. |
[in] | N | N is INTEGER The number of columns of the matrix A. N >= 0. |
[in,out] | A | A is COMPLEX*16 array, dimension (LDA,N) On entry, the M-by-N matrix to be factored. 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,M). |
[out] | IPIV | IPIV is INTEGER array, dimension (min(M,N)) The pivot indices; for 1 <= i <= min(M,N), row i of the matrix was interchanged with row IPIV(i). |
[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, and division by zero will occur if it is used to solve a system of equations. |
Definition at line 102 of file zgetrf.f.