Go to main content
Oracle Developer Studio 12.5 Man Pages

Exit Print View

Updated: June 2017
 
 

sgeqp3 (3p)

Name

sgeqp3 - compute a QR factorization with column pivoting of a matrix A

Synopsis

SUBROUTINE SGEQP3(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO)

INTEGER M, N, LDA, LWORK, INFO
INTEGER JPVT(*)
REAL A(LDA,*), TAU(*), WORK(*)

SUBROUTINE SGEQP3_64(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO)

INTEGER*8 M, N, LDA, LWORK, INFO
INTEGER*8 JPVT(*)
REAL A(LDA,*), TAU(*), WORK(*)




F95 INTERFACE
SUBROUTINE GEQP3(M, N, A, LDA, JPVT, TAU, WORK, LWORK,
INFO)

INTEGER :: M, N, LDA, LWORK, INFO
INTEGER, DIMENSION(:) :: JPVT
REAL, DIMENSION(:) :: TAU, WORK
REAL, DIMENSION(:,:) :: A

SUBROUTINE GEQP3_64(M, N, A, LDA, JPVT, TAU, WORK, LWORK,
INFO)

INTEGER(8) :: M, N, LDA, LWORK, INFO
INTEGER(8), DIMENSION(:) :: JPVT
REAL, DIMENSION(:) :: TAU, WORK
REAL, DIMENSION(:,:) :: A




C INTERFACE
#include <sunperf.h>

void sgeqp3(int m, int n, float *a, int lda, int *jpvt, float *tau, int
*info);

void sgeqp3_64(long m, long n, float *a, long lda,  long  *jpvt,  float
*tau, long *info);

Description

Oracle Solaris Studio Performance Library                           sgeqp3(3P)



NAME
       sgeqp3 - compute a QR factorization with column pivoting of a matrix A


SYNOPSIS
       SUBROUTINE SGEQP3(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO)

       INTEGER M, N, LDA, LWORK, INFO
       INTEGER JPVT(*)
       REAL A(LDA,*), TAU(*), WORK(*)

       SUBROUTINE SGEQP3_64(M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO)

       INTEGER*8 M, N, LDA, LWORK, INFO
       INTEGER*8 JPVT(*)
       REAL A(LDA,*), TAU(*), WORK(*)




   F95 INTERFACE
       SUBROUTINE GEQP3(M, N, A, LDA, JPVT, TAU, WORK, LWORK,
              INFO)

       INTEGER :: M, N, LDA, LWORK, INFO
       INTEGER, DIMENSION(:) :: JPVT
       REAL, DIMENSION(:) :: TAU, WORK
       REAL, DIMENSION(:,:) :: A

       SUBROUTINE GEQP3_64(M, N, A, LDA, JPVT, TAU, WORK, LWORK,
              INFO)

       INTEGER(8) :: M, N, LDA, LWORK, INFO
       INTEGER(8), DIMENSION(:) :: JPVT
       REAL, DIMENSION(:) :: TAU, WORK
       REAL, DIMENSION(:,:) :: A




   C INTERFACE
       #include <sunperf.h>

       void sgeqp3(int m, int n, float *a, int lda, int *jpvt, float *tau, int
                 *info);

       void sgeqp3_64(long m, long n, float *a, long lda,  long  *jpvt,  float
                 *tau, long *info);



PURPOSE
       sgeqp3  computes a QR factorization with column pivoting of a matrix A:
       A*P = Q*R  using Level 3 BLAS.


ARGUMENTS
       M (input) The number of rows of the matrix A. M >= 0.


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


       A (input/output)
                 On entry, the M-by-N matrix A.  On exit, the  upper  triangle
                 of  the  array  contains  the min(M,N)-by-N upper trapezoidal
                 matrix R; the elements below the diagonal, together with  the
                 array  TAU, represent the orthogonal matrix Q as a product of
                 min(M,N) elementary reflectors.


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


       JPVT (input/output)
                 On entry, if JPVT(J).ne.0, the J-th column of A  is  permuted
                 to  the front of A*P (a leading column); if JPVT(J)=0, the J-
                 th column of A is a free column.  On exit, if JPVT(J)=K, then
                 the J-th column of A*P was the the K-th column of A.


       TAU (output)
                 The scalar factors of the elementary reflectors.


       WORK (workspace)
                 On exit, if INFO=0, WORK(1) returns the optimal LWORK.


       LWORK (input)
                 The dimension of the array WORK. LWORK >= 3*N+1.  For optimal
                 performance LWORK >= 2*N+( N+1 )*NB, where NB is the  optimal
                 blocksize.

                 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.


       INFO (output)
                 = 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/complex scalar, and v is a real/complex 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).

       Based on contributions by
         G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain
         X. Sun, Computer Science Dept., Duke University, USA




                                  7 Nov 2015                        sgeqp3(3P)