blob: dd9dda3afbc091c393d4fb494a0efe5ad8da2e62 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
SUBROUTINE genprm(array,larray)
C**********************************************************************
C
C SUBROUTINE GENPRM( ARRAY, LARRAY )
C GENerate random PeRMutation of array
C
C
C Arguments
C
C
C ARRAY <--> On output ARRAY is a random permutation of its
C value on input
C DOUBLE PRECISION ARRAY( LARRAY )
C
C LARRAY <--> Length of ARRAY
C INTEGER LARRAY
C
C Modification by Bruno to handle permutation of a double precision
C array (15/11/2001) and to handle the changes in ignuin
C
C**********************************************************************
implicit none
C .. Scalar Arguments ..
INTEGER larray
C ..
C .. Array Arguments ..
DOUBLE PRECISION array(larray)
C ..
C .. Local Scalars ..
INTEGER i, iwhich
DOUBLE PRECISION elt, llarray
C ..
C .. External Functions ..
DOUBLE PRECISION ignuin
EXTERNAL ignuin
C ..
C .. Executable Statements ..
llarray = dble(larray)
DO i = 1,larray
iwhich = int(ignuin(dble(i),llarray))
elt = array(iwhich)
array(iwhich) = array(i)
array(i) = elt
END DO
END
|