GETRF2 - 5.2 English - 68552

AOCL API Guide (68552)

Document ID
68552
Release Date
2025-12-29
Version
5.2 English
template<typename T>
void getrf2(integer *m, integer *n, T *a, integer *lda, integer *ipiv, integer *info)#

GETRF2 computes an LU factorization of a general M-by-N matrix A.

Purpose:

 GETRF2 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 recursive version of the algorithm. It divides
 the matrix into four submatrices:
        [  A11 | A12  ]  where A11 is n1 by n1 and A22 is n2 by n2
    A = [ -----|----- ]  with n1 = min(m,n)/2
        [  A21 | A22  ]       n2 = n-n1
                                       [ A11 ]
 The subroutine calls itself to factor [ --- ],
                                       [ A12 ]
                 [ A12 ]
 do the swaps on [ --- ], solve A12, update A22,
                 [ A22 ]
 then calls itself to factor A22 and do the swaps on A21.
Parameters:
  • M[in]

    M is INTEGER

    The number of rows of the matrix A. M >= 0.

  • N[in]

    N is INTEGER

    The number of columns of the matrix A. N >= 0.

  • A[inout]

    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.
  • LDA[in]

    LDA is INTEGER

    The leading dimension of the array A. LDA >= fla_max(1,M).

  • IPIV[out]

    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).

  • INFO[out]

    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.