Functions | |
| subroutine | cgetrf (m, n, a, lda, ipiv, info) |
| CGETRF VARIANT: Crout Level 3 BLAS version of the algorithm. | |
| subroutine | dgetrf (m, n, a, lda, ipiv, info) |
| DGETRF VARIANT: Crout Level 3 BLAS version of the algorithm. | |
| subroutine | sgetrf (m, n, a, lda, ipiv, info) |
| SGETRF VARIANT: Crout Level 3 BLAS version of the algorithm. | |
| subroutine | zgetrf (m, n, a, lda, ipiv, info) |
| ZGETRF VARIANT: Crout Level 3 BLAS version of the algorithm. | |
| subroutine | cgeqrf (m, n, a, lda, tau, work, lwork, info) |
| CGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm. | |
| subroutine | dgeqrf (m, n, a, lda, tau, work, lwork, info) |
| DGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm. | |
| subroutine | sgeqrf (m, n, a, lda, tau, work, lwork, info) |
| SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm. | |
| subroutine | zgeqrf (m, n, a, lda, tau, work, lwork, info) |
| ZGEQRF VARIANT: left-looking Level 3 BLAS of the algorithm. | |
This is the group of Variants Computational routines
| subroutine cgeqrf | ( | integer | m, |
| integer | n, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| complex, dimension( * ) | tau, | ||
| complex, dimension( * ) | work, | ||
| integer | lwork, | ||
| integer | info ) |
CGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> CGEQRF computes a QR factorization of a real M-by-N matrix A: !> A = Q * R. !> !> 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 array, dimension (LDA,N) !> On entry, the M-by-N matrix A. !> On exit, the elements on and above the diagonal of the array !> contain the min(M,N)-by-N upper trapezoidal matrix R (R is !> upper triangular if m >= n); the elements below the diagonal, !> with the array TAU, represent the orthogonal matrix Q as a !> product of min(m,n) elementary reflectors (see Further !> Details). !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !> |
| [out] | TAU | !> TAU is COMPLEX array, dimension (min(M,N)) !> The scalar factors of the elementary reflectors (see Further !> Details). !> |
| [out] | WORK | !> WORK is COMPLEX array, dimension (MAX(1,LWORK)) !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> |
| [in] | LWORK | !> LWORK is INTEGER !> !> The dimension of the array WORK. The dimension can be divided into three parts. !> !> 1) The part for the triangular factor T. If the very last T is not bigger !> than any of the rest, then this part is NB x ceiling(K/NB), otherwise, !> NB x (K-NT), where K = min(M,N) and NT is the dimension of the very last T !> !> 2) The part for the very last T when T is bigger than any of the rest T. !> The size of this part is NT x NT, where NT = K - ceiling ((K-NX)/NB) x NB, !> where K = min(M,N), NX is calculated by !> NX = MAX( 0, ILAENV( 3, 'CGEQRF', ' ', M, N, -1, -1 ) ) !> !> 3) The part for dlarfb is of size max((N-M)*K, (N-M)*NB, K*NB, NB*NB) !> !> So LWORK = part1 + part2 + part3 !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA. !> |
| [out] | INFO | !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> |
Further Details
!> !> The matrix Q is represented as a product of elementary reflectors !> !> Q = H(1) H(2) . . . H(k), where k = min(m,n). !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v' !> !> where tau is a real scalar, and v is a real vector with !> v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), !> and tau in TAU(i). !> !>
Definition at line 150 of file cgeqrf.f.
| subroutine cgetrf | ( | integer | m, |
| integer | n, | ||
| complex, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| integer, dimension( * ) | ipiv, | ||
| integer | info ) |
CGETRF VARIANT: Crout Level 3 BLAS version of the algorithm.
CGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
CGETRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> CGETRF 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 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:
!> !> CGETRF 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 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:
!> !> CGETRF 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 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 101 of file cgetrf.f.
| subroutine dgeqrf | ( | integer | m, |
| integer | n, | ||
| double precision, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| double precision, dimension( * ) | tau, | ||
| double precision, dimension( * ) | work, | ||
| integer | lwork, | ||
| integer | info ) |
DGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> DGEQRF computes a QR factorization of a real M-by-N matrix A: !> A = Q * R. !> !> 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 DOUBLE PRECISION array, dimension (LDA,N) !> On entry, the M-by-N matrix A. !> On exit, the elements on and above the diagonal of the array !> contain the min(M,N)-by-N upper trapezoidal matrix R (R is !> upper triangular if m >= n); the elements below the diagonal, !> with the array TAU, represent the orthogonal matrix Q as a !> product of min(m,n) elementary reflectors (see Further !> Details). !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !> |
| [out] | TAU | !> TAU is DOUBLE PRECISION array, dimension (min(M,N)) !> The scalar factors of the elementary reflectors (see Further !> Details). !> |
| [out] | WORK | !> WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK)) !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> |
| [in] | LWORK | !> LWORK is INTEGER !> !> The dimension of the array WORK. The dimension can be divided into three parts. !> !> 1) The part for the triangular factor T. If the very last T is not bigger !> than any of the rest, then this part is NB x ceiling(K/NB), otherwise, !> NB x (K-NT), where K = min(M,N) and NT is the dimension of the very last T !> !> 2) The part for the very last T when T is bigger than any of the rest T. !> The size of this part is NT x NT, where NT = K - ceiling ((K-NX)/NB) x NB, !> where K = min(M,N), NX is calculated by !> NX = MAX( 0, ILAENV( 3, 'DGEQRF', ' ', M, N, -1, -1 ) ) !> !> 3) The part for dlarfb is of size max((N-M)*K, (N-M)*NB, K*NB, NB*NB) !> !> So LWORK = part1 + part2 + part3 !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA. !> |
| [out] | INFO | !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> |
Further Details
!> !> The matrix Q is represented as a product of elementary reflectors !> !> Q = H(1) H(2) . . . H(k), where k = min(m,n). !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v' !> !> where tau is a real scalar, and v is a real vector with !> v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), !> and tau in TAU(i). !> !>
Definition at line 150 of file dgeqrf.f.
| subroutine dgetrf | ( | integer | m, |
| integer | n, | ||
| double precision, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| integer, dimension( * ) | ipiv, | ||
| integer | info ) |
DGETRF VARIANT: Crout Level 3 BLAS version of the algorithm.
DGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
DGETRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> DGETRF 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 DOUBLE PRECISION 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:
!> !> DGETRF 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 DOUBLE PRECISION 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:
!> !> DGETRF 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 DOUBLE PRECISION 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 101 of file dgetrf.f.
| subroutine sgeqrf | ( | integer | m, |
| integer | n, | ||
| real, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| real, dimension( * ) | tau, | ||
| real, dimension( * ) | work, | ||
| integer | lwork, | ||
| integer | info ) |
SGEQRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> SGEQRF computes a QR factorization of a real M-by-N matrix A: !> A = Q * R. !> !> 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 REAL array, dimension (LDA,N) !> On entry, the M-by-N matrix A. !> On exit, the elements on and above the diagonal of the array !> contain the min(M,N)-by-N upper trapezoidal matrix R (R is !> upper triangular if m >= n); the elements below the diagonal, !> with the array TAU, represent the orthogonal matrix Q as a !> product of min(m,n) elementary reflectors (see Further !> Details). !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !> |
| [out] | TAU | !> TAU is REAL array, dimension (min(M,N)) !> The scalar factors of the elementary reflectors (see Further !> Details). !> |
| [out] | WORK | !> WORK is REAL array, dimension (MAX(1,LWORK)) !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> |
| [in] | LWORK | !> LWORK is INTEGER !> !> The dimension of the array WORK. The dimension can be divided into three parts. !> !> 1) The part for the triangular factor T. If the very last T is not bigger !> than any of the rest, then this part is NB x ceiling(K/NB), otherwise, !> NB x (K-NT), where K = min(M,N) and NT is the dimension of the very last T !> !> 2) The part for the very last T when T is bigger than any of the rest T. !> The size of this part is NT x NT, where NT = K - ceiling ((K-NX)/NB) x NB, !> where K = min(M,N), NX is calculated by !> NX = MAX( 0, ILAENV( 3, 'SGEQRF', ' ', M, N, -1, -1 ) ) !> !> 3) The part for dlarfb is of size max((N-M)*K, (N-M)*NB, K*NB, NB*NB) !> !> So LWORK = part1 + part2 + part3 !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA. !> |
| [out] | INFO | !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> |
Further Details
!> !> The matrix Q is represented as a product of elementary reflectors !> !> Q = H(1) H(2) . . . H(k), where k = min(m,n). !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v' !> !> where tau is a real scalar, and v is a real vector with !> v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), !> and tau in TAU(i). !> !>
Definition at line 150 of file sgeqrf.f.
| subroutine sgetrf | ( | integer | m, |
| integer | n, | ||
| real, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| integer, dimension( * ) | ipiv, | ||
| integer | info ) |
SGETRF VARIANT: Crout Level 3 BLAS version of the algorithm.
SGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
SGETRF VARIANT: left-looking Level 3 BLAS version of the algorithm.
Purpose:
!> !> SGETRF 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 REAL 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:
!> !> SGETRF 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 REAL 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:
!> !> SGETRF 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 STRSM, 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 REAL 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 101 of file sgetrf.f.
| subroutine zgeqrf | ( | integer | m, |
| integer | n, | ||
| complex*16, dimension( lda, * ) | a, | ||
| integer | lda, | ||
| complex*16, dimension( * ) | tau, | ||
| complex*16, dimension( * ) | work, | ||
| integer | lwork, | ||
| integer | info ) |
ZGEQRF VARIANT: left-looking Level 3 BLAS of the algorithm.
Purpose:
!> !> ZGEQRF computes a QR factorization of a real M-by-N matrix A: !> A = Q * R. !> !> 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 A. !> On exit, the elements on and above the diagonal of the array !> contain the min(M,N)-by-N upper trapezoidal matrix R (R is !> upper triangular if m >= n); the elements below the diagonal, !> with the array TAU, represent the orthogonal matrix Q as a !> product of min(m,n) elementary reflectors (see Further !> Details). !> |
| [in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !> |
| [out] | TAU | !> TAU is COMPLEX*16 array, dimension (min(M,N)) !> The scalar factors of the elementary reflectors (see Further !> Details). !> |
| [out] | WORK | !> WORK is COMPLEX*16 array, dimension (MAX(1,LWORK)) !> On exit, if INFO = 0, WORK(1) returns the optimal LWORK. !> |
| [in] | LWORK | !> LWORK is INTEGER !> !> The dimension of the array WORK. The dimension can be divided into three parts. !> !> 1) The part for the triangular factor T. If the very last T is not bigger !> than any of the rest, then this part is NB x ceiling(K/NB), otherwise, !> NB x (K-NT), where K = min(M,N) and NT is the dimension of the very last T !> !> 2) The part for the very last T when T is bigger than any of the rest T. !> The size of this part is NT x NT, where NT = K - ceiling ((K-NX)/NB) x NB, !> where K = min(M,N), NX is calculated by !> NX = MAX( 0, ILAENV( 3, 'ZGEQRF', ' ', M, N, -1, -1 ) ) !> !> 3) The part for dlarfb is of size max((N-M)*K, (N-M)*NB, K*NB, NB*NB) !> !> So LWORK = part1 + part2 + part3 !> !> If LWORK = -1, then a workspace query is assumed; the routine !> only calculates the optimal size of the WORK array, returns !> this value as the first entry of the WORK array, and no error !> message related to LWORK is issued by XERBLA. !> |
| [out] | INFO | !> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !> |
Further Details
!> !> The matrix Q is represented as a product of elementary reflectors !> !> Q = H(1) H(2) . . . H(k), where k = min(m,n). !> !> Each H(i) has the form !> !> H(i) = I - tau * v * v' !> !> where tau is a real scalar, and v is a real vector with !> v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is stored on exit in A(i+1:m,i), !> and tau in TAU(i). !> !>
Definition at line 150 of file zgeqrf.f.
| 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 101 of file zgetrf.f.