PCGELS(l) | LAPACK routine (version 1.5) | PCGELS(l) |
NAME¶
PCGELS - solve overdetermined or underdetermined complex linear systems involving an M-by-N matrix sub( A ) = A(IA:IA+M-1,JA:JA+N-1),SYNOPSIS¶
- SUBROUTINE PCGELS(
- TRANS, M, N, NRHS, A, IA, JA, DESCA, B, IB, JB, DESCB, WORK, LWORK, INFO )
- CHARACTER
- TRANS
- INTEGER
- IA, IB, INFO, JA, JB, LWORK, M, N, NRHS
- INTEGER
- DESCA( * ), DESCB( * )
- COMPLEX
- A( * ), B( * ), WORK( * )
PURPOSE¶
PCGELS solves overdetermined or underdetermined complex linear systems involving an M-by-N matrix sub( A ) = A(IA:IA+M-1,JA:JA+N-1), or its conjugate-transpose, using a QR or LQ factorization of sub( A ). It is assumed that sub( A ) has full rank.an overdetermined system, i.e., solve the least squares problem
minimize || sub( B ) - sub( A )*X ||.
an underdetermined system sub( A ) * X = sub( B ).
an undetermined system sub( A )**H * X = sub( B ).
an overdetermined system, i.e., solve the least squares problem
minimize || sub( B ) - sub( A )**H * X ||.
DTYPE_A = 1.
the BLACS process grid A is distribu-
ted over. The context itself is glo-
bal, but the handle (the integer
value) may vary.
array A.
array A.
the rows of the array.
the columns of the array.
row of the array A is distributed. CSRC_A (global) DESCA( CSRC_ ) The process column over which the
first column of the array A is
distributed.
array. LLD_A >= MAX(1,LOCr(M_A)).
LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ),
LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ). An upper bound for these quantities may be computed by:
LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A
LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A
ARGUMENTS¶
- TRANS (global input) CHARACTER
- = 'N': the linear system involves sub( A );
- M (global input) INTEGER
- The number of rows to be operated on, i.e. the number of rows of the distributed submatrix sub( A ). M >= 0.
- N (global input) INTEGER
- The number of columns to be operated on, i.e. the number of columns of the distributed submatrix sub( A ). N >= 0.
- NRHS (global input) INTEGER
- The number of right hand sides, i.e. the number of columns of the distributed submatrices sub( B ) and X. NRHS >= 0.
- A (local input/local output) COMPLEX pointer into the
- local memory to an array of local dimension ( LLD_A, LOCc(JA+N-1) ). On entry, the M-by-N matrix A. if M >= N, sub( A ) is overwritten by details of its QR factorization as returned by PCGEQRF; if M < N, sub( A ) is overwritten by details of its LQ factorization as returned by PCGELQF.
- IA (global input) INTEGER
- The row index in the global array A indicating the first row of sub( A ).
- JA (global input) INTEGER
- The column index in the global array A indicating the first column of sub( A ).
- DESCA (global and local input) INTEGER array of dimension DLEN_.
- The array descriptor for the distributed matrix A.
- B (local input/local output) COMPLEX pointer into the
- local memory to an array of local dimension (LLD_B, LOCc(JB+NRHS-1)). On entry, this array contains the local pieces of the distributed matrix B of right hand side vectors, stored columnwise; sub( B ) is M-by-NRHS if TRANS='N', and N-by-NRHS otherwise. On exit, sub( B ) is overwritten by the solution vectors, stored columnwise: if TRANS = 'N' and M >= N, rows 1 to N of sub( B ) contain the least squares solution vectors; the residual sum of squares for the solution in each column is given by the sum of squares of elements N+1 to M in that column; if TRANS = 'N' and M < N, rows 1 to N of sub( B ) contain the minimum norm solution vectors; if TRANS = 'C' and M >= N, rows 1 to M of sub( B ) contain the minimum norm solution vectors; if TRANS = 'C' and M < N, rows 1 to M of sub( B ) contain the least squares solution vectors; the residual sum of squares for the solution in each column is given by the sum of squares of elements M+1 to N in that column.
- IB (global input) INTEGER
- The row index in the global array B indicating the first row of sub( B ).
- JB (global input) INTEGER
- The column index in the global array B indicating the first column of sub( B ).
- DESCB (global and local input) INTEGER array of dimension DLEN_.
- The array descriptor for the distributed matrix B.
- WORK (local workspace/local output) COMPLEX array,
- dimension (LWORK) On exit, WORK(1) returns the minimal and optimal LWORK.
- LWORK (local or global input) INTEGER
- The dimension of the array WORK. LWORK is local input and
must be at least LWORK >= LTAU + MAX( LWF, LWS ) where If M >= N,
then LTAU = NUMROC( JA+MIN(M,N)-1, NB_A, MYCOL, CSRC_A, NPCOL ), LWF =
NB_A * ( MpA0 + NqA0 + NB_A ) LWS = MAX( (NB_A*(NB_A-1))/2, (NRHSqB0 +
MpB0)*NB_A ) + NB_A * NB_A Else LTAU = NUMROC( IA+MIN(M,N)-1, MB_A, MYROW,
RSRC_A, NPROW ), LWF = MB_A * ( MpA0 + NqA0 + MB_A ) LWS = MAX(
(MB_A*(MB_A-1))/2, ( NpB0 + MAX( NqA0 + NUMROC( NUMROC( N+IROFFB, MB_A, 0,
0, NPROW ), MB_A, 0, 0, LCMP ), NRHSqB0 ) )*MB_A ) + MB_A * MB_A End if
- INFO (global output) INTEGER
- = 0: successful exit
12 May 1997 | LAPACK version 1.5 |