]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK ID>, HWR. | |
3 | ||
4 | *CMZ :- -26/04/91 12.42.30 by Federico Carminati | |
5 | ||
6 | *-- Author : F. James, modified by Mike Seymour | |
7 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | FUNCTION HWRGEN(I) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C MAIN RANDOM NUMBER GENERATOR | |
15 | ||
16 | C USES METHOD OF l'Ecuyer, (VIA F.JAMES, COMP PHYS COMM 60(1990)329) | |
17 | ||
18 | C----------------------------------------------------------------------- | |
19 | ||
20 | IMPLICIT NONE | |
21 | ||
22 | DOUBLE PRECISION HWRGEN,HWRSET,HWRGET | |
23 | ||
24 | INTEGER I,ISEED(2),K,IZ,JSEED(2) | |
25 | ||
26 | SAVE ISEED | |
27 | ||
28 | DATA ISEED/12345,67890/ | |
29 | ||
30 | K=ISEED(1)/53668 | |
31 | ||
32 | ISEED(1)=40014*(ISEED(1)-K*53668)-K*12211 | |
33 | ||
34 | IF (ISEED(1).LT.0) ISEED(1)=ISEED(1)+2147483563 | |
35 | ||
36 | K=ISEED(2)/52774 | |
37 | ||
38 | ISEED(2)=40692*(ISEED(2)-K*52774)-K*3791 | |
39 | ||
40 | IF (ISEED(2).LT.0) ISEED(2)=ISEED(2)+2147483399 | |
41 | ||
42 | IZ=ISEED(1)-ISEED(2) | |
43 | ||
44 | IF (IZ.LT.1) IZ=IZ+2147483562 | |
45 | ||
46 | HWRGEN=DBLE(IZ)*4.656613001013252D-10 | |
47 | ||
48 | C---> (4.656613001013252D-10 = 1.D0/2147483589) | |
49 | ||
50 | RETURN | |
51 | ||
52 | C----------------------------------------------------------------------- | |
53 | ||
54 | ENTRY HWRSET(JSEED) | |
55 | ||
56 | C----------------------------------------------------------------------- | |
57 | ||
58 | IF (JSEED(1).EQ.0.OR.JSEED(2).EQ.0) CALL HWWARN('HWRSET',99,*999) | |
59 | ||
60 | ISEED(1)=JSEED(1) | |
61 | ||
62 | ISEED(2)=JSEED(2) | |
63 | ||
64 | HWRSET=0.0D0 | |
65 | ||
66 | 999 RETURN | |
67 | ||
68 | C----------------------------------------------------------------------- | |
69 | ||
70 | ENTRY HWRGET(JSEED) | |
71 | ||
72 | C----------------------------------------------------------------------- | |
73 | ||
74 | JSEED(1)=ISEED(1) | |
75 | ||
76 | JSEED(2)=ISEED(2) | |
77 | ||
78 | HWRGET=0.0D0 | |
79 | ||
80 | RETURN | |
81 | ||
82 | END |