NAG Library Routine Document

f06qkf (dgeapr)

1
Purpose

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

2
Specification

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

3
Description

f06qkf 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=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); f06qjf 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 – IntegerInput
On entry: n, the number of interchanges in the representation of P.
Constraint: n0.
4:     perm* – Real (Kind=nag_wp) 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= maxkintpermk .
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,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 – IntegerInput
On entry: the first dimension of the array b as declared in the (sub)program from which f06qkf 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

f06qkf is not threaded in any implementation.

9
Further Comments

None.

10
Example

None.