Developer Reference for Intel® oneAPI Math Kernel Library for C
?geqpf
Computes the QR factorization of a general m-by-n matrix with pivoting.
Syntax
lapack_intLAPACKE_sgeqpf ( intmatrix_layout , lapack_intm , lapack_intn , float*a , lapack_intlda , lapack_int*jpvt , float*tau );
lapack_intLAPACKE_dgeqpf ( intmatrix_layout , lapack_intm , lapack_intn , double*a , lapack_intlda , lapack_int*jpvt , double*tau );
lapack_intLAPACKE_cgeqpf ( intmatrix_layout , lapack_intm , lapack_intn , lapack_complex_float*a , lapack_intlda , lapack_int*jpvt , lapack_complex_float*tau );
lapack_intLAPACKE_zgeqpf ( intmatrix_layout , lapack_intm , lapack_intn , lapack_complex_double*a , lapack_intlda , lapack_int*jpvt , lapack_complex_double*tau );
Include Files
mkl.h
Description
The routine is deprecated and has been replaced by routine geqp3 .
The routine ?geqpf forms the QR factorization of a general m -by- n matrix A with column pivoting: A*P = Q*R (see Orthogonal Factorizations ). Here P denotes an n -by- n permutation matrix.
The routine does not form the matrix Q explicitly. Instead, Q is represented as a product of min( m , n ) elementary reflectors . Routines are provided to work with Q in this representation.
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 , work
-
REAL for sgeqpf DOUBLE PRECISION for dgeqpf COMPLEX for cgeqpf DOUBLE COMPLEX for zgeqpf . Arrays: a ( lda ,*) contains the matrix A . The second dimension of a must be at least max(1, n ). Array a of size max(1, lda * n ) for column major layout and max(1, lda * m ) for row major layout contains the matrix A . work ( lwork ) is a workspace array. The size of the work array must be at least max(1, 3* n ) for real flavors and at least max(1, n ) for complex flavors.
lda
The leading dimension of a ; at least max(1, m ) for column major layout and max(1, n ) for row major layout .
jpvt
Array, size at least max(1, n ).
On entry, if jpvt(i)jpvt[i - 1]> 0 , the i -th column of A is moved to the beginning of A*P before the computation, and fixed in place during the computation. If jpvt(i)jpvt[i - 1]= 0 , the i th column of A is a free column (that is, it may be interchanged during the computation with any other free column).
- rwork
-
REAL for cgeqpf DOUBLE PRECISION for zgeqpf . A workspace array, DIMENSION at least max(1, 2* n ).
Output Parameters
- a
-
Overwritten by the factorization data as follows: 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 , present the orthogonal matrix Q as a product of min( m , n ) elementary reflectors (see Orthogonal Factorizations ).
- tau
-
REAL for sgeqpf DOUBLE PRECISION for dgeqpf COMPLEX for cgeqpf DOUBLE COMPLEX for zgeqpf . Array, size at least max (1, min( m , n )). Contains additional information on the matrix Q .
- jpvt
-
Overwritten by details of the permutation matrix P in the factorization A*P = Q*R . More precisely, the columns of A*P are the columns of A in the following order: jpvt(1), jpvt(2), ..., jpvt(n) . jpvt[0], jpvt[1], ..., jpvt[n - 1] .
Return Values
This function returns a value info .
If info=0 , the execution is successful.
If info = -i , the i -th parameter had an illegal value.
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 factorization is the exact factorization of a matrix \(A + E\) , where
\(||E||_{2} = O(\varepsilon) ||A||_{2}\) .
The approximate number of floating-point operations for real flavors is
\((4/3)n^{3}\) if m = n,
\((2/3)n^{2}(3m - n)\) if m > n, or
\((2/3)m^{2}(3n - m)\) if m < n.
The number of operations for complex flavors is 4 times greater.
To solve a set of least squares problems minimizing \(||A x - b||_{2}\) for all columns b of a given matrix \(B\) , you can call the following:
?geqpf (this routine)
to factorize \(A P = Q R\) ;
to compute \(C = Q^{T} B\) (for real matrices);
to compute \(C = Q^{H} B\) (for complex matrices);
trsm (a BLAS routine)
to solve \(R X = C\) .
(The columns of the computed \(X\) are the permuted least squares solution vectors x ; the output array jpvt specifies the permutation order.)
To compute the elements of \(Q\) explicitly, call
(for real matrices)
(for complex matrices).