NAG FL Interface
f06vkf (zgeapr)

1 Purpose

f06vkf permutes the rows or columns of a complex rectangular matrix using a real array of permutations.

2 Specification

Fortran Interface
Subroutine f06vkf ( side, trans, n, perm, k, b, ldb)
Integer, Intent (In) :: n, k, ldb
Real (Kind=nag_wp), Intent (In) :: perm(*)
Complex (Kind=nag_wp), Intent (Inout) :: b(ldb,*)
Character (1), Intent (In) :: side, trans
C Header Interface
#include <nag.h>
void  f06vkf_ (const char *side, const char *trans, const Integer *n, const double perm[], const Integer *k, Complex b[], const Integer *ldb, const Charlen length_side, const Charlen length_trans)
The routine may be called by the names f06vkf or nagf_blas_zgeapr.

3 Description

f06vkf performs one of the permutation operations
BPTB, BPB, BBPT  or BBP,  
where B is a complex matrix, and P is a permutation matrix.
P is represented in the form
P=P1,p1P2,p2Pn,pn,  
where Pi,j is the permutation matrix that interchanges items i and j; that is, Pi,j is the unit matrix with rows and columns i and j interchanged. If i=j, Pi,j=I.
Let m denote the number of rows of B if side='L', or the number of columns of B if side='R': the routine does not require m to be passed as an argument, but assumes that mpi, for i=1,2,,n.
This routine requires the indices pi to be supplied in a real array (the routine takes the integer part of the array elements); f06vjf performs the same operation with the indices supplied in an integer array.

4 References

None.

5 Arguments

1: side Character(1) Input
2: trans Character(1) Input
On entry: specifies the operation to be performed.
side='L' and trans='T'
BPTB.
side='L' and trans='N'
BPB.
side='R' and trans='T'
BBPT.
side='R' and trans='N'
BBP.
Constraints:
  • side='L' or 'R';
  • trans='N' or 'T'.
3: n Integer Input
On entry: n, the number of interchanges in the representation of P.
Constraint: n0.
4: perm* Real (Kind=nag_wp) array Input
Note: the dimension of the array perm must be at least max1,n .
On entry: the n indices pi which define the interchanges in the representation of P. It is usual to have pii, but this is not necessary.
Constraint: 1permim, where m= maxkintpermk .
5: k Integer Input
On entry: k, the number of columns of B if side='L', or the number of rows of B if side='R'.
Constraint: k0.
6: bldb* Complex (Kind=nag_wp) array Input/Output
Note: the second dimension of the array b must be at least max1,k if side='L' and at least maxn,maxkintpermk if side='R'.
On entry: the original matrix B; B is m, where m= maxkintpermk by k if side='L', or k by m, where m= maxkintpermk if side='R'.
On exit: the permuted matrix B.
7: ldb Integer Input
On entry: the first dimension of the array b as declared in the (sub)program from which f06vkf is called.
Constraints:
  • if side='L', ldb maxn,m ;
  • if side='R', ldb max1,k .

6 Error Indicators and Warnings

None.

7 Accuracy

Not applicable.

8 Parallelism and Performance

f06vkf is not threaded in any implementation.

9 Further Comments

None.

10 Example

None.