# Name

**HPL_plindx10** Compute the logarithmic maps for the spreading.
# Synopsis

`#include "hpl.h"`

`void`

`HPL_plindx10(`

`HPL_T_panel *`

`PANEL`

,
`const int`

`K`

,
`const int *`

`IPID`

,
`int *`

`IPLEN`

,
`int *`

`IPMAP`

,
`int *`

`IPMAPM1`

`);`

# Description

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

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)

# See Also

HPL_pdlaswp00N,
HPL_pdlaswp00T,
HPL_pdlaswp01N,
HPL_pdlaswp01T.