NAG FL Interface
f06qkf (dgeapr)

Settings help

FL Name Style:

FL Specification Language:

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 <nag.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)
The routine may be called by the names f06qkf or nagf_blas_dgeapr.

3 Description

f06qkf performs one of the permutation operations
where B is a real matrix, and P is a permutation matrix.
P is represented in the form
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


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'
side='L' and trans='N'
side='R' and trans='T'
side='R' and trans='N'
  • 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 max(1,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: 1perm(i)m, where m= maxk{intperm(k)} .
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: b(ldb,*) Real (Kind=nag_wp) array Input/Output
Note: the second dimension of the array b must be at least max(1,k) if side='L' and at least max(n,maxk{intperm(k)}) if side='R'.
On entry: the original matrix B; B is m×k, where m= maxk{intperm(k)} if side='L', or k×m, where m= maxk{intperm(k)} 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 f06qkf is called.
  • if side='L', ldb max(n,m) ;
  • if side='R', ldb max(1,k) .

6 Error Indicators and Warnings


7 Accuracy

Not applicable.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
f06qkf is not threaded in any implementation.

9 Further Comments


10 Example