NAG Library Routine Document

f06qjf (dgeap)

1
Purpose

f06qjf permutes the rows or columns of a real rectangular matrix using an integer array of permutations.

2
Specification

Fortran Interface
Subroutine f06qjf ( side, trans, n, perm, k, b, ldb)
Integer, Intent (In):: n, perm(*), k, ldb
Real (Kind=nag_wp), Intent (Inout):: b(ldb,*)
Character (1), Intent (In):: side, trans
C Header Interface
#include <nagmk26.h>
void  f06qjf_ (const char *side, const char *trans, const Integer *n, const Integer perm[], const Integer *k, double b[], const Integer *ldb, const Charlen length_side, const Charlen length_trans)

3
Description

f06qjf performs one of the permutation operations
BPTB, BPB, BBPT  or BBP,  
where B is a real matrix, and P is a permutation matrix.
P is represented in the form
P = P 1,p1 P 2,p2 P n,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 an integer array; f06qkf performs the same operation with the indices supplied in a real 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 – IntegerInput
On entry: n, the number of interchanges in the representation of P.
Constraint: n0.
4:     perm* – Integer arrayInput
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= maxkpermk .
5:     k – IntegerInput
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* – Real (Kind=nag_wp) arrayInput/Output
Note: the second dimension of the array b must be at least max1,k if side='L' and at least maxn,maxkpermk  if side='R'.
On entry: the original matrix B; B is m, where m= maxkpermk  by k if side='L', or k by m, where m= maxkpermk  if side='R'.
On exit: the permuted matrix B.
7:     ldb – IntegerInput
On entry: the first dimension of the array b as declared in the (sub)program from which f06qjf 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

f06qjf is not threaded in any implementation.

9
Further Comments

None.

10
Example

None.