?getrf

Computes the LU factorization of a general m-by-n matrix.

Syntax

lapack_int LAPACKE_sgetrf (int matrix_layout , lapack_int m , lapack_int n , float * a , lapack_int lda , lapack_int * ipiv );

lapack_int LAPACKE_dgetrf (int matrix_layout , lapack_int m , lapack_int n , double * a , lapack_int lda , lapack_int * ipiv );

lapack_int LAPACKE_cgetrf (int matrix_layout , lapack_int m , lapack_int n , lapack_complex_float * a , lapack_int lda , lapack_int * ipiv );

lapack_int LAPACKE_zgetrf (int matrix_layout , lapack_int m , lapack_int n , lapack_complex_double * a , lapack_int lda , lapack_int * ipiv );

Include Files

  • mkl.h

Description

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.

Note

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

Application Notes

The computed L and U are the exact factors of a perturbed matrix A + E, where

|E|  c(min(m,n))ε P|L||U|

c(n) is a modest linear function of n, and ε is the machine precision.

The approximate number of floating-point operations for real flavors is

(2/3)n3

If m = n,

(1/3)n2(3m-n)

If m>n,

(1/3)m2(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

to solve A*X = B or ATX = B or AHX = B

?gecon

to estimate the condition number of A

?getri

to compute the inverse of A.

Select sticky button color: 
Orange (only for download buttons)
For more complete information about compiler optimizations, see our Optimization Notice.