Rearranges the elements of an array as specified by a permutation.
X — Real vector of length N containing the array to be permuted. (Input)
IPERMU — Integer
vector of length N containing a
permutation
IPERMU(1), …, IPERMU(N) of the integers 1,
…, N.
(Input)
XPERMU — Real
vector of length N containing the array
X
permuted. (Output)
If X is not needed, X and XPERMU can share the
same storage locations.
N — Length of the
arrays X and
XPERMU.
(Input)
Default: N = size
(IPERMU,1).
IPATH — Integer
flag. (Input)
Default: IPATH = 1.
IPATH = 1 means IPERMU represents a
forward permutation, i.e., X(IPERMU(I)) is moved to XPERMU(I). IPATH = 2 means IPERMU represents a
backward permutation, i.e., X(I) is moved to XPERMU(IPERMU(I)).
Generic: CALL PERMU (X, IPERMU, XPERMU [,…])
Specific: The specific interface names are S_PERMU and D_PERMU.
Single: CALL PERMU (N, X, IPERMU, IPATH, XPERMU)
Double: The double precision name is DPERMU.
Routine PERMU rearranges the elements of an array according to a permutation vector. It has the option to do both forward and backward permutations.
This example rearranges the array X using IPERMU; forward permutation is performed.
USE PERMU_INT
USE UMACH_INT
IMPLICIT NONE
! Declare variables
INTEGER IPATH, N
PARAMETER (IPATH=1, N=4)
!
INTEGER IPERMU(N), J, NOUT
REAL X(N), XPERMU(N)
! Set values for X, IPERMU
!
! X = ( 5.0 6.0 1.0 4.0 )
! IPERMU = ( 3 1 4 2 )
!
DATA X/5.0, 6.0, 1.0, 4.0/, IPERMU/3, 1, 4, 2/
! Permute X into XPERMU
CALL PERMU (X, IPERMU, XPERMU)
! Get output unit number
CALL UMACH (2, NOUT)
! Print results
WRITE (NOUT,99999) (XPERMU(J),J=1,N)
!
99999 FORMAT (' The output vector is:', /, 10(1X,F10.2))
END
The Output vector
is:
1.00
5.00
4.00 6.00
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |