PSLASMSUB(l) | LAPACK routine (version 1.5 ) | PSLASMSUB(l) |
NAME¶
PSLASMSUB - look for a small subdiagonal element from the bottom of the matrix that it can safely set to zeroSYNOPSIS¶
- SUBROUTINE PSLASMSUB(
- A, DESCA, I, L, K, SMLNUM, BUF, LWORK )
PURPOSE¶
PSLASMSUB looks for a small subdiagonal element from the bottomof the matrix that it can safely set to zero. Notes
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)). Let K be the number of rows or columns of a distributed matrix, and assume that its process grid has dimension p x q.
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¶
- A (global input) REAL array, dimension
- (DESCA(LLD_),*) On entry, the Hessenberg matrix whose tridiagonal part is being scanned. Unchanged on exit.
- DESCA (global and local input) INTEGER array of dimension DLEN_.
- The array descriptor for the distributed matrix A.
- I (global input) INTEGER
- The global location of the bottom of the unreduced submatrix of A. Unchanged on exit.
- L (global input) INTEGER
- The global location of the top of the unreduced submatrix of A. Unchanged on exit.
- K (global output) INTEGER
- On exit, this yields the bottom portion of the unreduced submatrix. This will satisfy: L <= M <= I-1.
- SMLNUM (global input) REAL
- On entry, a "small number" for the given matrix. Unchanged on exit.
- BUF (local output) REAL array of size LWORK.
- LWORK (global input) INTEGER
- On exit, LWORK is the size of the work buffer. This must be at least 2*Ceil( Ceil( (I-L)/HBL ) / LCM(NPROW,NPCOL) ) Here LCM is least common multiple, and NPROWxNPCOL is the logical grid size. Notes: This routine does a global maximum and must be called by all processes. This code is basically a parallelization of the following snip of LAPACK code from SLAHQR: Look for a single small subdiagonal element. DO 20 K = I, L + 1, -1 TST1 = ABS( H( K-1, K-1 ) ) + ABS( H( K, K ) ) IF( TST1.EQ.ZERO ) $ TST1 = SLANHS( '1', I-L+1, H( L, L ), LDH, WORK ) IF( ABS( H( K, K-1 ) ).LE.MAX( ULP*TST1, SMLNUM ) ) $ GO TO 30 20 CONTINUE 30 CONTINUE Implemented by: G. Henry, November 17, 1996
12 May 1997 | LAPACK version 1.5 |