Developer Reference for Intel® oneAPI Math Kernel Library for C
?getrf
Computes the LU factorization of a general m-by-n matrix.
Syntax
lapack_intLAPACKE_sgetrf ( intmatrix_layout , lapack_intm , lapack_intn , float*a , lapack_intlda , lapack_int*ipiv );
lapack_intLAPACKE_dgetrf ( intmatrix_layout , lapack_intm , lapack_intn , double*a , lapack_intlda , lapack_int*ipiv );
lapack_intLAPACKE_cgetrf ( intmatrix_layout , lapack_intm , lapack_intn , lapack_complex_float*a , lapack_intlda , lapack_int*ipiv );
lapack_intLAPACKE_zgetrf ( intmatrix_layout , lapack_intm , lapack_intn , lapack_complex_double*a , lapack_intlda , lapack_int*ipiv );
Include Files
mkl.h
Description
sgetrf dgetrf cgetrf zgetrf getrf
The routine computes the LU factorization of a general m -by- n matrix A as
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 ). The routine uses partial pivoting, with row interchanges.
This routine supports the Progress Routine feature. See Progress Function for details.
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
m
The number of rows in the matrix A ( m ≥ 0 ).
n
The number of columns in A ; n ≥ 0 .
a
Array, size at least max(1, lda * n ) for column-major layout or max(1, lda * m ) for row-major layout. Contains the matrix A .
lda
The leading dimension of array a , which must be at least max(1, m ) for column-major layout or max(1, n ) for row-major layout.
Output Parameters
a
Overwritten by L and U . The unit diagonal elements of L are not stored.
ipiv
Array, size at least max(1,min(m, n)) . Contains the pivot indices; for 1 ≤i≤ min(m, n) , row i was interchanged with row ipiv(i) .
Return Values
This function returns a value info .
If info=0 , the execution is successful.
If info = -i , parameter i had an illegal value.
If info = i, u_{ii} is 0. The factorization has been completed, but U is exactly singular. Division by 0 will occur if you use the factor U for solving a system of linear equations.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
The computed \(L\) and \(U\) are the exact factors of a perturbed matrix \(A\) + \(E\) , where
\[|E| \leq c(min(m,n))\varepsilon P|L||U|\]
c(n) is a modest linear function of n , and \(\varepsilon\) is the machine precision.
The approximate number of floating-point operations for real flavors is
\((2/3)n^{3}\) if m = n,
\((1/3)n^{2}(3m - n)\) if m>n, or
\((1/3)m^{2}(3n - m)\) if m<n.
The number of operations for complex flavors is four times greater.
After calling this routine with m = n , you can call the following:
?getrs (Solves a system of linear equations with an LU-factored square coefficient matrix, with multiple right-hand sides.)
to solve \(A X = B\) or \(A^{T}X = B\) or \(A^{H}X = B\)
?gecon (Estimates the reciprocal of the condition number of a general matrix in the 1-norm or the infinity-norm.)
to estimate the condition number of \(A\)
?getri (Computes the inverse of an LU-factored general matrix.)
to compute the inverse of \(A\) .