HPL_plindx10 - Compute the logarithmic maps for the spreading.

**#include "hpl.h"**
**void** **HPL_plindx10(** **HPL_T_panel *** *PANEL*,

**const
int** *K*,

**const int *** *IPID*,

**int *** *IPLEN*,

**int *** *IPMAP*,

**int *** *IPMAPM1* **);**
**HPL_plindx10** computes three arrays IPLEN, IPMAP and IPMAPM1 that contain
the logarithmic mapping information for the spreading phase.

- PANEL (local input/output) HPL_T_panel *
- On entry, PANEL points to the data structure containing the panel
information.

- K (global input) const int
- On entry, K specifies the number of entries in IPID. K is at least 2*N,
and at most 4*N.

- IPID (global input) const int *
- On entry, IPID is an array of length K. The first K entries of that array
contain the src and final destination resulting from the application of
the interchanges.

- IPLEN (global output) int *
- On entry, IPLEN is an array of dimension NPROW + 1. On exit, this array is
such that IPLEN[i] is the number of rows of A in the processes before
process IMAP[i] after the sort, with the convention that IPLEN[nprow] is
the total number of rows. In other words, IPLEN[i+1] - IPLEN[i] is the
local number of rows of A that should be moved for each process. IPLEN is
such that the number of rows of the source process row can be computed as
IPLEN[1] - IPLEN[0], and the remaining entries of this array are sorted so
that the quantities IPLEN[i+1] - IPLEN[i] are logarithmically sorted.

- IPMAP (global output) int *
- On entry, IPMAP is an array of dimension NPROW. On exit, this array
contains the logarithmic mapping of the processes. In other words,
IPMAP[myrow] is the corresponding sorted process coordinate.

- IPMAPM1 (global output) int *
- On entry, IPMAPM1 is an array of dimension NPROW. On exit, this array
contains the inverse of the logarithmic mapping contained in IPMAP:
IPMAPM1[ IPMAP[i] ] = i, for all i in [0.. NPROW)

**HPL_pdlaswp00N** (3),

**HPL_pdlaswp00T** (3),

**HPL_pdlaswp01N** (3),

**HPL_pdlaswp01T** (3).