p?laswp

Performs a series of row interchanges on a general rectangular matrix.

Syntax

Fortran:

call pslaswp(direc, rowcol, n, a, ia, ja, desca, k1, k2, ipiv)

call pdlaswp(direc, rowcol, n, a, ia, ja, desca, k1, k2, ipiv)

call pclaswp(direc, rowcol, n, a, ia, ja, desca, k1, k2, ipiv)

call pzlaswp(direc, rowcol, n, a, ia, ja, desca, k1, k2, ipiv)

C:

void pslaswp (char *direc , char *rowcol , MKL_INT *n , float *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *k1 , MKL_INT *k2 , MKL_INT *ipiv );

void pdlaswp (char *direc , char *rowcol , MKL_INT *n , double *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *k1 , MKL_INT *k2 , MKL_INT *ipiv );

void pclaswp (char *direc , char *rowcol , MKL_INT *n , MKL_Complex8 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *k1 , MKL_INT *k2 , MKL_INT *ipiv );

void pzlaswp (char *direc , char *rowcol , MKL_INT *n , MKL_Complex16 *a , MKL_INT *ia , MKL_INT *ja , MKL_INT *desca , MKL_INT *k1 , MKL_INT *k2 , MKL_INT *ipiv );

Include Files

  • C: mkl_scalapack.h

Description

The p?laswp routine performs a series of row or column interchanges on the distributed matrix sub(A)=A(ia:ia+n-1, ja:ja+n-1). One interchange is initiated for each of rows or columns k1 through k2 of sub(A). This routine assumes that the pivoting information has already been broadcast along the process row or column. Also note that this routine will only work for k1-k2 being in the same mb (or nb) block. If you want to pivot a full matrix, use p?lapiv.

Input Parameters

direc

(global) CHARACTER.

Specifies in which order the permutation is applied:

= 'F' - forward,

= 'B' - backward.

rowcol

(global) CHARACTER.

Specifies if the rows or columns are permuted:

= 'R' - rows,

= 'C' - columns.

n

(global) INTEGER.

If rowcol='R', the length of the rows of the distributed matrix A(*, ja:ja+n-1) to be permuted;

If rowcol='C', the length of the columns of the distributed matrix A(ia:ia+n-1 , *) to be permuted;

a

(local)

REAL for pslaswp

DOUBLE PRECISION for pdlaswp

COMPLEX for pclaswp

COMPLEX*16 for pzlaswp.

Pointer into the local memory to an array of size (lld_a, *). On entry, this array contains the local pieces of the distributed matrix to which the row/columns interchanges will be applied.

ia

(global) INTEGER.

The row index in the global array A indicating the first row of sub(A).

ja

(global) INTEGER.

The column index in the global array A indicating the first column of sub(A).

desca

(global and local) INTEGER array of size (dlen_).

The array descriptor for the distributed matrix A.

k1

(global) INTEGER.

The first element of ipiv for which a row or column interchange will be done.

k2

(global) INTEGER.

The last element of ipiv for which a row or column interchange will be done.

ipiv

(local)

INTEGER. Array, size LOCr(m_a)+mb_a for row pivoting and LOCr(n_a)+nb_a for column pivoting. This array is tied to the matrix A, ipiv(k)=l implies rows (or columns) k and l are to be interchanged.

Output Parameters

A

(local)

REAL for pslaswp

DOUBLE PRECISION for pdlaswp

COMPLEX for pclaswp

COMPLEX*16 for pzlaswp.

On exit, the permuted distributed matrix.

For more complete information about compiler optimizations, see our Optimization Notice.