# p?lasmsub

Looks for a small subdiagonal element from the bottom of the matrix that it can safely set to zero.

## Syntax

call pslasmsub(a, desca, i, l, k, smlnum, buf, lwork)

call pdlasmsub(a, desca, i, l, k, smlnum, buf, lwork)

## Description

This routine looks for a small subdiagonal element from the bottom of the matrix that it can safely set to zero. This routine does a global maximum and must be called by all processes.

## Input Parameters

a

  (global)

  REAL for pslasmsub

  DOUBLE PRECISION for pdlasmsub

  Array, DIMENSION`(desca(lld_),*)`.

  On entry, the Hessenberg matrix whose tridiagonal part is being scanned. Unchanged on exit.

desca

  (global and local) INTEGER.

  Array of DIMENSION (dlen_). The array descriptor for the distributed matrix A.

i

  (global) INTEGER.

  The global location of the bottom of the unreduced submatrix of A. Unchanged on exit.

l

  (global) INTEGER.

  The global location of the top of the unreduced submatrix of A.

  Unchanged on exit.

smlnum

  (global)

  REAL for pslasmsub

  DOUBLE PRECISION for pdlasmsub

  On entry, a “small number” for the given matrix. Unchanged on exit.

lwork

  (global) 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 nprow x npcol is the logical grid size.

## Output Parameters

k

  (global) INTEGER.

  On exit, this yields the bottom portion of the unreduced submatrix. This will satisfy: `l ≤ m ≤ i-1`.

buf

  (local).

  REAL for pslasmsub

  DOUBLE PRECISION for pdlasmsub

  Array of size lwork.

Parent topic: Auxiliary Routines