source: PSPA/parmelaPSPA/trunk/rndm.f @ 489

Last change on this file since 489 was 12, checked in by lemeur, 12 years ago

parmela pspa initial

File size: 1.2 KB
Line 
1      FUNCTION RNDM (ISEED)
2C
3C CERN PROGLIB# V104    RNDM            .VERSION KERNVAX  2.39  930112
4C ORIG. 22-MAR-88 from IBM version of G.Marsaglia et al., Montreal
5C
6C     !!!   Version valid only for VAX floating point format  !!!
7C     Careful: compile with /CHECK=NOOVERFLOW
8C
9C-    Uniform Random Number Generator,
10C-    giving the same sequence as the IBM and VAX m-language version
11 
12      EQUIVALENCE (AMAN,MANT)
13      PARAMETER    (MSK1 = 3072)
14C     PARAMETER    (MSK1 = '00000C00'X)
15      PARAMETER    (MSK2 = 13312)
16C     PARAMETER    (MSK2 = '00003400'X)
17      SAVE  MCGN
18      DATA  MCGN  /12345/
19 
20 
21      MCGN = MCGN * 69069
22      MANT = ISHFT (MCGN,-8)
23      IF (MANT.EQ.0)         GO TO 14
24      AMAN = MANT
25C-    AMAN in the range 1 to 2**24-1
26      MANT = MANT - MSK1
27C-    multiply by 2.**(-24)
28      RNDM = AMAN
29      RETURN
30 
31C--   for zero set RNDM = 2.**(-25)
32   14 MANT = MSK2
33      RNDM = AMAN
34      RETURN
35 
36C--       Integer random number
37      ENTRY IRNDM (ISEED)
38      MCGN  = MCGN * 69069
39      IRNDM = ISHFT (MCGN,-1)
40      RETURN
41 
42C--       Set the seed
43      ENTRY RDMIN (ISEED)
44      MCGN = ISEED
45      RETURN
46 
47C--       Get the seed
48      ENTRY RDMOUT (ISEED)
49      ISEED = MCGN
50      END
Note: See TracBrowser for help on using the repository browser.